The purpose of the EDB Validator is to assist users who create EDB files in finding inconsistencies in the data. Such inconsistencies can lead to erroneous or at least unexpected behavior of EEvision. Typically these issues result from implicit assumptions that cannot be checked (cheaply) in the EDB Creator API. While the EDB guarantees consistency of the technical data structures, this document describes rules that define a meaningful semantic, which meets the expectations of EEvision. This meaningful semantic refers to a so-called 100% design, that describes a harness wiring that exists in reality. However, so-called 150% designs, that can be stored in the EDB and are subject to be configured before displayed, can be checked too (with reduced accuracy).
The table below illustrates the rules for the relations Component ⇒ Connector ⇒ Cavity ⇒ Wire. It shows the rules for the required number and types of Connectors per Component, and the required number and types of Cavities per Connector & Component, and the required number of connecting Wires.
Component | Connector | Cavities | Wires | ||
---|---|---|---|---|---|
type | cnt | type | cnt | type | cnt |
ECU | ≥1 | UNDEF, MFI | ≥1 | UNDEF, INO, HS | ≥0 |
INLINER | ≥1 | UNDEF, MF, ANTI | ≥1 | UNDEF, INO, HS | ≥0 |
SVG | ≥1 | UNDEF | ≥1 | UNDEF, INO | ≥0 |
UNDEF | ≥1 | UNDEF | ≥1 | UNDEF, INO, HS | ≥0 |
SPLICE | =1 * | UNDEF | ≥1 | UNDEF, INO | =1 * |
EYELET | =1 * | UNDEF | ≥1 | UNDEF, INO | ≥1 * |
The abbreviation MFI stands for “MALE, FEMALE, INVISIBLE” and the abbreviation MF stands for “MALE, FEMALE” and the abbreviation HS stands for “HALFDOT, SPLICED” and the abbreviation INO stands for “IN, OUT, IO”. The Validator reports violations as information, warning or error. These semantic restrictions apply to 100% designs.
(*) However, for 150% designs, the cnt columns in the SPLICE and EYELET rows are not checked, because the configuration may reduce or extend them in ways that are unpredictable by this Validator.
Modules form a collection of objects in an EDB. They serve different purposes: Configuration modules are used to adapt an EDB to a given configuration (from the 150% model to a 100% model of a vehicle). Function, Harness, Signal and Bus modules are used to display groups of objects that belong together because they are part of a function, harness, signal or bus in the vehicle. The member objects are added to a Module by the Creator API's AddObject2Module(). The table below illustrates the rules for the members of those Modules by type.
Module | Members | Dynamic | ||||
---|---|---|---|---|---|---|
type | Name | cnt | disjoint | type | sub-module | Pairs/Attr |
SIGNAL | ✔ | ≥1 | ✔ | Wire | ❌ | ❌ |
BUS | ✔ | ≥1 | ✔ | Wire | ❌ | ❌ |
HARNESS | ✔ | ≥1 | ✔* | CCCMW | ❌ | ❌ |
FUNCTION | ✔ | ≥1 | CCCMW | ❌ | ❌ | |
UNDEF | ✔ * | ≥1 | CCCMW | SBHFU * | ❌ | |
CONFIG ALWAYS |
✔ * | ≥1 | CCCMW, Module |
CONFIG ALWAYS * |
✔ * |
The abbreviation CCCMW stands for “Component, Connector, Cavity, Multicore, Wire”. The ✔ in the “disjoint” column means, that all Modules of that type must be disjoint in respect of their members. For example, the member Wires of a Signal must not be members of another Signal (however, can be members of another Harness or Bus, for example). The “disjoint” rule can only be checked in 100% designs. The Validator reports violations as information, warning or error.
(*) At HARNESS Modules, the disjoint rule only refers to its Wire members, not necessarily to its other members.
(*) The UNDEF Module members may include sub-modules of almost any type. The abbreviation SBHFU stands for “SIGNAL, BUS, HARNESS, FUNCTION, UNDEF”. Those sub-modules are not required to have a Name; they should form a tree and must not include cycles. All leaves of this tree commonly define the contents of the root Module.
(*) The CONFIG and ALWAYS Module members may include sub-modules of the types CONFIG or ALWAYS. Those sub-modules are not required to have a Name; they should form a tree and must not include cycles. But any sub-module with a type other than CONFIG or ALWAYS is considered as a leaf in this tree, and will be processed as an object by itself and not descending into it. All leaves of this tree, including the non-CONFIG/ALWAYS Modules, commonly define the contents of the root Module (and will commonly control the configuration process). The CONFIG and ALWAYS Modules may include dynamic pair or attr definitions as created by AddObjectPair2Module() or AddObjectAttr2Module(). The CONFIG and ALWAYS Modules are NOT available in 100% designs.
The following table contains a list of all issues that are currently reported by the EDB validator. The first column shows the Message ID that is also output by the validator. The second column contains details about the issue and its causes.
Message ID | Explanation |
---|---|
1 | The EDB contains an empty multicore object, i.e., it neither bundles any wires nor contains any sub-multicores. |
2 | The EDB contains a multicore of type EdbMulticoreTUNDEF or EdbMulticoreTTWISTED together with a shield wire. However, only shielded multicores (types EdbMulticoreTSHIELDED and EdbMulticoreTTWSHIELDED) may contain shield wires. |
3 | A connector has an invalid type. For instance, the connectors of eyelets (EdbComponentTEYELET), splices (EdbComponentTSPLICE), SVG components (EdbComponentTSVG), and components of undefined type (EdbComponentTUNDEF) should have EdbConnectorTUNDEF as type; specifying a different type does not make sense because connectors of such components are not displayed. This warning also occurs if the EdbConnectorTANTI flag is set at a connector that does not belong to an inliner component or if an invisible connector (EdbConnectorTINVISIBLE) occurs at a component that is not an ECU. |
4 | A cavity has an invalid type. This warning is typically caused by cavities of type EdbCavityTSPLICED or EdbCavityTHALFDOT. Such cavities are only supported at ECU and inliner components. |
5 | The EDB contains a component without a connector. That means no wire can be connected to this component. |
6 | The EDB contains a component with a connector that does not contain any cavities. That means no wire can be connected to that connector. |
7 | The partner relation between connectors or cavities is wrong. For instance, connectors or cavities that do not belong to an inliner component are partnered or partnered cavities belong to the same connector. Additionally, spliced cavities (EdbCavityTSPLICED) must not have partners. |
8 | The EDB contains a splice or eyelet component with more than one connector. |
9 | The EdbConnectorTANTI flag is missing at an inliner component. If an inliner component has more than two connectors with at least two of them partnered, then we must specify which connectors are on the same side of the inliner by setting the EdbConnectorTANTI flag at all connectors on one side. |
10 | Either a wire connects several times to (different cavities) of a splice/eyelet component or a splice/eyelet component has an unconnected cavity. This warning is also issued when multiple wires connect to the same cavity of a splice component. |
11 | The EDB contains an isolated component that is not connected to any wire. |
12 | The EDB contains a wire that is not connected to any component. Such a wire cannot be displayed in EEvision. |
13 | The EDB contains a wire that is connected to only one cavity. This issue is not necessarily an error – EEvision will draw such wires correctly – but since in the physical world wires are used to establish electrical connections between two entities, it may be a hint that the data is not consistent. |
14 | Wires of different types (e.g., power and ground wires) are electrically connected in the EDB. |
15 | Connectors of the same gender are partnered at an inliner component. |
16 | The EDB contains a module without a name. Modules without a name are difficult to identify in the search dialog, they should have a proper name. However, EEvision works correctly without module names. So this warning might be spurious if modules are loaded through a different mechanism than the search function. |
17 | SVG components (EdbComponentTSVG) need to have cavities with unique names within their connector such that they can be referenced in the symbol library. |
18 | The EDB contains an empty module (in an 150% model). |
19 | In typical applications, a wire only belongs to one signal, one bus, and one harness. This property seems to be violated here. |
20 | Bus and signal modules should only contain wires, but not other objects. |
21 | A module contains a duplicate entry. |
22 | A module contains an invalid sub-module. For instance, this warning appears if the module hierarchy does not form a tree of if a configuration module contains both configuration and other modules. |
23 | A 150%-EDB contains an object that is not covered by any configuration. That means there is no 100%-configuration that contains that object. |
24 | Only configuration modules (EdbModuleTCONFIG and EdbModuleTALWAYS) may contain configuration data in the form of object/attribute pairs and object/object pairs. However, this EDB contains such information in a different module. |
25 | A configured attribute yields a conflict, because the object either contains a static attribute with the same name and a different value or the configuration module contains two entries creating an attribute with the same name at the same object. |
26 | A configuration module contains an invalid object/object pair. Allowed are only pairs of cavity and wire; cavity and cavity; and connector and connector. The latter two cases are only allowed for cavities and connectors at inliner components. |
27 | The reserved attribute “ color” can be used at wires to specify the color code of a wire and at components to specify the body color. The value of the attribute must be a space-separated list of RGB values (wires) or a single RGB value (components). A RGB value has the form #RRGGBB with six hexadecimal digits for red, green and blue. This warning appears when the format of the color attribute is not correct. |
28 | The reserved attribute “ imagedsp” can be used to specify an image that should be shown in the body of an ECU or UNDEF component. The expected format for the attribute's value is “filename,width,height”; width and height may be omitted. The warning appears if either a non-ECU component has an “ imagedsp” attribute or if the attribute's value does not have the required format. |
29 | Either the EDB itself or an object in the EDB contains two attributes with the same name. This situation should be avoided since it is undefined which of the multiple attributes is actually evaluated by EEvision. |
30 | The direction flags at cavities are inconsistent. For instance, partnered cavities at an inliner have the same signal direction (both are inputs or both are outputs). |