EDA10--DC逻辑综合(一)DC简介概念流程


本文来讲DC逻辑综合的简介流程,理解好相关概念对综合实际操作很有帮助。

一、综合简介

数字系统可以用算法行为级、寄存器传输级、逻辑级、电路级和版图级等不同抽象层次描述,有较高层次向较低层次的转化即为综合,综合分三类:
高层次综合(High-Level Synthesis):负责将系统算法层的行为描述转化为寄存器传输层的结构描述;
逻辑综合(Logic Synthesis):负责将寄存器传输层的结构描述转化为逻辑层的结构描述,以及将逻辑层的结构描述转化为电路的结构描述;
版图综合(Layout Synthesis)负责将系统电路层的结构描述转化为版图层的物理描述;
本章重点在逻辑综合,逻辑综合上承 RTL 级的电路设计(.v文件),下启后端布局布线的物理设计,目标是基于某个特定的工艺库,将RTL 级描述的电路转换成门级网表描述的电路。逻辑综合依靠EDA工具实现一种约束驱动、路径驱动和模板驱动的转换过程。
约束驱动指EDA工具根据设计人员对电路提出的时序和面积等目标综合电路,以保证综合后电路能满足目标要求;
路径驱动指EDA工具采用静态时序分析方法计算设计中各条路径的时序:
模板驱动指设计人员编写的 VerilogHDL/VHDL代码能被EDA工具理解和接受。

二、DC简介

2.1 DC用户接口

DC是逻辑综合的工具。
DC 的用户接口分为两类:图形用户接口 (GUI)和命令行接口,其中 GUI 接口包括 Design Analyzer 和 Design Vision, 分别通过命令design_analyzer 和 design_vision来启动;命令行接口包括 DCSH和DC-Tl13,其中DCSH 是基于Synopsys自身语言的命令行接口,通过 de_shell命令来启动,而DC-Tcl基于标准TCL语言,通过 de_shell来启动。如下图所示:
在这里插入图片描述

2.2 DC逻辑综合

DC提出的逻辑综合概念是:逻辑综合=翻译+优化+映射。
**翻译:**将HDL代码转换成通用库(GTECH库)中布尔逻辑(单元表示的网表);
**优化:**根据设计目标对电路进行优化(与工艺无关运用布尔变换或代数变换技术),包括结构优化、逻辑优化和门级优化,一般分为两个阶段;
**映射:**在目标库中选择合适的逻辑单元(包括组合逻辑和时序逻辑),产生设计的门级电路。此时与工艺库、工艺参数有关优化和映射是同时进行的,翻译和优化没有执行步骤上的先后,因此综合是一个迭代过程。
在这里插入图片描述

2.3 DC配置文件

DC启动时需要一个配置文件来初始化工具,文件名为“.synopsys_dc.setup”,该文件采用TCL格式,包含了逻辑综合过程需要的环境变量和配置信息。其中重要的环境变量有:
1、targe_library:称为目标库,指设计人员希望DC推断出并最终映射到其上的逻辑单元对应的工艺库。目标库由foundry厂商提供。
2、synthetic_library:称为综合库,它包含了一些经验证的、可综合的、独立于工艺的IP,也称为DesignWare。dw_foundation.sldb是Synopsys提供的DesignWare库,它包含了基本的算术运算逻辑、控制逻辑、可综合存储器等IP,在综合时调用这些IP有助于提高电路性能和减少运行时间。
3、link_library:称为链接库,用于说明网表的叶单元和子设计的参考,每个单元和设计都要在链接库中找到其参考以保证设计的完整。一般情况下链接库包含目标库、PAD工艺库、ROM/RAM等宏单元库,以及DC读入内存的设计文件,同时该库还可以包含旧的工艺库已完成不同工艺之间的再映射。
4、symbol_library:符号库,即工艺库元件的符号表示,用于图形化显示综合的门级网表;若只使用命令行接口,该库可以不指定。
5、search_path定义库文件所在的搜索路径。
  启动时,DC会以下述顺序搜索并装载相应目录下的启动文件:
  DC安装目录**($DC_PATH/admin/setup);**
  用户主目录;
