The e language syntax provides a way of tagging physical fields by prefixation of these fields with a % symbol. Physical fields are significant only for the pack() and the unpack() methods. Otherwise, their behavior is identical to that of virtual fields.
Packing (pack() method) is commonly used to prepare high-level e data into a form that can be applied to a DUT. Packing performs concatenation of items, including items in a list or fields in a struct, in the order specified by the pack options parameter and it returns a list of bits.
The unpack() method does exactly the opposite of packing. Unpacking is commonly used to convert a raw bit or byte stream into high-level data by storing the bits of the value expression into the target expressions. Unpacking operates on scalar or compound (struct, list) data items.
There are two routines that compare structs for field-by-field equality, deep_compare() and deep_compare_physical().
The check that action performs a data comparison and, depending on the results, prints a message. The that keyword is optional.
The dut_error() method is used to specify a DUT error message string. This action is usually associated with an if action, a check that action, or an expect struct member. If the boolean expression in the associated action or struct member evaluates to TRUE, then the error message string is displayed.
Check failure effects can be set by use of the set_check() routine from e code or set check command from the Specman Elite prompt.
The expect struct member defines temporal rules. If the temporal expression fails at its sampling event, the temporal rule is violated and an error is reported.
The on struct member executes a block of actions immediately whenever a specified trigger event is emitted. The on action block is invoked every time that trigger event is emitted. The actions are executed in the order in which they appear in the action block.