【DC】逻辑综合基础

文章介绍了逻辑综合的基本概念,包括高层次、逻辑级和版图级综合,重点讲述了DC工具的工作原理,如转译、优化和映射阶段。DC设计对象包括Design、Port、Clock、Cell等,强调了时序收敛的重要性。此外,还讨论了DC的文件管理和基本流程,以及库文件如目标库、链接库的作用。文章还提到了时序弧和单元时序信息在工艺库中的角色。
摘要由CSDN通过智能技术生成


1. 逻辑综合基本概念


数字系统可以用算法行为级寄存器传输级逻辑级电路级版图级等不同抽象层次描述,由较高层次向较低层次的转化即为综合(Synthesis),因此综合可以分为三类:

  • 高层次综合(High-Level Synthesis):将系统算法层的行为描述转化为寄存器传输层的结构描述;
  • 逻辑综合(Logic Synthesis):将寄存器传输层的结构描述转化为逻辑层的结构描述,以及将逻辑层的结构描述转化为电路的结构描述;
  • 版图综合(Layout Synthesis):将系统电路层的结构描述转化为版图层的物理描述;

逻辑综合上承 RTL 级的电路设计(.v文件),下启后端布局布线的物理设计,前后端的分界线,其目标是基于某个特定的工艺库,将RTL级描述的电路转换成门级网表描述的电路,使用 SDC 约束体现PAP(性能、面积、功耗)

逻辑综合依靠EDA工具实现一种约束驱动、路径驱动和模板驱动的转换过程。

  • 约束驱动指 EDA 工具根据设计人员对电路提出的时序和面积等目标综合电路,以保证综合后电路能满足目标要求;
  • 路径驱动指 EDA 工具采用静态时序分析方法计算设计中各条路径的时序:
  • 模板驱动指设计人员编写的 VerilogHDL/VHDL 代码能被EDA工具理解和接受。

逻辑综合是使用软件的方法来设计硬件,然后将门级电路实现与优化的工作留给综合工具的一种设计方法。它是根据一个系统逻辑功能与性能的要求, 在一个包含众多结构、 功能、 性能均已知的逻辑元件的单元库的支持下, 寻找出一个逻辑网络结构的最佳实现方案。 即在满足设计电路的功能、 速度及面积等限制条件下, 将行为级描述转化为指定的技术库中单元电路的连接

在这里插入图片描述

Candance 的 Genus 工具也可以进行逻辑综合。

DC提出的逻辑综合概念可以分为以下三个阶段:

在这里插入图片描述

  • 转译:将 HDL 代码转换成 DC 内部的数据库(GTECH 库 ),该数据库和工艺无关;
  • 优化:根据设计目标(频率、面积、功耗)对电路进行优化(与工艺无关,运用布尔变换或代数变换技术),包括结构优化(Architectural level synthsis)、逻辑优化(Logic level or GTECH optimization)和门级优化(Gate-level or Mapping optimization)
  • 映射:在目标库中选择合适的逻辑单元(包括组合逻辑和时序逻辑),产生设计的门级电路。

【映射是将通用网表 GTECH 库元件映射到目标库中的门级标准单元,如寄存器,与门, 或门等。此时的电路网表包含了相关的工艺参数,如网表(V文件)、延时信息(SDF文件)、约束信息(SDC文件)等。ddc 文件会包含以上文件的信息】

此时与工艺库、工艺参数有关优化和映射是同时进行的,转译和优化没有执行步骤上的先后,因此综合是一个迭代过程

GTECH(generic technology)网表即通用网表,与工艺网表相比较,GTECH 网表没有具体的工艺信息,指的是其使用的逻辑门单元是一个符号,包含通用逻辑门(例如与或非,触发器等等)和通用运算符(加减乘除、移位、比较、选择等等),GTECH 网表中仅包含逻辑功能,但可以对功耗、时延和面积建模

以16选1多路选择器(multiplexer,MUX)为例,GTECH 网表将其表示成 16 输入、4 个输入选择、1个输出的 16 x1 MUX;而工艺网表依据工艺库信息可能将其表示成多个 4x1MUX 的级联形式。

在这里插入图片描述


2. DC设计对象


DC在综合的过程中,会把电路划分为不同的处理对象,称之为设计对象(Design Objects),具体如下:

  • Design:待综合的对象。
  • Port :整个Design最外部的输入和输出端口
  • Clock:时钟信号源的引脚或端口。【数字电路采用的是基于时钟的同步电路,时钟上的任何问题都会对电路造成重要影响,因此一定要单独处理时钟端口
  • Cell:设计中包含的子设计的实例,也称为 instance。(例化的模块)
  • Reference:所指向的设计原型,即单元是参考的实例。(例化的原型)
  • Pin:cell 自身的引脚
  • Net:内部连线,端口和引脚间及引脚和引脚间的连线。

