文章目录

  • 如何指定Scan Chain Length
  • 使用set_scan_path来订制scan chain
  • Multiple Clock Domains
  • 关于Multibit Components 的scan chain
  • Few-Pins-to-Many-Pins Scan Cell Replacement Situation
  • Many-Pins-to-Few-Pins Scan Cell Replacement Scenario
  • Scan Stitching Only Scan-Replaced Cells

如下图所示,分清楚三个概念:

  • scan link
  • scan element
  • scan segment
    注意下面的latch,也是scan link的一部分,而scan segment包含了scan element。

如何指定Scan Chain Length

set_scan_configuration -max_length 7
假设有29个FF,那么将会被分配为6,6,6,6 和5。工具会尽量的让scan chain符合balance的预期。
tips: -max_length与**-chain_count**可能会产生冲突,此时将会以-max_length优先。尽量不要二者一起使用。

另外我们可以用**-exact_length**指定准确的scan chain的长度。
假如说,你有420个FF,你现在使用-exact_length 80,此时,将会是5条chain 80个FF,一条chain有20个FF。将不考虑chain balance的问题。
值得注意的是,-exact_length的用法只能够用在standard scan中,不能用于scan compression的架构下。
另外注意-exact_length不能与-max_length或者-chain_count一起混合使用。

所以,综上所述,我个人建议,可以直接分为三类进行选择,最好不要混合使用:

  • - max_length(考虑balance,优先级最高)
  • - chain_count(考虑balance)
  • - exact_length(不考虑balance,不可以用于compression架构,不能与前面混合使用)

如何查看配置完毕的chain length信息:
report_scan_configuration

如何考量scan chain count?
1、需要询问测试厂商,能支持多少条scan chain通道。
2、为了防止timing相关的问题,最好是一个clock domain一条chain(DFTC 默认行为),DFTC是以一个时钟边沿作为一个clock domain,只有Multiplexed flip-fop这种scam stye,才会因为clock domain而影响scan chain的数目,如果你选择其他的scan style,只会有一条scan chain的产生。
3、测试时间的考量,因为测试时间取决于你最长的那条chain,因此,你需要增加chain来减少测试时间。

使用set_scan_path来订制scan chain

通常来说scan chain,会由chain count or chain length来设置,但是使用set_scan_path之后,可以针对那一条chain来单独订制更多的个性化需求。
1、单独某一条chain 的exact scan chain length
set_scan_path C1 -exact_length 40
2、指定某一条chain连到专门的scan_in/out 口。

Multiple Clock Domains

假如说,现在有三个clock damain,但是我想实现两条scan chain的balance。
通常我会这样来指定:

dc_shell> set_dft_signal -view existing_dft -type ScanClock -timing [list 45 55] -port {clk1 clk2}
dc_shell>set_scan_configuration -chain_count 2

但是仅仅这样指定是实现不了需求的。如下图所示。

你需要mix clock edge within a single chain

dc_shell> set_dft_signal -view existing_dft -type ScanClock -timing [list 45 55] -port {clk1 clk2}
dc_shell> set_scan_configuration -chain_count 2
dc_shell> set_scan_configuration -clock_mixing mix_edges


如上图所示,通常我们会采用第二种方法,第二种方法虽然在balance上面能够做的更好一些了,但是如果一个clk带有的FF很多,一个clk带有的FF很少,即使mix_edges 也会导致balance的问题,虽然还有第三种mix_clocks的方法,但是我司并没有采用。

关于Multibit Components 的scan chain

首先需要知道的是什么是Multibit Compponents?
综合工具会把多个register捆绑成一组,于是称呼这一组寄存器为"multibit components"。后端布局布线的工程师,称为“banks"
采用multibit cell来代替single bit cell有什么好处?

下图是采用2bit的multibit代替两个单bit的cell

在RTL级别,用create_multibit的cmd指定

在后端工程师的flow里面,称之为placement-aware register banking flow,可以将相邻的单bit cell放到一个register bank下面,然后用一个multibit register cell替换这个bank。

如下图所示,对于有QN的cell,map后出来的multibit cell也是有QN的。

如何将multibit 映射为scan cell
如下图所示,有两种结构:
1、multibit scan cell with parallel scan bit
output not chained with next register bit,separate data input for each scan bit.
2、multibit scan cell with internal serial scan chain
output chained with next register bit, one scan data input for whole multibit register.


默认情况下,insert_dft的时候,会把multibit component里面的cell作为离散的时序信号,DFTC会进行重新打乱顺序来串,或者是分开,或者用于平衡别的scan chain。
那如果使用下面的cmd后,将会作为scan segment, 如上图左图所示:

dc_shell > set_scan_configuration -preserve_multibit_segment true

使用的该cmd之后,就不会把multibit里面的bit单独来看待处理。
可以使用下面的选项show出,如果要串的multibit后的相关信息:
preview_dft -show { segments }

Few-Pins-to-Many-Pins Scan Cell Replacement Situation

如果你发现,在Scan replacement的过程中,发现有Few-Pin到Many-Pin这种情况,如下图所示,在scan_replacement的过程中,多出了CLR置位和RST复位这两个pin。当然增加的pin是会被tie值为inactive的状态。
当然你在log中也会得到warning相关的信息。

