写在前面, DFT compiler 和Tessent 都有自己独立的DRC的检查, 可能在命名上有所重复,注意区别.

Flat model的创建(不是fault model哦)

这里的flat的意思 是 将设计中模块的接线打破,电路全部看成最基本的门电路组成;
ATPG工具会使用verilog模型区创建自己的工具内部的设计模型;设计中的cell会转换成ATPG library中的标准单元;

#使用
analyze_control_signals
create_flat_model
check_design_rules
#的时候都会创建flat model;

ATPG : Learning Analysis

在model被flattened之后,工具对设计会进行分析去学习获得更有利于 fault simulation和ATPG的行为;
执行gate-by-gate的仿真;会分析出设计中的一些特殊的电路结构:
例如:
电路的等价关系;
判断是否存在
逻辑行为;
(判断设计中是否存在可以简化仿真的结构,比如 设计的结构act like a buffer,inverter,AND,OR)
潜在关系;
(判断是否存在 两个点 AB 存在逻辑值的等价关系)
forbidden的关系
(判断是否存在两点 AB A点为1的时候 B点肯定不为1)

常见的DRC 的错误

ATPG中的DRC

DRC确保设计能够按期望运行,去发现那些可能会影响测试和fault simulation的问题;包括:
1. general rule checking
2. procedure rules checking
3. bus mutual exclusivity analysis(bus相互排斥分析)
4. scan chain tracing
5. shadow latch identification
6. data rule checking
7. transparent latch identification
8. clock rule checking
9. RAM rule checking
10. bus keeper analysis
11. extra rule checking
12. scanability rules checking
13. constrained/forbidden/block value calculation

clock rule

任何能够引起时序部件状态发生转变的PI,都会当成clock;包括 set reset的输入;
时钟的两个沿: LE leading edge(off->on); TE trailing edge(on->off)
引入一个概念: clock cone 是指与clock 相连的锥形逻辑范围,间接受时钟影响的逻辑为:effect cone; 既和时钟直接相连 又属于时钟间接影响的逻辑区域叫 both cone;

我们有两种方式去展示时钟的信息:

  1. 使用 tessent visualizer 展示clock cone
  2. set_gate_report -clock_cone pin_name

C1 (C1 是 clock1 还是cell 呢?)

RULE : Clock PIs off failed to off a clock line of MASTER/SLAVE ANDOR1(gate ID).(C1-1)
当所有指定的时钟都被设置为off 态 ,scan cell 不能(不可以)capture data; 在指定cell的时钟的关闭状态cell仍能接收数据

当所有定义的时钟处在off state, 约束的pin 设置成了所约束的值;
初始化之后的non-scan cell 被设置成他们的稳定值;
定义的cell constraint 被应用(包括 C0C0DX C1 C1DX等)后 就会检查simulation value 去确定有没有 C1的error;

发生的原因:clock的off state定义有错,或者 primary input没有初始化为一个已知的值.

#如何debug C1的错误
analyze_drc_violation c1-1
#追踪时钟 到他的PI
#验证时钟的定义是否正确
report_clock -all
#验证pin 的约束是不是按需要设置了
report_input_constraints <pin_name>#如果时钟的off state 定义错误了
#可以使用
delete_clock <clock_name>
add_clocks <off_state> <name>
#如果off state是正确的的
#问题很有可能出现在 相关的PI没有被初始化为一个已知的值;
#通过增加PIN的约束来修改
add_input_constraints EN -C0

C3 /C4

Rules: scan chains 上同时存在 LE TE 的scan cell 存在simulate capture 错误的可能性,以及生成的simulation的mismatch;(仿真的值和期望的值不一样);
工具会假设在 LE的时候 所有的scan cell 都会 capture到正确的值;对于TE 的scan cell 由于他也是在LE 的时候去取值,这会造成 实际的功能和预测的功能之间的mismatch;

如图 类似 C3 TE 的scan cell 是可以在一个周期内的负沿上踩到的; 所以这种类型的DRC属于 warning;
工具可以自动 fix 这种问题.

#解决办法
set_split_capture_cycle -on

如上图所示,存在两个异沿的寄存器,在未set_split_capture_cycle -on之前,都是在上升沿更新寄存器,而他本来是需要capture 上一个寄存器更新之后的值.所以当option on之后,会在clock 的on state进行capture 而不是leading edge;

C6

rule: 时钟一定不能影响正在 capture的值, 如果影响到了,一般情况下 都会导致不正确的simulate results;也就是数据的竞争冒险的情况

如上图所示, data来自于clock,对于寄存器来说,data和 clock哪个先到,最后踩到的值也会不一样.
工具会检查 scancell的 data和clock 端是否受同一个clock的影响;
等级为 warning;
massage如下:
clock P failed rule C6 on input I of N(G) (c6-1)
P 为时钟的引脚
I 为时钟的gate input number
N 为门的实例代号
G 是门的ID

