用Tessent工具给网表插入扫描链

有时候我们现有的网表没有带scan cell,但我们又想将其变成一个可扫描的网表,就可以用Tessent工具帮助我们实现。

 

插入扫描链的过程,一般是将电路的时序非扫描单元(如DFF)替换成时序扫描单元(如SDFF),同时添加一些必要的输入输出端口,再将这些时序扫描单元和输入输出端口连接起来,形成了扫描链结构。

 

本文的示例demo运行用的Tessent版本号是2019.2,不同版本的指令会有不同,需要查询对应版本的工具手册作对应修改。下面是tcl脚本示例:

 

 1 //=======================① 读取文件,插入扫描链 ======================//
 2 // 进入 DFT 模式
 3 set_context dft -scan -legacy
 4 
 5 // 读取原网表
 6 read_verilog 原网表路径/原网表名.v
 7 
 8 // 读取库文件
 9 read_cell_library 库文件路径/库文件名
10 
11 // 自动解析控制信号(包括clock、set、reset、read、write)
12 analyze_control_signals -auto
13 
14 set_system_mode analysis
15 
16 // 插入扫描逻辑,设定扫描链数目
17 insert_test_logic -scan on -number 链数
18 
19 // 输出扫描链信息
20 report_scan_chains
21 report_scan_cells
22 
23 // 输出插入扫描链后的网表
24 write_design -output_file 新网表路径/新网表名.v -replace
25 
26 // 输出dofile和testprocedure文件
27 write_atpg_setup 文件路径/文件名 -replace
28 
29 // 本文需求已达成,后面是基于新的网表文件进行仿真和输出
30 //========================② 仿真,输出pattern ======================//
31 set_context patterns -scan
32 
33 add_faults -All 34 35 // 介绍两种生成pattern的方式,二选一即可 36 37 // 方式一通过ATPG自动生成,pattern数目不确定,故障覆盖率高 38 create_patterns 39 40 // 方式二:通过随机向量生成,可自己指定pattern数目 41 set_random_patterns pattern数 42 simulate_patterns -source random -store_patterns all 43 44 report_statistics 45 46 // 以STIL格式输出pattern 47 write_patterns 文件路径/文件名.stil -stil2005 -replace 48 49 exit

 

至此,完成了给网表插入扫描链的工作,并且对新网表进行了仿真或故障模拟,最后输出了pattern。

 

----------------------莫问收获,只问耕耘----------------------

posted @ 2024-10-10 11:35  stu_wtjm  阅读(571)  评论(0)    收藏  举报