Skip to main content

STIL - Standard Test Interface Langauge

Purpose: 

To support various interfacing needs for test generation tools (ATPG tools) and test equipments (ATE)  

  • Standard Test Interface Language (STIL) Standardised as IEEE 1450
  • Provides data exchange between EDA tools from different vendors and ATE interfaces
  • STIL is an open source language 

STIL file Contents: 





Fig 1. Top level of STIL data model [1]


STIL - 
  • Defines the version of STIL present in the file. 
  • This is the first statement of any STIL file, including files opened from the Include statement.

Header -
  • Contains general information about the STIL file being parsed. 
  • This block is optional; if present, it shall be the first statement after the STIL statement in the file.

Signals -
  • Defines all primary signals under test.

SignalGroups -
  • Defines collections of Signals. 
  • Requires reference to use if domain_name is used.

ScanStructures -
  • Defines internal scan chain information. 
  • The ScanStructures block or blocks are optional. 
  • If there are multiple ScanStructures blocks, they must be named. 
  • The PatternBurst may contain a reference to a named ScanStructures block, and the Pattern may contain a reference to a named ScanChain inside a ScanStructures. 
  • These blocks shall be defined before the PatternBurst if the PatternBurst contains references; otherwise, these blocks are defined before the Pattern.

Spec -
  • Defines values of variables to be applied in Timing Expressions. 
  • Multiple values may be assigned to variables; variable values are not resolved until the PatternExec statement. 
  • All Spec blocks shall precede the first Timing block definition.

Timing -
  • Defines the waveforms to be applied to each signal in the test. 
  • Timing expressions in this block may reference variables defined in Spec blocks, but timing variables are not resolved until the PatternExec. 
  • Timing blocks may reference other timing blocks; those blocks shall be defined before they are referenced.

Selector -
  • Selects min/typ/max/meas value of variables defined in Spec. 
  • Although this references variables defined in Spec blocks, variable values are not resolved until the PatternExec statement. 
  • This block shall precede the PatternExec block.

PatternBurst
  • Defines all Patterns to be executed collectively; any operation performed on this data (such as timing assignment) is performed on all Patterns referenced in this domain. 
  • The domain_name_pat reference, MacroDefs reference, and Procedures reference may all be forward references. 
  • Any references to SignalGroups shall have those blocks defined first. This block shall precede the PatternExec block.

PatternExec -
  • Resolves timing variables and waveforms to apply with pattern references from PatternBursts.
  • This block binds all information into a form to be applied to patterns as they are parsed.

Procedures -
  • Defines a set of test data to be used multiple times in a Pattern; at the end of each execution, the state of the test before this call is restored for the next test vector. 
  • Procedure data may be processed after a PatternBurst referencing this block is parsed.

MacroDefs -
  • Defines a set of test data to be used multiple times in a Pattern; at the end of each execution, the state of the test at the end of macro is in force. 
  • Macro data cannot be processed until Patterns are processed; pattern context may affect macro processing.

Pattern -
  • Defines test data. 
  • All references shall be complete at the point pattern data is processed.

Example STIL file:

Opensource Softwares:


References:

  1. Standard Test Interface Language (STIL) - A New Language for Patterns and Waveforms by Tony Taylor 
  2. IEEE 1450 Standard


Comments

Popular posts from this blog

Simulation mismatches between RTL and Synthezied netlist - 1

Sensitivity List 1. Synthesis tools infer combinational or latching logic from an always block with a sensitivity list that does not contain the Verilog keywords posedge or negedge. 2. Extra signal in sensitivity list increases the need for compute resources 3. The synthesized logic described by the equations in an always block will always be implemented as if the sensitivity list were complete. 4. If there any signal missing in sensitivity list those signals won't trigger the execution of a block of code 5. If there are no signals in sensitivity list, the code may run infintely if not caught by tool  code: https://edaplayground.com/x/QaGF