[看完就懂]DC综合4--综合库和DC的设计对象概述(下)

前面对标准单元库的内容和结构有了一个概述,下面对一个反相器单元一个寄存器单元进行详细解说。

反相器的综合模型

综合库中主要给出了各端口的功能、电容、功耗及延时等信息(不同的库模型信息种类可能不一样)。反相器的功耗主要分为两部分:静态功耗和动态功耗。其中静态功耗是指泄漏功耗,动态功耗包括翻转时的短路功耗及节点电容的充放电所消耗的功耗。节点电容充放电消耗的功耗仅跟VDD、节点翻转率及节点电容有关。其中,VDD和节点电容是固定的,节点翻转率跟输入激励有关,需要通过仿真激励进行计算。因此,在综合库中,不列出充放电功耗。而短路功耗跟输入转换时间和节点电容有关,一般以查找表的形式给出(在综合库中,用internal_power表示)。

具体的反相器的综合模型如下所示:

当然,上面看到的只是部分内容,有些内容折叠起来了比如输入引脚的等效负载、输出引脚的短路功耗等被折叠起来了,下面进行讲解:

引脚A表示反相器的输入(上图),展开后可以看到输入的引脚的等效负载,也就是等效电容的大小。

输出管脚Y有:

里面主要包含了引脚的功能(function)、短路功耗(internalpower)、时序信息(timing)、输出的最大负载(maxcapacitance)等信息。

短路功耗信息(internal_power):

展开短路信息如下图所示:

短路功耗与A管脚相关联,也就是与A管脚有关系。

risepower给出了Y从低到高时的短路功耗,功耗跟输入信号的转换时间(index1)及节点电容(index2)有关;根据不同的信息进行查表,表的值就是(value),7X7表示index1是7,index_2也是7,因此value是7X7=49,如下图所示:

也给出了从高到低的短路功耗(fall_power),功耗跟输入信号的转换时间及节点电容有关;具体内容类似从低到高时的短路功耗,不再详述。

时序信息(timing):

主要包括相关引脚、时序敏感类型、单元延时、转换时间等。

Cell_rise 给出了Y从低到高时单元的延时,延时跟输入转换时间和节点电容有关:

Rise_transition给出Y从低到高时输出的延时(transtion),跟输入转换时间和节点电容有关:

Cellfall、falltransition:则是对应Y从高到低时的单元延时和输出延时,也是跟输入转换时间和节点电容有关。

cellleakagepower:单元的泄漏功耗

有时候,也给出在不同条件时的泄漏功耗(也就是查表的方式):

反相器作为组合逻辑最简单、最经典的模型,其综合库的模型内容就如上所示了,下面介绍时序逻辑的。

寄存器单元的综合模型

寄存单元综合库模型主要包括以下内容:

· 单元面积;

·D端短路功耗;

·D端的建立时间约束和保持时间约束;

· 时钟引脚上的短路功耗;

· 时钟引脚上的最小脉宽要求;

· 输出端的短路功耗;

· 输出端的延时;

· 输出端的最大负载约束;

· 单元的泄漏功耗。

其综合库内容如下所示:

上面综合库的具体内容下面进行具体叙述:

D端口(引脚):

输入端口,主要包含输入的等效负载、短路功耗、时序信息。

internal_power,D端消耗的短路功耗:

rise_power给出D端由低电平变到高电平时的短路功耗,跟输入转换时间有关,电容为定值:

fall-power则给出D端由高电平变到低电平时的短路功耗,跟输入转换时间有关,电容为定值。

timing,时序信息:

D的时序信息与“CK”端口有关,Setup_rising表明是setup(建立时间)的时序信息。

rise-constraint:给出D端由低电平变到高电平时的setup约束,跟D端输入转换时间和时钟的转换时间有关:

fall-constraint则给出D端由高电平变到低电平时的setup约束,跟输入转换时间和时钟的转换时间有关。

前面我们看到,有两个timing,一个既然是建立时间了,那么另外一个就是保持时间了:

rise-constraint:给出D端由低电平变到高电平时的hold约束,跟输入转换时间和时钟的转换时间有关:

fall-constraint:给出D端由高电平变到低电平时的hold约束,跟输入转换时间和时钟的转换时间有关。

CK端口

这个是时钟端口,主要给出了输入的负载、最大转换时间约束、短路电流、高低电平的最小脉宽要求,如下图所示。

Internal_power,短路功耗:

也是分为CK上升时跟下降时的短路功耗,与D端有关。

minpulsewidthhigh、minpulsewidthlow :给出了时钟高低电平的最小脉宽要求。

ff:描述寄存器的功能。


Q端口

主要描述Q的功能,短路功耗,时序信息,输出最大的负载电容。

Internal_power,短路功耗:

rise_power给出了输出端由低电平变到高电平时的短路功耗,跟输入转换时间、Q端负载及QN端负载有关:

fall_power则输出端由高电平变到低电平时的短路功耗,跟输入转换时间、Q端负载及QN端负载有关。

Timing,时序信息:

说明Q端口与CK的上升沿有关。

cell-rise给出Q端由低电平变到高电平时CK到Q的延时,跟输入转换时间和输出节点电容有关:

rise-transitio给出了Q端由低电平变到高电平时Q端转换时间,跟输入转换时间和输出节点电容有关:

cell-fall给出了Q端由高电平变到低电平时CK到Q的延时,跟输入转换时间和输出节点电容有关;

