Keys are derived from wire names and are the basis of our skip
This is a product type introduced by defprod.
- pat — stringp
- The same as the wire name except that some embedded number (perhaps
spanning many digits) may have been replaced by a * character.
- index — maybe-natp
- The parsed value of the number that has been replaced, or nil
if no replacement was made.
- orig — stringp
- The original wire name. This is somewhat unnecessary since it can be
recovered by just replacing * in pat with the characters
for index, but we thought it was convenient to keep around
The idea of keys is to cause related signals to have the same
pattern. For instance, bcWCB0Ent_P and bcWCB1Ent_P will both give
rise to the pattern bcWCB*Ent_P.
Because a particular wire name might include many numbers, we may generate a
list of keys for a single wire. For instance, for bcL2RB1NoRtry_P we will
generate one key with the pattern bcL*RB1NoRtry_P and another with the
pattern bcL2RB*NoRtry_P. We had previously considered using a list of
indices, but found it easier to just generate multiple keys, each with a single
- Fixing function for sd-key structures.
- Basic equivalence relation for sd-key structures.
- Basic constructor macro for sd-key structures.
- Get the index field from a sd-key.
- Modifying constructor for sd-key structures.
- Get the pat field from a sd-key.
- Get the orig field from a sd-key.
- Recognizer for sd-key structures.