database基本流程参考以下
- lint/CDC 检查
- DC综合生成netlist
- LEC对比DC综合和RTL的netlist
- DFT插入SCAN
- LEC对比DFT和RTL的netlist
- STA_PRE生成SDC文件用于布局布线
- ATPG确定DFT生成的带有SCAN的netlist能否跑通仿真
- 对布局布线后的netlist进行STA(静态时序分析)
- ATPG确定布局布线后的netlist能否跑通仿真
- LEC对比布局布线和RTL的netlist
Lint可以帮助检查出变量溢出导致的赋值变量和被赋值变量的位宽对应不上,跨时域以及Floating Input等,主要关注的就是Floating Input,要确定是变量的确没有使用造成floating,还是写CODE的时候疏忽造成了floating。
CDC(Clock-Domain Crossing)检查:简单来说CDC就是根据规则检查设计中存在的异步信号跨时钟域传输的情况。CDC检查报出错误后,可以通过增加FIFO,同步器,打拍子,握手等方式,减弱亚稳态对信号传输的影响(亚稳态几乎无法避免只能通过一定方式减弱其对数据传输的影响),保证数据传输的质量;
DC综合就是把行为级的RTL代码在工艺、面积、时序等约束下转换成对应的门级网表。
DFT(Design For Test)常用的是扫描测试(SCAN-test):在测试时将反馈回路断开,将时序电路变为组合电路。
STA(Static Timing Analysis)测试setup time和hold time 是否违例,检查时钟树的偏移和延时状况。
ATPG(Automatic Test-Pattern Gneration)工具中的算法根据设计故障(Faults)仿真计算出一系列pattern(0/1数据),这一系列的pattern可以快速检测芯片在实际生产过程中出现的问题(如由于加工原因导致的短路,断路等)。
DFT(Design For Test)可测性设计
在测试时序电路时(如测试FSM),测试出一个缺陷往往需要输入一系列地Pattern,导致检测时间大大增加,检测成本过高。为解决这个问题,有两种方法,
1.扫描测试(SCAN-test):在测试时将反馈回路断开,将时序电路变为组合电路。
2.电路自测试(BSIT:Built-in Self-Test)
在讨论设计的可测性时有两个重要特性:
1.可控性:一个输入变量就可以将一个节点置于任何状态就容易控制。测试时希望可控性高;
2.可观察性:可以在输出引线上直接检测到值。低可观察性节点需要多个周期才能使其状态出现在输出口。
时序模块的可测试性设计(DFT:Design-for-test)方法可以分为三类:专门测试,扫描测试和自测试。
专门测试(ad hoc test)
在设计中引入一些没有实际功能却可以改善电路可测性的额外硬件。
已经设计出专门的测试方法,如分割大的状态机、增加额外的测试点、提供复位状态和引入测试总线。
扫描测试(SCAN-test)
串联扫描法,在设计中插入SCANIN SCANOUT SCANMUX,SCANENABLE,由SCANENABLE选择SCANMUX的输入为SCANIN,指定输入,设计会将响应存到寄存器中,进而通过SCANOUT输出对比响应。
边界扫描设计(Boundary-SCAN design)
穿孔安装方法使封装上的每一条引线都可以在该板背面看到,将板放在一组测试探针下(成为“针床”),输入和观察需要的信号就行了。
将板上各部件的输入输出引线连接成一条串联的扫描链。
内建自测试(BSIT:Built-in Self-Test)
向被测设计提供测试Pattern的方法将设计的响应与已知正确的序列进行比较。
测试图形的自动生成(Automatic Test-Pattern Gneration, ATPG)
确定最小的一组激励向量,能覆盖由所采用的故障模型定义的故障集中足够多的部分。