fall-transition给出了Q端由高电平变到低电平时Q端转换时间,跟输入转换时间和输出节点电容有关。

max_capacitance,则是最大输出负载电容约束。

QN管脚,跟Q管脚类似,不进行陈述了。

cellleakagepower给出了默认单元漏电流大小。而下面的不同漏电流,则是根据端口信号处在不同状态时的漏电流大小:

注:对于有复位信号的寄存器,还有可能有下面的信息:

· 复位引脚上的短路功耗;

· 复位引脚上的最小脉宽要求;

· 复位引脚上的recovery/removal时序约束;

· 输出端的输出转换时间(相对于时钟);

· 输出端的输出转换时间(相对于异步复位信号);

· 输出端的延时(相对于异步复位信号);

(2)DC的设计对象

在了解了综合库之后,下面介绍一下DC的设计对象,虽然这个设计对象相对于综合库没有那么重要,但是还是要了解一下的。

对于一个verilog代码模块,我们知道这是一个模块的名字是什么,这个模块的功能是什么,这个模块有哪些端口等等信息。但是对于DC来说,它不想我们那么理解,给它一个verilog模块,它把这个模块的内容当做设计对象(简称对象)来看。DC支持的对象和解释如下所示:

DC支持8中设计对象:

Design :具有某种或多种逻辑功能的电路描述;

Cell :设计的 instance;

Reference :cell 或 instance 在库中定义的名字;

Port :design 的输入、输出;

Pin :design 中 cell 的输入、输出;

Net :ports 和 pins 之间或 pins 之间的信号名;

Clock :被定义为时钟源的 pin 或 port;

Library :cell 的集合,如:stargetlibrary,linklibrary;

在DC读入设计时候,可以通过下面命令查看这些对象:

Query:访问某一个对象,

Sizeof:查某一个(对象)集合的大小。

对象具有某些属性,比如:

端口(port)的属性有:方向、驱动单元、负载、最大电容约束等等

单元(cell)的属性有:层次化、不触碰 等待;

时钟的属性有:周期、抖动等;

写约束,就是通过对设计对象的属性进行约束,至于要约束什么,怎么约束,在后面进行介绍。

(3)Design Ware 库

DesignWare是Synopsys提供的知识产权(Intellectual Property,简称IP)库。IP库分成可综合IP库(synthesizable IP,SIP) ,验证IP库(Verification IP,VIP)和生产厂家库(foundry 1ibraries)。IP库中包含了各种不同类型的器件。这些器件可以用来设计和验证ASIC, SoC和FPGA。库中有如下的器件:

·积木块(Building Block)IP(数据通路、数据完整性、DSP和测试电路等等)。

·AMBA总线构造(Bus Fabric)、外围设备(Peripherals)和相应的验证IP。

·内存包(Memory portfolio)(内存控制器、内存BIST和内存模型等等)。

·通用总线和标准I/O接口(PCI Express,PCI-X,PCI和USB)的验证模型。

·由工业界最主要的明星IP供应商提供的微处理器(Microprocessor)和DSP核心。

·生产厂家库(Foundry Libraries)。

·板级验证IP<board verification="" ip)。<="" p="" style="box-sizing: border-box;">

·微控制器(Microcontrollers,如8051和6811)。

·等等

这里主要介绍集成在DC综合工具中的designware foundation库。所有的IP都是事先验证过的、可重复使用的、参数化的、可综合的,并且不受工艺的约束。

常用的designware foundation库单元如下所示:

使用IP库中的器件,可以用运算符号推论法(Operator Inferencing)或功能推论法(Functional Inferencing)。运算符号推论法是直接在设计中使用“+、一、*、>、一和<”等的运算符号。功能推论法是在设计中例化(instantiate) DesignWare中某种算术单元,例如直接指定用库中的DWF_ mult_ tc,DWF_ div_ uns和DWFsqrttc单元。

由于DesignWare库中的所有器件都是事先验证过的,使用该IP库我们可以设计得更快,设计的质量更高,增加设计的生产力和设计的可重复使用性,减少设计的风险和技术的风险。对于每个运算符号,一般地说DesignWare库中会有多个结构(算法)来完成该运算。这样就允许DC在优化过程中评估速度/面积的折衷,选择最好的实现结果。对于一个给定的功能,如果有多个DesignWare的电路可以实现它,Design Compiler将会选择能最好满足设计约束的电路。此外使用DesignWare中的DW Foundation库是需要许可证的(license) , DW Foundation库提供了更好的设计质量(Quality of Result)。

使用DesignWare中IP的方法如下图所示:

Design Compile自动选择和优化算术器件。对于算术运算,我们并不需要在DC中指定标准的(基本的)综合库standard.sldb。标准的综合库standard.sldb包含内置的HDL运算符号,综合时DC会自动使用这个库。如果我们要使用性能更高的额外的IP库,例如DW_ foundation.sldb,我们必须指定这些库,如下所示:

#Specify for use during optimization

set syntheticlibrary dwfoundation.sldb

#Specify for cell resolution during link

lappend linklibrary $syntheticlibrary


本文系转载。出处为 http://www.cnblogs.com/IClearner/ ,作者:IC_learner

全部评论
小白路过
点赞 回复 分享
发布于 2022-07-11 20:20

相关推荐

做人要有梦想dji:最新工位查看图片
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务