home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 September / pcwk_09_96.iso / demo / elmark / cupl / manual / sb2.txt < prev    next >
Text File  |  1992-01-20  |  40KB  |  1,021 lines

  1. .c1. Using CSIM                  2
  2.  
  3.     This chapter explains how to use CSIM program to create test vectors
  4.     for the programmable logic device under design.  Test vectors
  5.     specify the expected functional operation of a PLD by defining the
  6.     outputs as a function of the inputs. Test vectors are used both for
  7.     simulation of the device logic before programming and for functional
  8.     testing of the device once it has been programmed. CSIM can generate
  9.     JEDEC-compatible downloadable test vectors.
  10.  
  11. o  .c2.INPUT
  12.  
  13.     A test specification source file (filename.SI) is the input to CSIM.
  14.     It contains a functional description of the requirements of the
  15.     device in the circuit.  The source file may be created using a
  16.     standard text editor like DOS EDLIN or WordStar in non-document
  17.     mode.
  18.  
  19.     The input pin stimuli and output pin test values entered in the
  20.     source file are compared to the actual values calculated from the
  21.     logic equations in the CUPL source file. These calculated values are
  22.     contained in the absolute file (filename.ABS), which is created
  23.     during CUPL operation when the -a flag on the command line is
  24.     specified.  The absolute file must be created during CUPL operation
  25.     before running CSIM.
  26.  
  27.     CSIM must also be able to access the device library file, CUPL.DL,
  28.     which contains a description of each of the target devices supported
  29.     in the current version of CSIM.
  30.  
  31.     The library describes the physical characteristics of each device, 
  32.     including internal architecture, number of pins, and type of 
  33.     registers available, and the logical characteristics, including 
  34.     registered and non-registered pins, feedback capabilities, register 
  35.     power-on state and register control features.  Reference the target 
  36.     device using device mnemonics.  Each mnemonic is composed of a 
  37.     device family prefix and industry-standard part number suffix. Table 
  38.     2-1 lists the device mnemonic prefixes.
  39.  
  40.     Table 2-1.  CSIM  Device  Mnemonic Prefixes
  41.     Prefix             Device
  42.                        Family
  43.     EP                 Erasable Programmable Logic Device (EPLD)
  44.  
  45.     G                  Generic Array Logic (GAL)
  46.  
  47.     F                  Field Programmable Logic Array (FPLA)
  48.  
  49.     F                  Field Programmable Gate Array (FPGA)
  50.  
  51.     F                  Field Programmable Logic Sequencer (FPLS)
  52.  
  53.     F                  Field Programmable Sequence Generator (FPSG)
  54.  
  55.     P                   Programmable Logic Array (PAL)
  56.  
  57.     P                   Programmable  Logic Device (PLD)
  58.  
  59.     P                  Programmable Electrically Erasable Logic
  60.                        (PEEL)
  61.  
  62.     PLD                Pseudo Logical Device
  63.  
  64.     RA                 Bipolar  Programmable Read-Only Memory
  65.                        (PROM)
  66.  
  67.     For example, the device mnemonic for a PAL10L8 is P10L8; for an 
  68.     82S100 the device mnemonic is F100.  For bipolar PROMs, the suffix 
  69.     is the array size.  For example, the device mnemonic for a 1024 x 8 
  70.     bipolar PROM is RA10P8, since there are 10 address input pins and 8 
  71.     data output pins.
  72.  
  73.  
  74. o   .c2.OUTPUT
  75.  
  76.     The simulator output is the following two files:  a simulation 
  77.     listing file and an optional JEDEC downloadable fuse link file.
  78.  
  79.     A simulation listing file (filename.SO) contains the results of the 
  80.     simulation. It has the same filename as the input test specification 
  81.     file.
  82.  
  83.     All header information is displayed in the listing file with any 
  84.     header errors marked appropriately.  Each complete vector is 
  85.     assigned a number.  Any output tests that failed are flagged with 
  86.     the actual (simulator-determined) output value displayed.  Each 
  87.     variable in error is listed along with the expected (user-supplied) 
  88.     value.  Any invalid or unexpected test values are listed along with 
  89.     an appropriate error message.
  90.  
  91.     The simulator output listing can also be output to the screen (using 
  92.     the -v option on the command line).
  93.  
  94.     An optional JEDEC downloadable fuse link file (filename.JED) 
  95.     contains structured test vectors. CSIM appends the test vectors to 
  96.     an existing filename.JED created during CUPL operation.
  97.  
  98.    ========================================================
  99.    Note
  100.      CSIM does not support multi-device files as does CUPL. CSIM only 
  101.      simulates the first device of a multi-device file.  
  102.    ========================================================
  103.  
  104.  
  105. o   .c2.RUNNING CSIM
  106.  
  107.     Run CSIM using the following command line format:
  108.  
  109.         csim [-flags] [library] [device] source
  110.  
  111.     where
  112.  
  113.         -flags is the following set of simulator options:
  114.  
  115.         -l        create listing file.
  116.  
  117.         -j        append test vectors to JEDEC file.
  118.  
  119.         -n        use source filename for JEDEC file.
  120.  
  121.         -v        display simulation results to terminal.
  122.  
  123.         -u        use specified library for simulation.
  124.  
  125.         -w        (MS-DOS only) simulate and display output file in 
  126.                   waveform.
  127.  
  128.         -d        (MS-DOS only) display an existing
  129.                   simulation output file in waveform.
  130.  
  131.         library is the library name and path name if the -u flag is 
  132.         being used to specify a library other than the default library.  
  133.         device must be the same device mnemonic as was used in the CUPL 
  134.         compilation.  Specifying the device is optional; if a device is 
  135.         not specified, CSIM uses the device CUPL compiled (contained in 
  136.         the .ABS file).  source is the user-created ASCII test 
  137.         specification file (filename.SI).  The extension .SI is assumed 
  138.         for the source file and may be omitted when giving the CSIM 
  139.         command.
  140.  
  141.    ========================================================
  142.    Note
  143.      The square brackets indicate optional items.
  144.    ========================================================
  145.  
  146.  
  147. o   .c3.Simulator Option Flags
  148.  
  149.     Multiple option flags can be specified when running CSIM. A hyphen 
  150.     must be used before the first flag entered, but can be omitted for 
  151.     subsequent flags. Spaces may also be placed between the flags.  For 
  152.     example, the following two CSIM command lines are equivalent:
  153.  
  154.         csim -l -v -j p16r4 waitgen [Enter]
  155.         csim -lvj p16r4 waitgen [Enter]
  156.  
  157.     CSIM can be typed without any flags, to see the command line format 
  158.     and a list of the option flags.  Table 2-2 lists descriptions of the 
  159.     CSIM option flags.  Table 2-2.
  160.  
  161.     Simulator Option Flags Option Flag Description
  162.  
  163.     -j
  164.                        Appends the structured test vectors generated by   
  165.                        the simulation onto the existing JEDEC download 
  166.                        file.
  167.  
  168.     -l
  169.                        Generates a simulation listing file 
  170.                        (filename.SO.)  The input and output values for 
  171.                        each variable are listed.  Error messages are 
  172.                        listed following each vector, with the signal 
  173.                        name  in error displayed.
  174.  
  175.     -n
  176.                        Allows the source filename to be used as the 
  177.                        JEDEC filename instead of using the name in the 
  178.                        NAME field of the source file.
  179.  
  180.     -v
  181.                        Displays the contents of   the listing file  to
  182.                        the screen.  When the simulation data begins to 
  183.                        appear on the screen, type [Picture]-[ Picture]
  184.                        to  stop the display (and any key   to start it 
  185.                        again) or [Picture] -[Picture] to cancel the 
  186.                        simulation.
  187.  
  188.  
  189.     -u
  190.                        Overrides the default device library specified
  191.                        in   the environment . Specify the complete path 
  192.                        and library name. This option is of particular 
  193.                        use   on systems that have special libraries
  194.                        created for unique or custom devices.
  195.  
  196.     -d
  197.                        (MS-DOS only) Displays an existing simulation
  198.                        output file  in waveform.
  199.  
  200.     -w
  201.                        (MS-DOS only).
  202.                        Generates a
  203.                        simulation listing file and displays the output 
  204.                        in waveform.
  205.  
  206. o    .c3.Viewing Waveform(MS-DOS)
  207.  
  208.    Running CSIMwith the -w or -d flag generates waveform output on the 
  209.    screen. The view of the waveform can be changed by using the 
  210.    following keys:
  211.  
  212.      cursor right       Scroll right
  213.      cursor left        Scroll left
  214.      cursor down        Scroll down
  215.      cursor up          Scroll up
  216.      PgUp               Shift screen up
  217.      PgDn               Shift screen down
  218.      F1                 Decrease scale horizontally
  219.      F2                 Enlarge scale horizontally
  220.      F3                 Change current signal layer
  221.      F4                 Exit to DOS
  222.      F5                 Shift screen left
  223.      F6                 Shift screen right
  224.      F7                 Change signal orders
  225.      F8                 Group signals into bus
  226.      F9                 Create Waveform Hardcopy
  227.      F10                Waveform Legend
  228.      HOME               Show/hide fixed markers
  229.      INS                Show/hide moving marker
  230.      CNTL-cursor right  Move marker to the right
  231.      CNTL-cursor left   Move marker to the left
  232.      Any printable character key: Waveform Labels
  233.  
  234. o .c4.Change Signal Order
  235.  
  236.         The CSIM waveform display allows signal orders to be changed.  
  237.         To change signals, press the F7 key. The cursor appears on the 
  238.         signal window instead of the waveform window. Position the 
  239.         cursor over the desired signal, and then press [Return] to 
  240.         select the signal.  The selected signal is indicated as <Sel:  
  241.         signal-name> on the lower right portion of the screen (Refer to 
  242.         Figure 2-1). Move the cursor to the desired position and press 
  243.         the [Insert] key.  The selected signal is inserted into the 
  244.         cursor position, and the signals below the cursor are shifted 
  245.         one position down. As an example, refer to Figure 2-1.
  246.  
  247.           [Picture]
  248.     Figure  2-1. Moving a Signal
  249.  
  250.           [Picture]
  251.     Figure 2-2. Signal After Being Moved
  252.  
  253.         In this figure, Result 3 is selected. Result 3 is to be placed 
  254.         between Numbers3 and Numbers4. Move the cursor to Numbers4 and 
  255.         press [Insert].  Figure 2-2 shows the result. To quit the change 
  256.         signal mode, press [Escape].  The cursor returns to the waveform 
  257.         window.
  258.  
  259. o   .c4.Group Signals into Bus
  260.  
  261.         Grouping signals into bus is another useful feature.  This 
  262.         feature allows the grouping of up to eight signals into a bus, 
  263.         and the hex value can be displayed on the screen.  Figure 2-3 
  264.         shows the grouping of Numbers0 to Numbers7 into a bus called 
  265.         INPUT_BUS.
  266.  
  267.           [Picture]
  268.     Figure 2-3. Making a Bus
  269.  
  270.           [Picture]
  271.     Figure 2-4. Moving a Bus
  272.  
  273.         To group signals, first press F8, and a bus window pops up onto 
  274.         the screen (see Figure 3).  Type the bus name INPUT_BUS at Bus1 
  275.         and press [Return]. The cursor moves to the signal window.  Move 
  276.         the cursor to Numbers0 and press [Return].  This signal is 
  277.         grouped into bus INPUT_BUS as the least significant bit. Now 
  278.         move the cursor to Numbers1 and press [Return].  This becomes 
  279.         the second least significant bit of INPUT_BUS.  Continue this 
  280.         procedure until the eighth signal, Numbers7, is selected.  After 
  281.         all signals are selected, a new bus-type signal called INPUT_BUS 
  282.         is placed after the last signal, as shown in Figure 2-4.
  283.  
  284.         If fewer than eight signals are to be grouped into a bus, press 
  285.         [Esc] after all the desired signals have been selected. The new 
  286.         bus-type signal is placed after the last signal.
  287.  
  288.         The maximum number of busses that can be created is four, and 
  289.         the maximum number of signals that can be grouped into a bus is 
  290.         eight.  A sixteen-signal bus can be created as two busses of 
  291.         high-order and low-order.
  292.  
  293. o  .c4.Create Waveform Hardcopy
  294.  
  295.         The F9 function key does not cause an immediate print-out. When
  296.         activated, F9 creates a file with an extension .prt. This file 
  297.         can then be sent to the printer. The printer must be capable of 
  298.         handling extended ASCII characters.
  299.  
  300. o .c4.Changing Color Signal
  301.  
  302.         When F3 key is used it brings up a color selection window. You 
  303.         can select the color for the current signal (the one the cursor 
  304.         is currently sitting on). If the signal is not a bus, three 
  305.         columns of colors are displayed (correct, unstable output and 
  306.         error)< otherwise only one column is available.  A checkmark 
  307.         indicates the actual colors of the signal. Select new colors by 
  308.         moving the prompter up, down and from one column to another with 
  309.         the arrow keys.  Press ESC once you've completed the color 
  310.         selection
  311.  
  312.         The default colors for signals and busses can be changed by 
  313.         pressing END key. This causes a color selection window to be 
  314.         displayed; this window contains four columns of colors (correct, 
  315.         unstable output, error, busses). The method of selection is the 
  316.         same as the one discussed above.  Once the selection is 
  317.         completed, the new default colors are saved in a configuration 
  318.         file: WCSIM.INI.
  319.  
  320. o .c4.Fixed Markers
  321.  
  322.         The CSIM waveform display allows vectors to be marked; the 
  323.         markers are placed in the .SI file, using the $MSG"mark" 
  324.         directive, and are displayed on the screen as fixed vertical 
  325.         lines, one character wide. Use the HOME key to switch between 
  326.         show and hide markers.
  327.  
  328. o .c4.Moving Marker
  329.  
  330.         The ability to display a moving marker is available. This marker 
  331.         can be brought to the screen by pressing the INS key. Move to 
  332.         the left or to the right with CTL/<- AND CTL/-> keys. Hide by 
  333.         pressing INS once more.  The marker is displayed as a vertical 
  334.         line, one pixel wide.
  335.  
  336. o .c4.Waveform Labeling
  337.  
  338.         Labels can be placed on waveforms in the following manner:
  339.  
  340.         - place the cursor in the waveform window on the desired signal
  341.  
  342.         - turn the moving marker on and place it on the desired vector
  343.  
  344.         - enter the character you want to use as a label
  345.  
  346.         The entered character will be displayed on the waveform prompted 
  347.         by the cursor at its intersection with the moving marker.
  348.  
  349. o  Saving Waveform Configuration
  350.  
  351.         The waveform configuration can be saved before exiting to DOS.  
  352.         The configuration file has the same name as the simulation input 
  353.         file and the "CFG" extension.  Signal colors, signal order, 
  354.         busses, labels, scale, markers are saved and will be restored by 
  355.         a subsequent waveform display for the source file.
  356.  
  357. o .c4.Help Menu
  358.  
  359.         The question mark ( ? ) key can be used to bring up the help 
  360.         menu. This menu provides a description of the function keys.
  361.  
  362.  
  363. o Waveform Legend
  364.  
  365.         The following figure defines the waveforms that may appear 
  366.         during view waveform.  The waveform legend screen appears when 
  367.         the F10 key is depressed.
  368.  
  369.           [Picture]
  370.  
  371.     Figure 2-5. Waveform Legend
  372.  
  373.  
  374. o .c2.TEST SPECIFICATION FILE
  375.  
  376.     The test specification file (filename.SI) may be created using a
  377.     text editing program.  The filename is the same as the corresponding
  378.     CUPL logic description source file. Put the following information
  379.     into the test specification file:
  380.  
  381.     _ Header information
  382.     _ Comments
  383.     _ Variable ordering
  384.     _ Base sets
  385.     _ Test vectors
  386.     _ Simulator directives
  387.  
  388. o .c3.Header Information Header information which is entered must be
  389.     identical to the information in the corresponding CUPL logic
  390.     description file. If any header information is different, a warning
  391.     message appears, stating that the status of the logic equations
  392.     could be inconsistent with the current test vectors in the test
  393.     specification file. Table 2-3 lists the keywords used for header
  394.     information (see the subtopic, Header Information in Chapter 1):
  395.  
  396.     Table 2-3.  CSIM Header Keywords
  397.  
  398.         PARTNO
  399.         NAME
  400.         REVISION
  401.         DATE
  402.         DESIGNER
  403.         COMPANY
  404.         ASSEMBLY
  405.         LOCATION
  406.         DEVICE
  407.         FORMAT
  408.  
  409.     When creating a test specification file, begin by copying the
  410.     contents of the corresponding CUPL source file to the test
  411.     specification file, to assure proper header information. Then delete
  412.     everything except the header information from the test specification
  413.     file.
  414.  
  415.  
  416. o  .c3.Comments
  417.  
  418.     Comments can be placed anywhere within the test specification file.
  419.     Comments can be used to explain the contents of the specification
  420.     file or the function of certain test vectors. A comment begins with
  421.     a slash-asterisk (/*) and ends with an asterisk-slash (*/). Comments
  422.     can span multiple lines and are not terminated by the end of a line.
  423.     However, comments cannot be nested.
  424.  
  425.  
  426. o    .c3.Statements
  427.  
  428.     CSIM provides the keywords, ORDER, BASE, and VECTORS to write
  429.     statements in the source file that determine the simulation output
  430.     and how it is displayed. The following sections describe how to
  431.     write statements with the CUPL keywords.
  432.  
  433.  
  434. .c4.ORDER Statement
  435.  
  436.     Use the ORDER keyword to list the variables to be used in the
  437.     simulation table, and to define how they are displayed. Typically,
  438.     the variable names are the same as those in the corresponding CUPL
  439.     logic description file.  Place a colon after ORDER, separate each
  440.     variable in the list with a comma, and terminate the list with a
  441.     semicolon. The following is an example of an ORDER statement:
  442.  
  443.         ORDER: inputA,
  444.         inputB, output ;
  445.  
  446.     Only those variables that are actually used in the simulation must
  447.     be listed.
  448.  
  449.     The polarity of the variable name can be different than was declared
  450.     in the CUPL logic description file, allowing simulation of active-LO
  451.     outputs with an active-HI simulation vector.  The variable names can
  452.     be entered in any order; CSIM automatically creates the proper order
  453.     and polarity of the resulting vector to match the requirements of
  454.     the JEDEC download format for the device.  When indexed variables
  455.     are used in the ORDER statement, they can be expressed in list
  456.     notation format. However, since the ORDER statement is already in
  457.     list form, square brackets are not needed to delimit the ORDER set.
  458.     The following is an example of two equivalent ORDER statements; the
  459.     first statement lists all the variables, and the second is written
  460.     in list form.
  461.  
  462.  
  463.         ORDER: A0, A1, A2, A3, SELECT, !OUT0, !OUT1;
  464.         ORDER: A0..3, SELECT, !OUT0..1 ;
  465.  
  466.     In list notation format, the polarity of the first indexed variable
  467.     (!OUT0 in the above example) determines the polarity for the entire
  468.     list.  Bit fields that are declared in the CUPL logic description
  469.     file can be referenced by their single variable name. Bit fields can
  470.     also be declared in the test specification file for CSIM, using
  471.     FIELD declaration statements (see Bit Field Declaration Statements
  472.     in Chapter 2).  The .i.simulation:field;FIELD statement must appear
  473.     before the ORDER statement.
  474.  
  475.     The ORDER statement can be used to specify the format of the vector
  476.     results in the simulator listing file (or on the screen if screen
  477.     output is specified.) By default, variable values are displayed
  478.     without spaces between columns.  For example, the following ORDER
  479.     statement
  480.  
  481.         ORDER: clock, input, output ;
  482.  
  483.     generates the following display in the output file (using sample
  484.     values):
  485.  
  486.         0001: C0H
  487.         0002: C1L
  488.  
  489.     Spaces can be inserted between columns by using the % symbol and a
  490.     decimal value between 1 and 80. For example, the following ORDER
  491.     statement
  492.  
  493.         ORDER: clock, %2, input, %2, output ;
  494.  
  495.     generates the following display in the output file:
  496.  
  497.         0001: C 0 H
  498.         0002: C 1 L
  499.  
  500.     ========================================================
  501.    Note
  502.      The ORDER statement must be terminated by a semicolon.
  503.     ========================================================
  504.  
  505.     Text can be inserted into the output file by putting a character
  506.     string, enclosed by double quotes (" ",) into the ORDER statement.
  507.     (Do not place text in the ORDER statement if waveform output will be
  508.     used.) For example, the following ORDER statement
  509.  
  510.         ORDER: "Clock is ", clock, " and input is ", input,
  511.         " output goes ", output ;
  512.  
  513.     produces the following result in the output file:
  514.  
  515.         0001: Clock is C and input is 0 output goes H
  516.         0002: Clock is C and input is 1 output goes L
  517.  
  518.  
  519. .c4.BASE Statement
  520.  
  521.     In most cases, each variable in the ORDER statement (except for 
  522.     FIELD variables) has a corresponding single character test value 
  523.     that appears in the test vector table of the output file.  Multiple 
  524.     test vector values can be represented with quoted numbers.  Use 
  525.     single quotes for input values and double quotes for output values.  
  526.     Enter a BASE statement to specify how each quoted number is 
  527.     expanded. The format for the BASE statement is:
  528.  
  529.         BASE: name;
  530.  
  531.     where
  532.  
  533.         name is either octal, decimal or hex.
  534.  
  535.     Follow BASE with a colon.
  536.  
  537.    ========================================================
  538.    Note
  539.     The base statement must be terminated by a semicolon.
  540.    ========================================================
  541.  
  542.  
  543.     The default base for quoted test values is
  544.     hexadecimal.  The BASE statement must appear in the file before the 
  545.     ORDER statement.
  546.  
  547.     If the base is decimal or hexadecimal, quoted numbers expand to four 
  548.     digits; if the base is octal, they expand to three digits.  For 
  549.     example, a test vector entered as '7' is interpreted as follows:
  550.  
  551.         1 1 1        Base is octal
  552.     or
  553.         0 1 1 1        Base is decimal
  554.     or
  555.         0 1 1 1        Base is hex
  556.  
  557.     More than one hexadecimal or octal digit may be entered between 
  558.     quotes.  For example, '563' expands to the following:
  559.  
  560.         1 0 1 1 1 0 0 1 1             Base is octal
  561.  
  562.     or
  563.         0 1 0 1 0 1 1 0 0 0 1 1        Base is decimal
  564.  
  565.     or
  566.         0 1 0 1 0 1 1 0 0 0 1 1        Base is hex
  567.  
  568.     Quoted values may also be used with all other test values. For 
  569.     example, if the base is set to octal
  570.  
  571.         "XX"        expands to        X X X X X X
  572.         "LL"        expands to        L L L L L L
  573.         "45"        expands to        H L L H L H
  574.  
  575.    ========================================================
  576.    Note
  577.      Quoted values cannot contain *.
  578.    ========================================================
  579.  
  580.  
  581.     Test values for FIELD variables can be expressed either individually 
  582.     (for example, 001, HHLL) or with quoted values (for example, '1', 
  583.     "C"). When quoted values are used, the value is automatically 
  584.     expanded to the number of variables in the field.  For example, for 
  585.     the following address field
  586.  
  587.         FIELD address = [A0..5] ;
  588.  
  589.     A test value of
  590.  
  591.         /*
  592.         A A A A A A
  593.         5 4 3 2 1 0
  594.         --------------------------------*/
  595.  
  596.         1 1 1 0 0 1
  597.  
  598.         could be written using single test values, or'39' using quoted 
  599.         test values.
  600.  
  601.  
  602. .c4.VECTORS Statement
  603.  
  604.     Use the VECTORS keyword to prefix the test vector table.  Following 
  605.     the keyword, include test vectors made up of single test values or 
  606.     quoted test values (see the subtopic, Base Statement in this 
  607.     chapter).  Each vector must be contained on a single line.  No 
  608.     semicolons follow the vector. Table 2-4 lists allowable test vector 
  609.     values.
  610.  
  611.     Table  2-4.  Test Vector Values
  612.  
  613.     Test Value     Description
  614.  
  615.     0
  616.                    Drive input LO  (0 volts) (negate active-HI input)
  617.  
  618.     1
  619.                    Drive input HI (+5 volts) (assert active-HI input)
  620.  
  621.     C
  622.                    Drive (clock) input LO, HI, LO
  623.  
  624.     K
  625.                    Drive (clock) input HI, LO, HI
  626.  
  627.     L
  628.                    Test output LO (0 volts) (active-HI output negated)
  629.  
  630.     H
  631.                    Test output HI (+5 volts) (active-HI output asserted)
  632.  
  633.     Z
  634.                    Test output for high impedance
  635.  
  636.     X
  637.                    Input HI or LO, output HI or LO.
  638.  
  639.      NOTE:
  640.                    Not all device programmers treat X on inputs the 
  641.                    same; some put it to 0, some allow input to be pulled 
  642.                    to 1, and some leave it at the previous value.
  643.  
  644.     N
  645.                    Output not tested
  646.  
  647.     P
  648.                    Preload internal registers (value is applied to !Q 
  649.                    output)
  650.  
  651.     *
  652.                    Outputs only -simulator determines test value and 
  653.                    substitutes in vector
  654.  
  655.     ''
  656.                    Enclose input values to be expanded to a specified 
  657.                    BASE (octal, decimal, or hex).  Valid values are 0-F 
  658.                    and X.
  659.  
  660.     ""
  661.                    Enclose output values to be expanded to a specified 
  662.                    BASE (octal, decimal, or hex.) Valid values are 0-F, 
  663.                    H, L, Z, and X.
  664.  
  665.     The following is an example of a test vector table:
  666.  
  667.         VECTORS:
  668.         0 0 1 1 1 'F' Z "H"        /* test outputs HI  */
  669.         0 1 1 0 0 '0' Z "L"        /* test outputs LO */
  670.  
  671.     Unlike many other simulators, CSIM treats the DON'T-CARE (state X) 
  672.     as any other value. State X is not assumed to be 0 on input and N on 
  673.     the output.  The X state allows specific determination of which 
  674.     inputs affect the output value, according to the rules listed in the 
  675.     truth tables in Figure 2-6.
  676.  
  677.     [Picture]
  678.     Figure 2-6. Vector Truth Tables
  679.  
  680.  
  681. .c4.Preload
  682.     Use the P test value on the clock pin of a registered device to 
  683.     preload internal registers of a state machine or counter design to a 
  684.     known state, if the device does not have a dedicated TTL-level 
  685.     preload pin. The device programmer uses a supervoltage to actually 
  686.     load the registers.  All input pins to the device are ignored and 
  687.     hence should be defined as X.  The values that appear for registered 
  688.     variables are loaded into the !Q output of the register.  These 
  689.     values (0 or 1) are absolute levels and are not affected by output 
  690.     polarity nor inverting buffers. The following is an example of a 
  691.     preload sequence for an active-LO output variable in a device with 
  692.     an inverting buffer between the register Q output and device pin:
  693.  
  694.         ORDER: clock, input1, input2 , !output ;
  695.         VECTORS:
  696.         P X X 1        /* reset flip-flop */
  697.                        /* !Q goes to 1 */
  698.                        /* Q goes to 0 */
  699.         0 X X H        /* output is HI due  to */
  700.                        /* inverting buffer    */
  701.  
  702.    ========================================================
  703.    Note
  704.      CSIM can simulate and generate preload test vectors even for 
  705.      devices that do not have preload capability.  However, not all PLDs 
  706.      are capable of preload using a supervoltage. Some devices have 
  707.      dedicated preload pins to use for this purpose. CSIM does not 
  708.      verify whether the device under simulation is actually capable of 
  709.      preload because parts from different manufacturers exhibit 
  710.      different characteristics.  Before using the preload capability, 
  711.      determine whether the device being tested is physically capable of 
  712.      supervoltage preloading.
  713.    ========================================================
  714.  
  715.  
  716. .c4.Clocks
  717.  
  718.     Most synchronous devices (devices containing registers with a common 
  719.     clock tied to an output pin) use an active-HI (positive edge 
  720.     triggered) clock. To assure proper CSIM operation for these devices, 
  721.     always use a C test value (not a 1 or 0) on the clock pin.  For 
  722.     synchronous devices with an active-LO (negative edge triggered) 
  723.     clock, use the K test value on the clock pin.
  724.  
  725.  
  726. .c4.Asynchronous Vectors
  727.  
  728.     When writing test vectors for a circuit with asynchronous feedback, 
  729.     changing two test values at once can create a spike condition that 
  730.     produces anomalous results. (See Figure 2-7.  It shows the diagram 
  731.     for a circuit with three inputs [A, B, and C] and an output at Y 
  732.     that feeds back.)
  733.  
  734.           [Picture]
  735.     Figure 2-7. Circuit with Feedback
  736.  
  737.     The equation for the output at Y is as follows:
  738.  
  739.         Y = A & B & C # C & Y
  740.  
  741.     The vectors table in Figure 2-8 shows an expected low output at Y 
  742.     based on the specified input values.
  743.  
  744.           [Picture]
  745.     Figure 2-8. Vectors  Table  for Circuit with Feedback
  746.  
  747.     Because one of the inputs is 0 in each of the vectors, the AND gate 
  748.     defined by A, B, and C produces a low output.  The low value feeding 
  749.     back from the Y output keeps the other AND gate low also. Therefore, 
  750.     the OR gate (driven by the output of the two AND gates) and 
  751.     consequently the output at Y remain low for the specified test 
  752.     vectors.
  753.  
  754.     However, when the programmer operates on the test vectors, it 
  755.     applies values serially, beginning with the first pin.  Because two 
  756.     test values change between vectors, the programmer creates 
  757.     intermediate results (labeled "a" in Figure 2-9).
  758.  
  759.           [Picture]
  760.  
  761.     Figure 2-9.  Vectors Table with Intermediate Results
  762.  
  763.     The intermediate result, [0002a], produces a high value for the 
  764.     output at Y. This high value feeds back and combines with the "1" 
  765.     value specified for input C in vector [0003] to produce a high 
  766.     output for the AND gate and consequently for the OR gate and for the 
  767.     output at Y. This high value conflicts with the expected low value 
  768.     specified in the third test vector, and the result is a spike 
  769.     condition.
  770.  
  771.     By taking care to always change only one value between test vectors, 
  772.     the spike condition described above can be avoided.  Also, in the 
  773.     source specification file, it is possible to specify a TRACE value 
  774.     of 1, 2, or 3 (rather than the default value of 0) that instructs 
  775.     CSIM to display intermediate results in the output file (see "TRACE" 
  776.     in the following section, Simulator Directives).
  777.  
  778.  
  779. .c4.I/O Pin simulation
  780.  
  781.     When writing test vectors for a design that has input/output 
  782.     capability and a controllable output enable (OE), the test vector 
  783.     value placed at the I/O pin will depend on the value of the output 
  784.     enable.  If the output enable is active, the I/O pin needs an output 
  785.     test value (L, H, *,...).  If the output enable becomes inactive, a 
  786.     Hi-Z (Z) will appear on the I/O pin.  At this time, input test 
  787.     values (0, 1, ...) can be placed on the I/O pin allowing that pin to 
  788.     behave as an input pin.  When the output enable is activated again, 
  789.     the test values for that pin will reflect the output of the 
  790.     macrocell.
  791.  
  792.        [Picture]
  793.      Figure 2-10. I/O Pin Simulation
  794.  
  795.     The following equations express the boolean equation representation 
  796.     of Figure 2-10:
  797.  
  798.       Y = B;
  799.       Y.OE = A;
  800.  
  801.     When A is TRUE, the output of the macrocell (B) will appear at the 
  802.     pin (Y).  When A is FALSE, the output enable will be deactivated and 
  803.     a Hi-Z will appear at the pin (Y).  After the output enable is 
  804.     deactivated, input values can be placed on the pin.  Here is an 
  805.     example of what the simulation file will look like:
  806.  
  807.         Order: A, %1, B, %3, Y;
  808.         Vectors:
  809.         1 0  L        /* OE is ON */
  810.         1 1  H
  811.         0 0  Z        /* OE is OFF */
  812.         0 0  1        /* a valid input value can be placed on pin Y */
  813.         1 0  L        /* OE is ON again */
  814. o
  815.    .c3.Simulator Directives
  816.  
  817.     CSIM provides six directives that can be placed on any row of the 
  818.     file after the VECTOR statement. All directive names begin with a 
  819.     dollar sign and each directive statement must end with a semicolon.  
  820.     Table 2-5 lists the CSIM directives.
  821.  
  822.     Table 2-5.  CSIM Directives
  823.  
  824.         $MSG
  825.         $REPEAT
  826.         $TRACE
  827.         $SIMOFF
  828.         $SIMON
  829.         $EXIT
  830.  
  831. .c4.$MSG
  832.     Use the $MSG directive to place documentation messages or formatting 
  833.     information into the simulator output file.  For example, a header 
  834.     for the simulator function table, listing the variable names, may be 
  835.     created. The format is as follows:
  836.  
  837.         $MSG "any text string" ;
  838.  
  839.     In the output table, the text string appears without the double 
  840.     quotes.
  841.  
  842.     Blank lines can be inserted into the output, for example, between 
  843.     vectors, by using the following format:
  844.  
  845.         $MSG "" ;
  846.  
  847.     The $MSG directive can be also used to place markers in the 
  848.     simulator output file. The markers will be displayed on the screen 
  849.     at display waveform time (if the "w" flag was set). To mark a 
  850.     vector, place the following statement on the line preceding the 
  851.     vector to be marked:
  852.  
  853.         $MSG"mark"
  854.  
  855. .c4.$REPEAT
  856.     The $REPEAT directive causes a vector to be repeated a specified 
  857.     number of times. Its format is:
  858.  
  859.         $REPEAT n ;
  860.  
  861.     where
  862.  
  863.         n is a decimal value
  864.         between 1 and 9999.
  865.  
  866.     The vector following the $REPEAT   directive   is repeated  the  
  867.     specified number of times.
  868.  
  869.     The $REPEAT directive is particularly useful for testing counters 
  870.     and state transitions.  Use the asterisk (*) to represent output 
  871.     test values supplied by CSIM.  The following example shows a a 2-bit 
  872.     counter from a CUPL source file, and a VECTORS statement using the 
  873.     $REPEAT directive to test it.
  874.  
  875.     From CUPL:
  876.         Q0.d = !Q0 ;
  877.         Q1.d = !Q1 & Q0 # Q1
  878.         & !Q0 ;
  879.  
  880.     In CSIM:
  881.         ORDER: clock, input, Q1, Q0 ;
  882.         VECTORS:
  883.         0 0 X X        /* power-on condition  */
  884.         P X 1 1        /* reset the flip-flops        */
  885.         0 0 H H
  886.         $REPEAT 4 ;        /* clock 4 times */
  887.         C 0 * *
  888.  
  889.     The above file generates the following test vectors:
  890.  
  891.         0 0 X X
  892.         P X 1 1
  893.         0 0 H H
  894.         C 0 L L
  895.         C 0 L H
  896.         C 0 H L
  897.         C 0 H H
  898.  
  899.     CSIM supplies four sets of vector values.
  900.  
  901. .c4.$TRACE
  902.     Use the $TRACE directive to set the amount of information that CSIM 
  903.     prints for the vectors during simulation. The format is
  904.  
  905.         $TRACE n ;
  906.     where
  907.         n is a decimal value between 0 and 4.
  908.  
  909.     Trace level 0 (the default) turns off any additional information and 
  910.     only the resulting test vectors are printed.  When non-registered 
  911.     feedback is used in a design, the value for the output feeding back 
  912.     is unknown for the first evaluation pass of the vector.  If the new 
  913.     feedback value changes any output value, the vector is evaluated 
  914.     again. All outputs must be identical for two passes before the 
  915.     vector is determined to be stable.
  916.  
  917.     Trace level 1 prints the intermediate results for any vector that 
  918.     requires more than one evaluation pass to become stable. Any vector 
  919.     that requires more than twenty evaluation passes is considered 
  920.     unstable.
  921.  
  922.     Trace level 2 identifies three phases of simulation for designs 
  923.     using registers.  The first phase is "Before the Clock," where 
  924.     intermediate vectors using non-registered feedback are resolved.  
  925.     The second phase is "At the Clock," where the values of the 
  926.     registers are given immediately after the clock.  The third phase is 
  927.     "After the Clock," where the outputs utilizing feedback are resolved 
  928.     as in trace level 1.
  929.  
  930.     Trace level 3 provides the highest level of display information 
  931.     possible from CSIM.  Each simulation phase of "Before Clock," "At 
  932.     Clock," and "After Clock" is printed and the individual product term 
  933.     for each variable is listed. The output value for the AND gate is 
  934.     listed along with the value of the inputs to the AND array.
  935.  
  936.     Trace level 4 provides the ability to watch the logical value before 
  937.     the output buffer.  Using $TRACE 4, CSIM only reports the true 
  938.     output pin values, and assigns a "?" to inputs and buried nodes. For 
  939.     combinatorial output, trace level 4 displays the results of the OR 
  940.     term.  For registered outputs, trace level 4 shows the Q output of 
  941.     the register.  The following example uses a p22v10:
  942.  
  943.         pin 1 = CLK;
  944.         pin 2 = IN2;
  945.         pin 3 = IN3;
  946.         ....
  947.         pin 14 = OUT14;
  948.         pin 15 = OUT15;
  949.         ....
  950.         OUT14.D = IN2;
  951.         OUT14.AR = IN3;
  952.         OUT14.OE = IN4;
  953.         ....
  954.      Figure 2-11. Using P22V10.
  955.         
  956.     Figure 2-12 shows the simulation result file:
  957.  
  958.        order CLK, IN2, IN3, IN4, OUT14, OUT15;
  959.        ****** before output buffer ******
  960.        ???? ..LL...0001:
  961.        0011 ..HH........
  962.        ******before output buffer******
  963.        ????   HH...0004
  964.        C100  ...ZZ.....
  965.  
  966.    Figure 2-12. Simulation File.
  967.  
  968.     Figure 2-13 shows the virtual observation points when using trace
  969.     level 4 with either a combinatorial configuration or a register
  970.     configuration.
  971.  
  972.           [Picture]
  973.  
  974.   Figure 2-13. Observation Points Using Trace Level 4.
  975.  
  976. .c4.$EXIT
  977.     Use the $EXIT directive to abort the simulation at any point. Test
  978.     vectors appearing after the $EXIT directive are ignored.  This
  979.     directive is useful in debugging registered designs in which a false
  980.     transition in one vector causes an error in every vector thereafter.
  981.     Placing a $EXIT command after the vector in error directs attention
  982.     to the true problem, instead of to the many false errors caused by
  983.     the incorrect transition.
  984.  
  985. .c4.$SIMOFF
  986.     Use the $SIMOFF simulator directive to turn off test vector
  987.     evaluation. Test vectors appearing after the $SIMOFF directive are
  988.     only evaluated for invalid test values and the correct number of
  989.     test values. This directive is useful in testing asynchronously
  990.     clocked designs in which CSIM is unable to correctly evaluate
  991.     registered outputs.
  992.  
  993. .c4.$SIMON
  994.  
  995.     Use the $SIMON simulator directive to cancel the effects of the
  996.     $SIMOFF directive. Test vectors appearing after the $SIMON directive
  997.     are evaluated fully.
  998.  
  999. o    .c3.Fault    Simulation
  1000.  
  1001.     An internal fault can be simulated for any product term, to
  1002.     determine fault coverage for the test vectors. The format for this
  1003.     option is as follows:
  1004.  
  1005.          STUCKL n ;
  1006.         or STUCKH n ;
  1007.  
  1008.     where
  1009.  
  1010.         n is the JEDEC fuse number for the first fuse in the product 
  1011.         term.
  1012.  
  1013.     The documentation file (filename.DOC) fuse map lists the fuse 
  1014.     numbers for the first fuse in each product term in the device.
  1015.  
  1016.     Format 1 forces the product term to be stuck-at-0.
  1017.  
  1018.     Format 2 forces the product term to be stuck-at-1.  The STUCK 
  1019.     command must be placed between the ORDER and VECTORS statements.
  1020.  
  1021.