当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。
为什么有个stub chain?
注意,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):
+ STOP U_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。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !