@TOC
在Tessent Shell环境中,通过设置环境(context)和系统模式(system mode)告诉工具你将要执行的任务,然后工具使用设计数据模型(design data models)来存储相关的设计数据。
1.Tool Invocation
Linux平台下,启动Tessent shell命令为
% tessent -shell
工具启动后自动进入 setup 模式,启动过程中会读取启动文件(startup file,文件名 .tessent_startup)和环境变量(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 指定了您希望使用 Tessent Shell 执行的任务的功能类别,主要分为 dft 和 patterns 两大类,具体内容如下表格所示:
设定 context 的命令为:
SETUP> set_context dft -scan
查看当前context的命令为:get_context
Tessent工具的命令是和context相关的比,比如set_context
命令仅在setup模式下有效。在设置Context之前,只能运行一小部分 setup 命令。这些命令通常是放置在启动文件中。
设定context之后,工具会自动获取所所需的license,也可以使用 set_context
的-license
选项指定license。
System Modes
Tessent Shell 中的系统模式定义工具的工作状态(operational state)。默认系统模式为 setup,可用的系统模式取决于工具的当前的context。三种系统模式如下所示:
切换系统模式的命令如下:
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设计时(即在 context dft 中工作),必须设置所执行任务所处的的设计层级。
可用的设计层级包括chip, physical block 和 sub-block,没有默认配置。
对于flat designs,总是工作在chip level;对于hierarchical designs,区分是工作在 top-level(chip) 还是在 physical blocks 或 sub-blocks 是至关重要的。(后面会有章节介绍这些level的区别,v22p142)
设置设计层级的命令为 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或位宽。
Tessent Shell Reference Manual 中的 Data Models 一节中详细介绍了每种数据模型的设计对象及其属性。
Flat Design Data Model
在进入 analysis mode (或离开 setup mode)时,工具会对自动对层次化设计进行展平(flatten),使用表示扁平化设计数据模型(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是第一个输入引脚,依此类推)。但是,这个 ID 不会保持不变,每次启动 Tessent 工具或者是 netlist 版本更新 都会导致 ID 发生变化。因此,应该避免将这个ID硬编码到脚本中。
Hierarchical Design Data Model
当使用read_verilog
等命令将设计加载到工具中时,Tessent Shell 会将设计网表(design netlist)转换为内存中的层次化设计数据模型(hierarchical design data model )。该设计数据在使用 Tessent shell 期间会一直保留在内存中,直到你主动删除或退出工具。
层次化设计数据模型包含以下对象类型:
- Module —— 设计的基本构建块(basic building block),可以是Verilog模块、Tessent库模型或内置原语。
- Inst1ance —— module的单一实例化
- Port —— module的input、output或inout接口
- Pin —— instance的input或output接口
- Net —— 连接instances的pins的连线
- Pseudo_port —— 用户添加的原始输入或原始输出
使用set_current_design
命令将设计中的一个模块指定为当前设计(current design)。实例、引脚和线网是相对于当前设计定义的层次化对象(hierarchical objects)。
图2-1所示是本章会多次用到的层次化设计实例。单元(elements)上面的标签是实例名(instance name),单元下面的标签是模块名(module name)。例如,左上角的与门的模块名为and3,实例名为u1。 (这里,它用module这个单元来表示了一个标准单元的实例。)
虚线框是父模块中实例化的模块。例如,模块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。
一旦使用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. )。预定义属性提供对工具已知信息的访问,如模块名称或引脚方向。
创建新的用户自定义属性的过程称为注册(registration)。与用户自定义属性不同,预定义属性不需要注册。
在使用每个新的用户定义属性之前,必须注册该属性并指定默认值。如果以后想更改默认值,必须先取消注册,然后再重新注册属性。
可以查询任意属性,也可以修改任意自定义属性。大多数预定义属性都是只读的,部分属性是可读可写的。
可以根据属性及其值进行对 objects 进行筛选和排序。执行这些操作的命令有filter_collection
和sort_collection
等。( Tessent Shell Reference Manual 中的 Attribute Filtering Equation Syntax 有更加详细的介绍。)(知道有这么个功能在,用得到的时候再去看就好了。)
以“get_”开头的命令返回来自数据模型的对象集合和模型的属性,可以使用这些属性对各种设计对象进行design introspection。