当PR工具导入scanchain的scandef,用于reorder,但是报错说scan chain里面的cell在db数据库里面没有?难道是scandef和网表版本对不上?
SCAN DFF的网表对用如下,熟悉DC、DFT(SCAN部分)、PR的同学应该很快就发现问题所在。
重新吐出网表后,PR工具正常读取scandef
scan def的语法我们先回顾一下。以一个异步FIFO设计的PR版图来看scan chain,一目了然:
通常使用DEF文件来定义扫描连,一般称为scan def,以下图异步FIFO的scan DEF语句来说明:
1)SCANCHAINS SCANCHAINS 3 ;表示stub chain的数量为3。
为什么有个stubchain?
注意,scandef里面的stub chain个数与设计中的实际scan chain个数不一定相同。
如上图,因异步FIFO读写时钟之间的scan chain用LOCKUP隔断,C1被分成C1_SG1、C1_SG2,即一条实际的scan chain在scandef中被拆分成两条stub chain。该类stub chain的名字(在scandef文件中以 “-”开头的参数)中会有SG标志字符:
2)+ START stub chain的开始标志。注意,+ START/+ STOP可以是scan I/O ports, codec logic gates, lockup latches, reconfiguration MUXs, or buffer/inverter pins。
比如:LOCKUP的Q端作为+START:
内部寄存器(如retiming flipflop例化了非scan cell的DFF):
+ START U_TOP/RETIMING_FLOP Q 外部管脚使用以下格式:
+ START PIN winc
3)+ STOP stub chain的结束标志,如异步FIFO网表中LOCKUP插入后:
+ STOP LOCKUP D ;
内部寄存器(如retiming flipflop例化了非scan cell的DFF):
+ STOPU_TOP/RETIMING_FLOP D 或者内部MUX:
4)+FLOATING 表示一条stub chain中可以reorder/partition的scan cell。
5) + ORDERED 表示一条stub chain中不可以重排序,上图可以看出,异步FIFO同步器synchronizer两个打拍寄存器就是ORDERED。 为什么不能reorder呢,有如下三个原因:
shift registers;
用命令set_scan_path -ordered_elements定义的scan segments;
buffers or inverters between scan cells;
也就是说:+ ORDERED 表示需要放在一起的单元,如下图中out_reg_4与u_buf就是ORDERED单元,用方框圈出 scan chain终点。
6)+ PARTITION 表示有相同PARTITION名的stub chain可以进行重新划分(repartition),如:
7) +BITS The BITS attribute表示的是a scan element that represent multiple scan bits. This allows complex scan cells, such as DFT-inserted cores, to be represented in abstract form. 通常说的一个scan cell扫描单元就是指的1bit scan cell。
审核编辑:刘清
-
寄存器
+关注
关注
30文章
5028浏览量
117723 -
DFT
+关注
关注
2文章
219浏览量
22466 -
FIFO芯片
+关注
关注
0文章
10浏览量
8745 -
Mux
+关注
关注
0文章
37浏览量
23221 -
Scan
+关注
关注
0文章
12浏览量
3445
原文标题:debug这个问题,贯通了DC、DFT、P&R
文章出处:【微信号:全栈芯片工程师,微信公众号:全栈芯片工程师】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论