不同表现形式的设计中的设计对象:

Schematic
在这里插入图片描述

VHDL
在这里插入图片描述

Verilog
在这里插入图片描述

需要注意的的是,设计对象会出现同名的问题,如下:

在这里插入图片描述

约束添加到不同的设计对象是会带来不同的结果的,上例中的指令就没有清楚的指出设计对象是哪一个。不同版本的 DC 对同名设计对象的处理可能会不同,可以使用 get_* 命令来指定设计对象(该命令返回当前设计中的对象),如set_load 5 [get_nets SUM] ,这样返回的就是nets类型的设计对象中名字为 sum 的那一个。


3. DC工作原理


某种程度讲时序收敛是逻辑综合的重要目标,施加时序相关约束是综合的重要步骤,DC 内嵌静态时序分析引擎,Design Time,基于时序约束完成设计的优化和映射,为后续时序约束设置更符合实际。

逻辑综合中,内部有一个静态时序分析引擎,会把整个电路划分为不同的时序路径,路径的起点是 input portclock,终点是寄存器D端output port
在这里插入图片描述
在静态时序分析的基础上,逻辑综合会有两个指标:建立时间保持时间

DC在综合过程中以最大化建立时间为重点,如果建立时间不满足要求,只能重新迭代,以违规路径为优化目标重新综合;如果保持时间不满足,多倾向于推迟到布图后再进行修正。

DC针对最坏情况下的关键时序路径进行优化。采用所谓最大最小算法,对于数据路径取最大延时而时钟路径取最小延时,不违反建立时间约束;对于数据路径取最小延时而时钟路径取最大延时,不违反保持时间约束。

这是DC的一种综合策略,具体为时序约束的施加方法、时间违规的修正方法。


4. DC文件管理


Design Compiler 读取设计的 RT L代码,基于用户施加的各种约束,完成RTL级电路到目标工艺库上门级网表的转化。其输入输出文件内容如下:
在这里插入图片描述

为了方便管理输入输出文件,通常在工作目录下根据文件内容建立如下目录结构来存放对应文件。

在这里插入图片描述


5. DC基本流程


  1. 读取库文件 (包括目标库、链接库、符号库等)
  2. 添加时序约束和设计规则约束(环境约束、面积约束、时序约束等)
  3. 综合RTL设计(将RTL代码转换为用标准单元表示的门级网表)
  4. 分析结果
  5. 输出设计数据

在这里插入图片描述


6. DC库文件


DC在运行过程中使用到的几种库文件如下:

  • 目标库 target_library
  • 链接库 link_library
  • 符号库 symbol_library
  • 算数运算库 synthetic_library

target_library


设计人员希望 DC 推断出并最终映射到其上的逻辑单元对应的工艺库

在这里插入图片描述

读入的 HDL 代码首先由 synopsys 自带的 GTECH 库转换成 Design Compiler 内部交换的格式, 然后经过映射到工艺库和优化生成门级网表。

目标库是由晶圆厂提供的,格式是.db,是 DC 的内部格式,不可读,可以由文本可读的.lib格式转换得到。

目标库中包含了各个门级单元的行为(逻辑功能)、引脚、面积以及时序信息(有的工艺库还有功耗方面的参数),DC 在综合时就是根据目标库中给出的单元电路的延迟信息来计算路径的延迟。并根据各个单元延时、面积和驱动能力的不同选择合适的单元来优化电路。

工艺库(目标库)的示例如下,DC 优化的一个常用方法是在逻辑功能相同的前提下替换单元的大小尺寸,替换依据就是工艺库中包含的各种信息。
在这里插入图片描述


link_library


说明网表的叶单元和子设计的参考,每个单元和设计都要在链接库中找到其参考以保证设计的完整。一般情况下链接库包含目标库、PAD工艺库、ROM/RAM等宏单元库,以及 DC 读入内存的设计文件,同时该库还可以包含旧的工艺库已完成不同工艺之间的再映射。

【设计中不可避免的要用到一些第三方的IP,这些IP并不是designer设计的而是直接例化使用的。这些第三方的IP比如PLL,编译好的RAM、PAD等。这些IP在仿真时候往往使用vendor提供的一个仿真模型来模拟IP的真实行为。在综合的过程中并不希望DC把这些模型转换为标准单元库的。所以就需要用到Link Library,Link Library就是告诉DC这些第三方的IP不用你综合直接调用Link Library的lib文件即可】

