timing的analyze
DC的静态时序分析:
将设计分成独立的timing path 进行分析:
为了获得单周期最大延迟(single-cycle max_delay timing)每条路径最少会分析两次;
生成的默认的时序报告包括:
-
每一个path group 中最差的违例路径
-
最大的延迟或者setup timing
-
如果你想查看hold timing 使用:report_timing -delay min
-
报告关于DRCs 的违例情况,使用 report_constraints -all -max_transformation -max_cap
-
报告关于面积的信息,使用:report_area -physical
这条路径的最长delay是多少?
在这个单元的timing arc(timing arc 是d触发器D数据端到Q端的时间)有一个边缘敏感(称作不确定性),DC会一直追踪每一条路径的不确定性,至少,每一条路径时序分析会执行两次,一次是上升沿,一次是下降沿,如果路径中包含 non_unate gate (并非边沿触发的门)比如: 或门,或非门 或者MUX的选择输出arc,这种路径会至少分析4次,no_unate gate的其他输入,这些输入并不是要被分析的时序路径的一部分,在分析rise delay和fall delay时 这些输入会保持逻辑0;当这些输入变为逻辑 1时 又会重新分析一次;
timing report
多同步时钟的设计(multi synchronous clock design)
多时钟的input delay
SPG flow
DC NXT支持一个物理综合特征的package
支持:1. 物理综合导向流程 也就是SPGflow
-
布局的可视化 layout visualization 和拥塞分析 congestion analyze
-
版图的查看与修改
能够提高 timing congestion 和后布局时序分析的正确性;
这些特征都需要 DC-extension 许可证的支持
SPG flow 在DC和ICCII中都是建议使用的;
在compile_ultra 后加 option -spg
使用-spg option会开启的优化选项有:
-
自动的寄存器复制 automatic register duplication;
-
net layer的optimization
-
网表topo结构的优化
-
与ICC II能够更好的互通
什么是congestion(拥塞)
它来衡量一个设计的可布线性 ,分析实际布线的优先级;
在一个很小的面积内,可布线的数量是有限制的;当你接近或者超过这个限制时,这部分面积被叫做拥塞的;
绕行此地的congestion
如果congestion存在,并不是很严重,实际的布线能够绕开拥塞的部分;
绕开的线网,可能会有轻微的RCdelay的增加;
一般不会产生新的 timing-critical path
对于严峻的congestion
严重的congestion会导致时序的违例,或者导致一个设计不能被布线;
网表的topo 拥塞优化
将布线友好的网表 topo化或改变结构
1.更高程度的最小化相连的结构
2. 最小化 wire & wire crossing
3.根据需要共享或者取消共享逻辑;
physical guidance
物理导向允许:
-
粗布局写入到ICCII的DEFwenjianzhong
-
ICC的使用 DCNXT TOPO生成的布局作为起点
spg 全称为 Synopsys physical guidance, 物理导向的流程;
DC NXT的topo模式下支持一个包,是一个包含物理综合特征的包;
它能够提升timing congestion,后布局的时序的修正;
这些都使用DC-extension 的许可证文件;
SPG flow 在DCNXT和ICC 2中都是建议使用的;
它会打开的option有
-
自动的registers的duplication ;寄存器的复制
-
线网布局的优化
-
网表的topo优化
-
物理导向 使得和后端布局布线工具的联系更加紧密;
自动的寄存器替换(register replication)
关键路径叫 critical path 而不是key_path (好丢人,已经用key_path 问过老师了)
register replication用来提高关键路基的时序
会在使用 compile_ultra时自动打开;
用户可以控制 寄存器复制的个数;限制每个寄存器的扇出;
register replicatio在 compile_ultra下是默认开启的,这是因为 compile_ultra下 application variable compile_register_replication为true 用户可以在 non_spg flow下修改此变量的值,来开启此项优化;
register replication是 跨hierarchy的
自动的寄存器复制是timing_driven的,时序驱动的,默认,在上面的例子中,寄存器的划分的数量是不平均的,这是因为寄存器换分的数量和每个寄存器的扇出是被critical path所支配的,也就是说 timing-critical end-point多的比timing-critical end-point少的扇出要更小一些;
跨金属层的电阻变化resistance variation
金属层的电阻在较小的尺寸中会有很大的变化
默认,DC NXT使用所有金属层平均的电阻来估计线网的延迟
solution: 布线层的优化(NLO net layer optimization)
-
自动net layer optimization
-
-
长的 timing-critical的nets 会自动使用最高两层的金属
-
将金属更多的分配到多层上 zroute global routing 基于每条线的金属层的长度和层的范围会有一个提升布线的设置 set_app_var ayer_promotion true
-
-
基于模型的NLO
-
手工NLO