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的原理也基本一致!

Scan Reorder Formal相关推荐

  1. DFT实训教程笔记3(bibili版本)-SOC Scan Implementtation Scan Practice Session II

    文章目录 回顾作业 scan.tcl的脚本 如何分析SPF文件 做scan时候的Flow脚本 让工具autofix rst问题 如何看preview_dft set_scan_element fals ...

  2. 如何理解ScanDef的概念

    文章目录 背景:reorder和repartition的概念 DEF文件的结构 写出sdf文件 一些好文链接 Scan Def文件是在我们insert DFT之后write out出来,本篇博文对Sc ...

  3. IC design的初期阶段(floorplan和place初期)的检查清单checklist

    1.检查spare cell是不是正确的放置在需要的domain,一般在place opt stage摆进去 2.high fan-out check,一般在综合的时候会设置high fan-out ...

  4. Formal verification (FV) 处理复杂度 形式验证 第10章

    目录 一.设计状态和相关复杂性 二.内存控制器 三.观察复杂性问题 四.简单的收敛技巧 1.选择正确的战斗 2.引擎调整 3.黑盒(blackboxing) 4.参数和尺寸缩减 5.案例分解 6.属性 ...

  5. 一次 Scan 竟耗时上百秒?Redis Scan 原理解析与踩坑

    来自:指月 https://www.lixueduan.com 原文:https://www.lixueduan.com/post/redis/redis-scan/ 主要分析了 Redis Scan ...

  6. StarRocks Join Reorder 源码解析

    导读:欢迎来到 StarRocks 源码解析系列文章,我们将为你全方位揭晓 StarRocks 背后的技术原理和实践细节,助你逐步了解这款明星开源数据库产品. 本期 StarRocks 技术内幕将介绍 ...

  7. Redis 笔记(13)— scan 和 keys 寻找特定前缀key 字段(命令格式、使用示例、定位大key)

    1. keys Redis 提供了一个简单暴力的指令 keys 用来列出所有满足特定正则字符串规则的 key. 127.0.0.1:6379> keys * (empty array) 127. ...

  8. android ble 设备扫描程序,Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备...

    本文将带你了解Android应用开发Android 7.0  BLE scan 问题:程序无错但扫描不到BLE设备,希望本文对大家学Android有所帮助. < 最近在做毕设,需要几周内从头学起 ...

  9. oracle RAC的VIP和scan

    我们都知道Oracle RAC中每个节点都有一个虚拟IP,简称VIP,与公网IP在同一个网段. 没有VIP时,Oracle客户端是靠"TCP/IP协议栈超时"来判断服务器故障.而T ...

  10. 【Qt】QPixmap加载图片报错:Corrupt JPEG data: premature end of data segment Didn‘t expect more than one scan

    1.问题描述 在使用QPixmap加载图片时失败,错误信息如下 Corrupt JPEG data: premature end of data segment Didn't expect more ...

最新文章

  1. 决策树-随机森林-两种Feature importances排序方法
  2. 2. sed执行的流程
  3. 公共资源情报(OSINT)工具Automater
  4. 根号x_干货 | 设x=my+n?这不耍流氓嘛
  5. Newtonsoft.Json(Json.Net)学习笔记
  6. 菜鸟postman接口测试_postman 接口测试(转)
  7. pytorch 语义分割loss_vedaseg:基于pytorch的开源语义分割工具库,更多模型支持,更易拓展...
  8. C# 查农历 阴历 阳历 公历 节假日
  9. c语言标准库函数大全用法,C 标准库函数
  10. 自己用C#写的控制三菱FX5U PLC
  11. 48种世间哲学,其中值得借鉴的有10个
  12. 讲解双手白嫩光滑的几点小常识
  13. otter实现数据同步,otter manger的安装
  14. 京东API详情接口调用示例
  15. H5 Vue 视频 video 支持预览图 poster
  16. PTA | 日期的推算* (10分)
  17. Android studio app启动时默认启动页面为自定义界面
  18. 深入聊聊微服务架构的身份认证问题
  19. SAS学习笔记4:实战
  20. 计算机网络组成原理概述概述

热门文章

  1. Web应用网站CDN加速访问技术原理
  2. 软件的界面测试是什么?怎么设计的?
  3. 攻防比赛中蓝队常用的攻击方法
  4. 鹏业安装算量材料表不能复制问题解答
  5. ECharts南丁格尔图
  6. 《windows 程序设计》读书笔记 三
  7. 华为er路由器设置虚拟服务器,华为AR111-S路由器双线路策略路由配置笔记
  8. 大规模定制基本思想和特点介绍
  9. pmos低电平驱动_详细讲解MOSFET管驱动电路
  10. 【尚硅谷_数据结构与算法】一、数据结构与算法概述