Tessent Shell 基础
Tessent Shell Basic
Tessent Shell是一个可以运行所有Tessent工具的平台。该平台包括共享的设计数据、公共数据库和强大的脚本工具,这些工具提供了一个完全自动化的DFT流程,也支持满足特定需求的定制化流程。在该环境下,可以完成DFT硬件插入(EDT(embedded deterministic testing)、OCC(on-chip clock controller))、LogicBIST、MemoryBIST\BoundaryScan等)、测试向量生成(Scan chain、ATPG)和post-silicion tasks(缺陷诊断、良率分析)。
在Tessent Shell环境中,设置环境(context)和系统模式(system mode)告诉工具你将要执行的任务,工具使用设计数据模型(design data models)来存储设计相关的数据。
1.Tool Invocation
Linux平台下启动Tessent shell命令为
% tessent -shell
工具启动后进入setup mode,启动过程中会读取启动文件(startup file)和环境变量(environment variables),除了默认值之外,这两部分内容都包含有自定义选项。
2.Contexts and System Modes
Tessent shell 启动后的第一件事情就是要设置环境(Context)和系统模式(System mode)。Context指的是一个广泛的功能类别,通常对应于特定的工具、产品或许可证,例如Tessent FastScan。每个Context包括多个系统模式(System modes),System mode指定了工具当前的运行状态。通过设置环境和系统模式,可以指定Tessent Shell执行的任务类型。此外,还需要指定Tessent shell将要执行的任务的设计层级(design level)。
Contexts
Context指定了您希望使用testent Shell执行的任务的功能类别,context的设定命令为:
SETUP> set_context dft -scan
SETUP
是说工具启动后进入setup mode,dft -scan
是context选项之一,其功能和部分其他选项如下表所示:
Context | Description |
---|---|
dft | 编辑和自检(introspection)以下类型的设计:gate-level Verilog, RTL Verilog, RTL System Verilog和RTL VHDL |
dft -scan | Scan analysis and scan chain insertion.(Tessent Scan) |
patterns -scan | Test pattern generation and good and fault simulation.(Tessent FastScan&Tessent TestKompress) ;uncompressed scan ATPG/fault simulation, EDT ATPG/fault simulation, and Logic BIST fault simulation. |
dft -edt | EDT IP generation and optional insertion. |
必须在调用testent Shell之后和可以输入大多数命令之前设置Context。set_context
命令仅在setup模式下有效。在设置Context之前,只能运行一小部分setup命令。这些命令是您通常放置在启动文件(startup file)中的命令。可以使用get_context
命令查看当前context,该命令还会返回subcontexts,例如 patterns -scan 是否被配置为执行LogicBIST or ATPG。
System Modes
Tessent Shell中的系统模式定义了工具的操作状态(operational state)。默认系统模式为setup,可用的系统模式取决于工具的当前的context,具体如下表:
System Mode | Description |
---|---|
setup | Used as the entry point into the tool. Used to define the current context and specify the design information |
analysis | perform design analysis, test pattern generation, PDL retargeting, and simulation |
insertion | perform design editing and introspection |
使用set_system_mode
可以切换系统模式,如下:
SETUP> set_system_mode insertion
Context and System Mode Combinations
Context和System mode隐含决定了Tessent Shell的任务流程,当时进行DFT设计的时候,是从setup到analysis再到insertion;在处理patterns的时候,则是从setup到analysis。例如,如果你正在在setup mode下进行DFT设计,那么你不能执行扫描分析。
下面的表格列出了在可用Context和system mode下可以执行的操作。工具会过滤掉不适用于当前所处context/mode下的功能,并在尝试执行不在当前context/mode范围内的任务时发出错误。
Design Levels
在使用DFT设计时(即在dft环境中工作),必须设置所执行任务所处的的设计层级。设计层级包括chip, physical block 和 sub-block,没有默认配置。对于flat designs,总是工作在chip level。对于hierarchical designs,区分是工作在physical blocks 或 sub-blocks中的top-level(chip)还是较低的级别是至关重要的。
相关命令 set_design_level
。
3.Design Data Models
Tessent Shell有以下数据模型:: the hierarchical design data model, the flat design data model, and the ICL data model。每个数据模型都包含一个或多个设计对象(design objects),例如引脚(pins)和模块(modules),并且每个设计对象都与一组属性(attributes)相关联,例如总线的ID或位宽。
Flat Design Data Model
扁平化设计数据模型(flat design data model)是工具在进入分析模式时创建的层次化设计的内部扁平化表示,也可以使用create_flat_model
命令显式地创建flat模型。
扁平化设计数据模型由连接在一起的逻辑门(gates)组成。gate是primitive module的实例,gate_pin对象表示gate实例上的pin。Gate_pin对象没有唯一的实例名,但是它们有一个唯一的ID来区分彼此。ID格式为两个整数,中间用句号(period)分隔。第一个整数表示gate ID,第二个整数表示引脚索引(其中0是输出引脚,1是第一个输入引脚,依此类推)。但是,从一个网列表版本到下一个网列表版本,或者从一个Tessent Shell调用到下一个网列表版本,这个ID不会保持不变。因此,应该避免将这个ID硬编码到脚本中。
Hierarchical Design Data Model
当使用read_verilog
等命令将设计加载到工具中时,Tessent Shell将你的设计网表(design netlist)转换为内存中的分层设计数据模型(hierarchical design data model )。该设计数据在使用Tessent shell期间会一直保留在内存中,直到您删除模型或退出工具。
分层设计数据模型包含以下对象类型:
- Module —— 设计的基本构建块(basic building block),可以是Verilog模块、Tessent库模型或内置原语。
- Instrance —— module的单一实例化
- Port —— module的input、output或inout接口
- Pin —— instance的input或output接口
- Net —— 连接instances的pins的连线
- Pseudo_port —— 用户添加的原始输入或原始输出
使用set_current_design
命令将设计中的一个模块指定为当前设计。实例、引脚和线网是相对于当前设计定义的层次化对象(hierarchical objects)。
图2-1所示是本章会多次用到的分层设计的实例。单元(elements)上面的标签是实例名(instance name),单元下面的标签是模块名(module name)。例如,左上角的与门的模块名为and3,实例名为u1。
虚线框是父模块中实例化的模块。例如,模块modc是在模块modb内部实例化的。它的完整实例路径为u4/u5。
ICL Data Model
ICL(Instrument Connectivity Language)描述了组成IJTAG网络的元素(elements),以及它们彼此之间或着和网络端点上仪器之间的逻辑(尽管不一定是物理)连接。
ICL与Verilog等层次化网表有一些相似之处,它由可能包含其他模块实例的模块组成,描述了实例的引脚之间的连接关系。但是,重点是要注意ICL不是一个完整的网表。连接是端口到端口(port to port)的,而不是通过网络(nets),ICL是抽象的,不包括电路详细的物理结构。也就是说,ICL只表示network的行为。
ICL数据模型将对象定义为以下四种数据类型之一:icl_module、icl_instance、icl_port和icl_pin。
每个icl_module对象都有它的icl_port对象列表。一旦使用set_current_design命令设置了当前设计,ICL数据模型将从当前设计向下详细说明,并为icl_module的每个实例创建icl_instance对象,并为与icl_instances关联的模块的每个端口创建icl_pin对象。icl_instance和icl_pin对象是层次化对象,因此只在设置了当前设计之后才存在。
Object Attributes
设计数据模型中的每个设计对象都有一个附加到该对象的特征列表,称为属性(attributes)。例如,每个引脚都有一个属性,该属性指定其层次结构名称和父实例(parment instance)。有预定义的属性和用户定义的属性(predefined and user-defined attributes. )。预定义属性提供对工具已知信息的访问,如模块名称或引脚方向。所有设计对象都有一些预定义的属性,而且每个设计对象也可以有用户定义的属性。
创建新的用户定义属性的过程称为注册(registeration)。与用户自定义属性不同,预定义属性不需要注册。在使用每个新的用户定义属性之前,必须注册该属性并指定默认值。如果以后想更改默认值,必须先取消注册,然后再重新注册属性。
可以查询任意属性,也可以修改任意自定义属性。大多数预定义属性都是只读的。
可以根据属性及其值筛选和排序对象。执行这些操作的命令有filter_collection
和sort_collection
等。
直观地命名为“get_”的命令返回来自数据模型的对象集合和模型的属性,您可以使用这些属性对各种设计对象进行design introspection。