您的位置:技术中心首页 > 电路综合 >> 逻辑综合中对关键路径处理方法的研究

逻辑综合中对关键路径处理方法的研究

作者:夏有为 林正浩   时间:2005-12-18 18:39:16  来自:网上转载  浏览次数:1131  文字大小:【】【】【
简   介:本文介绍了IC设计中逻辑综合的一般步骤及相关基本概念,并在此基础上以综合工具Design Compiler为例,从基本电路单元、端口、边界和结构4个方面,着重阐述了对关键路径的处理方法。
引言
     
    在IC设计流程中,逻辑综合是后端设计中很重要的一个环节。综合就是指使用综合工具(本文以Design Compiler为例),根据芯片制造商提供的基本电路单元库,将硬件描述语言描述的RTL级电路转换为电路网表的过程。主频是芯片性能的重要指标之一,如果希望关键路径的延迟满足芯片设计的周期时间,不但需要RTL代码描述满足要求,更要讲究综合中对关键路径的处理方法。

图1 常见的时序路径示意图
图1 常见的时序路径示意图 
      
    图2 边界转化示意图 
图2 边界转化示意图 
      
     图3 structuring策略下某一逻辑的综合电路
图3 structuring策略下某一逻辑的综合电路 
      
     图4 flattening策略下同一逻辑的综合电路
图4 flattening策略下同一逻辑的综合电路

    综合概述
     
    综合中的延迟及关键路径
     
    图1中给出了常见的两个寄存器R1和R2之间的时序路径。R1和R2分别具有延迟Tck-q和Tsetup,TM和TN分别是M和N逻辑具有的延迟。B对R1来说是输出端口,输出延迟为Tsetup+TN,而对R2是输入端口,输入延迟为Tck-q+TM,于是这条单周期路径的总延迟为Tck-q+TM+Tsetup+TN。
    
    从延迟的角度来说,关键路径就是指那些总延迟大于相应周期时间的路径。消减关键路径的延迟要从消减路径中的各部分延迟入手,主要方法就是利用综合工具对路径施加约束条件来限制优化,达到减小路径延迟的目的。
     
    综合的主要过程

  • 翻译:读入电路的RTL级描述,并将语言描述翻译成相应的功能块以及功能块之间的拓扑结构。这一过程的结果是在综合器内部生成电路的布尔函数表达式,不做任何逻辑重组和优化。
  • 优化:根据所施加的时序和面积约束,按照一定的算法对翻译结果进行逻辑重组和优化。
  • 映射:根据所施加的时序和面积约束,从目标工艺库中搜索符合条件的单元来构成实际电路的逻辑网表。

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

责任编辑:5life

更多相关 综合 Design Compiler 关键路径 的文章

编码风格 --- 与综合相关 [2006-02-18]
Design Compiler FAQ [2005-07-05]
利用Synopsys工具的高性能数据路径综合 [2005-12-21]
一个可以综合的Verilog 写的FIFO存储器 [2005-12-18]
谈VHDL/Verilog的可综合性以及对初学者的一些建议 [2005-12-18]
本文共有0条评论,现在显示最新的5条。

栏目导航

电路基础
硬件语言
逻辑验证
电路综合
后端设计
可测设计
基本逻辑
制造工艺
书籍精选
说文解字
工具学习
数字滤波
趣闻逸事
数字锁相
设计杂项
低耗设计

站点最新

更多相关链接

  STA在芯片设计后端的应用
  静态时序分析在数字集成...
  静态时序分析(Static T...
  Design Compiler FAQ
  利用Synopsys工具的高性...
  逻辑综合中对关键路径处...

栏目最新

更多相关链接

  STA在芯片设计后端的应用
  静态时序分析在数字集成...
  静态时序分析(Static T...
  Design Compiler FAQ
  利用Synopsys工具的高性...
  逻辑综合中对关键路径处...

热点文章

更多相关链接