Scan Synthesis Practice
不同上升沿触发器如何进行scan chain


DFT实例
Synopsys 工具文档

Mentor DFT脚本

- add_clocks 0 clk - 0表示上升沿

Synopsys DFT脚本

更改netlist

- 需要反相器,实现设计中既有上升沿触发的期间和下降沿触发的
- sysnopsys的库文件是.db文件,是二进制文件,是不可读的
- mentor的库文件是.mdt的文件,是可读的,可以从其中找一个反相器


- Netlist更改完成


输出的Netlist

- 工具默认的行为是将上升沿和下降沿的cell分别串成scan chain
set_scan_configuration


修改脚本


- 会将上升沿和下降沿的寄存器串成一个chain

- 一个test_si,先连到I3,I3是下降沿触发的,所以有上升沿和下降沿的寄存器,scan chain是先串下降沿再串上升沿


Multiple clock domain

- 默认会将不同的clock domain看成异步的关系,串成不同的scan chain,但是有时候会将多个时钟域串成一条scan chain,如何实现?



- 在一个时钟周期内,capture值越晚的,在scan chain中越向前
- 下降沿触发reg在上升沿触发器reg之前
- clock skew,clk上升沿晚到的clk,在scan chain中在前
- 不满足上述条件容易出现的问题:shift in的时候容易出现连着两个cell的值是一样的,shift out的时候,会丢失scan chain的值


- lockup cell是为了解决两个clock domain之间串scan chain的问题,不是为了解决register在scan chain上前后的顺序问题




Scan related signal

Scan Design rules - Clock
- 判断cell是不是能够串到scan chain上去,看cell串到scan chain上之后,scan chain是不是能正常的shift in和shift out

- 更改设计,function mode下的design保持不变,在df mode下将时钟打通,就可以将后面两个reg串到scan chain上
- 为什么时钟上要加与门?原因是为了低功耗设计,添加clock gating
- 时钟切换(clock toggle)导致晶体管的反转,功耗比较大

- 更改设计的方式:将逻辑更改,放到RTL中,综合之后可以考虑其中的时序;直接在netlist上使用工具进行auto fixed
Scan Design rules - Set/Reset

- reset信号是由DFF控制的,可能为0,可能为1,如果串到scan chain上去,导致scan chain不能正常shift in,shift out

Clocking Gating Cell

Scan Synthesis Practice的更多相关文章
- scan design flow(二)
在scan stitch之后,scan synthesis就已经完成, Scan extraction主要用来从scan design中extracing所有的instance,来保证scan cha ...
- scan design flow(一)
一个典型的scan实现的flow: clock mux和一些rst,在Scan中都被bypass掉,是不能测到的.所以DFT的test coverage一般就在97%或98%. scan design ...
- Logic and Fault simulation
fault simulation是指对fault circuit的simulation,来locate manufacturing defects并且进行fault diagnosis. logic ...
- Grid Infrastructure Single Client Access Name (SCAN) Explained (文档 ID 887522.1)
APPLIES TO: Oracle Database - Enterprise Edition - Version 11.2.0.1 and laterExalogic Elastic Cloud ...
- 关于并行计算的Scan操作
simple and common parallel algorithm building block is the all-prefix-sums operation. In this chapte ...
- Book Review of “The practice of programming” (Ⅲ)
The practice of programming Chapter 3 Design and Implementation In this section, we focus on one kin ...
- Union比or快 Using UNION is faster when it comes to cases like scan two different column。
problem: 595. Big Countries A country is big if it has an area of bigger than 3 million square km or ...
- Pramp mock interview (4th practice): Matrix Spiral Print
March 16, 2016 Problem statement:Given a 2D array (matrix) named M, print all items of M in a spiral ...
- Atitit 数据存储视图的最佳实际best practice attilax总结
Atitit 数据存储视图的最佳实际best practice attilax总结 1.1. 视图优点:可读性的提升1 1.2. 结论 本着可读性优先于性能的原则,面向人类编程优先于面向机器编程,应 ...
- go-hbase的Scan模型源码分析
git地址在这里: https://github.com/Lazyshot/go-hbase 这是一个使用go操作hbase的行为. 分析scan行为 如何使用scan看下面这个例子,伪代码如下: f ...
随机推荐
- 接手了个项目,被if..else搞懵逼了
背景 领导:"这个项目,今后就给你维护了啊,仔细点." 小猫:"好,没问题". 可当满怀信心的小猫打开项目工程包翻看一些代码之后,瞬间懵逼没了信心. 是这样的 ...
- StringBuilder、StringBuffer
StringBuilder 1.concat() 拼接字符串 2.indexOf() 查找 3.replace() 替换 4.subString(1,2) 截取 0,1,2 1开始 2结束 Strin ...
- ElasticSearch之Index stats API
获取指定索引的统计数据. 获取指定索引的全部统计数据,命令样例如下: curl -X GET "https://localhost:9200/testindex_001/_stats?pre ...
- Spring 七种事务传播性介绍
作者:vivo 互联网服务器团队 - Zhou Shaobin 本文主要介绍了Spring事务传播性的相关知识. Spring中定义了7种事务传播性: PROPAGATION_REQUIRED PRO ...
- 玩转Python:处理音频文件,两个非常重要的库,很实用,附代码
pyaudio和sounddevice都是用于Python中音频处理和流的库,允许用户通过他们的API录制.播放和处理音频数据.下面是对这两个库的简要介绍: PyAudio PyAudio 提供了 P ...
- Spring 多线程的事务处理
问题起因 Spring 的 JDBC 相关的依赖库已经提供了对 JDBC 类事务处理的统一解决方案,在正常情况下,我们只需要在需要添加事务的业务处理方法上加上 @Transactional 注解即可开 ...
- 储存入redis并且将次数进行+1
// 储存入redis并且将次数进行+1stringRedisTemplate.opsForValue().increment(RedisKey.LOGIN_FATL_NUM + "1348 ...
- 教你几个部署多个nginx-ingress的注意事项
本文分享自华为云社区<nginx-ingress工作原理以及多nginx-ingress部署注意事项>,作者: 可以交个朋友. 一.nginx-ingress工作原理 nginx-ingr ...
- 华为云云容器引擎CCE产品文档带来4个升级,降低使用难度
本文分享自华为云社区<华为云云容器引擎CCE产品文档优化升级!>,作者: 云容器大未来 . 云原生产品技术栈庞大,需要用户对容器.Kubernetes等核心技术都有扎实的理解和掌握:同时问 ...
- Mac 向日葵设置