如果要修正这个warning,你可以手动指定这个nonscancell,到指定的scancell。

set_scan_replacement -nonscan DFF1 -multiplexed_flip_flop SDFF1R

Many-Pins-to-Few-Pins Scan Cell Replacement Scenario

如下图所示,因为我的clear和reset是unconnect的,所以在进行scan replace的时候,可能会砍掉这两个pin,而选用不带有这两个pin的cell,从而有可能导致逻辑错误。因此,也可以手动的指定。

set_scan_replacement -nonscan DFF1 -multiplexed_flip_flop SDFF1R

Scan Stitching Only Scan-Replaced Cells

默认情况下,inser_dft会针对没有进行scan_replacement的cell,在具备扫描属性,在没有违背DRC的情况下,自动执行scan_replacement。
当我们拿到一个已经scan_replaced的design,如果你不想要insert_dft的时候,执行scan_replacement,你需要

set_scan_configurartion -replace false

如果,你读取的是ddc文件,则不必指定,因为tool能识别到你之前的scan-replacement result。
在我们的脚本中,使用了上述cmd,默认该cmd是true。

DFTug - Architecture Your Test Design相关推荐

  1. 激光雷达Lidar Architecture and Lidar Design(下)

    激光雷达Lidar Architecture and Lidar Design(下) Considerations on Lidar Design 双基地还是单基地? 双轴还是同轴? 几何重叠 向上还 ...

  2. 激光雷达Lidar Architecture and Lidar Design(上)

    激光雷达Lidar Architecture and Lidar Design(上) 介绍 激光雷达结构: 基本条件 构型和基本布置 激光雷达设计: 基本思想和基本原则 总结 介绍 激光雷达结构是激光 ...

  3. 我的数字IC学习路线

    引言 很多朋友和我一样也是从FPGA转行入到数字IC,所以对数字IC很多知识也不是很清楚,我也一样不清楚,我想把我的数字IC学习路线记录在此, 全网也没有博客能如此详细的汇总这条路线并且分享出来,本博 ...

  4. Domain Driven Design and Development In Practice--转载

    原文地址:http://www.infoq.com/articles/ddd-in-practice Background Domain Driven Design (DDD) is about ma ...

  5. AMD RDNA Architecture - AMD RDNA 架构

    AMD RDNA Architecture - AMD RDNA 架构 https://www.amd.com/en/technologies/rdna Architected for Gaming ...

  6. Domain-driven design essentials - Key Concepts

    本篇是DDD的基础,从这个链接转载.DDD的方法非常好,就是根据业务场景解耦,读写分离,形成相对对立封装的组建,用抽象的封装(interface)包容组建替换,代码和部署独立,使得代码可维护,可测试, ...

  7. 3D Game Engine Design, Second Edition --- Go to Get it !

    那么多年了,国内的出版商终于发行了一本像样的关于游戏引擎设计的书.以往的<game programming gems>和<GPU Gems>虽然是好书,可惜被翻译之后,大打折扣 ...

  8. Low Power Design in SoC Using Arm IP

    Low Power Design in SoC Using Arm IP Documentation – Arm Developer Documentation – Arm Developer By ...

  9. Principles for Microservice Design: Think IDEALS SOLID

    我们之前都在强调SOLID,现在可能可能要考虑一下IDEALS,主要包括以下原则: Interface segregation Deployability (is on you) Event-driv ...

最新文章

  1. LeetCode 685. 冗余连接 II
  2. twisted:基于python的twisted框架编写一个客户端和服务端的对话聊天空间
  3. Linux监控   Nagios
  4. 星晨急便凶多吉少:马云陈显宝无意援手或破产
  5. 面向对象的几大设计原则
  6. android 启动第三方程序的代码(利用ComponentName)
  7. SAP Spartacus UI ConfigurableRoutesService router.resetConfig 的调用逻辑
  8. 网络一大抄,无耻的网站
  9. Java笔记-使用jpa连接mysql数据库
  10. 非科班程序员和科班程序员的差距到底在哪里?
  11. maya动画镜像_Maya
  12. 深圳租房你必须知道的问题有哪些?
  13. 初中英语语法(015)-附加疑问句
  14. 如何开发一个车牌识别,车牌识别系统,车辆识别系统毕业设计毕设作品
  15. linux终端分屏显示tmux,screen和tmux分屏
  16. 2020最新开发及环境搭建类经典面试题
  17. shell获取脚本本身名称_linux,shell脚本中获取脚本的名字,使用脚本的名字。
  18. Python正则表达式在线练习(网页版)和离线练习(本地版)
  19. 利用算子求解图像梯度
  20. c fread 快读 详解_万事开头难,手把手教你搭建Appium自动化测试环境,实践案例详解...

热门文章

  1. Python: 元组的基本用法
  2. WGS84经纬度坐标转北京54高斯投影地方坐标流程
  3. 暂停更新CSDN博客
  4. 博客园上海俱乐部Windows 7社区发布活动的奖品
  5. Winrar从命令行查看压缩文件内容
  6. openCV基础数据结构介绍
  7. 超图空间数据模型概要1
  8. Eclipse基本使用
  9. lockfree buffer test
  10. 2017-2018-2 20155303『网络对抗技术』Final:Web渗透获取WebShell权限