栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Scan Reorder & Formal

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Scan Reorder & Formal

Scan Reorder

在做综合时,DC可以吐出Scan DEF,其中包含scan chain的相关信息,ICC使用这个Scan DEF中提供的physical information,对scan chain做reordering以及timing 优化!

Scan DEF

Scan DEF中包含很多条scan chain,如下图所示

上图中描述了一条scan chain,这条scan chain中包含START和STOP两个宏,用于描述scan chain的boundary,scan chain的boundary可以是:I/O ports, scan cells, lock-up latches, or multiplexers;这里的boundary则是test_si和test_so;
在FLOATING中描述的scan cell则是可以reorderable的,包括head and tail scan cells;
如果不想ICC做scan reorder时动到head tail scan cell的话,可以手动调整scan def如下

也就是说将START和STOP设置为head scan cell的Q pin以及tail scan cell的SI pin;
或者通过下面的命令行实现
set_scan_path my_chain1 -head_elements {Z_reg[0]} -tail_elements {Z_reg[7]}

Clock Mixing

Design中可能会出现多个clock,所以scan chain可能由多个clock domain的scan cell组成,如下图所示

上图中的scan chain被分成了两个stub chain,分别属于两个clock domain,可以发现,两个clock的交接处有LOCKUP latch,分别是两个stub chain的STOP和START;
这时也可以通过set_scan_path来指定head tail elements;

什么时候需要scan def?
答:
1、如果Scanchain 即没有clock mix 也没有clock edge mix 也没有其他要特殊处理的东西,不读ScanDEF 也可以;
2、如果Scan chain中有clock mix或者clock edge mix,则需要读入Scan DEF;

Single-clock domain


对于单一clock domain的scan chain无需读入scan def;

clock edge mixed

clock edge mixed的情况是指scan chain中包含同一个clock domain的正负沿触发的scan cell,如下图所示

这里需要注意的是,负沿触发的scan cell应放在scan chain的前半段,正沿触发的scan cell放在chain的后半段,如果要将正沿触发的寄存器放在负沿触发的寄存器前面,则需要在rise edge->fall edge 过度的两个寄存器之间插一个lockup latch, 否则在做scan shift 时会漏掉一个周期;
原文链接:https://blog.csdn.net/vivid117/article/details/103856361

Multiple clock domain with data lockup

对于有clock mix或者clock edge mix的scan chain,为了解决hold问题,会在跨clock domain的边界处插入lock up latch,如下图所示

其中,LU就是lockup latch,在这个scan chain的clk1和clk2交界处插入;

Scan Reorder

首先看为什么要做scan reorder,如下图所示

这样的scan chain中scan cell之间的连线太长,可以称之为detour,很占用绕线资源,所以后端工具会重新连接scan cell,如下图所示
(这里的重新连接,改变的知识SI与SO之间的连接关系)

再看下面的例子
首先是做scan reorder之前的连接关系

虚线方框内的是要做reorder的scan segments,做完scan reorder后,效果如下

被方框圈住的out_reg_4和u_buf就类似一个整体一样,位置重新进行了排列,scan def的描述也会发生变化

Formal Issues

首先是RTL-to-Gate的Formal Issues,由于lockup latch是工具插入的cell,在原来的RTL中并不存在,所以Formality对于Lockup latch会做特殊处理;
首先,工具会检测design中名字带LOCKUP的latch,然后把这些latch分为两类:
1、Lockup latch fanout为register;
2、Lockup latch fanout为primary output或者blackbox的input;
对于第一类的Lockup latch,由于Latch的Q pin接的是register的SI pin,如下图所示

由于我们设置了scanenable为0,而latch的fanout为register的SI pin,这个SI pin是不做equivalent check的(SI pin不是compare point),,所以导致这个latch变为unread状态(工具无法读取这个lockup latch的输出值);
工具也就默认不对这种类型的latch做equivalence check了!

对于第二种的latch,就不同了,如下图所示

由于blackbox的input是一直作为compare point的,而这个latch的fanout为blackbox的input,就导致这个latch不再是unread状态了,工具需要根据lockup latch的Q pin输出来决定blockbox的input值;
这时候工具会对这个lockup latch做equivalence check,这时候就会导致一个问题:
Lockup latch也变为compare point,如果工具做了scan reorder,那么lockup latch的input fanin发生了变化,这就会导致lockup latch的failing verification!

怎么避免这个问题呢?
答:
我们对blackbox的输入设置如下
set_dont_verify $ref/bbox/si0 -propagate
使用选项propagate,使得工具不会对lockup latch做formal verification!

同理,对于连接至primary output的lockup latch的原理也基本一致!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968491.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号