【DC与逻辑综合】逻辑综合基础

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 读入内存的设计文件,同时该库还可以包含旧的工艺库已完成不同工艺之间的再映射。)
在这里插入图片描述

  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简介概念流程

  • 4
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DC逻辑综合实验手册是一本重要的实验指导手册,主要用于引导学生进行数字电路的逻辑综合实验。该手册包含了多个实验项目,涵盖了数字电路的基本理论、实验步骤和实验结果的分析。通过这些实验,学生能够深入了解数字电路的设计和实现原理,提升自己的实践能力。 在DC逻辑综合实验手册中,首先介绍了数字电路的基础知识,包括逻辑门、触发器、计数器等基本器件的功能和特点。然后,手册详细说明了每个实验项目的实验目的、所需器件和电路图,以及实验步骤和预期结果。在实验过程中,学生需要按照手册上的指导进行电路的连接和参数设置,并记录实验现象和数据。最后,学生需要对实验结果进行分析和总结,验证实验是否达到了预期目标,并思考实验中出现的问题和可能的改进方法。 通过学习和实践DC逻辑综合实验手册,学生能够全面掌握数字电路的设计和实验方法。手册中的实验项目涵盖了从简单到复杂的多个层次,学生可以逐步提升自己的能力。同时,手册还提供了丰富的实验数据和分析方法,使学生能够更好地理解数字电路的特性和运行原理。此外,手册中还提供了对实际应用中可能遇到的问题和挑战的解决思路,帮助学生培养解决问题的能力。 总之,DC逻辑综合实验手册是一本对于数字电路学习者非常有价值的实验指导手册。通过该手册的学习和实践,学生能够更好地理解和掌握数字电路的设计和实验方法,提升自己的能力和实践经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值