TestMAX/DFT Compiler:时序单元的类型、连接顺序和后DFT优化

相关阅读

TestMAX/DFT Compilerhttps://blog.csdn.net/weixin_45791458/category_12865937.html?spm=1001.2014.3001.5482


时序单元的状态

未映射的时序单元(Unmapped Sequential Cell)

在Design Compiler读取了一个RTL设计后,Design Compiler内置的HDL Compiler工具会将其转化为GTECH格式(或者说Generic Technology格式)的网表,其中的时序单元(例如触发器和锁存器)会使用SEQGEN(或者说Generic/UnmappedSequential Cell)表示,SEQGEN的框图如图1所示。

图1 SEQGEN及其引脚表示

例1展示了一个异步复位D触发器的RTL描述和其对应的SEQGEN实现,如图2所示。

复制代码
// 例1
module D_FF (
    input wire clk,        // 时钟信号
    input wire reset,      // 异步复位信号
    input wire d,          // 数据输入
    output reg q           // 数据输出
);

// 异步复位逻辑
always @(posedge clk or posedge reset) begin
    if (reset)             // 如果复位信号为高,输出q清零
        q <= 1'b0;
    else                   // 否则,在时钟的上升沿将输入d传递到q
        q <= d;
end

endmodule

图2 DFF的SEQGEN实现

实际上,一旦设计中存在未映射的单元(此处单元可以指时序单元也可以指其他叶单元,还可以指包含未映射叶单元的层次单元),使用preview_dft或insert_dft命令时就会报错,无法进行扫描替换或者扫描连接。有关叶单元的相关介绍,可以见静态时序分析:Leaf Cell(叶单元)一文。

未映射的时序单元会有一个值为true的属性is_a_generic_seq,如下所示。

复制代码
dc_shell> get_attribute [get_cell q_reg] is_a_generic_seq
true

非扫描时序单元(Nonscan Cell)

在Design Compiler中使用综合命令(不使用-scan选项)后,SEQGEN将被映射为具体的库单元,此时的时序单元被称为非扫描时序单元。

图3展示了映射到库单元的异步复位D触发器,库单元的参考名为DFFRQX2。

图3 DFF的映射后实现

未连接/布线的测试就绪单元(Unstitched/Unrouted Test-ready Cell)

在Design Compiler中使用综合命令(使用-scan选项,这被称为Test-Ready Compile)后,非SEQGEN将被映射为未连接/布线的测试就绪单元,此时扫描链尚未将这些测试就绪单元连接起来,扫描输入(SI)和扫描使能(SE)等扫测试引脚会被连接到适当的状态以启用功能模式(这些连接临时的)。

图4展示了映射到库单元的扫描异步复位D触发器,库单元的参考名为SDFFRQX2,这是图3所示DFF的扫描等价。

图4 DFF的扫描单元实现

使用Test-Ready Compile将SEQGEN直接映射为未连接/布线的测试就绪单元是建议的行为,除此之外可以对已映射为非扫描时序单元的设计进行扫描替换(使用compiler -scan或insert_dft命令)得到未连接/布线的测试就绪单元。

未映射的时序单元会有一个值为true的属性scanned_by_test_compiler,如下所示。

复制代码
dc_shell> get_attribute [get_cell q_reg] scanned_by_test_compiler 
true

需要注意的是,在某些情况下,不使用-scan选项的综合命令也会将SEQGEN直接映射为扫描触发器(比如使用只有扫描触发器的库进行综合),但此时它不是一个未连接/布线的测试就绪单元,因此没有scanned_by_test_compiler属性。

已连接/布线的扫描单元(Stitched/Routed Scan Cell)

当使用insert_dft命令后,符合条件(比如满足设计规则约束)的未连接/布线的测试就绪单元将被连接为扫描链,成为已连接/布线的扫描单元,如图5所示。

图5 一个全扫描设计的扫描链路径

时序单元的连接顺序

在Design Compiler的线负载模式下,扫描单元按完整层次路径名称中的字母和数字顺序分配并排序到扫描链中。

在Design Compiler的拓扑模式下,扫描元件根据虚拟布局信息分配和排序到扫描链,这样可以减少扫描路由的开销。在这种情况下,preview_dft和insert_dft命令会发出以下消息,表示使用了拓扑信息:

复制代码
Running DFT insertion in topographical mode.

后DFT优化

