您好,欢迎访问三七文档
DC的作用DC的使用流程DC时序报告DC在设计流程中的位置什么是综合实现在满足设计电路的功能、速度及面积等限制条件下,将行为级描述转化为指定的技术库中单元电路的连接。逻辑综合逻辑设计库约束门级网表为什么要进行DCA.RTL代码是理想的情况B.实际电路1门的延时2导线的延时3信号的转换时间4时钟信号到达各个触发器的时间不相等DC综合的三个阶段:转译(translation):Translation是指用HDL语言描述的电路转化为用GTECH库元件组成的逻辑电路的过程。GTECH是Synopsys的通用工艺库,它仅表示了逻辑函数的功能,并没有映射到具体的厂家工艺库,也就是说独立于厂家工艺的。优化(optimization)和映射(mapping):Optimization是根据设计者对电路设定延时和面积等约束条件对电路进行优化设计的过程。它通过各种方法尽量满足设计者对电路的要求。Mapping把用GTECH库元件构成的电路映射到某一固定厂家的工艺库上,此时的电路包含了厂家的工艺参数LibraryCells;SME授课教案2020年3月13日星期五综合的目标得到一个功能和时序都满足的网表:面积最小化功耗最小化性能最大化如何保证时序满足?将电路划分为各种时序路径计算电路中关键路径的setuptime与holdtime是否满足DC时序通路(timingpath)的划分原理:起点1所有的基本输入端(PrimaryInput)2所有时序单元的时钟输入端终点1所有的基本输出端(PrimaryOutput)2所有时序单元的数据输入端DC四种时序路径的划分四种路径:基本输入到寄存器触发器到触发器触发器到输出基本输入到基本输出DC时序路径:时间通路的划分几个概念数据传输需要的时间(DataArrivalTime):信号到达时间是指信号到达电路中某一点的真实时间,一般等于信号到达时序路径起点的时间加上信号在该时序路径上传播所用的时间。要求到达时间(DataRequiredTime):指期望信号到达电路中某一点的时间。时序裕度(slack):指电路中某点处要求到达时间与实际信号到达时间的差值建立时间和保持时间建立时间(setuptime):数据在时钟信号源到达之前必须要稳定的时间,如果建立时间不满足,数据不能正确打进时序逻辑单元保持时间(holdtime):数据在时钟信号源到达之后必须要稳定的时间,如果保持时间不够,数据被时序逻辑单元正确锁存基本单元的延时(Tcq):门延时是指信号通过实际的标准单元所需要的时间.在时序逻辑单元中,反映为从时钟沿开始,到数据输出需要的时间.线延时:线延时是指由于导线的阻容而导致的信号传播延时时序分析示意图dckqDFFdckqTsetTdThold建立时间约束保持时间约束端口延时•定义了时钟也就定义了两个触发器之间的时间约束,因为在DC中默认两个触发器之间的时间路径是一个周期,通过设置时钟周期可以约束设计内部触发器之间的路径X,但是还有路径N和T没有约束。输入延时那么,从输入端口经过路径N到触发器DFF2的输入端所用的时间=时钟周期-输入延时输出延时那么,数据从触发器DFF3的D端到输出端口所用的时间=时钟周期-输出延时这样,整个设计的路径就全部被约束了。DC的使用流程库文件简单说明目标工艺库(Target_library):是指将RTL级的HDL描述到门级时所需的标准单元综合库,它是由芯片制造商(Foundry)提供的,包含了物理信息的单元模型。链接库(link_library):链接库可以是同target_library一样的单元库,或者是已综合到门级的底层模块设计,其作用如下:在由下而上的综合过程中,上一层的设计调用底层已综合模块时,将从link_library中寻找并链接起来。符号库(symbol_libray):显示电路时,用于标识器件,单元的符号库。工艺库的格式DC用到的工艺库是.db或者是.lib格式的.lib格式的文件是可读得,通过此文件可以了解库的详细信息,比如说工作电压,操作温度,工艺偏差等等。.db格式的库是二进制的,不可读。.db格式的库由.lib格式的库通过命令read_lib生成。工艺库的分类逻辑库物理库工艺库的分类逻辑库只包含与综合过程有关的信息且通过DC用于设计的综合和优化。它一般包括:引脚到引脚的时序,面积,引脚类型,功耗等等!逻辑库它包含单元的物理特征:物理尺寸,层信息,单元方位相关的数据DC中的工艺库及其配置GTECH库GTECH库是Synopsys的通用工艺库。它由DC自带,是独立于厂家工艺的。该库中包含的元件仅代表一定的逻辑功能而不带有任何工艺参数。DC在转译时会先将HDL描述转化为GTECH库单元组成的电路。DC的启动:图形界面:在unix下面输入dv–db_mode就进入dc的图形界面。命令行界面:Shell模式:dc_shellTcl模式:dc_shell-tSet_operating_conditions设置工作条件命令工作条件包括三方面的内容——温度、电压以及工艺。在Foundry提供的工艺库里,它的各个单元的延时是在一个标准(nominal)条件下得到的,比如说温度25.0度、工艺参数1.0和工作电压1.8V。工作条件一般分为三种:最好情况(bestcase)、典型情况(typicalcase)以及最差情况(worstcase)。Set_wire_load_model设置连线负载模型在DC综合的过程中,连线延时是通过设置连线负载模型(wireloadmodel)确定的。连线负载模型基于连线的扇出,估计它的电阻电容等寄生参数,它是也是由Foundry提供的。我们可以让DC自动根据综合出来的模块的大小选择负载模型,这个选项在默认下是打开的。Set_wire_load_model设置连线负载模型Set_wire_load_model设置连线负载模型如果连线连接的是不同的模块就要用到连线负载模式(set_wire_load_mode)这个命令了。这有三种wire-loadmode:top,enclosed,segmented,用于模拟各设计层次的netwire_load的关系。Set_driving_cell设置输入驱动为了更加准确的估计模块输入的时序,我们同样需要知道输入端口所接单元的驱动能力。在默认的情况下,DC认为驱动输入的单元的驱动能力为无穷大,也就是说,transitiontime为0。按照该单元的输出电阻来计算transitiontime,从而计算输入端口到门单元电路的延迟。Set_load设置输出负载估计模块输出的时序——transitiontimeDC默认输出负载为0.单位由Foundry厂提供,一般是pf.Set_max_transition设置最大传输时间Transitiontime是指改变某线所驱动的pin所需要的时间,该时间的计算方法是基于工艺库的。输出的传输时间是输入传输时间以及输出负载的函数关系。DC在优化的过程中就是确保设计的所有net的对应的传输时间小于所设定的最大传输时间。Set_max_capacitance设置线负载电容Transitiontime不能提供对net(线)的电容的直接控制,我们可以使用set_max_capacitance命令实现独立于传输时间约束的最大容值的约束。对于连接到输出pin上的net,其对应的容值是net本身的电容加上所连接的pin的容值,DC将这个计算结果与所设定的Max_capacitance比较,决定是否违反设计规则约束。Set_max_fanout设置最大扇出负载设置最大扇出负载约束就是指设置了某线所能驱动的负载数量上限。如果某线的扇出负载过重,DC可以通过改变单元的驱动强度来修正该约束违例的情况。Set_clock_uncertainty设置时钟不确定性理想、don’ttouch实际Set_clock_uncertainty设置时钟不确定性实际的时钟达到各个触发器的时间不是一样的,它们之间有一个偏差,称为时钟偏差(ClockSkew)。为了反映这个偏差,我们在综合的时候可以用一个命令来模拟它,即set_clock_uncertainty。Set_clock_uncertainty设置时钟不确定性Set_false_path设置虚假路径FalsePath(伪路径)是指电路中的一些不需要考虑时序约束的路径,它一般出现在异步逻辑之中。在异步多时钟网络中,时钟是不同的晶振产生的时钟。但是在默认情况下,DC并不知道,它会认为它们是同步的时钟网络而尽量去找两个时钟之间的最小捕捉时间,不但浪费了时间而且会产生出不符合要求的电路。Set_multicycle_path设置多周期路径在FF1和FF2之前,存在一个BIG_LOGIC,假设我们允许它的延时在两个周期之内。Set_multicycle_path设置多周期路径第一个语句说明建立时间是在FF1触发后的第二个周期后检查,第二个语句说明保持时间在FF1触发后的第一个周期检查。可得此时的波形图如下:Set_max_delay设置最大延迟对于异步逻辑来说,异步的置位和清零信号,并通过锁存器以及寄存器实现的,因为reset的信号穿过一些BLOCK,因而需要在顶层约束这个信号,约束方法如下面的例子.例如我们现在要设置RESET的最大时延为5Set_max_delay设置最大延迟首先选定reset端口,Attribute--OptimizationConstraints--TimingConstraints…点击OK,完成reset的延迟设置.相对应的脚本命令是:dc_shellset_max_delay5-fromRESETSet_max_delay设置最大延迟例二,规定一个从EN到RDN的最小延迟为10的路径,设置步骤如下:首先选定EN&RDN两个端口(用Ctrl键),Attribute--OptimizationConstraints--TimingConstraints…设置相应的延迟时间点击OK,完成设置.对应的脚本命令为:dc_shellset_max_delay10-fromEN-toRDN如何看时序报告:通过产生的时序报告读出以下信息:1)是setuptimereport还是holdtimereport?2)时钟频率多少?确定是setuptimereport还是holdtimereport?看opratingconditions:worst(建立时间),best(保持时间)。为什么?看pathtype:max(建立时间),min(保持时间)。为什么?时钟频率多少:通过上升沿和下降沿的时间来确定建立时间和保持时间的slacks:例:建立时间:----------------------------------------------------datarequiredtime31.74dataarrivedtime-19.80------------------------------------------------------slack11.94arrivedtime应比requiredtime提前,这样才能保证建立时间不违例。
本文标题:DC使用教程
链接地址:https://www.777doc.com/doc-4327034 .html