如何解决C6的违例?工具会自己进行处理.
set_clock_off_simulation on
这个选项会给那些受C6违例影响的cell 在默认的LE event之前强制赋值(提前去做capture)

这里就有点问题了, 寄存器的行为我们是没办法控制的呀,除非这是在仿真阶段, 有工具将寄存器赋值;

C3/C4/C6的违例

实际上都是在create_patterns的时候解决的,通过调整pattern capture的位置,来解决对应的问题.

D1 data disturbed (数据的错位 扰乱)

描述:load 的数据或者 capture 到scan chain中的数据 可能被扰乱(存在cycle的错位,这就是很严重的错误了);
仿真的mismatch 仅仅是在串行的testbench中才会被detect到,那些并行的 testbench 只有在使用非独立的shift的时才有可能发生;

set_drc_handling D1 warning
#使用上述选项,将error标记为warning;
#改成 warning之后 就不报错了,但是如果发生D1 violation的数量太多 会影响到最后的 test coverage;需要去逐个的解决发生failure的source;

massage:
N(G) disturbed during time Tof P procedure (D1-1)
T 是哪个周期
P procedure;
例: 在load_unload的第一个cycle是给scan_enable信号一个足够的transition时间,做initial用的,如果在procedure中第一个cycle就开始pulse clock那么就有可能发生D1的违例.

D5

当电路中 存在没有识别为scan chain 的存储单元,就会报告D5的 DRC violation;
会基于 setup load_unload shift的仿真结果设置一个初始值;
那些 nonscan cell会被看做 TieX/0/1 Init-X/0/1 , Tie 单元会影响到 test coverage;

#使用
report_drc_rules D5 -type T0
[-NOType I0] ...

D6 非扫描单元的latch;

错误等级: warning
描述:所有的nonscan 的latch 都要表现为 transparent latch(transparent latch 是指能够传播值 但不能hold值)
如果一个latch 创建了一个潜在的回路,那么这条路径必须被scan cell 或者除了transparent latch 之外的scancell 打破;
latch 不许有能够传播到可观测点的路径;
latch 在所有定义时钟在off state时 也能够capture到 经过的值;

#设置 忽略D6的错误
set_drc_handling D6 ignore;
#工具会将 D6的单元 当做 Tie -X 对待,会影响到测试覆盖率

E4 contention check(竞争检查)在load unload cycle

没太理解这里,
检查在 testprocedure的赋值的时候有没有两个冲突的值驱动同一条net;
E4就是在 load_unload 的时候去查看是否有一个 X值到达 bus gate;
(bus gate 是啥啊??)
经常怎么解决呢? 就是在test_setup和 laod_unload 的时候 去force statement;
解决办法,经常就是对 bidi pins 在load_unload 的procedure中做 force Z;
错误等级: warning;
BIDI 的端口是双向端口?? 对于双向端口来说,在ATPG的时候会固定地把它看做输出端口或者输入端口.

E5 X态会被传播到 其他观测点

错误等级: Note,但会影响到你的coverage;
描述: 当应用引脚的约束被应用以及PIs将它强制赋值的时候, X态不能传播到任何一个观测点上.

T3 扫描链回溯

描述: shift procedure必须能 创建一条从扫描链的输出到输入的畅通的路径.不正确被激活的门会导致错误.
检查T3的DRC的时候会对 laod_unlaod和shift 的procedure进行仿真,然后回溯扫描链.
经常造成T3违例的原因是设计在测试的时候不是在一个稳定的状态.可能是由于 non_scan blocks没有被正确的初始化,或者在测试时不能维持一个稳定的状态.
错误等级: Error;

T4 T5

T4描述: 在shift procedure的一些时序周期内,扫描连上的存储单元必须有活跃的时钟存在
T5描述:在扫描链上的存储单元不能存在X值输入的时钟,set/reset的输入.
错误等级: Error;

Trace 24 (T24) Rule

描述: 当一条扫描链使用两个clock domain的时候,需要添加lockup cell去处理 跨时钟域的clock skew的问题. lockup cell用来保护从源寄存器到目的寄存器的旧数据. lockup cell 一般就是latch;
T24 就是 这种latch miss掉了

错误等级:error;

如何 debug DRC

#使用
report_drc_rules
#去查看drc的违例,包括fail的次数,工具的处理;
#使用
check_design_rules
#将所有的drc违例 list出来
### 使用可视化的方法 去debug;
#使用
analyze_drc_violation #去展示 DRC在 schematic中的位置
#如果 analyze 对于指定的DRC不可用,
#使用:
open_visualizer
add_shematic_objects object_spec -display flat_schematic;
# 改变 change the gate report data as nessessary

gate report

通过 set_gate_report
设置报告的选项,默认的gate_report的内容如下

通过set_gate_report 可以配置report的内容.

添加constrains value的信息

set_gate_report constrain_value
会报告gate 引脚上的约束值;包括:
CV/FV/B
分别是 constrained value forbidden value 和是否被blocked;
constrained values 是在通过 DRC check的
ANALYSIS mode 下才可用,

