dc综合与pt静态时序分析(中文)_DC综合库(时序库)和DC的设计对象

0ccdd0c22200d9a4e896649a004741e8.png

前面一直说到综合库/工艺库这些东西,现在就来讲讲讲综合库里面有什么东西,同时也讲讲synopsys的Design Ware库。主要内容分为三个部分:标准单元库、DC的设计对象、Design Ware库。

(1)标准单元库

  绝大多数的数字设计流程都是基于标准单元的半定制设计流程。标准单元库包含了反相器、缓冲、与非、或非、与或非、锁存器、触发器等等逻辑单元综合模型的物理信息,标准单元是完成通用功能的逻辑,具有同等的高度(宽度可以不同),这样方便了数字后端的自动布局布线。

①概述

一个ASIC综合库包括如下信息:

  ·一系列单元(包括单元的引脚)。

  ·每个单元的面积(在深亚微米中,一般用平方微米表示,在亚微米工艺下,一般用来称呼,至于具体的单位,可以咨询半导体制造商)。

  ·每个输出引脚的逻辑功能。

  ·每个输入到输出的传递延时,输出到输出的传递延时;inout到输出的传递延时。

②内容与结构

Synopsys的工艺库是一个.lib文件,经过LC编译后,产生.db文件。工艺库文件主要包括如下信息:

  ·单元(cell)(的信息):(主要有)功能、时间(包括时序器件的约束,如建立和保持)、面积(面积的单位不在里面定义,可按照规律理解,一般询问半导体厂商)、功耗、测试等。

  ·连线负载模型(wire load models):电阻、电容、面积。

  ·工作环境/条件(Operating conditions):制程(process)(电压和温度的比例因数k,表示不同的环境之间,各参数缩放的比例)

  ·设计规则约束(Design ):最大最小电容、最大最小转换时间、最大最小扇出。

工艺库的结构如下所示:

3d722c69f2a9ab7da992d3367094872c.png

文本描述如下所示:

55422d9f069b7bb81c251f2192c5dc9e.png

7e934fed11497fcdeb2053941cce28e8.png

852ebbe6790d0400feb3034ba179d5f8.png

f91fce81ed92ec430fdd05929c5b2449.png

a7a8661f78c4f96022f38bc7ae402cb2.png

我使用的TSMC90nm的工艺库,我用slow.lib这个库来给大家介绍:

babd551c5acb3c12192ff2f1968b004b.png

这个库总共三万多行,不可能每一行都解说,因此我按照结构进行介绍。

打开这个.lib文件,可以看到最前面:

304b966b8eb367dbd976971a3eb0076f.png

最前面的是这些注释,描述的是:制程(是慢的模型)、电压、温度等数据信息。

接下来才是真正的库的信息:

库组(大结构)

Library(library_name){

......

......

}

A首先是库的属性的描述:

2564bdb0ddb4111dfc770b6e4e29172e.png

下面是这张图的解释:

    ·通用属性描述(general attribute)

主要是工艺类型、延迟模型、替代交换方式、库特征、总线命名方式等信息

 工艺类型:这个库没有给出,主要用来说明这个库是CMOS工艺还是FPGA工艺。默认是CMOS工艺。

 延迟模型:指明在计算延迟时用的那个模型,主要有generic_cmos(默认值)、table-lookup(非线性模型)、piecewise-cmos(optional)、dcm(Delay Calculation Module)、polynomial。这个库使用的非线性模型。

 替代交换方式:这里选的是匹配封装的方式。具体的信息可以查阅其他治疗或者询问半导体厂商。

 库特征:报告延迟计算,也就是这个库具有延迟计算的特征。

 总线命名方式:定义库中总线命名规则。例如:bus_naming_style:"Bus%spin%d";这个库没有进行总线规则的命名。

    ·库的文档资料属性(document attribute):

