DC常用命令
05 Feb 2020 2365字 8分 1175次 Digital IC Design Synthesis Tcl打赏作者 CC BY 4.0 (除特别声明或转载文章外)
1 前言
总结以下DC常用命令。
2
检查脚本文件:
查看当前设计文件:
清除当前设计中的文件:
指定设计顶层文件:
检查设计语法:
检查时序:
清除全部约束:
把例化的多个模块转化成唯一的模块名字,这样优化时可以针对每个模块做优化而不影响其它模块:
设置理想网络一般只对port和pin而言,如果想设置net:
尽最大努力做优化:
优化编译:
使劲优化时序编译:
如果三个串联的寄存器之间两个寄存器之间的路径时序违例二中间和最后一个寄存器之间的路径时序宽松,使用下面的命令将这条路径中间的组合逻辑分配一部分到第二个寄存器的后面:
相反,不想这么优化:
例如输出端口的寄存器不想在输出之后还有组合逻辑:
循环优化:
报告约束违例:
报告最差路径:
查看多(例:3)条比较差的路径(不是最差,是从每个不同的寄存器终点的路径中挑出一个最差的):
查看多(例:3)条最差的路径:
报告端口约束:
报告时钟:
如果设计中有多个clock,DC会自动将不同clock下的DFF分组,用以下命令查看分组:
DC如果优化设计中的关键路径失败,则会放弃对其他路径的优化;如果将各个路径分组,假如某一组中的关键路径优化失败,DC并不会放弃优化其他组的关键路径。分组举例:
如果关键路径已无法优化,但仍想优化次关键的几条路径,例如优化这样一组路径:
- 最关键路径的权重为5,其次为2,一般为1;
- 最关键路径超出0.2ns而其余路径超出的时间都在0.2ns以内:
DC官方文件給出的weight一般為5,2,1;critical不要超出時鐘週期的10%。
检查tcl脚本语法错误:
查看库名称:
查看工艺库:
禁止DC将设计打散(compile命令默认是允许):
若要禁用子设计上的自动取消打散,在编译前执行:
若要禁用顶层设计上的自动取消打散,在编译前执行:
完全禁用自动取消打散,执行:
综合成带MUX的寄存器来模拟DFT时的情况,但实际并未形成寄存器链 :
对流水线寄存器做优化:
多端口连线,是指综合完之后的网表有可能会出现一个net连接多个输出等状况,网表代码中就会出现“assign”这样的赋值,需要在这些直连的线当中插入buffer来避免:
把“tri”变“wire”再写入网表:
把“\bus[N]”还原成“bus[N:0]”再写入网表:
多核综合(没看懂是干啥的):
告辞