!------------------------------------------------------------------------------ ! This file holds a list of connections to be tested by the connectivity test ! Comments start with an exclamation mark ("!") anywhere on a line. ! See end of file for more syntax information. !------------------------------------------------------------------------------ ! Revision: 05-Nov-98 12:00 ! This file is a template ! and a reminder for the syntax rules for Connection List Description File Vertical_Master: 0 Vertical_Slave: 1 ! Define a 16-wide connection between one source and multiple recievers ! The first receiver being defined on and individual basis ! More recievers being defined as a range of cards and a range of Chips ! receiving this same source signals on the same register address ! (e.g. Multiple Main Array FPGA on Multiple AONM) Slot: 4 Chip: 0 Register: 0 Source_Mask: 0xffff Slot: 5 Chip: 2 Register: 4 Receiver_Mask: 0xffff ! define a single on-card connection between two FPGAs Slot: 4 Chip: 0 Register: 0 Source_Mask: 0b,0000,0001 Chip: 17 Register: 2 Receiver_Mask: 0b,1000,0000 ! add one more receiver to a source defined earlier Slot: 4 Chip: 0 Register: 0 Source_Mask: 0xffff Slot: 9 Chip: 2 Register: 4 Receiver_Mask: 0xffff Call_File: \users\default\another.cnx ! Line Length template ! 1 2 3 4 5 6 7 8 9 0 1 2 3 !23456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012 ! Source_Description: "Source for AONM MA FPGA pin #45" ! Slot: xx Chip: xx Register: xx Source_Mask: 0xffff ! Slot: xx To_Slot: xx Chip: xx To_Chip: xx Register: xx Receiver_Mask: 0xffff ! Slot: xx Chip: xx Register: xx Receiver_Mask: 0b1234,1234,1234,1234 ! !------------------------------------------------------------------------------ ! 05-Nov-98 ! Syntax rules: ! ! * Recommended file extension is ".CNX" (but not required). ! ! - Blank lines are ignored. ! ! - Comments start after an exclamation mark ("!") anywhere on a line. ! ! * Recognized Keywords are (with colon required) ! Vertical_Master: (Vertical Interconnect Master Number; Range: 0 for now) ! Vertical_Slave: (Vertical Interconnect Slave Number; Range 0-1 for now) ! Slot: (VME Card Slot Number; range 1-21) ! To_Slot: (VME Card Slot Number; range 1-21) ! Chip: (0=VME Interface; 1-16=Main Array FPGA, 17=Support FPGA) ! To_Chip: (0=VME Interface; 1-16=Main Array FPGA, 17=Support FPGA) ! Register: (Register ID; i.e. units of 16-bit words; Range 0-511) ! Source_Description: (Arbitrary String to describe the source) ! Source_Mask: (Mask of source driver for connection) ! Receiver_Mask: (Mask of receiver for a connection) ! Call_File: (Recursive call to another file) ! ! - Keywords are NOT case-sensitive. ! ! - Each Keyword must be followed by one and only one positive integer Value ! (with the exception of the Call_File Keyword using a character string) ! ! - One or more Keyword/Value pair may appear on the same line. ! ! - a Keyword and its matching Value may be separated by any number of spaces, ! and/or Tabs, but must appear on the same line. ! ! - Successive Keyword/Value pairs may be separated by any number of spaces, ! Tabs and/or Carriage_Returns (blank lines), or comments. ! ! * A New source is registered when a "Source_Mask" Keyword is encountered. ! ! - All Register Address Keywords must have been specified before a ! "Source_Mask" Keyword may be specified. ! ! * A New receiver is defined when a "Receiver_Mask" Keyword is encountered. ! A source must have been specified before a receiver is specified. ! The receiver is associated with the last specified source. ! At least one receiver must be defined after a source has been specified ! (i.e. there must be at least one "Receiver_Mask" Keyword between successive ! "Source_Mask" Keywords). ! ! * The OPTIONAL "To_Slot" and "To_Chip" keywords will repeat the ! definition of a receiver (at a fixed Register) over a range of Slot ! Numbers and/or Chip Addresses. ! ! * The OPTIONAL "Source_Description" Keyword provides a place where arbitrary ! text can be attached to a particular source. This text will be displayed in ! error messages associated with that source. The corresponding text must ! appear on the same line as the keyword, and ALWAYS be enclosed with ! double-quotes ("). There is no provision to allow double quotes within ! the text itself. ! ! * The "Source_Description" Keyword may be repeated several times for a given ! source. The multiple occurences of this keyword will be understood as ! multiple lines of description text that will be displayed as successive ! lines in error messages. ! ! * The "Source_Description" Keyword must appear (when present) between the ! last defined receiver (i.e. a "Receiver_Mask" for the preceding source) ! and the Source it describes (i.e. a Source_Mask). The optional Description ! text must be defined for each source even if it is identical from one ! source to the next. ! ! * When a previously defined source is repeated (in order to specify additional ! associated receivers) any "Source_Description" appearing for this additional ! entry will be ignored. (note: making it illegal might cause file management ! problems when deviding a large description in separate Call_Files. ! An alternative would be to overwrite the description with the last one ! encountered). ! ! * The "Source_Mask" and "Receiver_Mask" values specify a set of sources ! controlled by a particular register. These values may be specified in ! Decimal (e.g. 15), Hexadecimal (e.g. 0xff), or Binary (.e.g. 0b1111). ! ! - Decimal, Hex, and Binary values may use commas to help readability. ! These commas will be removed during parsing (e.g. 0b,1000,0100,0111,0000). ! No spaces are allowed within any Value string. ! ! - Keyword/Values specified for a previous Register Address remain active ! for subsequent Register Selection until they are explicitly overwritten. ! This includes the case where only the relevant register descriptions need to ! be modified after a "Source_Mask" Keyword and before a "Receiver_Mask" ! Keyword (e.g. only specify new Chip/Register address when an on-card ! connection is being defined) ! ! * Connections may be defined one signal at a time, in which case the ! Source_Mask and Receiver_Mask values must only have one bit set and this ! can be a different bit in each mask. ! ! * Sets of connections may also be defined up to 16 bits at a time, where a ! source register controls 16 signals at a time, in which case ALL receiving ! registers must receive ALL of the SAME 16 signals and in the SAME BIT ORDER. ! ! * Smaller sets of signals driven by any CONTIGUOUS set of source bits in the ! Source_Mask and Receiver_Mask may also be defined, but they must follow the ! same rule that all of the same receiving bits must appear in the same ! contiguous bit order, but not necessarily on the same set of bits. ! ! * There is a limitation that no set of single or multiple signals may overlap. ! In particular one may not define a set of (e.g. 16) source signals and their ! receiving register(s), and later define additional receiver(s) for a subset ! (e.g. one bit) of the same source signals. The workaround (when it is ! necessary to circumvent this limitation) is to define ALL the signals ! involved as individual signals with a variable number of receiving ! registers. ! ! * When a "Source_Mask" keyword is encountered, the list of all sources ! previously defined is searched to decide if this is a new source, or if ! a new receiver is about to be defined for a source that has already been ! partially defined. ! ! * When a "Receiver_Mask" keyword is encountered, the list of all sources ! and recievers previously defined is searched to verify that this new mask ! does not overlap with any other mask already defined. i.e. a receiver bit ! cannot also be a source bit, and a receiver bit cannot have multiple ! sources. ! ! * The same register may appear both for a source and a receiver, as long as ! the corresponding bit masks do not overlap. [This may not be useful in ! practice but is allowed as long as it doesn't cost much to implement]. ! ! * There is an advantage in specifying the largest sets of signals wherever ! possible as this gives the test software maximum chance to systematically ! check the widest set of received signals every time one of the driving ! bits has been changed. This is particularly effective for detecting shorts ! among neighboring signals along cables, connectors and between on-card ! traces and chips. Shorts between signals specified in separate source ! registers have to be detected by chance and while doing limited checks ! on random registers that haven't been (shouldn't have been) modified. ! ! - The "Call_File" Keyword causes a recursive call to read the specified file. ! ! - Full local Keyword/Value context present before the "Call_File" Keyword ! is still valid after. i.e. Context changes made in the Called file are ! NOT propagated back to the Calling file. ! ! - The syntax rules within a called file are the same as described here. ! The local Keyword/Value context present before the "Call_File" Keyword ! is imported into the Called File. i.e. You can define some Keyword Values ! in the Calling File which will be valid inside the Called File. !------------------------------------------------------------------------------ ! - Symbol usage in command files: ! ! Symbols may be defined and used in command files. ! A symbol name must start with a dollar sign "$". ! ! A symbol is defined by giving it a numeric value. ! A symbol is defined using a Keyword/Value syntax where the Keyword is ! the symbol's name, starting with its own dollar sign but with an additional ! equal character appended to the end of the symbol name, while the value ! is the desired symbol value. ! e.g. To define a symbol named "$Slot_AONM" and give it a value "5" ! enter the following: ! $Slot_AONM= 5 ! The equal sign "=" is required and must appear directly after the last ! character of the symbol name, with no space or tab in-between. ! Any number of spaces, or tabs may appear between the symbol definition and ! its value, but the symbol and its value must appear on the same line. ! Previously defined symbols can be re-defined to change their value. ! Previously defined symbols cannot be un-defined. ! ! A symbol may be used anywhere a value is required, i.e. in any Keyword/Value ! pair and the symbol value will be substituted. e.g. ! Slot: $Slot_AONM ! A symbol must have been defined before it can be used. ! There are no predefined symbols. ! Symbols are NOT case sensitive. ! Symbol names may include any alpha numeric characters (e.g. _[(}./$< ), ! (but no space, tabs, or end of line). For clarity one should avoid ! using embedded quotation marks, equal signs, colon. ! A symbol value may be used to define another new symbol. ! ! All symbols defined before a "Call_File" Keyword are propagated into ! the Called File. i.e. You can define symbols in the Calling File ! and use those symbols (or modify them) inside the Called File. ! Symbols created or modified inside a Called File are NOT propagated ! back to the Calling file. !------------------------------------------------------------------------------