工具启动目录。
后装载的启动文件中的设置将覆盖先装载的启动文件中的相同设置。

2.4 DC输入输出

DC读取设计的RTL代码,基于用户施加的各种约束,完成RTL级电路到目标工艺库上门级网表的转化。
在这里插入图片描述
为了方便管理输入输出文件,通常在工作目录下根据文件内容建立如下目录结构来存放对应文件。
在这里插入图片描述

2.5 DC设计对象

设计(Design) :一种能完成一定逻辑功能的电路,可以是独立的,也可以是层次化的设计。(当前设计的module)
单元(Cell):设计中包含的子设计的实例,也称为instance。(例化的模块)
参考(Reference) :所指向的设计原型,即单元是参考的实例。(例化的原型)
端口(Port):设计的基本输入、输出和双向的输入输出。(module对外的输入输出)
引脚(Pin):单元的输入输出和双向的输入输出。(模块内部输入输出连Port)
线网(Net):端口和引脚间及引脚和引脚间的连线。(模块内部连线)
时钟(Clock):作为时钟信号源的引脚或端口。
(Library):直接与工艺相关的一组单元的集合,是生成门级网表的基本单元或设计中被实例化的单元。
在这里插入图片描述
在这里插入图片描述

2.6 DC设计约束

Synopsys 设计约束 (SDC, Synopsys Design Constraint)提供简单而又直接的方法来设定设计目标,包括时序、面积、功耗和设计规则约束等全部约束信息。SDC 文件由TCL格式的约束命令组成,既可以由设计者手动编写,也可以由工具生成,一般后者是主要的生成方式。工具生成的SDC文件详细记录了设计的每一条约束,信息完整、准确,便于全流程使用,但信息量大、可读性较差。
一般通过 write_sdc命令来导出SDC文件,使用read_sdc命令或 source命令来读取SDC文件。常用的 SDC 命令如下表所示,从表中可以看出SDC并不包括装载或链接设计的命令,因此施加约束前应先完成设计相关内容的读入。
在这里插入图片描述
在这里插入图片描述

三、时序分析相关概念

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

3.1 三个时间

建立时间:指寄存器时钟采样前(也即时钟信号有效沿到来之前),被采数据必须稳定的最小时间。
保持时间:指寄存器的时钟信号有效沿到来之后(也即等待后一个寄存器采样),采到的数据必须稳定的最小时间。
时钟到输出的时间:指从时钟触发开始到寄存器输出端获得有效稳定数据所经历的时间,也称为寄存器的传播延时或污染延时(tco)。
在这里插入图片描述
DC在综合过程中以最大化建立时间为重点,如果建立时间不满足要求,只能重新迭代,以违规路径为优化目标重新综合;如果保持时间不满足,多倾向于推迟到布图后再进行修正。DC针对最坏情况下的关键时序路径进行优化。采
用所谓最大最小算法

对于数据路径取最大延时而时钟路径取最小延时,不违反建立时间约束;对于数据路径取最小延时而时钟路径取最大延时,不违反保持时间约束。这也是上面分析中下标max 、min设置的依据,同时也是DC的一种综合策略,具体为时序约束的施加方法、时间违规的修正方法。

3.2 时序路径

时间路径:信号传播经过的逻辑通道。DC的时序分析是基于路径的。DC的时序分析引擎Design Time将设计划分成一系列的信号通路.
起点一般为:基本输入端口和寄存器的时钟端口;
终点一般为:基本输出端口和寄存器的数据端口。具体有四类:
基本输入到基本输出:PATH2;
基本输入到寄存器 :PATH1;
寄存器到基本输出 :PATH4;
寄存器到寄存器 :PATH3.
在这里插入图片描述

3.3 时序弧

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

3.4 输入延时

输入延时:用于定义从外部寄存器到待综合模块输入端口的时序约束,指信号相对于时钟有效沿之后到来的时间,即输入信号在时钟有效沿之后多长时间才保持稳定或数据有效。如下图为:Tclk-q + Tm。
在这里插入图片描述