添加state stability的信息;

会增加一列信息:展示的是存储单元每一个procedure结束时的稳定值

(ts)(ld)(shift)(cap)(stbl)
会把每个event cycle中的门的引脚的上的值报告出来;
ts (test setup): 展示的是 test_setup procedure的最后的值;
ld(load cycles): 展示load_unload 时候 第一个procedure的稳定值;
shift(010~0):展示shift第一个cycle对应clock pulse的前中后三个阶段.最后一个值为shift结束之后的稳定状态.
cap(capture cycel): 应该也是对应clockpulse的前中后是哪个阶段.

Tessent scan ATPG(7) 设计规则检查 (DRC)相关推荐

  1. AD20设计规则检查设置(DRC检查设置)

    AD设计规则检查设置 通过以下设置能保证绝大部分的用户的使用不会在这个问题上出错 工具+设计规则检查(快捷键 T+D),进入后界面如下所示: 然后一次按图片所示进行配置 最后点击运行DRC检查

  2. Altium Designer 规则检查(DRC)英汉对照表

    Altium Designer 规则检查(DRC)英汉对照表 Error Reporting 错误报告 A:Violations Associated with Buses 有关总线电气错误的各类型( ...

  3. Vivado使用技巧(15):DRC设计规则检查

    在I/O和时钟规划之后,需要验证设计以确保其满足设计需求.Vivado提供了两种验证途径:DRCs用来检查设计违反规则情况:SSN分析用来估计转换噪声等级.本文将介绍DRCs,本系列第16篇介绍了SS ...

  4. Tessent scan ATPG(2) ATPG basic flow

    ATPG 的基本步骤 DFT lib 一般vendor会提供 也可使用 tessent 的libcomp工具 将simulation lib转化为 DFT lib 什么是 simulation lib ...

  5. Tessent scan ATPG(8) Debug low test coverage(低测试覆盖率的原因及debug方法)

    如何利用工具提高测试覆盖率 low coverage 的原因 每个fault点的可控性和可测性; 部分设计规则违例会影响测试覆盖率 好的电路和错误的电路之间必须可以观测到不同; 那些没有被detect ...

  6. 【 FPGA 】UltraFast设计方法学:在Vivado中使用设计规则检查

    待续

  7. Landscape-版图几何设计规则DRC

    为了保证器件正确工作并提高芯片的成品率,要求设计者在版图设计时遵循一定的设计规则,这些设计规则直接由流片厂家提供.设计规则(Design Rule)是版图设计和工艺之间的接口.符合设计规则的版图设计是 ...

  8. 关于DXP的规则检查中Un-Rounted Net Constraint问题

    关于DXP画板中的设计规则检查,最常见的问题之一就是未连线问题.最近在一次画板中,我明明已经连接好了线,但是莫名其妙的还是出现的未连线的提示 如下: 然后我经过删除附近的所有连线,终于发现了罪魁祸首. ...

  9. DRC设计规则设置介绍-Design Compiler(四)

    ​ 文章目录 4.1 设计规则相关命令设置 4.1.1 set_load(输出驱动强度) 4.1.2 set_input_transition(输入驱动强度) 参考文档 系列学习介绍DC相关知识,包括 ...

最新文章

  1. MSDN Webcast“深入浅出ASP.NET AJAX系列”
  2. 构建flutter项目
  3. android开发获取应用本身耗电量_别找了,Android常用自动化工具全在这儿了!
  4. QQ超市模拟排配2D版1.13 (XNA4.0) (修正双格货架移动的一个bug和3-5地图)
  5. Qt窗口屏幕居中显示 (ZT)
  6. mysql级联_MySQL 级联复制(A-B-C)
  7. 用Java中的抽象类扩展抽象类
  8. 遍历Java中的列表的方法
  9. 【皇甫】☀PPT里的小玩意
  10. ASIFormDataRequest实现上传图片
  11. CC***的解决方案
  12. CMMI认证多少钱?
  13. 电脑如何进行长截图?
  14. 万字长文:上海交大校友、宾大直博博士细说五年读博经历
  15. 电子书极其格式的相关知识
  16. 为什么我们要学习Microsoft Graph
  17. Blender小白最简单方法制作椅子
  18. c++ primer plus学习笔记(7)——类继承
  19. XMLHttpRequest对象的readyState与status
  20. Servlet开发验证码

热门文章

  1. linux jnlp显示异常,使用headless jnlp将slave连接到master时显示异常
  2. ubuntu虚拟机中的vscode:扩展失败XHR Failed
  3. python变量名可以用下划线开头吗_python以下划线开头的变量和函数的作用
  4. 操作系统的内核到底是什么?
  5. 【Vue.JS】纯 Vue.js 制作甘特图
  6. WIFI模块接入ONENET步骤
  7. elementui固定表格头部
  8. React tsx 生成随机验证码
  9. 查看linux服务器存储空间状况
  10. 介质服务器作用,爱数之介质服务器及介质同步技术