在扫描链连接后,还可以进行后DFT优化,根据模式的不同,后DFT优化的命令也不同。下面所有的例子,假设从RTL描述开始编译。

线负载模式

复制代码
// 例2
// 对于DC Expert
dc_shell> compile -scan         # Test-Ready Compile
...应用DFT设置...
dc_shell> preview_dft
dc_shell> insert_dft            # 连接扫描链

// 对于DC Ultra
dc_shell> compile_ultra -scan   # Test-Ready Compile
...应用DFT设置...
dc_shell> preview_dft
dc_shell> insert_dft            # 连接扫描链

在Design Compiler线负载模式下,insert_dft命令默认自动执行基本的门级后DFT优化。如果需要,可以通过以下命令禁用它:

复制代码
dc_shell> set_dft_insertion_configuration -synthesis_optimization none

注意:在这种情况下,如果禁用了insert_dft命令的自动后DFT优化,仍然可以手动执行后DFT增量编译来进行后DFT优化。

复制代码
// 对于DC Expert
dc_shell> compile -scan -incremental       # 后DFT增量编译

// 对于DC Ultra
dc_shell> compile_ultra -scan -incremental # 后DFT增量编译

拓扑模式

复制代码
​// 例3
// 对于DC Ultra
dc_shell> compile_ultra -scan               # Test-Ready Compile
...应用DFT设置...
dc_shell> preview_dft
dc_shell> insert_dft                        # 连接扫描链
dc_shell> compile_ultra -scan -incremental  # 后DFT增量编译

// 对于Design Compiler Graphical
dc_shell> compile_ultra -scan -spg               # Test-Ready Compile
...应用DFT设置...
dc_shell> preview_dft
dc_shell> insert_dft                             # 连接扫描链
dc_shell> compile_ultra -scan -spg -incremental  # 后DFT增量编译

// 对于Design Compiler NXT
dcnxt_shell> compile_ultra -scan -spg               # Test-Ready Compile
...应用DFT设置...
dcnxt_shell> preview_dft
dcnxt_shell> insert_dft                             # 连接扫描链
dcnxt_shell> compile_ultra -scan -spg -incremental  # 后DFT增量编译

在Design Compiler拓扑模式下,insert_dft命令不会执行后DFT优化,需要在insert_dft命令完成,手动执行后DFT增量编译来进行后DFT优化,下面的命令在拓扑模式是无效的。

复制代码
​dc_shell-topo> set_dft_insertion_configuration -synthesis_optimization all

当增量优化设计时,工具会根据需要对扫描链中的扫描单元进行重新排序和重分区,以进一步减少拥塞。在这种情况下,compile_ultra命令会显示以下消息:

复制代码
Information: Performing scan chain reordering in the SPG flow. (SPG-126)
相关推荐
ARM|X86+FPGA工业主板厂家12 小时前
AI视觉跟随运动控制实战|RK3588 NPU检测+FPGA EtherCAT多轴联动精准跟随方案,适用于半导体视觉对位等
人工智能·fpga开发·硬件工程·ethercat·实时系统
hai3152475432 天前
芯片设计的空间框架:以电流步距与相位为核心
硬件架构·硬件工程·材料工程
aixingkong9212 天前
Atlas 950 1024卡SuperPoD推测分析
网络·人工智能·硬件架构·硬件工程
屈服强度拉满3 天前
SolidWorks草图绘制技巧大全
硬件工程
智者知已应修善业5 天前
【使用D触发器74HC175实现0001 0011 0111 1111 1110 1100 1000的循环彩灯电路。】2025-4-28
驱动开发·经验分享·笔记·硬件架构·硬件工程
AI的探索之旅6 天前
我把立创EDA接进了本地大模型:数据不出门的AI设计检查实测
人工智能·stm32·硬件工程
mk0156 天前
20V输入,12V 3A输出 效率96%DCDC降压芯片
驱动开发·单片机·硬件工程·智能硬件·pcb工艺
Byron Loong7 天前
对比介绍下【硬件】 SATA、SAS、IDE,CF,MSTAT、NGFF 等接口的特点、异同,优劣势
硬件工程
黄一一9112438 天前
硬盘健康监测软件!绿色便携版!电脑硬盘还能用几年?CrystalDiskInfo工具帮你提前避开数据丢失
windows·电脑·硬件工程·开源软件
半导体憨包8 天前
MOSFET结构演进:平面→沟槽→超结,功率密度的三次跨越
硬件工程·半导体·dc-dc·半导体芯片