3.5 输出延时

输出延迟:用于定义从输出端口到外部寄存器的时序约束,指信号相对于时钟有效沿之前到来的时间,即输出信号在时钟有效沿之前多长时间开始保持稳定或说数据有效。如下图为:Tsetup+Tt 。
在这里插入图片描述

3.6 时间裕度

时间裕度是时序要求与实际时序之间的差值,反映了时序是否满足要求。时间裕度正表示满足要求,反之不满足。
建立时间裕度=要求数据到达时间-实际数据到达的时间;
保持时间裕度=实际数据到达的时间-要求数据到达时间。

3.7 关键路径

关键路径指设计中违反时间约束或时间容限很小(即刚好满足)的路径。这些是优化的重点。
最差时间违反(worst negative slack):指一个信号从路径起点到终点所需时间超过约束最严重的情况。
总的时间违反(total negative slack):指每个路径终点对应的最差时间违反之和。

3.8 伪路径

伪路径:也称为虚假路径、无效路径或异步路径,指时序分析器不能对其进行正确分析的路径,比如不同时钟域之间的过渡路径、复位信号的作用域等,这些路径上出现的时序违规实际是假违规。

3.9 多周期路径

多周期路径:指延时超过1个时钟周期的路径。
综合时明确指出伪路径和多周期路径,DC就会更有效地优化其他关键路径,而不是花费大量时间和性能去优化假的违规。

四、综合流程

优化一个设计的过程中,Design Compiler的算法将评估如何可以最好的执行一个设计。用户可以通过在优化前设置优化目标来引导DC的决定。这些优化目标称为限制条件
限制条件是可测量的电路的特征参数,如时序、面积、功耗等。在优化的过程中,DC检查设计的这些限制目标参数,并试图在把设计综合到工艺库的时候满足这些条件。工艺库中含有重要的时序、面积和功耗的规范。在优化时,DC根据工艺库中的规范和用户施加的限制条件来创建复杂的模型并进行详细的计算。为了得到精确的结果,要定义越符合实际情况的限制条件越好。用户也可以设置限制条件来规范内部的设计时序、端口的逻辑和电气连接和子模块的接口等。
第一步是指定要用什么库进行综合,库文件由供应商提供;
第二步是读取需要的文件;
第三步是施加需要的约束;
第四步是编译、分析结果,并写出合成的网列表。

1、启动工具
本步骤主要完成工具运行所需要的各种环境变量配置,然后即可调用相应的图形化界面或命令行界面的启动命令。
2、读入设计
本步骤将设计文件读入内存,并转换为Synopsys内部数据库格式(.db格式)DC的综合优化过程都是对内存中的设计进行的。
DC支持多种格式的设计对象,简单列举如下:

verilog		    Verilog HDL 格式
vhdl			VITDL格式
sverilog		System Verilog 格式
db				Synopsys 数据厍格式
ddc			    Synopsys 数据库格式(默认)
equation		Synopsys等式格式
st				Synopsys 状态表格式
pla			    Berkeley PLA 格式
edf			    电子设计交换格式
xnf			   Xilinx netlist format

3、初始检杳
本步骤由命令check_design完成,用于发现设计中的小问题,如未连接、多重连接、多次实例化等。
4、设置设计环境
本步骤完成设计环境的配置,包括工作条件、I/O端口属性、线负载模型。
5、设置目标约束
本步骤完成设计目标的约東,包括时序约束、面积约束等。时序约束可比实际需要适度过紧,大约过紧10%,从而减少布图过程的达代次数。
6、编译优化
本步骤由工具根据设计目标完成RTL 代码到门级网表的优化映射,可以通
过采用编译技巧、信改HDL代码,甚至修改电路体系结构等策略来保证最终结
果满足要求。
7、导出设计
本步骤完成综合后设计相关文件的导出,包括设计的门级网表(HDL格式/db格式等)、标准延时文件(用于门级仿真)、时序/面积等综合报告、设计约束文件等。

  • 8
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值