Eval

The most often used analysis function in X-Amin is logic evaluation, or eval, for short. Eval produces a truth table for a specified signal. The eval function contains many options to filter and control the truth table generation process. For example, the following code:

 reg d;
 always @(posedge clk or negedge rst)
    if (!rst)
       d <= 0;
    else if (ld1)
       d <= a & b;
    else if (ld2)
       d <= a | b;
    else 
       d <= a ^ b;

Produces the following Eval truth table for signal d.

The inputs to the signal being eval'd are shown in the left columns. The value of the eval'd signal is shown in the highlighted right-most column.

To perform an Eval on a signal, select the signals parent component in the Components Window then select the desired signal in the Signals Window. Then, use the Analyze menu (Analyze->Eval...) or Eval icon on the Analyze toolbar to invoke the Eval Diagram Options dialog.

Hex: By default output from eval is displayed in binary format. For large vectors this is not always ideal. Setting the Hex Format value directs X-Amin to display in hexadecimal format vectors whose width is greater than or equal to Hex Format.

Max: Specifies the maximum number of rows in the final eval truth table.

Restrict: If the signal to be eval'd has large input vectors driving it, the truth table can become needlessly large. This control will automatically restrict to 0 those inputs whose width is greater than the value set, effectively removing them from the truth table. Any user defined restrictions will not be overridden. A value of 0 for restrict will prevent any signals from being auto-restricted.

Use Hierarchical Names: Enabling this control causes X-Amin to use heirarchical names in the truth table.

Output in text format: Enabling this control causes X-Amin to output the truth table in text format in the log window rather than creating an Eval Window.

Results: A comma-separated list of results for the signal to be shown in the Eval truth table. Use this to only see table entries for a specific signal state. For example, to see what input states set a state-machine present-state register to state S6, perform an eval of the present-state register with Results = S6. The results list can contain individual states expressed in binary (i.e. 0b10100), decimal, or hexadecimal (i.e. 0xfefe) formats, the keywords '1hot' (for one-hot encoded states, i.e. 0001, 0010, 0100, 1000), '0hot' (for zero-hot encoded states, i.e. 1110, 1101, 1011, 0111) or ranges (i.e. 0x100-0x200).

Title: Specifies the Eval Diagram title. Windows are identified by their titles which must be unique. The default title is the signal name.

Values to Eval: Selects specific values for input (i.e. support) signals. This option is useful in reducing the overall size of the Eval output when only certain input values are of interest. If no values are specified for an input signal, all possible values will be included in the Eval. To add specific values for a signal, select the 'Add' button in the Values to Eval panel which will invoke the Add/Edit Value dialog.

Signal Name: Signal to select specific values for.

Signal Values: A comma-separated list that specifies the values to apply to the specified signal. The signal value list can contain individual values expressed in binary (i.e. 0b10100), decimal, or hexadecimal (i.e. 0xfefe) formats, the keywords '1hot' (for one-hot encoded values, i.e. 0001, 0010, 0100, 1000), '0hot' (for zero-hot encoded values, i.e. 1110, 1101, 1011, 0111) or ranges (i.e. 0x100-0x200).

To further limit the effect an input has on the Eval of a signal, see the documentation on Restricting.

eval Command

Evaluation analysis can also be run using the 'eval' command entered in the GUI Command Entry box or on the command line in command-line mode. The 'eval' command format is:

SYNTAX
(void) eval
[-file <filename>]
[-hex <#>]
[-hier]
[-max <#>]
[-results <list>]
[-<signal> <list>]
[-text]
[-title <title>]
<expression>
ARGUMENTS
 -file <filename>
   Output the eval results to file <filename>
 -hex <#>
   Specifies that vectors with width greater-than or
   equal-to <#> should be displayed in hexadecimal
   format. The default is to display all signals in
   binary format.
 -hier Specifies to use hierarchical names in the truth
   table
 -max <#>
   Specifies the maximum number of table entries to
   generate. The default is 1000.
 -results <list>
   A comma-separated list of results for the expres­
   sion being evaluated to be shown in the Eval truth
   table. Use this to see only table entries for spe­
   cific signal states. For example, to see what input
   states set a state-machine present-state register
   to state 000110, perform an eval of the pre­
   sent-state register with -results 000110. The
   results list can contain individual states
   expressed in binary (i.e. 0b10100), decimal, or
   hexadecimal (i.e. 0xfefe) formats, the keywords
   '1hot' (for one-hot encoded states, i.e. 0001,
   0010, 0100, 1000), '0hot' (for zero-hot encoded
   states, i.e. 1110, 1101, 1011, 0111) or ranges
   (i.e. 0x100-0x200).

 -restrict <#>
If the expression to be eval'd has large input vec­
tors driving it, the truth table can become need­
lessly large. -restrict will automatically restrict
inputs whose width is greater than <#> to 0, effec­
tively removing them from the truth table. Any user
defined restrictions on <expression> will not be
overridden. A value of 0 for <#> will prevent any
signals from being auto-restricted. The default for
-restrict is 0.
 -<signal> <list>
   Specifies a comma-separated list of specific values
   for input signal <signal>. This option is useful in
   reducing the overall size of the eval output when
   only certain input values are of interest. If no
   values are specified for an input signal, all pos­
   sible values will be included in the truth table.
   The signal value list can contain individual values
   expressed in binary (i.e. 0b10100), decimal, or
   hexadecimal (i.e. 0xfefe) formats, the keywords
   '1hot' (for one-hot encoded values, i.e. 0001,
   0010, 0100, 1000), '0hot' (for zero-hot encoded
   values, i.e. 1110, 1101, 1011, 0111) or ranges
   (i.e. 0x100-0x200).
 -text In GUI mode, output results as text, not in an Eval
   Window. Ignored in command-line mode.
 -title <title>
   Use <title> for the diagram title. Ignored if -text
   is specified.
 <expression>
   Produce an eval truth table for the specified
   expression.
   

Eval Customizations

The Eval Preferences page (Edit->Preferences or the Preferences icon in the Edit toolbar) provides controls for configuring the appearance of the Eval table.

The Eval General preferences page, shown below, controls the colors of the Eval table.

To change a symbol color, simply select the color button which will invoke the color dialog. From the color dialog select the desired color.