主要是库的版本、库的日期、还有注释。例如:

  用库报告命令report_lib可显示日期例如:Date:"Wed Jun 22 12:31:54 2005"。

  修正版属性定义库的版本号码,例如Revision:1.3;

  注释属性用于报告report_lib命令所显示的信息,如版权或其他产品信息。例如:Comment:"Copyright (c) 2005 Artisan Components, Inc. All Rights Reserved.”

    ·定义单位属性(unit attribute):

   Design Compiler工具本身是没有单位的。然而在建立工艺库和产生报告时,必须要有单位。库中有6个库级属性定义单位:time_ unit(时间单位)、voltage_unit(电压单位)、current_ unit(电流单位)、pulling_resistance_unit(上/下拉电阻单位)、capacitive_load_unit(电容负载单位)、leakage_power_unit(漏电功耗单位)。

单位属性确定测量的单位,例如可在库中用毫微秒(nanoseconds)或皮法拉(picofar-ads)作为时间和电容负载的单位。

  注:关于面积的单位,前面已经说了,这里不再详述。

B接下来是环境描述

  主要包括操作条件(operation conditions)、临界条件定义(threshold definitions)、默认的一些环境属性(default attributes)、一些(时序、功耗)模型(templates)、比例缩放因子(k-factors)、I/O pad属性(pad attributes)、线负载模型(wire-loads)。

    ·操作条件(operation conditions):

ae26e69bcab543ba4cb693004bd6db0f.png

在工艺库中,用操作条件设置了制程(process)、温度(temperature)、电压(voltage)与RC树模型(tree_type)。

  在综合和静态时序分析时,DC要用到这些信息来计算电路的延迟,而库中的这组操作条件为基础(也就是nom_xxxx)操作条件。一个工艺库只有这么一组基础的操作条件,如果要使用不同的操作条件,则需要借助K参数了(见后面)。制程、温度、电压这些很好理解,下面主要说一下这个RC树模型(tree_type)。

  tree-type属性定义了布局之前延时的计算方式。此外,线负载模型(后面有讲)是根据连线的扇出来估算连线的RC寄生参数的,RC如何分配就是根据这个tree-type属性来的。

  连线延时(从驱动引脚的状态变化到每个接受单元输入引脚的状态变化,线负载模型设每个分枝的延迟是一样的。)的一个示例如下图所示:

914f051da10ca00fb7a8ff9684452509.png

  在这个简单的电路中,BUF1的输出驱动两个单元:BUF2与BUF3。在物理上,这是两根连线。而在网表中,两根连线用一个net来表示。

  在布局前,假设这两根线有相同的寄生电阻与寄生电容,即Cwire1-Cwire2=R1-R2 。

假设我们想了解从BUF1的输出到BUF2的输入端的延时。这个延时实际上是给连线及BUF2的输入引脚负载进行充、放电所消耗的时间。

如何计算这个延时呢?tree-type就是为此而定义的。Tree-type有三种取值,这个延时就有三种计算模型,这三种模型有两种理解方式,这两种理解方式是等价的。

第一种理解方式的三种模型:

  A:当它取值为worst-case-tree时,连线的寄生参数采用集总模型,即用Cwire*(Cwire 1+Cwire2)这个乘积表示连线的等效电容,Rwire(R1+R2)表示连线的等效电阻。C1表示BUF1输入引脚的等效电容。C2表示BUF2输入引脚的等效电容。从BUF 1到BUF2的延时计算模型下图所示:

8c47188181b2f6d12f489fff9da1cc67.png

      在这种模型中,net本身的延迟为Rwire*Cwire .

  B:当tree-type取值为best-case-tree时,计算延时的RC模型如下图所示:

419f8f0876493a681c9beda39a098940.png

      在这种模型中,Rwire为0,因此net本身的延时为0

  C:当tree-type取值为balanced-tree时,计算延时的RC模型如下图所示:

340179510be7fed81b661db587694d2b.png

    在这种模型中,net的延时为Rwire*Cwire/(N^2)。这里N表示负载数目,本例中取值为2.

第二种理解方式的三种模型:

71708bb1b4c862eace54539cd3f822d0.png

无论是从哪一种方式理解,这个库中使用的是平衡树的模型。

    ·临界条件定义(threshold definitions):

主要是定义一些极限值,比如时钟抖动的最大最小值、输出输出的上升下降沿的最大最小值等等信息,如下图所示:

