精华内容
下载资源
问答
  • 标准单元库至少要包括:AND(与)门,OR(或)门,NOT(非)门,DFF时序单元,这几类单元可以实现大部分基本逻辑功能。 除了这几类最基本的单元外,对于芯片的实现还需要 tie-hign,tie-low,filler等物理实现所需的非逻辑...

    特点 :

    各个单元高度相同,宽度不同,单元宽度随单元功能的复杂程度而变,所有单元的电源线和地线位置相同。

    下图是不同标准单元的电源线和地线的实现形式:
    目前主流的设计是c),电源线和地线处于单元的最上端和最下端,信号端口位于单元的内部区域。

    标准单元库至少要包括:AND(与)门,OR(或)门,NOT(非)门,DFF时序单元,这几类单元可以实现大部分基本逻辑功能。
    除了这几类最基本的单元外,对于芯片的实现还需要 tie-hign,tie-low,filler等物理实现所需的非逻辑功能单元,比如**填充单元(filler)**是在标准单元布局完成后,用来把所有的标准单元的电源和地以及构成所有晶体管的阱都连起来的物理辅助单元。

    一般来说各种门电路、触发器及各种I/O单元是一个标准单元库所必需的配置,这些配置可以满足一个纯数字电路的设计需要。其他大型复杂宏单元,例如模拟单元、内存(ROM、RAM、SRAM)单元等,在许多流片厂商中往往是作为IP形式提供的,所以也可以不完全纳入标准单元库中。

    通常标准单元库中的标准单元按功能分类一般分为以下几种:
    1)逻辑门单元。逻辑门单元是指具有逻辑功能的单元,比如与门、或门、与非门、或非门、与或非门、或与非门、异或门等,并且每种类型的逻辑门存在多个不同驱动强度的单元。

    2)驱动单元。驱动单元分为逻辑正向和逻辑反向两种形式,通常逻辑正向驱动单元称作缓冲器(bufer),逻辑反向驱动单元称作反相器(inverter)。每种驱动单元可以提供多个不同输出驱动能力的单元。、

    3)时序单元。时序单元指用于储存逻辑状态的单元,比如触发器、锁存器、移位寄存器等。其中触发器又包括D触发器、RS触发器、JK触发器和T触发器,每种触发器还可以设有清零/置位端等。

    4)运算单元。运算单元包括半加器、全加器、减法器和二位比较器等。这些单元通过级联的方式可构成更多位的运算单元如乘法器、除法器等。

    5)混合逻辑单元。混合逻辑单元具有比较复杂的逻辑功能,比如多路选择器、计数器、编码器、译码器、奇偶发生器等。

    6)I/O单元。I/O单元是芯片与外界交换信息的接口单元,其接口端用于输入输出的金属压焊块(PAD)。
    7)物理单元。物理单元指没有逻辑功能但是在物理实现上需要使用的单元,比如tie-high、tie-low、filler单元等。

    有的高级标准单元库中还设计了如时序单元阵列、乘加部件等功能比较复杂的宏单元,为满足用户的特殊要求而加入的扩展单元。

    一个好的标准单元库应该能提供综合工具实现各种可灵活选择的单元,这样能够为设计提供最优的逻辑实现结果。因此良好的标准单元库应该具备如下几个特点:
    1)拥有各种逻辑单元类型并且同时提供多种驱动力强度的同类型单元。
    2)缓冲器(buffer)和反相器(inverter)的驱动强度变化范围大。
    3)拥有上升和下降时间均衡的驱动单元,该类型单元主要用于时钟树的实现中。
    4)拥有相同逻辑功能,但输出可以同时提供正向和反相输出的时序单元,比如时序单元的输出即有正向输出Q端也有输出取反端QN。
    5)拥有相同的逻辑功能,但分别提供输出正向和输出反相的组合逻辑单元,比如与门单元(AND)和与非门单元(NAND)。
    6)拥有多种高扇入的逻辑单元,用于逻辑优化,比如多输入或与非门单元(OAI)。
    7)拥有多种驱动强度的正沿触发和负沿触发的时序单元。
    8)拥有多种不同置位复位端组合的时序单元。
    9)拥有各种灵活的物理单元,用于实现复杂芯片版图的完整性。
    10)拥有多种用于修正保持时间违反的延时单元。

    展开全文
  • 如xor门 这种模型可以用于指定时序内的任意特性,如power,transtion time,rise/fall delay等 5、黑盒时序模型接口 6、高级时序模型 在NLDM模型中,delay由基于输出负载和输入转换时间的时序弧计算得到。...

    1、管脚电容
    一个cell的输入输出管脚都指定了电容,大部分cell只指定了输入管脚电容,因为大部分cell的输出管脚电容为0.
    在这里插入图片描述
    2、时序模型
    一个反相器cell的时序弧延迟与以下两点相关:
    1 输出负载,即输出管脚上的电容负载
    2 输入转换时间(input transition time)
    负载越大,delay越大
    大部分情况下,输入转换时间增加,delay增加(某些具有非单调行为的cell可能相反)
    输出转换时间主要跟输出负载相关,负载越大,输出转换时间越大。
    在这里插入图片描述
    线性模型:delay和输出转换时间与输入转换时间和输出负载满足一个线性方程
    非线性延迟模型(NLDM):根据输入转换时间和输出负载查找delay的二维表,对于rise行为和fall行为都有各自的表。
    在这里插入图片描述
    NLDM不仅用于查delay,还用于查output transition time
    在这里插入图片描述
    区别是delay表的label是cell_rise和cell_fall
    transition表的label是rise_transition和fall_transition
    在这里插入图片描述
    4、时序cell模型
    在这里插入图片描述
    setup time和hold time
    这两个时间与CLK端口和D端口有关,因此二维查找表参数为data transition和clk transition
    在这里插入图片描述
    表内的hold time有时为负数。这是可以接受的,一般出现在数据可以在时钟有效边沿到来前变化,仍能满足hold time check。
    setup time也可以是负数,这表示数据可以在时钟有效边沿到来后变化,仍能满足setup time。
    但是,setup time和hold time不能同时为负值,setup time + hold time即窗口宽度,这个值必须为正。
    在这里插入图片描述
    异步检查(asynchronuous check)
    移除时间和恢复时间,都表示最小值。
    在这里插入图片描述
    这两个值在二位查找表内的参数也是data transition和clk transition
    在这里插入图片描述
    最小脉宽检查
    在这里插入图片描述
    如FF的clr端口,其最小低脉宽与input transition相关。

    传播延迟(propagation delay)
    即Tcq,这两个值与clk transition和output capacitance相关

    状态依赖模型(State-Dependent Models)
    当时序行为依赖其他输入端口而发生不同时,需要定义其他引脚的状态,这种模型就叫状态依赖模型。
    如xor门

    在这里插入图片描述
    这种模型可以用于指定时序库内的任意特性,如power,transtion time,rise/fall delay等
    在这里插入图片描述
    5、黑盒时序模型接口
    在这里插入图片描述
    在这里插入图片描述
    6、高级时序模型
    在NLDM模型中,delay由基于输出负载和输入转换时间的时序弧计算得到。实际上,cell的output load由电容和互连电阻相关。因此只考虑纯容性负载是不准确的,可以使用等效电容来代替互连电阻的作用,通过工具得到RC互连的等效电容。一些模型提供cell输出驱动来获得精确度,通过一个等效电流源来对cell输出驱动建模。这种模型有CCS(Composite Current Source)复合电流源,ECSM(Effective Current Source Model)有效电流源模型。

    receiver pin capacitance
    接收引脚电容对应于NLDM模型中指定的输入引脚电容(input pin capacitance)。与NLDM模型的输入引脚电容不同,CCS模型允许在过渡波形的不同部分分别指定接收引脚电容。由于互连RC和由单元内部输入设备的米勒效应(Miller effect)所引起的等效输入非线性电容,接收引脚电容值会在过渡波形的不同点处发生变化。因此,该电容值在波形的初始部分(leading portion)与在波形的后续部分(trailing portion)的建模是不同的。
    接收电容可以在引脚级别(pin level)上指定(如NLDM模型),通过该引脚的所有时序弧都使用该电容值;或者,接收电容可以在时序弧(timing arc level)级别上指定,在这种情况下可以为不同的时序弧指定不同的电容模型。接下来将介绍这两种指定接收引脚电容的方法。
    在这里插入图片描述
    输出电流
    参数为input transition和output load
    输出为与时间相关的电流值(波形)
    在这里插入图片描述

    展开全文
  • 以TSMC 90nm标准单元工艺为例,详解工艺的结构与内容。

    工艺库详解

    参考:
    Tcl与Design Compiler (五)——综合库(时序库)和DC的设计对象
    https://www.cnblogs.com/IClearner/p/6622524.html
    

    本文章以TSMC 90nm的标准单元库slow.lib作为示例,解释工艺库内容。

    一. 概述

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

    • 一系列单元(包括单元的引脚)。
    • 每个单元的面积(在深亚微米中,一般用平方微米表示,在亚微米工艺下,一般用门来称呼,至于具体的单位,可以咨询半导体制造商)。
    • 每个输出引脚的逻辑功能。
    • 每个输入到输出的传递延时,输出到输出的传递延时;inout到输出的传递延时。

    二. 内容与结构

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

    • 单元(cell)(的信息):(主要有)功能、时间(包括时序器件的约束,如建立和保持)、面积(面积的单位不在里面定义,可按照规律理解,一般询问半导体厂商)、功耗、测试等。
    • 连线负载模型(wire load models):电阻、电容、面积。
    • 工作环境/条件(Operating conditions):制程(process)(电压和温度的比例因数k,表示不同的环境之间,各参数缩放的比例)。
    • 设计规则约束(Design ):最大最小电容、最大最小转换时间、最大最小扇出。

    工艺库的结构如下所示:
    在这里插入图片描述
    下面分别详细讲解:

    1. 库注释

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

    2. 库组

    2.1 库的属性

    在这里插入图片描述

    2.1.1 通用属性描述(general attribute):

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

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

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

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

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

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

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

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

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

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

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

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

    Design Compiler工具本身是没有单位的。然而在建立工艺库和产生报告时,必须要有单位。库中有6个库级属性定义单位。

    time_ unit(时间单位)、voltage_unit(电压单位)、current_ unit(电流单位)、pulling_resistance_unit(上/下拉电阻单位)、capacitive_load_unit(电容负载单位)、leakage_power_unit(漏电功耗单位)。

    2.2 环境描述

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

    2.2.1 操作条件(operation conditions):

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

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

    连线延时(从驱动引脚的状态变化到每个接受单元输入引脚的状态变化,线负载模型设每个分枝的延迟是一样的。)的一个示例如下图所示:
    在这里插入图片描述
    在这个简单的电路中,BUF1的输出驱动两个单元BUF2与BUF3。在物理上,这是两根连线。而在网表中,两根连线用一个net来表示。 在布局前,假设这两根线有相同的寄生电阻与寄生电容,即Cwire1-Cwire2=R1-R2 。

    假设我们想了解从BUF1的输出到BUF2的输入端的延时。这个延时实际上是给连线及BUF2的输入引脚负载进行充、放电所消耗的时间。如何计算这个延时呢? tree-type就是为此而定义的。

    Tree-type有三种取值,这个延时就有三种计算模型。如下图所示:
    在这里插入图片描述

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

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

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

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

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

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

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

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

    根据提供的K参数,DC按下面的公式计算不同的制程,电压和温度的单元延迟:
    D e l a y = ( n o m i n a l   d e l a y ) × ( 1 + ( D P ∗ K f a c t o r P ) ) × ( 1 + ( D V ∗ K f a c t o r V ) ) × ( 1 + ( D T ∗ K f a c t o r T ) ) Delay= (nominal\ delay)×(1+(DP*K_{factor}P))×(1+(DV*K_{factor}V))×(1+(DT*K_{factor}T)) Delay=(nominal delay)×(1+(DPKfactorP))×(1+(DVKfactorV))×(1+(DTKfactorT))

    其中:
      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参数,表示制程、电压、温度对延时的影响。
    在这里插入图片描述

    2.2.6 I/Opad属性(pad attributes):

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

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

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

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

    2.3 标准单元(cell)的描述

    在这里插入图片描述

    2.3.1 标准单元内容概述:

    综合库中的每个单元都包括一系列的属性,以描述功能、时序与其他的信息。 在单元的引脚描述中,包含了如下内容:输入引脚的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类型进行说明,如下所示:
    在这里插入图片描述
    单元的延时
    在一个单元的综合库中,最核心的是对时序和功耗的描述。一个单元的延时跟以下因素有关:器件内部固有的延时、输入转换时间(也称为输入上升/下降时间)、负载(驱动的负载及连线)、温度、电压、制程变化。

    前三个因素是由电路本身的特性所决定的,后三个因素是由环境决定的。在实际电路中,输入转换时间、负载与连接单元的电路有关,所以我们只需要列出在不同的输入转换时间、不同的负载下单元的延时就可以了。这个延时包括器件的内部固有延时。此外,利用前面提到K缩放因子,将温度、电压、制程的影响也考虑进来。如下面的这个反相器单元,它的延时就可以通过输入转换时间和负载决定:
    在这里插入图片描述
    说到单元的延时,不得不说计算单元延时的模型。Synopsys支持的延时模型包括:CMOS通用延时模型、CMOS分段线性延时模型和CMOS非线性延时查找表模型(Nonlinear Delay Model)。前两种模型精度较差,已经被淘汰,主要用非线性延时模型。下面进行解释非线性延时模型。

    非线性延时模型也称为二维非线性延时模型。在该模型中,用二维列表的形式给出单元在特定的输入转换时间、输出负载下的延迟(包括单元的延时和单元的输出转换时间):
    在这里插入图片描述
    单元的输出转换时间又成为其驱动的下级单入的输ru转换时间。库中每个单元有两个NLDM表。上面的图中,当输出负载和输入转换时间为0.05 pF和0.5 ns时,从表中可查出单元的延迟为0.23 ns,输出转换时间为0.30 ns 。

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

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

    2.3.2 反相器的综合模型:

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

    具体的反相器的综合模型如下所示:
    在这里插入图片描述
    在这里插入图片描述
    当然,上面看到的只是部分内容,有些内容折叠起来了比如输入引脚的等效负载、输出引脚的短路功耗等被折叠起来了,下面进行讲解:
    在这里插入图片描述
    引脚A表示反相器的输入(上图),展开后可以看到输入的引脚的等效负载,也就是等效电容的大小。

    输出管脚Y有:
    在这里插入图片描述
    里面主要包含了引脚的功能(function)、短路功耗(internal_power)、时序信息(timing)、输出的最大负载(max_capacitance)等信息。

    短路功耗信息(internal_power):

    展开短路信息如下图所示:
    在这里插入图片描述
    短路功耗与A管脚相关联,也就是与A管脚有关系。

    rise_power给出了Y从低到高时的短路功耗,功耗跟输入信号的转换时间(index_1)及节点电容(index_2)有关;根据不同的信息进行查表,表的值就是(value),7X7表示index_1是7,index_2也是7,因此value是7X7=49,如下图所示:
    在这里插入图片描述
    也给出了从高到低的短路功耗(fall_power),功耗跟输入信号的转换时间及节点电容有关;具体内容类似从低到高时的短路功耗,不再详述。

    时序信息(timing):
    在这里插入图片描述
    主要包括相关引脚、时序敏感类型、单元延时、转换时间等。

    Cell_rise 给出了Y从低到高时单元的延时,延时跟输入转换时间和节点电容有关:
    在这里插入图片描述
    Rise_transition给出Y从低到高时输出的延时(transtion),跟输入转换时间和节点电容有关:
    在这里插入图片描述
    Cell_fall、fall_transition:则是对应Y从高到低时的单元延时和输出延时,也是跟输入转换时间和节点电容有关。

    单元的泄漏功耗(cell_leakage_power):

    有时候,也给出在不同条件时的泄漏功耗(也就是查表的方式):
    在这里插入图片描述
    反相器作为组合逻辑最简单、最经典的模型,其综合库的模型内容就如上所示了,下面介绍时序逻辑的。

    2.3.3 寄存器单元的综合模型:

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

    • 单元面积
    • D端短路功耗
    • D端的建立时间约束和保持时间约束
    • 时钟引脚上的短路功耗
    • 时钟引脚上的最小脉宽要求
    • 输出端的短路功耗
    • 输出端的延时
    • 输出端的最大负载约束
    • 单元的泄漏功耗

    其综合库内容如下所示:
    在这里插入图片描述
    上面综合库的具体内容下面进行具体叙述:

    D端口(引脚):

    输入端口,主要包含输入的等效负载、短路功耗、时序信息。
    在这里插入图片描述
    D端消耗的短路功耗(internal_power):
    在这里插入图片描述
    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端有关。

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

    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管脚类似,不进行陈述了。

    cell_leakage_power:给出了默认单元漏电流大小。而下面的不同漏电流,则是根据端口信号处在不同状态时的漏电流大小:
    在这里插入图片描述
    注:对于有复位信号的寄存器,还有可能有下面的信息:

    • 复位引脚上的短路功耗;
    • 复位引脚上的最小脉宽要求;
    • 复位引脚上的recovery/removal时序约束;
    • 输出端的输出转换时间(相对于时钟);
    • 输出端的输出转换时间(相对于异步复位信号);
    • 输出端的延时(相对于异步复位信号);
    展开全文
  • 逻辑综合——工艺

    千次阅读 2020-12-22 22:43:44
    工艺相关信息

    一、库文件的设置

    运行DC时需要用到的库文件有:目标库(target library)、链接库(link library)、符号库(symbol library)、算术运算库(synthetic library)。

    1、目标库

    目标库是综合后电路网表最终要映射到的库。目标库一般由晶圆厂(Foundary)提供,常为.db的格式。

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

    2、链接库

    链接库设置模块或单元电路的引用。对于所有DC用到的库,我们需要在链接库中指定,其中包括要用到的IP。

    目标库更多的指标准单元,链接库更多的指IP,如RAM,IO等

    在链接库的设置中必须添加“ * ”,表示DC在引用实例化电路或者单元电路时首先搜索已经调进DC memory的模块和单元电路;否则,可能会出现无法匹配的警告信息。同时,在设置链接库的时候要注意设置search_path,命令为:lappend search_path {"path name"}。则整个流程为:路径面前加*号表示开辟一块单独的内存空间给DC自己使用,然后先搜寻内存中已有的库,然后再搜寻变量link_library指定的其他库。DC搜寻的库为search_path指定的目录(比如说之前读入设计时读入了库a,库a存到内存里;这时DC在进行综合的时候,发现缺少某个东西,于是就先从库a里面找,找不到时就会从列表里面的变量路径中找)。

    如果需要将已有的设计从工艺A转到工艺B时,可以将当前的单元综合库A设为link_library,而将单元综合库B设为target_library,重新映射一下就可以了。

    3、符号库

    符号库是定义了单元电路显示的schematic(原理图)的库。使用图形界面查看、分析电路原理图时需要设置。假如没有设置,DC会用默认的符号库取代。

    4、算数运算库

    这个库一般是synopsys的库:DesignWare library 和标准单元库,这里指定的就是库的名字了。

    DesignWare library 这个库是synopsys的IP库:当使用到synopsys公司的IP核的时候比如使用了该公司的乘法器IP,那么就要定义这个综合库;此外,当需要用到这个库的一些比较高端的IP核的时候,是需要相关的证书(license)的。例如当你在代码中用来“*”或者“+”这操作,那么DC会通过这个你指定的综合库进行映射或者优化这些操作符。

    二、工艺库

    一般来说,运行DC时需要用到的库文件有:目标库(target library)、链接库(link library)、符号库(symbol library)、算术运算库(synthetic library)。目标库和链接库合称为工艺库。绝大多数的数字设计流程都是基于标准单元的半定制设计流程。标准单元库包含了反相器、缓冲、与非、或非、与或非、锁存器、触发器等等逻辑单元综合模型的物理信息,标准单元是完成通用功能的逻辑,具有同等的高度(宽度可以不同),这样方便了数字后端的自动布局布线。

    1、概述

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

    • 一系列单元(包括单元的引脚)。
    • 每个单元的面积(在深亚微米中,一般用平方微米表示,在亚微米工艺下,一般用来称呼,至于具体的单位,可以咨询半导体制造商)。
    • 每个输出引脚的逻辑功能。
    • 每个输入到输出的传递延时,输出到输出的传递延时;inout到输出的传递延时。

    2、内容与结构

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

    • 单元(cell)(的信息):(主要有)功能、时间(包括时序器件的约束,如建立和保持)、面积(面积的单位不在里面定义,可按照规律理解,一般询问半导体厂商)、功耗、测试等。
    • 连线负载模型(wire load models):电阻、电容、面积。
    • 工作环境/条件(Operating conditions):制程(process)(电压和温度的比例因数k,表示不同的环境之间,各参数缩放的比例)
    • 设计规则约束(Design ):最大最小电容、最大最小转换时间、最大最小扇出。

    工艺库的结构如下所示:

                    

    文本描述如下所示:

              

            

                 

                                  

             

    (1)首先是库的属性的描述:

          通用属性描述(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)作为时间和电容负载的单位。

    (2)接下来是环境描述

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

        操作条件(operation conditions):

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

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

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

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

         

      在这个简单的电路中,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的延时计算模型下图所示:

         

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

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

         

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

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

           

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

        临界条件定义(threshold definitions):

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

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

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

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

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

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

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

     I/Opad属性(pad attributes):

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

        线负载模型(wire-loads):

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

           

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

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

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

        标准单元内容概述

      综合库中的每个单元都包括一系列的属性,以描述功能、时序与其他的信息。 在单元的引脚描述中,包含了如下内容:输入引脚的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类型进行说明,如下所示:

         

        注:许多设计者都会抱怨工艺库中对单元的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文件中。

    三、标准单元的内容

    1、单元时序信息

    在一个单元的综合库中,最核心的是对时序和功耗的描述。单元时序模型旨在为设计环境中的单元的各种实例提供精确的时序,模拟单元操作的实际情况。

    一个单元的延时跟以下因素有关:器件内部固有的延时、输入转换时间(也称为输入上升/下降时间)、负载(驱动的负载及连线)、温度、电压、制程变化。前三个因素是由电路本身的特性所决定的,后三个因素是由环境决定的。在实际电路中,输入转换时间、负载与连接单元的电路有关,所以我们只需要列出在不同的输入转换时间、不同的负载下单元的延时就可以了(这个延时包括器件的内部固有延时)。在确定了之后,我们就可以根据时序模型来确定单元延时了。通常来说,标准单元的时序模型有线性模型非线性模型两类,Synopsys支持的延时模型包括:CMOS通用延时模型、CMOS分段线性延时模型和CMOS非线性延时查找表模型(Nonlinear Delay Model)。前两种模型精度较差,已经被淘汰,主要用非线性延时模型。

     非线性延时模型也称为二维非线性延时模型。在该模型中,用二维列表的形式给出单元在特定的输入转换时间、输出负载下的延迟(包括单元的延时和单元的输出转换时间)。单元的输出转换时间又成为其驱动的下级单元的输入转换时间。库中每个单元有两个NLDM表。对于在范围之内的点,可以用插值的方法得到;对于在范围之外的点,可以用外推的方法得到。线性插值如下图所示:

           

    计算延时的公式为:

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

    2、单元功耗信息

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

    展开全文
  • Cadence 问题记录

    2021-07-25 21:21:37
    我发现我在服务器找的这个tsmc18的库是oa格式的就是说是cadence61之后支持的格式,而老师给的设计库 SAR_ADC_8BIT_V1 以及数字标准单元库tsmc18scx都是cadence51的格式,你说cadence也是离谱,更新就更新嘛,为什么...
  • 单元程序

    2021-07-12 01:20:29
    由优秀的设计者们经过长时间的努力设计出的基本门(如NOR门)和标准网络的...中文名单元程序外文名celllibrary所属问题集成电路设计相关概念全定制方法,半定制设计方法单元程序基本介绍编辑语音在集成电路实现...
  • TestCase是单元测试中最常用的类,例如,接下来测试下面这个小函数 add = lambda a,b : a+b div = lambda a,b : a/b 其测试方法为 import unittest class TestTest(unittest.TestCase): def test_div(self): self...
  • 一、标准库与第三方 1、标准库与第三方的区别,标准库是python自带的,可以直接import导入, 第三方需要pip安装/pycharm中下载 之后使用 2、 以下是,python自带标准库里面的一些,可以直接导入使用 1、标准...
  • Go语言标准库示例.pdf

    2021-05-20 16:17:24
    -3- 简介 简介 《Go语言标准库》TheGolangStandard LibrarybyExample Golang标准库。对于程序员而言 ,标准库与语言本身同样重要 ,它好比一个百宝箱 ,能为各种常见的任务提供完 美的解决方案。以示例驱动的方式...
  • Java程序设计(山东联盟-鲁东大学):下面哪些是正确的Python标准库对象导入语句?【单选题】A:保证两个或多个进程同时启动和结束B:保证两个或多个线程同时启动和结束C:保证任何时候只有一个线程访问一个方法或对象D:...
  • 在 C++ 中,我们有两种类型的: 静态 动态 静态 静态是成为引用它的可执行文件的一部分的。因此,当我们开发应用程序并引用其中的静态时,静态的内容在应用程序中被替换。 Windows 上的静态通常...
  • C++STL标准库学习

    2021-04-20 21:55:03
    1. STL标准库 STL提供了一组表示容器,迭代器,函数对象和算法的模板。STL不是面线对象的变成,而是一种不同的编程模式——泛型编程(generic programming)。面向对象编程关注的是编程的数据方面,而泛型编程关注的...
  • 而企业想要利用有限的空间发挥最大的作用就只有先了解仓库货物堆放标准。图片来源:网络一、仓库货物堆放方法1、散堆法散堆法是一种将无包装的散货直接推成货港的货物存放方式。它特别适合于露天存放的没有包装的...
  • python常用标准库

    2021-03-11 14:31:18
    python常用标准库python常用标准库第一类:Python增强1. 文本处理服务2. 数据类型4. 数字和数学模块5.函数式编程模块6.文件和目录访问7.数据持久化8.数据压缩和存档9.文件格式10.加密服务11.二进制数据服务第二类:...
  • 其中既有Python内置函数和标准库,又有第三方和工具。 这些可用于文件读写、网络抓取和解析、数据连接、数清洗转换、数据计算和统计分析、图像和视频处理、音频处理、数据挖掘/机器学习/深度学习、数据可视化、...
  • DC综合库、设计对象和DesignWare库标准单元库概述内容与结构DC的设计对象DesignWare库参考资料 标准单元库 绝大多数的数字设计流程都是基于标准单元的半定制设计流程。 标准单元库包含了反相器、缓冲器、NAND门、NOR...
  • 1.Verilog和Ncverilog命令使用文件或目录ex). ncverilog -f run.f -v lib/lib.v -y lib2 +libext+.v//一般编译文件在run.f中, 文件在lib.v中,lib2目录中的.v文件系统自动搜索使用文件或目录,只编译需要的...
  • 来源丨码里奥编程大家好,我是阳哥今天给大家介绍一下200多个Python标准库,让大家对Python标准库有一个大致的认识。关于Python标准库01众所周知,Python是一个依...
  • 优质单元测试的十大标准,你有遵循吗?
  • c++的设计目标之一是,...对c++11而言,当编译一个c++转译单元时,以下定义有效: #define __cplusplus 201103L 在c++98以及c++03中则是: #define __cplusplus 201103L 有时候编译器厂商提供的值与上述不同 ...
  • 翻译记忆是存储了翻译单元 Translation Unit 的数据库,可以进行添加,删除,修改和查询,一般为数据库文件格式,翻译记忆需要兼容 TMX文件标准,最新的 TMX 1.4b 文件标准的简要说明在此处:文档模型 TMX 1.4b ...
  • last modified: 2010-05-28C语言标准库 - signal.h9 信号处理头文件中提供了一些用于处理程序运行期间所引发的异常条件的功能,如处理来源于外部的中断信号或程序执行期间出现的错误等事件。9.1 signal#include void...
  • 《Python程序设计基础》课程导学单元测验1、下面属于Python应用领域的有?A、数据分析B、云计算C、开发操作系统D、网络安全E、树莓派F、数据可视化2、在Windows平台上编写的Python程序无法在Unix平台运行。单元作业1...
  • 《Python程序设计基础》课程导学单元测验1、下面属于Python应用领域的有?A、数据分析B、云计算C、开发操作系统D、网络安全E、树莓派F、数据可视化2、在Windows平台上编写的Python程序无法在Unix平台运行。单元作业1...
  • 考虑到这些数据量比较少,使用专门的存储单元既不经济,也没有必要,而STM32F103内部的Flash容量较大,而且ST的库函数中还提供了基本的Flash操作函数,实现起来也比较方便。 以大容量产品STM32F103VE为例,其Flash...
  • 导读:大家好,我是涛哥。Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用、函数和外部工具。其中既有Python内置函数和标准库,又有第三方和工具。这些可用于文件...
  • DC综合后文件

    千次阅读 2021-02-05 14:34:56
    标准延时约束文件 里面都是一些约束,用来给后端的布局布线提供参考。 Scan_def.def文件: DFT、形式验证可能用到 另外svf文件也可用于formality,记录了DC综合的一些映射信息,门控的插入等,加快比对。 里面包含...
  • 《Python程序设计基础》课程导学单元测验1、下面属于Python应用领域的有?A、数据分析B、云计算C、开发操作系统D、网络安全E、树莓派F、数据可视化2、在Windows平台上编写的Python程序无法在Unix平台运行。单元作业1...
  • C++标准模板记录

    2021-05-16 19:25:15
    C++标准模板记录 1.#include vector的数据安排以及操作方式,与array非常相似,两者的唯一差别在于空间的运用的灵活性… 2.#include 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是...
  • 目录前言关于创建项目手动绑定自动绑定结构体union联合体enum枚举回调函数空指针析构ownershippanic 前言 没有前言,干就完事了。 关于 本人环境是win10,vs2013。 不管什么环境,用下面的文件制作出对应的动态...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 170,285
精华内容 68,114
关键字:

标准单元库