5_1-标准单元概念解析

典型的数字电路没计拥有大量的单元数目, 一个标准的单元库通常含有数百个单元。从电路功能上看, 在ASIC和SoC 设计中常用到的标准单元电路可以分为组合逻辑电路和时序逻辑电路。 “拥有大量的单元数目”:这是指你最终设计出来的这颗 ASIC 或 SoC 芯片(物理实体)。一个现代的数字芯片里,往往塞了几千万甚至上百亿个像微小积木一样的单元。 含有数百个单元”:这是指代工厂(比如台积电)发给你...
阅读全文

27_2-生成时钟树约束文件并进行时钟树综合

在进行时钟树综合之前,我们需要将我们前面设置的内容生成一个约束文件,ccopt才会基于这个约束文件进行时钟树综合,命令如下: 12create_ccopt_clock_tree_spec -file clock.specsource clock.spec 时钟树综合的命令如下: 1ccopt_design -cts 图纸已经正式下发了!接下来,你只需要敲下那句让整个时钟网络真正“生长”...
阅读全文

25_2-detailroute的绕线层约束

由于cts的最后一步需要进行时钟树的绕线,所以我们这里需要先定义detail route的绕线约束。由于MI的绕线资源已经被std cell内部用得差不多了,我们在detail route的时候就不再用M1层,而是用M2到M9层,命令如下 1 ...
阅读全文

25-1-NDR绕线规则定义

在innovus里面,clock path除了最后一级buffer跟reg的clock pin相连的那段net称为leaf net之外,其他的clock net都称为trunk net。 而我们为了减小trunk net上的net delay,我们会将net的线宽加大,并且尽量使用高层金属走线来减小net delay,而为了避免trunk net上出现串扰问题,我们会将net的间距加大,所以...
阅读全文

20_1-运行place

完成上述的设置之后,我们就需要进行布局,innovus工具运行place的命令是: place_opt_design 运行结束后,我们可以看到下面的结果,std cell都被摆到core里面来了,而密密麻麻的线实际上都是global route的结果,并不是真实的结果。 跑完之后我们也可以从log中看到时序优化的结果,从这里可以看出,除了in2reg、reg2out之后,其他的group ...
阅读全文

19_6-工艺节点的约束

最后,我们需要设置工艺的节点,这样工具就可以根据我们设置的节点进行一些工具认为需要加入的特殊优化,得到更好的PPA,具体的命令如下: setDesignMode -process 28 ...
阅读全文

19_5-globalroute约束

在place中,我们需要用到global route引擎进行全局布线来预估congestion,这个设计中我们规定最高的金属层只能用到M9,M10需要留给top去绕线,因为我们做的是block level,我们跟top的power mesh连接需要通过block的M9 power stripe跟top的M10 power stripe进行连接,保证供电,所以block是不能用到M10的。此外由...
阅读全文

19_4-place约束设置

下面是设置place的约束,首先这个设计我们是不做DFT的,所以这里需要忽略扫描链和不进行扫描链重组的相关设置,即把-place_global_ignore_scan设置成true,把-place_global_reorder_scan设置成false。 此外我们已经自己摆好了port,这里需要把-place_global_place_io_pins设成false,不让工具帮我们摆port。...
阅读全文

19_3pathgroup约束

1、Path Grouping(路径分组)这部分代码的专业术语叫 Path Grouping(路径分组)。如果说之前的 OCV 设置是在给芯片“加难度”,那么这段代码就是你在给 Innovus 这个优化工具**“划重点、分配算力”**。 在默认情况下,EDA 工具是个“死心眼”。它看到哪里有时序违例(Violation)就去修哪里。如果你的输入输出引脚(I/O)因为外部环境设置得太严...
阅读全文