在这里插入图片描述

  1. 通常情况下,链接库对应 IP,比如购买的付费 IP、存储器、IO、PAD等等。目标库更多的指的是标准单元,所以两者可能一样也可能不一样,这个我们都要做具体的指定。

  2. 设置link_library的时候,注意设置search_path如下所示:

在这里插入图片描述

如上图所示,在这样一个目录情况下,虽然设置了 link_library, 但是 DC 在 link 的时候却报错, 找不到 TOP.v 中引用的 DECODEIP模块。 这是因为没有设置搜索路径,DC找不到文件,这也说明 link_library 默认是在运行 DC 的目录下寻找相关引用。
要使上例的 DECODE 能被找到, 需要设置 search_path。如下图所示:

在这里插入图片描述

使用 analyze & elabroate 命令的也可以读取文件,如下:

在这里插入图片描述

symbol_library

(工艺库元件的符号表示,用于图形化显示综合的门级网表;若只使用命令行接口,该库可以不指定。)
在这里插入图片描述


synthetic_library


综合库,它包含了一些经验证的、可综合的、独立于工艺的 IP,也称为DesignWare。dw_foundation.sldb 是Synopsys 提供的 DesignWare 库,它包含了基本的算术运算逻辑、控制逻辑、可综合存储器等IP,在综合时调用这些IP有助于提高电路性能和减少运行时间。

在这里插入图片描述
DC综合的时候,默认综合为性能相对较差的电路结构,比如将加法器 (verilog中的运算符“+”) 综合为串行进位加法器,如果想要使用高性能的加法器,如超前进位加法器,这时候就需要设定算数运算库,让 DC 在综合的时候调用 DesignWare库。同时也需要在link_library设置相应的库以使得在连接的时候 DC 可以搜索到相应的运算符的实现。
(这是一个较为高级的功能,需要高级的licence)


工艺库内部信息


这里用的其实就是STA使用的库,部分信息如下。

时序弧概念补充

时序弧(timing arc):指路径延时的最小组成部分。时序弧分为组合和时序两种类型:组合逻辑时序弧用于计算时序传播的物理延迟;时序逻辑时序孤用于进行基于规则的设计优化。Design Time 将每条时序路径划分成一条条称为时序弧(有些资料也成为延时段)的连线延时或单元延时来计算总的路径延时。

**静态时序分析是基于时序弧数据的时序分析,时序弧是用来描述了两个节点延时信息的数据,时序弧的信息一般分为连线延时和单元延时。**连线延时是单元输出端口和扇出网络负载之间的延时信息,单元延时是单元输入端口到输出端口的延时信息,因此,一条完整路径的时序信息计算由连线延时和单元延时组成,如下图所示:
(每一条带有箭头的虚线都是一个时序弧)。
在这里插入图片描述

单元时序信息

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

单元定义

工艺库中的标准单元通常包括基本单元,如门电路、触发器、选择器等;I/O单元,如输入端口、输出端口、 双向端口、各种配置的电源(内核、I/O或振荡器;宏单元,如不同规模的 SRAM、 ROM、振荡器等。

库单元的定义包括单元的功能、时序特性和面积、引脚等属性。单元属性因单元不同而有差别。例如,定义了单元的面积属性 area,若单元为PAD,则其面积属性为0.0,这是因为 PAD 不作为内部逻辑门使用;单元的cell_footprint,具有相同几何拓扑结构的单元其cell_footprint 属性相同,若in_place_swap_mode 属性为 match_footprint,那么单元只能有一个footprint,如果一个单元没有cell_ footprint属性,那么在位优化时不能被替换;引脚的数据流向、驱动能力以及时序信息等。

库单元的定义同时还包括一些设计规则检查 (DRC, Design Rule Check) 的属性。DRC 属性定义了库单元安全工作的条件,违反这些条件将对单元的正常工作产生严重影响
max transition 属性通常用于输入引脚,用来定义任何转换时间大于负载引脚,max_ transition 的连线不能连接到该引脚;max capacitance 属性通常用于输出引脚,用来指定驱动单元的输出引脚不能和总电容大于等于该值的互连线相连。
若发生 DRC 违例,则需替换相应单元。这里需要注意的是,引脚的 capacitance属性和 max capacitance 属性是不同的,capacitance 属性只用于进行延时计算,而max capacitance 属性则用于设计规则检查。

参考资料

芯动力 —— 硬件加速设计方法
EDA10–DC逻辑综合(一)DC简介概念流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值