数字IC设计之逻辑综合

逻辑综合

1. 综合的概念和流程

   简单地说,逻辑综合就是从RTL级描述得到门级网表的过程。逻辑综合的工具主要有美国Synopsys公司的Design Compiler;美国Cadence Design Systems公司的PKS和 BuildGates;美国 MAGMA公司的Blast RTL;美 国Synplicity公司的Synplify 和Amplify等。它们的综合算法、工作方式、用户 接口、数据库都不相同。
   图示为DC提出的综合概念:综合=翻译+优化+映射。翻译指得是将RTL级描述的设计转换成用DC使用的通用布尔表达式(GTECH,Generic Technology)库元件描述电路。优化和映射是同时进行的,优化是根据设计目标优化电路结构,映射是选取合适的工艺库实现电路。
在这里插入图片描述   综合的过程是一个迭带过程。首先,需要给设计中的各个模块设置一定的约束条件,这些约束条件定义了综合的目标。如时间约束(timing constraints),就定义了模块的每个信号相对于时钟信号的关系。除约束之外,还需要定义综合的环境,如综合使用的工艺库等综合所需的信息。然后,DC就根据RTL代码和制定的约束条件进行综合,最后产生满足约束条件的门级网表。

2. DC综合术语

DC将设计对象(design object)分为8中不同类型,分别如下:

  1. 设计(Design):设计是实现一定逻辑功能的电路描述。设计可以用多种形式表达,如VHDL、Verilog HDL、状态机等。设计可以是单独的,也可以包含其他子设计
  2. 单元(cell):设计中子设计的例化名称,在Synopsys中单元与实例无差别,均视作单元。如果一个设计在其它设计中有唯一的例化,则这个例化称为层次元件(hierarchical cell);如果一个库元件(library cell)在一个设计中有唯一的例化,则这个例化称为叶元件(leaf cell)
  3. 引用(Reference):单元或实例所引用的原始设计的定义。一个设计可能包含某个相同子设计或库元件的多个例化,这时被例化的子设计或库元件称作引用(参考)。每个例化对应相同的参考,但以不同的名称区分。设计、元件、引用的关系为:
    在这里插入图片描述
    图示设计包括两个参考:NAND2和MULTIPLIER。NAND2被例化了三次,名称分别为U1、U2、U3。MULTIPLIER被例化了一次,名称为U4。
  4. 端口(Port):设计的输入和输出接口,端口方向可以是输入、输出、双向。
  5. 引脚(Pin):设计中单元的输入和输出接口。端口和引脚的概念并非绝对的,通常把单元的接口称作接角,而设计的接口称为端口。
  6. 连线(Net):通过将端口接到引脚或将引脚彼此连接起来而使设计连在一起的导线。
  7. 时钟(Clock):设计中的时间参考,作为时钟源的端口或引脚。
  8. 库(Library):对应于设计综合的目标或引用连接的特定工艺单元的集合。

3. 时间约束术语

   一般来说,时序闭合是综合最重要的目标,设置时间约束是综合中的重要步骤。以下是设置约束常用的一些术语。

  1. 时间路径(Timing Paths):一条时间路径是信号传播经过的逻辑通道,简称路径。路径一般以基本输入端口或寄存器的时钟端口为起始点,而基本输出端口或寄存器的数据端为中止点(基本输入输出是指芯片的引脚)。这里的寄存器指的是任何的时序元件,如触发器、锁存器或其它的元件。这些时序元件都有建立和保持时间的要求。
    在这里插入图片描述
    路径包括下面4种:
    • 基本输入(primary input)到寄存器(register):这类路径通常可以通过定义时钟和相对于时钟的输入端口延时来设置约束(图中的in1到FF1)。
    • 触发器到触发器:这类路径的约束比较简单,只要定义了触发器的时钟就可以确定(图中的FF1到FF2)。
    • 触发器到基本输出(primary output):这类路径可以通过定义时钟和相对于时钟的输出端口延时来设置约束(图中的FF2到out1)。
    • 基本输入到基本输出:要设置这类路径的约束,需要设置其输入端口相对时钟的时延和输出端口相对于时钟的时延(图中in2到out2)。
  2. 建立时间(setup time):建立时间是工艺库中的为时序元件定义的一个时间参数,它规定了到达信号在有效时钟沿之前至少应该稳定(有效)的时间。建立时间随工作条件的变化会发生变化。元件的建立时间要求限定了到达这个元件的路径的最大延时
  3. 保持时间(hold time):保持时间也是工艺库中为时序元件定义的一个时间参数。保持时间要求到达元件的信号在有效时钟沿后必须持续稳定一段时间。保持时间同样会随着工作条件的变化而变化。保持时间要求限定了到达这个元件的路径的最小的延时
  4. 延时段(timing arc):延时段是指路径延时的最小组成部分,它通常是网络和元件的延时。路径的延时就等于该路径中所有延时段的延时之和。
    在这里插入图片描述
  5. 时间容限(Slack):时间容限是路径时延要求和实际时延间的差值,它反映了实际时延满足时延要求的情况。如果这个值为正,则实际的路径时延满足了要求;相反,如果这个值为负,则实际的路径时延违反了要求,也就是说时间约束没有实现。另外,这个值的大小反映了时间的冗余程度或是约束违反的程度。如果路径的时延大于最大时延要求,则称作建立时间违反(setup violation),因为这时已无法满足建立时间的要求;如果路径的时延小于最小时延要求,则称作保持时间违反(hold violation),因为这时已无法满足保持时间的要求。
  6. 关键路径(Critical path):关键路径是指设计中违反时间约束或时间容限很小(刚刚满足设计约束)的路径。这些路径是优化的重点。
  7. 最差时间违反(Worst negative slack):最差时间违反(WNS)是指一个信号从路径起点到终点所需时间超过约束的最严重的情况。
  8. 总的时间违反(Total negative slack):总的时间违反(TNS)是指每个路径终点对应的所有WNS的和。