4434a01d8fbdac38c724bd81393be631.png

    ·默认的一些环境属性(default attributes):

928598280aeff2271efb9fa739f76810.png

  主要是默认漏电流功耗密度、标准单元的漏电流功耗、扇出负载最大值、输出引脚的电容、IO类型的端口电容、输入引脚的电容、最大转换时间。

    ·一些(时序、功耗)模型(templates):

048d6c9ad49f3122a3f4ef56378fb4ca.png

  都是写查找表模型,主要是功耗(比如输入转移时间的功耗)、时序(比如输入线转换的延时、建立时间和保持时间的延时)等等,根据不同的操作环境,进行查表进行选择对应的参数。

    ·比例缩放因子(k-factors):

由于一般库中只有单元“nom_xxx”的值,为了计算不同的制程、电压和温度下单元的延迟(或者说是计算不同的操作条件),库中提供了比例缩放因子

a9d39f5ec49b44388b06eaf2c47c0250.png

  比例因子有许多,这里只是列举了这几个。

根据提供的K参数,DC按下面的公式计算不同的制程,电压和温度的单元延迟:

 Delay derated = (nominal delay)*(1+(DP*KfactorP))*(1+(DV*KfactorV))*(1+(DT*KfactorT))

其中:

  delta = current-nominal ;

  DP = CP-NP,CP为current process,NP为nominal process;

  DV=CV-NV,CV为current voltage,NP为nominal voltage;

  DT=CT-NT,CT为current temperature,NT为nominal temperature.

  KfactorP、KfactorV、KfactorT分别是对于的K参数,表示制程、电压、温度对延时的影响。

    ·I/Opad属性(pad attributes):

a44ecae8797fad8d1fe5d549b57b2dbf.png

    主要就是定义I/O引脚的电平属性,告诉你输入是COMS还是TTL,什么时候达到高电平、什么时候是低电平。

    ·线负载模型(wire-loads):

   工艺库的线负载模型如下所示:

9394dd86f0202cc059bfcbc52c797064.png

   DC采用wire-load模型在布局前预估连线的延时。通常,在工艺库中,根据不同的芯片面积给出了几种模型(上图所示)。这些模型定义了电容、电阻与面积因子。此外,导线负载模型还设置了slope与fanout_length,fanout-length设置了与扇出数相关的导线的长度。

  有时候,除了扇出与长度,该属性还包括其他参数的值(这个工艺库没有),例如average_capacitance、standard_deviation与number_of_nets,在DC产生导线负载模型时会自动写出这些值。对于超过fanout-length属性的节点,可将该导线分成斜率不同的几段,以确定它的值。

C工艺库剩下的全是标准单元(cell)的描述:如反相器、触发器、与非门、或非门的描述等:

b5951800cb8ed7dc48db7f994a8bb2f0.png

      ·标准单元内容概述

  综合库中的每个单元都包括一系列的属性,以描述功能、时序与其他的信息。 在单元的引脚描述中,包含了如下内容:输入引脚的fanout-load属性、输出引脚的max_fanout属性、输入或输出引脚的max_transition属性、输出或者inout引脚的max_capacitance属性。利用这些描述,可以对设计进行DRC(设计规则检查)。如果某个单元的输出最大只能接0.2pF的负载,但在实际综合的网表中却连接了0.3pF的负载,这时候综合工具就会报出DRC错误。

  通常,fanout_load与max_fanout一起使用max_transition与max_capacitance一起使用。 如果一个节点的扇出为4,它驱动3个与非门,每个与非门的fanout-load是2,则这三个与非门无法被驱动(因为3*2>4)。

  max_transition通常用于单元的输入引脚,max_capacitance一般用于单元的输出引脚。如果任何节点的transition时间大于引脚的max_transition值,则该节点不能连接。如果发生违例,则DC用一个具有更大max_capacitance值的单元来取代驱动单元。

  在对输出引脚的描述中,给出了该引脚的功能定义,以及与输入弓}脚相关的延时。输入引脚定义了它的引脚电容与方向。这个电容值不能与max_capacitance值相混。DC利用输入引脚的电容值进行延时计算,而max_capacitance仅用来进行设计规则检查。

  对于时序元件中的时钟引脚,专门用clock类型进行说明,如下所示:

