没有合适的资源?快使用搜索试试~ 我知道了~
首页Tcl与Design Compiler 八DC的逻辑综合与优化下.pdf
Tcl与Design Compiler 八DC的逻辑综合与优化下.pdf
需积分: 10 94 浏览量
更新于2023-05-29
评论
收藏 1.24MB PDF 举报
Tcl与Design Compiler 八DC的逻辑综合与优化下.pdf
资源详情
资源评论
资源推荐

层次结构在IC设计中广泛使用。现代的IC设计中,几乎没有不用层次结构进行设计
的。一些大的设计,其逻辑层次可能多达十几层。SoC设计中一般包括设计的再使用和知
识产权IP核。SoC设计中包括了多个层次的电路。层次化的IC设计趋势如下所示:
SoC设计由一些模块组成,如下图所示:
同样,图中已综合逻辑电路(例如RISC_CORE),一般也由一些子模块组成。对于设
计复杂规模又大的电路,我们需要对它进行划分(Partitioning),然后对划分后比较简单
规模又小的电路作处理(如综合)。这时,由于电路小,处理和分析比较方便简单。容易较
快地达到要求。再把已处理好的小电路集成为原来的大电路,如下图所示:
2/21

理想情况下,所有的划分应该在写HDL代码前已经计划好。
·初始的划分由HDL定义好.
·初始的划分可以用Desige Compiler进行修改.
做划分的原因很多,下面是其中的几个原因:
·不同的功能块(如Memory,uP,ADC,Codec、控制器等等);
·设计大小和复杂度(模块处理时间适中,设计大小一般设为一个晚上的运行时间,白天
进行人工处理和调试,晚上机器运行,第二天上午检查运行结果);
·方便设计的团队管理项目(每个设计工程师负责一个或几个模块);
·设计再使用(设计中使用IP);
·满足物理约束(如用FPGA先做工程样品—Engineering Sample;大的设计可能需要放入
多个FPGA芯片才能实现)。
·等等。
划分模块关系到时序,时序不好的情况下,可以进行重新划分模块,因此就要求我
们在划分模块的时候,对设计进行合适的划分。
可用例化(instantiation)定义设计的层次结构和模块(hierarchical structure and blocks)。
VHDL的entity和Verilog的module的陈述(statements)定义了新的层次模块,即例化一个
entity或module产生一级新的层次结构。如果设计中,我们用符号(+,一,*,/,…)来
标示算术运算电路,可能会产生一级新的层次结构。VHDL语言中的Process和Verilog语
言中的Always陈述并不能产生一级新的层次。设计时,为了得到最优的电路,我们需要
对整个电路作层次结构的设计,对整个设计进行划分,使每个模块以及整个电路的综合
结果能满足我们的目标。
例如下面的设计中:
3/21

有3个模块:A,B和C。它们各自有输入和输出端口。由于DC在对整个电路做综合时,必须
保留每个模块的端口。因此,逻辑综合不能穿越模块边界,相邻模块的组合逻辑也不能
合并。从寄存器A到寄存器C的路径的延时较长,这部分的电路面积较大。 如果我们对设
计的划分作出修改,相关的组合电路组合到一个模块,原来模块A,B和C中的组合电路没
有了层次的分隔,综合工具中对组合电路优化的技术现在能得到充分的使用。这时,电
路的面积比原来要小,从寄存器A到寄存器C的路径的延时也短了。修改如下图所示:
如果我们对设计的划分作另一种修改,如下所示,我们将得到最好的划分:
这里的修改将相关的组合电路组合到一个模块,原来模块A,B和C中的组合电路没有了层
次的分隔,综合工具中对组合电路优化的技术能得到充分的使用。并且,由于组合电路
和寄存器的数据输入端相连,综合工具在对时序电路进行优化时,可以选择一个更复杂
的触发器((JK,T,Muxed和Clock-enabled等),把一部分组合电路吸收集成到触发器里。
从而使电路的面积更小,从寄存器A到寄存器C的路径的延时更短。
对于一般的设计,好的模块划分如下图所示:
在这样的划分下,模块的输出边界是寄存器的输出端。由于组合电路之间没有边界,其
输出连接到寄存器的数据输入端,我们可以充分利用综合工具对组合电路和时序电路的
优化技术,得到最优的结果,同时也简化了设计的约束。图中每个模块除时钟端口外的
所有输入端口延时是相同的,等于寄存器的时钟引脚CLK到输出引脚Q的延时。这使得时
序约束更为方便,这一点在前面的时序路径约束中有说过。
上面是推荐的模块划分模式,下面就来说一下哪些是要避免的模块划分方式。
作模块划分时,应尽量避免使用胶合逻辑(Glue Logic),胶合逻辑如下图所示:
4/21

胶合逻辑是连接到模块的组合逻辑。图中,顶层的与非门(HAND gate)仅仅是个例化的单
元,由于胶合逻辑不能被其他模块吸收,优化受到了限制。如果采用由底向上(bottom
up)的策略,我们需要在顶层做额外的编译(compile)。避免使用胶合逻辑(Glue Logic)的
划分如下所示:
胶合逻辑可以和其他逻辑一起优化,顶层设计也只是结构化的网表。不需要再做编译。
·模块划分的修改
第一次的模块划分可能存在时序违规,可能需要重新划分模块,这里就来介绍一下
模块划分的修改问题。我们知道,设计越大,计算机对设计作综合时所需要的资源越
多,运行时间就越长。Design Compiler软件本身对设计的规模大小并没有限制。我们在
对设计做编译时,需要考虑划分模块规模的大小应与现有的计算机中央处理器(CPU)和内
存资源相匹配。尽量避免下面划分不当情况:
模块太小:由于人工划分的模块边界,使得优化受到限制,综合的结果可能不是最优
的。
模块太大:做编辑所需的运行时间可能会太长,由于要求设计的周期短,我们不能等
5/21
剩余20页未读,继续阅读















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0