要IC设计中逻辑综合的一般步骤及相关基本概念,并在此基础上以综合工具为例,从基本电路单元、端口、边界和结构个方面,着重阐述了对关键路径的处理方法。
Design Compiler;关键路径
IC设计流程中,逻辑综合是后端设计中很重要的一个环节。综合就是指使用综合工具本文以为例,根据芯片制造商提供的基本电路单元库,将硬件描述语言描述的级电路转换为电路网表的过程。主频是芯片性能的重要指标之一,如果希望关键路径的延迟满足芯片设计的周期时间,不但需要代码描述满足要求,更要讲究综合中对关键路径的处理方法。

1 常见的时序路径示意图

2边界转化示意图

3structuring策略下某一逻辑的综合电路
4flattening策略下同一逻辑的综合电路
1中给出了常见的两个寄存器1和2之间的时序路径。1和2分别具有延迟ck-q和setup,M和N分别是和逻辑具有的延迟。对1来说是输出端口,输出延迟为setup+T,而对2是输入端口,输入延迟为ck-q+T,于是这条单周期路径的总延迟为ck-q+T+T+T。
RTL级描述,并将语言描述翻译成相应的功能块以及功能块之间的拓扑结构。这一过程的结果是在综合器内部生成电路的布尔函数表达式,不做任何逻辑重组和优化。
1所示。从表中可以看出,约束条件是综合过程的重要组成部分。综合正是通过设置约束条件来优化设计,以达到设计要求的。
DFFXL寄存器虽然面积较小,但它的延迟相关参数ck-q、setup较大,容易形成关键路径,于是可以通过设置等约束来禁用它。在一些特殊情况下,基本电路单元库中的器件不能满足要求,这时需要采用自定义的电路单元。
set_input_delay、、等来实现,有以下几种情况:
set_input_delay和值,表明所做逻辑不受压缩,映射电路基本单元库的自由度较大。这样,两者的实际延迟之和将不大于单周期时间非关键路径,不仅满足设计要求,而且对其他关键路径的影响很小。
set_input_delay和值,表明所做逻辑需要压缩,而映射电路基本单元库的自由度也较小。但这并不表示越小越好,如果设的值很小甚至为零,那么会使综合器对这条路径的逻辑压缩得过大,而导致其它关键路径的延迟增加,甚至导致其它非关键路径转化为关键路径。因此要凭借经验,不断改变所设的约束值,最终使所有路径的延迟都不大于单周期时间,满足设计要求。
(中小规模,在以上两种情况下,对其输入延迟和输出延迟合理施加约束,基本就能满足设计要求。如有个别几条关键路径延迟仍然较长,可以通过设置和来加以约束。这两种约束对所约束路径的逻辑压缩效果较好,且不会影响其它路径的延迟。采用这样的约束之后,关键路径通常都能被消除了。
set_max_delay来进行约束,这种约束的效果非常明显,但会影响其它路径的延迟。因此也要凭借经验,不断改变所设的约束值,最终使所有路径的延迟都能满足设计要求。
RTL级电路通常是多层次模块,对其进行综合后得到的电路依然以独立模块的方式存在,即存在边界问题,因此综合中有专门针对边界问题的约束,利用这些约束可以打散边界、保持边界,或重新整合边界,从而优化边界,达到设计要求。
2所示,约束用来生成新的层次模块,而约束的作用刚好相反,它用来打散边界,消除层次模块。通常它们都会结合起来使用,但不管以哪种方式选择边界,都应该根据具体的设计要求,参照综合结果,选择最好的方法。
RTL级电路时,有时会专门设计某些单独模块类似全定制电路来简化实现一定的功能,从而缩短延迟并减小面积。在综合中利用约束可以保证这类模块不受影响,保持边界。
RTL级电路时就应该考虑诸多因素,对电路结构进行规划,而在综合中只要将代码映射到基本电路单元库几乎就能达到预期要求。但在有些状况下,还是需要利用一些约束来进行优化,这里仅以最常见的和来加以说明。
(速度优化及面积优化;而这种策略往往以牺牲面积来达到缩短延迟的目的。
RTL级描述采用和两种策略得到的综合电路分别如图、图所示。策略下得到的电路只有两级,延迟小于策略下得到的三级电路,但电路面积比较大。当今工艺已经进入深亚微米级,因而在设计中往往需要首先考虑延迟因素,但究竟选择哪种策略,还是要根据具体的设计要求而决定。
RTL代码,再重新进行综合。
