有时候我们现有的网表没有带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。
----------------------莫问收获,只问耕耘----------------------
标签:set,Tessent,scan,pattern,扫描,patterns,网表 From: https://www.cnblogs.com/stu-wtjm/p/18391042