4. 综合库

   当Design Compiler映射线路图时,使用target _library变量指定的综合库 (Synthesis Library,简称库)。综合库是由半导体厂商提供,包含工艺技术参数和单元的功能,DC使用库里的单元构成电路。综合库不仅包含单元的功能和延时,还包括了引脚的电容和设计规则等。综合时,DC要检查所构成的电路是否满足涉及规则和其他约束要求。
  综合库包含的信息:

  1. 单元(Cell)
    包括功能、时间(时序器件的约束,如建立和保持时间)、面积、功耗、测试等。
  2. 连线负载模型(Wire Load Models)
    包括电阻、电容、面积等。
  3. 工作条件(Operating Conditions)
    制程,电压和温度的比例因数。
  4. 设计规则约束(Design Rule constraints)
    包括最大电容和最小电容、最大转换时间和最小转换时间、最大扇出和最小扇出等。
    定义单位:
    - time_unit(时间单位)
    - voltage_unit(电压单位)
    - current_unit(电流单位)
    - pulling_resistance_unit(上/下拉电阻单位)
    - capacitive_load_unit(电容负载单位)
    - leakage_power_unit(漏电功耗单位)

   关于设计规则:
   设计规则一般由半导体厂商提供,在使用工艺库中的逻辑单元时对其联结所强加的限制。这些规则根据电容(capacitance)、转换时间(transition)和扇出(fanout)来约束有多少个单元可以相互联结。DC在综合时使用加入缓冲器(buffering)和改变门单元额驱动能力(cell sizing)技术来满足涉及规则的目标。DC在综合时把设计规则的优先级设置为最高,优先级的次序为:最大电容(max_capacitance)、最大转换时间(max_transition)、最大扇出(max_fanout)。
   大多数情况下半导体厂商提供二进制格式的.db文件,也有可能只提供文本(ASCII)格式的.lib文件。DC使用的综合库必须是.db格式的库,因此如果只有.lib文件,需要使用Library Compiler将其转换为.db文件使用。

5. 静态时序分析

   在进行综合时,DC用内建的静态时序分析工具Design Time来估算路径的延迟以指导优化的决定。静态时序分析可以不进行动态仿真就决定电路是否满足时间约束。

  1. 时序路径分组
    静态时序分析包括三个主要步骤:
    1> 把设计分解成时间路径的集合;
    2> 计算每一条路径的延迟;
    3> 将所有路径延迟与时间约束作比较,看是否满足时间要求。
       DC将设计分解成时序路径的集合的方法为:每条时序路径有一个起点(Startpoint)和终点(Endpoint),起点定义为输入端口、触发器或寄存器的时钟引脚;终点定义为输出端口、时序器件的除时钟引脚外的所有输入引脚。如下图所示,图中 时序路径的起点有A、FF1/CLK和FF2/CLK,时序终点有FF1/D、FF2/D和Z。
    在这里插入图片描述
       可以按照控制路径终点的时钟进行分组。如果路径不被时钟控制,这些路径被归类于默认(Default)的路径组,在DC中使用report_path_group命令查看路径分组情况。

  2. 时序路径延迟
       在计算路径的延迟时,DC将每一条路径分成时间弧(timing arcs)。时间弧描述单元、连线的时序特性。单元的时间弧由工艺库定义,连线的时间弧由网表定义。
    在这里插入图片描述

  3. 时序报告
       DC中常用report_timing命令报告设计的时序,执行report_timing命令DC做4个步骤:

    • 把设计分解成单独的时间组;
    • 每条路径计算起点分别为为上升沿和下降沿的延迟;
    • 找出每个路径组中的关键路径(critical path),即延迟最大的路径;
    • 显示每个时间组的时间报告。

       时间报告一般包含如下信息:工作条件、使用的工艺库、时序路径的起点和终点、路径所属分组、使用的线负载模型、路径延迟、路径要求以及时间冗余(Timing margin,即slack)。
       除了DC中的Design Time可以作静态时序分析,Synopsys的Prime Time同样可以,且功能更强。Prime Time是独立的时序分析器,主要用于整个芯片的门级电路的静态时序分析。

参考资料:
《数字IC设计:方法、技巧与实践》——唐杉
《专用集成电路设计实用教程(第二版)》——虞希清
《高级ASIC芯片综合》——张文俊 译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值