系列文章目录
前言
1. Tessent Shell ETChecker与传统ETChecker的对比
1.1 工具比较
1.1.1 TS-ETChecker支持的功能
1.1.2 TS-ETChecker和传统ETChecker的区别
1.2 默认TS-ETChecker调用
1.3 支持的ETChecker约束
1.4 DRC规则名称对应
————————————————
版权声明:本文为CSDN博主「马洛w」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_29117599/article/details/118342931
目录
2.3.1 Multi-Driver Requirements 多驱动要求
2.3.2 Opposite Edge Flip-Flop Requirements 反向边沿触发器要求
2.4.2 Reset and Set Requirements 重置和设置要求
本文承接《Tessent专栏第二篇:Tessent Shell ETChecker介绍(1)》
欢迎大家关注微信公众号“微电子之路”,后续继续更新关于TessentMBIST的学习记录。
2. RTL描述要求
本章描述了RTL设计师在对芯片的RTL进行编码时需要满足的兼容性要求,以便能够成功实施Mentor Graphics嵌入式测试。
2.1 网表结构要求
本节描述了网表术语以及memoryBIST和logicBIST的网表结构要求。
2.1.1 术语
1)Top Module
一个芯片由一个单独的顶层模块组成,该模块实例化所有其他子模块。这个模块被称为顶层模块。
2)Block Module
任何被实例化一次或多次的模块将被单独布局,称为一个块。
3)ELTCore Module
当一个块用一个单独的逻辑测试控制器测试时,它被称为ELTCore。请注意,您想要用专用的逻辑测试控制器测试的模块被称为ELTCore。
4)Bottom-Up Methodology
在LV Flow环境中,一种方法,其中规则检查和从寄存器传输(RT)或门级电路描述中提取设计信息是在从设计层次的较低级别到芯片级的单个块和ELT核心模块上执行的。
2.1.2 文件分区和重复模块名称要求
为了适应用于嵌入式测试插入流程的自下而上的方法,请确保将每个块和核心的RTL描述分成不同的文件。多个文件可以用来描述每个块和核心。单个文件不能包含在多个块或ELTCore中使用的模块的定义。
此外,在嵌入式测试过程中,每个块和内核都是单独插入的。因此,您必须确保相同的模块名称不会在两个独立的块或内核中重复使用。一个给定的模块可以在单个块或内核中被实例化多次;但是,您不能将一个给定的模块重用到两个不同的块和内核中。由于扫描链和存储器内建自测试插入到不同的块和内核中,对模块所做的独立修改会导致同一模块的多个不同视图。
图2-1说明了这些使用条件。
本小节中的要求总结如下:
1)块和核心必须在不同的文件中描述。
2)给定模块只能在单个块、核心或顶层模块中使用。
2.1.3 处理不支持的HDL结构
如果您的HDL代码有ETChecker不支持的构造(例如,系统Verilog构造),您可以用pragma LV_pragma translate_off和LV_pragma translate_on包围它们。ETChecker将跳过被LV_pragma包围的HDL代码,而不会影响您的合成/模拟工具。如果要用LV_pragma封装模块的整个主体,请确保用LV指定模块。黑盒模块,从而可以实现黑盒模块扇出逻辑的可控性。
有关HDL结构的示例和详细信息,请参阅《 Tessent Shell Reference Manual 》中的“HDL Limitations in the Tessent Shell Flow”。
2.2 时钟可控性要求
本节描述了内存BIST和逻辑BIST的时钟可控性要求。
时钟可控性要求如下:
1)扫描可测试触发器和存储器使用的所有时钟域必须由主输入或内部时钟源直接控制。内部时钟源是内部时钟分频器或锁相环。 2)当时钟域进入一个物理区域(模块或ELTCore模块)时,它必须通过单个输入进入。
3)仅支持Synopsys的电源编译器风格的时钟门控单元。
本小节的要求总结如下:
1)扫描可测试触发器和存储器的时钟必须由顶部、模块或核心模块的主输入端直接控制,或者由用户指定的lv.InternalClockSource控制。
2)存储器不能在门控时钟分支上,除非门控被指定的lv.ETClockEnable信号禁用。
默认情况下,lv.ETClockEnable将禁用内存BIST和逻辑BIST的时钟门控。如果您想在扫描过程中测试时钟门控,可以使用lv.ETClockEnable选项 -disableDuringScan 。
2.3 特定逻辑BIST专用要求
本节描述了特定于逻辑BIST的要求:
2.3.1 Multi-Driver Requirements 多驱动要求
如果有三态驱动器构成一个公共的可观察网络,则必须确保控制逻辑完全从公共源解码,这样扫描可测试触发器中的任何随机状态都不能同时使能多个驱动器。您可以通过使用TestMode信号或注入控制点来强制一个驱动程序打开,另一个驱动程序关闭,从而解决这个限制。
您还必须确保不能关闭所有驱动程序,除非一个上拉或下拉连接到多驱动程序网络。此外,您可以使用测试模式信号在扫描测试模式期间永久关闭除一个驱动程序之外的所有驱动程序,然后使用相同的TestMode信号强制最后一个驱动程序始终打开。
避免在内核边界放置输入引脚,因为它们不能用分层逻辑测试控制器进行测试。如果内核边界上确实存在输入输出引脚,则必须使用测试模式信号禁用输入输出引脚的驱动程序。
本小节的要求总结如下:
1)具有多个驱动器的网络必须是总线线路。
2)在可观察到的总线线路上,不能打开一个以上的驱动器或关闭所有的驱动器。
3)驱动核心模块的输入输出端口时,必须禁用核心模块内的总线驱动器。
2.3.2 Opposite Edge Flip-Flop Requirements 反向边沿触发器要求
在逻辑测试模式下,可扫描测试的触发器可以在活动或非活动边沿工作。Mentor Graphics扫描插入过程将创建主动高扫描链和主动低扫描链,并自动处理这些电路。
默认情况下,扫描链中包含所有相对的边沿触发器。您可以强制将一些反向边沿触发器视为重定时触发器,只要它们满足具有lv.RetimingFlop属性的重定时要求。反向边沿触发器只有在其扇入或扇出中没有反向边沿触发器(包括其自身)时,才能被称为重定时触发器。
如果您正在使用高速逻辑内建自测试,每个时钟域都在其功能频率下进行测试。因此,如果相反边沿触发器是同一组同步时钟域基的一部分(它们被指定为具有相同的syncClockGroup属性),则它们不能以比其fanin中的触发器更低的频率工作。这是不允许的,因为较慢域的下降沿发生在较快域的最后一个移位沿之前。
重定时触发器不能用于域间通信的源。移位阶段以时钟的上升沿结束,这意味着重定时触发器在突发阶段的第一个下降沿之前没有被更新。因为异步时钟域异步开始其突发阶段,所以由重定时触发器提供的域间路径接收端的捕获值可能不正确。
本小节的要求总结如下:
1)反向边沿触发器的时钟频率必须等于或高于属于相同同步时钟域的fanin锥体中的任何触发器。
2)作为重定时触发器(不是扫描链的一部分)的反向边沿触发器不能产生域间路径。
2.3.3 Latch Requirements 闩锁要求
如果锁存器在您的设计中,它们必须在测试模式期间永久打开(透明),或者是简单的重定时或冗余锁存器(保持)。如果您不满足重定时要求,并且锁存器不是冗余的,那么您必须使用TestMode信号使能锁存器,以便它在逻辑测试模式期间保持透明。
虽然重新定时锁存器是可以接受的,但在使用Mentor Graphics的逻辑测试方法时,并不需要或不推荐重新定时锁存器。一种健壮的、自动化的和获得专利的按域捕获方法被用来自动处理您所有的域间路径。许多锁存器也可以是冗余的,这些锁存器是受支持的,因为它们的效果是透明的。冗余锁存器是由时钟使能但不延迟数据的锁存器。当低电平有效锁存器跟随重定时触发器时,就会出现这种情况。正边沿触发器之后的高电平有效锁存器也是多余的。
本小节的要求总结如下:可观察锁存器必须是透明的、简单的重定时或冗余的。
2.4 特定逻辑BIST和SocScan要求
2.4.1 门控时钟要求
支持类似于Synopsys的电源编译器工具推断的门控时钟分支。在扫描移位模式期间,您必须有一个可用于禁用门控的信号。该信号必须用于在锁存之前覆盖功能时钟门控信号。图2-2说明了正负边沿门控时钟分支允许的时钟门控电路。
图2-2中标记为CGD的时钟锁定数字ClockGatingDisable信号必须在预测试插入设计中包含锁存器的子模块端口上断开。请注意,您必须在 .etchecker文件中用lv.ClockGatingDisable指定信号CGD。嵌入式测试插入过程自动断开连接,并执行与子模块的CGD端口的正确连接。如果您正在使用Synopsys的电源编译器命令,请不要使用hookup_testport命令。在ETScan步骤中,您可以将它们连接起来。
门控时钟分支必须满足这些要求:
1)正边沿时钟门控分支必须使用低电平有效锁存器和与门。
2)负沿时钟门控分支必须使用高电平有效锁存器和或门。
3)当clockGatingDisable信号有效时,必须禁用时钟门控。
4)多个时钟域不能共享时钟信号。
2.4.2 Reset and Set Requirements 重置和设置要求
所有扫描可测试触发器的复位和/或置位引脚必须在逻辑测试模式期间永久关闭,或者必须由主输入或任何内部网络控制。您可以使用输入引脚或内部网络来提供置位和复位信号,只要非活动值对于由其驱动的所有复位引脚都是公共的。
本小节的要求总结如下:共享一个公共源的异步置位和复位信号必须在同一电平上工作。
2.5 RTL插入要求(重要)
本节描述了内建自测试电路RTL插入的具体要求。如果您计划在RTL级插入内建自测试硬件,必须满足RTL编码限制。
如果您计划在网表的综合视图中执行此插入,下面列出的限制不适用,因为不允许的构造在综合过程中不会持续存在。
2.5.1 Verilog RTL限制
以下限制适用于您的Verilog RTL代码,如果且仅当您将RTL插入作为BIST硬件的目标。有关如何处理不支持的HDL结构的信息,请参考第32页的“Dealing with Unsupported HDL Constructs” 。
1)限制1
模块端口名必须是简单的标识符。
Mentor Graphics RTL装配工具不支持以下类型的端口名称:
-
- 位选择和部分选择名称。
- 用命名关联定义的端口,例如:( .port_indent ( port expression ) )。
- 使用串联运算符创建的端口名。
以下示例描述了使用命名关联定义的不受支持的端口:
以下示例描述了不支持的位选择端口名称:
以下示例描述了不支持的部分选择端口名称:
以下示例描述了使用串联运算符创建的不受支持的端口名:
2)限制2
不支持未命名的端口。
不支持模块端口列表中未命名的端口。
以下所有模块定义都有不受支持的未命名端口:
但是,支持以下端口:
module test4( );
3)限制3
遗留编辑引擎Incore不支持内存实例化和内存祖先实例化中的实例数组。(Arrays of instances in memory instantiations and memory ancestor instantiations are not supported in Incore, the legacy editing engine.)
HDLE编辑引擎支持实例数组。
只要 Mentor Graphics 工具不需要修改实例,就允许实例数组。如果这些实例不是要被存储器内建自测试或它们的任何祖先模块捕获的存储器,它们不会引起问题。以下示例描述了模块顶部内存模块mem1的实例mem1_i不支持的实例构造数组:
4)限制4
在库文件中定义的宏必须在定义它们的同一文件中引用。
库文件(由-y或-v命令选项加载的文件)中引用的宏必须在该源文件或其包含的文件中定义。在命令行上用+define选项定义的宏或用-f选项加载的文件中定义的宏是持久的,适用于在包含define的文件之后编译的所有文件。
如果File1加载了-v运行时选项,则不支持以下示例。它描述了在源文件File1中定义并在源文件File2中引用的宏插孔macro jack。如果File1不是由-y或-v运行时选项加载的,而是用-f文件加载的,那么在File1之后编译File2的情况下,将存在定义插孔define jack。
3. 与ETChecker交互
3.1 Batch模式与Interactive模式
1)Batch模式
要在batch模式下运行TS-ETChecker,请将-batch选项添加到您的Tessent Shell调用中。
Batch模式会自动在升级中创建一个dofile,其中包含所有为加载、约束和分析设计而调用的Tessent Shell命令。您可以稍后在Tessent Shell交互模式下为该文件提供资源,以便进行调试。参见第268页的“Creation of a Debug Output Dofile”。
2)Interactive模式
Interactive交互式模式允许您更好地调试您的约束,并在TS命令(如report_drc_rules和analyze_drc_violation)的帮助下可视化您的DRC违例。它还使所有的Tessent Shell自省和脚本功能都可以直接用于自定义自动化或添加您自己的规则检查。
在交互模式下运行TS-ETChecker有几种不同的方法。最明显的选择是直接从命令开始:% tessent -shell 。这将为您提供Tessent Shell提示。
3.2 运行设计规则检查
3.2.1 使用交互模式
在Tessent Shell交互模式下,执行以下步骤:
1)使用可用的Tessent Shell命令(如read_verilog、read_cell_library、set_current_design等)加载和细化您的设计和库。
2)应用您的ETChecker约束,或者通过在提示符下直接键入它们,或者通过在ETChecker工具式配置文件中对它们进行分组,并运行以下命令:
SETUP> read_etchecker_constraints –file filename
3)通过发出以下命令运行灾DRCs:
SETUP> set_system_mode analysis
4)如果DRCs顺利通过,则使用以下命令创建所需的输出文件列表(每个文件一个):
ANALYSIS> write_command –outfile path_to_file
write_command :== {
write_etchecker_info |
write_etp_physical_info |
write_etp_clock_tree |
write_etp_info_fix_violations |
write_etp_info_fix_testability |
write_etp_di_info
}
3.2.2 使用Batch模式
或者,您可以使用 -batch 命令行选项来调用ETChecker。执行将通过上述步骤(1)至(4)并退出。 -batch off 模式将运行相同的步骤,但随后将在分析模式下停止,并停留在Shell中,以便让您交互式地调试最终的DRC违规。您还可以通过添加以下选项来强制Tessent Shell提前停止调试,这些选项在传统的ETChecker中按原样存在:
1)-noelab —加载所有设计和库模块,但不要详述它们.
2)-norules —在上述步骤(2)后停止。
3)-mode schematicView —运行步骤(1)并打开可视化工具进行设计检查。
您还可以指定以下调试标志选项:
1)-debug_flag load_only — 仅运行上述步骤(1)。
2)-debug_flag no_outfile — 运行步骤1至3并停止。
3.3 指定lv.constraints
在Batch模式下,TS-ETChecker内部运行read_etchecker_constraints命令,以读取向后兼容的ETChecker工具格式的约束文件,如 .etchecker 和 .etcScanData文件。
这些文件中的语法支持自由格式列表,例如:
lv.ETClockEnable -name top.A.B top.C.D top.E.F -polarity 1
在交互模式下,在Tessent Shell提示中指定相同的约束要求在花括号之间放置相同的管脚列表。比如:
lv.ETClockEnable -name {top.A.B top.C.D top.E.F} -polarity 1
当出现转义名称时,在 *.etchecker配置文件中用双引号将约束括起来,如下例所示:
lv.ETClockEnable -name “top.\A.B ” -polarity 1
在Tessent Shell中,相同的约束是通过用花括号括住转义名称来交互指定的,而不是如下例中的双引号:
lv.ETClockEnable -name {{top.\A.B }} -polarity 1
与大多数本机Tessent Shell命令相反,没有与任何lv.xxx约束等效的“移除”或“删除”,这意味着您指定的每个约束在单个交互式Tessent Shell会话期间都会不断累积。只有在重新加载设计并使用set_current_design命令重新运行elaboration时,才会在内部删除约束和内部数据库。
3.4 操作模式
传统ETChecker具有不同的操作模式,由-mode选项指定。这些操作模式在 TS-ETChecker中实现如下:
3.4.1 支持的-mode选项值
1)ruleCheck — 该选项的行为与传统蚀刻器相同,并且:
-
-
- 加载设计
- 应用输入配置文件约束
- 运行DRCs
- 写出 .etCheckerInfo文件和其他输出文件
- 如果您指定 -batch off,则保持在shell内
-
2)clockInfo — 此选项执行Tessent Shell时钟提取操作,并写出以下文件:
-
-
- <outDir>/etp/.etcClockDomainInfo
- <outDir>/etp/.etcClockTree
-
如果将-batch选项设置为“off”,则在设置模式下,它会保留在shell的内存中。
3)SchematicView — 此选项加载设计,打开Tessent可视化工具,并保留在Tessent Shell会话的内存中。使用Tessent可视化工具,您可以使用可视化工具的浏览和图表显示功能来探索设计。在传统的ETChecker中,需要运行该工具两次:一次用于编译设计,一次用于调用原理图查看器GUI。在TS-ETChecker中,只需要调用工具一次。有关完整信息,请参见第47页的“Tessent可视化工具DRC调试”。
3.4.2 传统过时的-mode选项值
1)loadVDBFile — 在传统的ETChecker中,该选项用于重新加载上次ETChecker运行的设计和分析结果,并启动设计查看器GUI。在LV Flow中,它用于:
-
-
- 在设计分析以batch模式进行之后,在稍后的时刻调试DRC违反的情况。TS-ETChecker中不支持这种谈话分割。
- 用作原理图查看工具。
-
2)vhdlCompile — 该模式允许多次运行VDHL库编译。Tessent Shell只能一次编译完所有的VHDL文件。参见第273页的“硬件描述语言流程变更”。
3.5 使用通配符
您可以在ETChecker中使用通配符(*)。然而,不同的属性根据它们所属的类别以不同的方式使用通配符。