profile/signal-missing

A signal a required interface declares is absent from the design.

Remedy

Add the missing signal to the design, or drop the interface requirement if this board genuinely does not implement it.

What it means

An interface profile lists the signals that a bus must have. This fires when the interface is in use, meaning its anchor signal (e.g. SPI-NOR’s chip-select) and at least one other signal are present, but a required signal net is absent. Signals are matched by net name, usually by suffix, though a profile may also match by prefix, glob or regex. On a design that declares a host, host-incomplete reports instead and this rule stands down.

The shipped eMMC profile has an instance key, and a profile with that key asks this of each bus on its own. A bus is the nets named from one anchor net’s stem, so SD2_CMD’s bus is SD2_CLK, SD2_DATA0 and so on, and a signal on another bus does not count. A bus that carries one of the profile’s excludes lines is a different interface, and the rule does not check it. A removable SD card’s slot has a card detect line, so the eMMC check leaves the slot out.

Why engineers want it

The most common bus-wiring slip is a forgotten line, with five of six SPI-NOR signals wired and one missed. Each “verify signal X connected” review item is really this one check applied per signal. The profile encodes the required set once, and the rule flags whichever member is missing.

Why it anchors on a present signal (and what it does not catch)

A datalog rule fires on rows; an absent net is not a row. So “IO2 is missing” is reported against the interface’s anchor net (which is present), one finding per missing signal. When the anchor itself is absent, on a wholly-missing interface, there is nothing to anchor on and the rule is silent, by design. To detect a required interface that is entirely absent, you need a declared host or a design-intent modules declaration (intent/module-missing), not a name convention.

For software readers

The profile is an interface/protocol definition, and this rule checks that an implementation provides every member that the interface declares. “Anchored on a present signal” is like validating a partially-filled config, where you can flag the missing keys only once you can tell the config is meant to be there at all.