18bc37d6d0976a9f577d29c5e8008230.png

注:许多设计者都会抱怨工艺库中对单元的DRC属性设置不当,这是由于库的能力是有限的所致。对于一个设计,综合库的DRC设置可能很合适,而对于另一个设计就可能不太合适。这时候,需要设计者对综合库进行“剪裁”。当然,这种“剪裁”必须比库中的定义更为严格。如将一个库中buffd0的Z端的max_fanout由4.0改为2.0的命令:

dc_shell> set_addribute find(pin, ex25/BUFFDO/Z) max_fanout 2.0

上述的命令可以写在synopsys-dc.setup文件中。

  (单元的延时)

  在一个单元的综合库中,最核心的是对时序和功耗的描述。一个单元的延时跟以下因素有关:

  器件内部固有的延时、输入转换时间(也称为输入上升/下降时间)、负载(驱动的负载及连线)、温度、电压、制程变化。

  前三个因素是由电路本身的特性所决定的,后三个因素是由环境决定的。在实际电路中,输入转换时间、负载与连接单元的电路有关,所以我们只需要列出在不同的输入转换时间、不同的负载下单元的延时就可以了。这个延时包括器件的内部固有延时。此外,利用前面提到K缩放因子,将温度、电压、制程的影响也考虑进来。如下面的这个反相器单元,它的延时就可以通过输入转换时间和负载决定:

81f2876cbbe2ed1c04529342d55f046a.png

说到单元的延时,不得不说计算单元延时的模型

Synopsys支持的延时模型包括:CMOS通用延时模型、CMOS分段线性延时模型和CMOS非线性延时查找表模型(Nonlinear Delay Model)。前两种模型精度较差,已经被淘汰,主要用非线性延时模型。下面进行解释非线性延时模型。

非线性延时模型也称为二维非线性延时模型。在该模型中,用二维列表的形式给出单元在特定的输入转换时间、输出负载下的延迟(包括单元的延时和单元的输出转换时间):

1a06866515ac0e0fe8f1b70c2c1c57b9.png

  单元的输出转换时间又成为其驱动的下级单入的输ru转换时间。库中每个单元有两个NLDM表。上面的图中,当输出负载和输入转换时间为0.05 pF和0.5 ns时,从表中可查出单元的延迟为0.23 ns,输出转换时间为0.30 ns 。

  对于在范围之内的点,可以用插值的方法得到;对于在范围之外的点,可以用外推的方法得到。线性插值如下图所示:

69270d2107681fcdd741541cbfbcfd08.png

计算延时的公式为:

Z=A+BXX+CXY+DXXXY

其中,Z代表单元的延时,A, B, C, D是系数,X为输出节点电容,Y为输入转换时间。

输入的上升、下降时间是由上一级输出的上升、下降时间得到的。输出节点的电容可以由负载的输入引脚电容及连线负载计算得到。在综合时,使用导线负载表可以预测导线负载。导线负载模型在综合库中进行了定义。当然,用户也可以自己生成连线负载模型。该模型也是用查找表的方式,列出在不同负载下的平均连线延迟。在布局之后,可以得到更为精确的导线长度。在布线后,可以得到最确切的导线长度。可以用该导线负载来计算最终的延时,以便进行静态时序分析与时序计算。

  使用线性插值的举例:一个标准单元的延迟查找表如下图所示:

c1a57a13929cf9df777084323a11e7da.png

  在查找表中,根据不同的输入转换时间和输出节点电容,列出了标准单元的延时。例如,当输入节点的转换时间为0.1 ns,输出负载为0.01pF时,单元的延时为0.17 ns。如果单元的输入转换时间为0.2 ns,输出节点电容为0.002 pF,则从表中无法直接查找到延时,需要通过线性插值的方法来求得该值:

  计算延时的第一步,是求出延时公式中的系数A, B, C, D,然后根据实际的输入转换时间和输出电容求出实际的延时。

   假设该单元的输入转换时间为0.2(位于查找表的第1列与第2列之间),输出节点电容为0.003(位于查找表的第1行与第2行之间),这样,我们将查找表中的相应的4值代入延时公式,可得:

    0 .080=A+B*0.1 +C *0.001 +D*0.1*0.001;

    0 .130=A+B * 0 .5+C * 0.001 +D*0.5*0.001;

    0 .170=A+B * 0 .1+C*0.01 +D*0.1*0 .01

    0 .220=A+B * 0.5+C*0.01 +D*0.5*0.01

    求解这4个等式,可得 A=0 .057 52,B=0 .1248,C=9 .9998,D=0 .2。

  接下来,我们将实际的节点电容、输入转换时间代入延时公式,可以得到这种情形下该单元的实际延时为:

    Z=0 .5752+0.1248X0.003+9.9998 X 0.2+0.2X0.2X0.003 (ns)

    单位为ns,输出转换时间、短路功耗的计算与此类似。

  说明:利用DC中的report_power_calculation命令,可以显示出某一节点处energy的具体求解过程;利用DC中的report_delay_calculation命令,可以显示出某一节点处延迟或输出转换时间的具体求解过程。

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

·反相器的综合模型

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

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

b0e1ca054f3049e60822114531cd75d2.png

73c4b5a2fae8c064ea13b932a457175b.png

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

0d2b2eb9a442decc5cbccedd7f55754a.png

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

输出管脚Y有:

abffc853a4aa6870edc4cd36cad93fea.png

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

短路功耗信息(internal_power):

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

ad75c03f4ab8397897863c078dd19bbd.png

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

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

9ad58ce0dc98c77f7436abd6b3dc3892.png

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

时序信息(timing):

2a2708782ac5f9b070b9725042b58f39.png

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

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

aa0e218ee717d404749d29b0998d4b75.png

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

824b9a078ca61addfe58ca66cf917ff5.png

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

cell_leakage_power:单元的泄漏功耗

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

3ca395e24b6f70996cf390fe95e190d3.png

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

·寄存器单元的综合模型

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

  · 单元面积; 

  ·D端短路功耗; 

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

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

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

  · 输出端的短路功耗; 

  · 输出端的延时;  

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

  · 单元的泄漏功耗。

其综合库内容如下所示:

ee6e4c24fb4d1da14d626a8fb123a566.png

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

D端口(引脚):

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

e102efc072e9f92090ca855d8c9afad2.png

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

1b43f257409ba8661dcfcd0a314af33a.png

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

efea7b26207522deabd1b34611f2c712.png

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

Timing,时序信息:

6c3dd493d9821792c1f9696a105fbaf1.png

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

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

84bb95f7f311ce46a4dc07b1e6c63bf9.png

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

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

15cc5283ffa45dd765b82fa6d29f3e4f.png

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

63ee48133f015bf8d10038425d35ed7a.png

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

CK端口

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

f6ca6fa7bbe26a91120e2c577ce1235b.png

Internal_power,短路功耗:

bd1baebff4e80faf5e8fb4b6d3a24e28.png

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

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

ff:描述寄存器的功能。

ca42ed80ab8080d3bde46c675b101f11.png

Q端口

411b921620caa6d54641e4dbbf9bacb2.png

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

Internal_power,短路功耗:

17ec08f2e3903afd341d47df7ec55a8d.png

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

4bb852c288588b93526da15abb4c2d4d.png

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

Timing,时序信息:

eb8f77e9ea8a13ac0e420ae81ef0b435.png

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

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

971b1dcf83bd71cb29b478171fb3bc0c.png

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

a138cd3c2e387967810bb5c6826887c2.png

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

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

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

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

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

c9db09e5611fba9e24b198a17d5660ac.png

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

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

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

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

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

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

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

(2)DC的设计对象

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

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

992af6631630801dd0910f32281c938b.png

DC支持8中设计对象:

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

  Cell :设计的 instance;

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

  Port :design 的输入、输出;

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

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

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

  Library :cell 的集合,如: starget_library,link_library;

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

5dbc45591aa604f2b300ba5e1c22612e.png

  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)。

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

  ·等等

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

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

05b0a5d27405819012078ea75091e028.png

890dce8255980e61e0fe996feed68e45.png

a14a9496f41859053e3c93696b19843c.png

ffb036437c6e69fb7a232077756e499c.png

96f87a830842e74200ad6094d5ab788b.png

f039b6ae9fe79cc994fadee959f8027a.png

fe1be0650a5bdb314282ad5fa7cb3876.png

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

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

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

ad48094c0a4b7b12323c0eb20de7bc4a.png

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

  #Specify for use during optimization

  set synthetic_library dw_foundation.sldb

  #Specify for cell resolution during link

  lappend link_library $synthetic_library

作者:IC_learner,

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: DC PT 静态时序分析是一种在数字电路设计中经常使用的工具,用于分析电路信号在时序上的行为。该工具通过基于电路延迟和时序约束来预测电路的性能,并在模拟器运行之前发现电路设计问题。 DC PT 静态时序分析可以帮助设计师检测电路中是否存在信号传输时序问题,比如时序迟滞、时序冲突、时序噪声等。此外,该工具还可以辅助设计师评估电路的最大工作频率,以及进行时序优化。 DC PT 静态时序分析通过模拟电路的时序路径来查找潜在的时序问题。它会使用特定的电路模型和电路延迟等信息,来确定信号在电路中传输的时间和路径。 在具体实施时,设计师需要设置时序约束和电路模型等参数。之后,DC PT 静态时序分析工具会针对电路设计中的时序路径进行分析,从而确定是否存在时序问题。最后,设计师可以根据分析结果进行相应的电路调整和优化。 总的来说,DC PT 静态时序分析是一个非常有用的数字电路设计工具,可以有效地帮助设计师在设计过程中发现和解决电路时序问题,提高电路性能和可靠性。 ### 回答2: DC PT是一种静态时序分析工具,主要用于分析和评估数字电路中的时序错误。该工具借助诸如门延迟、电路逻辑等数据来进行检查电路设计中的各种由时序错误引起的问题。通过 DC PT 工具对电路的静态时序分析,可以有效的检测到设备中的布线错误,电源波动,噪声抖动和时钟抖动等问题。根据检查结果,可以进行方案调整,优化电路设计,避免电路运算误差,提高数字电路系统的可靠性和稳定性,保证系统正常运行。此外,DC PT还能够完成与布线分析有关的任务,如路径分析、时序分析和K迹分析等。通过将DC PT工具与其他CAD工具结合使用,可以更高效地处理数字电路系统设计和验证问题,提高数字电路设计的工作效率和准确性。总之,DC PT静态时序分析是一种高效的电路设计提高工具,可以在电路设计的各个方面起到良好的作用,并为数字电路的研究和实际应用提供了保障。 ### 回答3: DC PT 静态时序分析是一种电路时序分析技术。DC PT 是 Data Collection Pattern Tracing 的缩写,意为数据采集模式跟踪。它是一种基于波形测量技术的时序分析方法,常用于分析高速电路中的信号延迟、时序噪声、时序缺陷等问题。 DC PT 静态时序分析主要通过建立电路模型、采集数据、进行分析等步骤来完成。在建立电路模型时,需要考虑电路的物理结构、元器件参数等因素。采集数据时,需要通过特定的测试模式采集电路的信号波形,并将其转化成序列数据进行分析。分析时,可以用相应的软件对序列数据进行处理和分析,以得出电路的时序性能和故障点。 DC PT 静态时序分析的优点是可以非常精确地测量电路的时序性能,可以提供更加准确的时序分析结果,并且测试数据可以直接用于电路模型的验证和仿真。缺点是需要特定的测试模式和硬件设备,测试时间相对较长,且对测试环境的要求比较高等。同时,DC PT 静态时序分析只能用于分析静态电路,对于动态电路的分析效果较差。 总之,DC PT 静态时序分析是一种精确度高、可靠性强的电路时序分析方法,能够帮助设计工程师更好地解决高速电路时序问题,在电路设计和验证中具有重要的应用价值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值