专用集成电路设计方法讲义逻辑综合PPT课件_第1页
专用集成电路设计方法讲义逻辑综合PPT课件_第2页
专用集成电路设计方法讲义逻辑综合PPT课件_第3页
专用集成电路设计方法讲义逻辑综合PPT课件_第4页
专用集成电路设计方法讲义逻辑综合PPT课件_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1内容 逻辑综合概述 综合环境的设置 DC综合流程简介 时序分析基础 逻辑综合中的时序约束设计 DC的使用方式第1页/共91页2什么是逻辑综合? 定义:根据一个系统功能和性能的要求,在一个包含众多结构、功能、性能均为已知的逻辑元件的单元库的支持下,寻找一个逻辑网络结构的最佳实现方案的设计方法。第2页/共91页3逻辑综合的基本步骤 (1) 三个步骤: 翻译 (Translation) 优化 (Optimization) 映射 (Mapping)第3页/共91页4逻辑综合的基本步骤 (2) 翻译 (Translation) 把电路的HDL描述转化为与工艺无关的功能块组成的逻辑电路的过程 读入电路的

2、RTL级描述,将语言翻译成每条语句所对应的功能块以及功能块之间的拓扑结构 这一过程的结果是在综合器内部生成电路的布尔函数的表达式,不做任何的逻辑重组和优化第4页/共91页5逻辑综合的基本步骤 (3) 优化 (Optimization) 基于所施加的一定时序和面积的约束条件,综合器按照一定的算法对转译结果作逻辑重组和优化。 映射 (Mapping) 根据所施加的一定的时序和面积的约束条件,综合器从目标工艺库中搜索符合条件的单元来构成实际电路 这时得到的电路包含了具体的制造工艺参数。第5页/共91页6综合工具 FPGA综合 Synplicity: Synplify, Amplify, Certif

3、y Mentor Graphics: LeonardoSpectrum Synopsys: FPGA Express, FPGA Compiler Xilinx: XST ASIC综合 Synopsys: Design Compiler第6页/共91页7Design Compiler的综合过程 RTL design entry Environment constraints Design and clock constraints Compile design into mapped gates Optimize design Analyze the synthesis results and

4、 debug potential problems Report constraints Save design netlist第7页/共91页8综合技术带来的好处 设计师可以采用更高层次的设计方法 由于逻辑综合工具的使用,高层次的设计可以很快地转换为门级电路设计 逻辑综合技术使与工艺无关的设计成为可能 综合工具可以按照约束设置对设计进行自动优化,要得到有不同性能指标的结果,有时候仅仅需要修改综合时的约束设置第8页/共91页9对工程师的要求 尽管逻辑综合为数字设计带来了显而易见的好处,使设计者再也不用去手工“搭建”自己的产品,但并不等于设计者可以对电路的具体实现毫不关心。 为了综合出满足规格定

5、义的产品,工程师在进行代码编写时必须考虑代码的可综合性,良好的代码风格可以得到性能更好的设计。 逻辑综合本身就是一个复杂的过程,环境和约束的设定、测试和时序问题的分析和解决都需要设计工程师具有专门的知识和技能。第9页/共91页10内容 逻辑综合概述 综合环境的设置 DC综合流程简介 时序分析基础 逻辑综合中的时序约束设计 DC的使用方式第10页/共91页11启动文件 Synopsys DC需要一个启动文件来定义工艺库的路径和其他用于逻辑综合的参数 文件名必须为“.synopsys_dc.setup”,通过向相关环境变量赋值,定义技术库的位置及参数 DC在启动时,按下列顺序读入启动文件 Syno

6、psys installation directory (用于存放Synopsys技术独立库及保存一些公共变量,不包含设计相关的数据) Users home director (保存一些对单个用户有效的变量) Project working directory (保存与当前设计直接相关的变量) 按以上顺序依次读取setup文件,最后一个读取的setup文件将覆盖前面读取的setup文件第11页/共91页12工艺库 工艺库:生产线所提供的全部标准器件模型 由于不同生产线的加工环境不同,各种标准器件(如与非门、或非门等)的工业参数会有差异,因此,每个生产线都必须向市场提供自己的库。换句话说,设计单

7、位准备在哪条生产线上投片就必须使用该生产线的库进行综合。不同工艺线的工艺技术是不同的,如0.25微米技术和0.13微米技术,因此即使同一个工厂的不同工艺线使用的工艺库也是完全不同的。 启动文件必须定义与工艺库相关的变量 search_path: 搜索路径,指明库文件的位置 target_library: 目标库 link_ library: 链接库 symbol_library: 符号库(显示电路图,用于标识器件、单元)第12页/共91页13目标库 (Target library) 目标库:将RTL级的HDL映射到门级时所需要的标准单元综合库,它是由芯片制造商 (Foundry)提供的,包含了

8、物理信息的单元模型。 通常芯片制造商提供的基本电路有:与非、或非、非门等基本的逻辑单元单元;还有选择器、与或非、或非与等较复杂的组合逻 辑,以及锁存器和触发器等时序单元。 Target library的文件名应包含在link library的文件清单中,用于DC读取门级网表。 通常target_library定义为标准单元的db格式的库文件。第13页/共91页14连接库 (Link library) 连接库:可以是同target libaray一样的单元库,也可以是已经综合到门级的底层模块的设计。 作用如下:自底向上 (bottom-up)的综合过程中,上一层的设计调用底层已经综合的模块时,将

9、从link_library中寻找并连接起来。 link_library定义为:标准单元的db格式的库文件,pad的db格式的库文件,再加上RAM、ROM等宏模块的库文件等。 综合工具在综合时不再综合生成pad、RAM和ROM,而是直接实例化到门级网表中。 target_library是link_library的子集。第14页/共91页15target_library vs. link_library 目标库 (target_library):是DC在mapping时将设计映射到特定工艺所使用的库,就是使用目标库中的元件综合成设计的门级网表。 连接库 (link_library):是提供门级网表

10、实例化的基本单元,也就是门级网表实例化的元件或单元都来自该库。连接库定义为标准单元的db格式的库文件加上pad db格式的库文件,加上ROM,RAM等宏单元库文件”。 简单地讲,所有用到的库都要放到link_library,因为DC自动到那里去找;只有作综合用的库放在target_library中,象ROM, PAD等不用综合的就不要放进去了。第15页/共91页16设计工具库 (DesignWare Library) 设计工具库:Synopsys公司提供的知识产权(IP, Intellectual Property)库。 举例 算术逻辑单元 (ALU) AMBA总线构造 (Bus Fabric

11、)、外围设备 (Peripherals) 内存包(Memory portfolio) 通用总线和标准I/O接口(USB, PCI, PCI Express) 微控制器 (例如8051和6811) 微处理器和DSP核心第16页/共91页17GTECH库 当DC将源代码读入时,设计转化为一种中间格式,由GTECH库中的组件和设计工具库构成。 GTECH工艺库和设计工具库一样,是工艺无关的,帮助我们开发与工艺无关的组件。 GTECH工艺库包含在文件gtech.db中第17页/共91页18setup文件举例 .synopsys_dc.setupset company ASIC Design Co.se

12、t designer Designerset technology TSMC 0.25umset target_library tcb773stc.dbset link_library * tcb773stc.db set symbol_library tcb773s.sdb set synthetic_library standard.sldb dw_foundation.sldbset link_library $link_library $synthetic_library# Define DC search pathset search_path ././TSMC/lib ./scri

13、pts ./unmapped ./mapped $search_pathalias h historyalias rc report_constraint -all_violatorsalias rt report_timing# specify directory for intermediate files from analyzedefine_design_lib DEFAULT -path ./analyzed其它环境变量的设置参看DC的操作手册。第18页/共91页19内容 逻辑综合概述 综合环境的设置 DC综合流程简介 时序分析基础 逻辑综合中的时序约束设计 DC的使用方式第19页/

14、共91页20设计输入 DC提供了下面两种方式读入设计: analyze & elaborate命令 analyze命令可以分析、翻译RTL代码,并将中间结果存入指定的库中 elaborate命令用于为设计建立一个结构级的,与工艺无关的描述,为下一步的工艺映射做好准备 read命令 read一步完成analyze & elaborate的工作类别 analyze & elaborate read输入格式 Verilog和VHDL RTL级代码所有格式:Verilog、VHDL、EDIF和db等等主要用途逻辑综合RTL级Verilog和VHDL代码读入网表文件、预编译好的设计等等设计库用-libr

15、ary选项定义设计库名 (而不是直接从dc_shell中执行),存储“.syn”文件使用缺省的设置,不能保存中间结果类属 (VHDL语言中)在elaborate设计的时候,可以设置generic语句的参数不能用于传递参数结构 (VHDL语言中)在elaborate设计的时候,可以定义结构在elaborate设计的时候,不能够定义结构read命令和analyze & elaborate命令的不同之处第20页/共91页21连接 (Link) 功能:将设计中调用的子模块与连接库中定义的模块建立对应关系 命令:link 链接可以由link命令显式完成,也可在后面步骤的compile命令隐式完成 建议每

16、次设计输入以后用link命令执行一次链接第21页/共91页22设定约束条件 (Constraints) 约束条件分两类: 环境约束条件 设计约束条件 综合环境包括工艺、电压和温度范围,必需的驱动强度,驱动类型等,见右图第22页/共91页23设置工作条件 (1) 命令:set_operating_conditions 综合库包括最差、典型和最好三种条件。 在综合阶段使用最差条件,以最大建立时间 (setup time)来优化设计。使用最好条件来清除保持时间 (hold time)的违规。 一般的工艺库包括: max (slow)、typical、min (fast)库。第23页/共91页24设置

17、工作条件 (2) 工艺 (Process)偏差 在流片阶段,wafer在流水线上要经过几十道工序,这些工序在控制上会有一些偏差,这些偏差都会导致器件的性能的变化。一般在逻辑电路上表现为驱动能力,或者信号延时的变化。第24页/共91页25设置工作条件 (3) 温度 (Temperature) 当温度变化时,会导致沟道电流强度的变化,从而影响逻辑电路的驱动能力和信号延时。 电压 (Voltage) 电压比较高时,逻辑电路单元的驱动能力增 强,信号延时变小从而可以运行在比较高的工作频率下。 命令举例: dc_shell-t set_operating_conditions WORST第25页/共91

18、页26设定线负载模型 (Wire Load Model) 命令:set_wire_load_model (连)线负载模型估计了线长和扇出对于电阻、电容和线的面积的影响程度。 半导体厂家根据特定生产线的统计信息开发线负载模型。线负载模型包括面积、电容和电阻每单位长度的系数和一个扇出到长度的表格,用来估算线长 (扇出的数目决定了名义上的长度)。 如果没有反标的线延迟,DC用线负载模型来预测线长和延迟。 DC根据下列因素来决定设计应用哪种线形负载模型 (按先后顺序排列):用户自定义、根据设计面积自动选择、工艺库里的默认值。 例子:dc_shell-t set_wire_load_model name

19、 MEDIUM第26页/共91页27设定线负载模式 (Wire Load Mode) 命令:set_wire_load_mode DC在决定穿越层次界限的连线所采用的线负载模型时支持三种模式: 包围 (Enclosed) 分段 (Segmented) 顶部 (Top)命令举例:dc_shell set_wire_load_mode enclosed第27页/共91页28设定输入端口的驱动 命令:set_driving_cell 为了准确计算输入电路的时序,DC需要知道到达输入端口的信号的转换时间 (transition time). 默认情况下,DC假设外部信号的转换时间为0;也可以通过set

20、_driving_cell在输入端口设置一个驱动单元。例子:dc_shell-t set_drive 1.5 I1 I2dc_shell-t set_driving_cell -cell IV I3第28页/共91页29设定输入和输出端口负载 利用端口负载,DC可以为输出端口选择适当大小的驱动能力,也可以用来计算输入端口的延时。 如果负载取得过小,下级电路无法正常工作,负载取得过大,会增大上一电路的难度。 在缺省情况下,DC假定输入输出端口的容性负载为0。可以用set_load命令设定输入、输出端口的容性负载值。第29页/共91页30设定输出端口的扇出负载 在DC中可以用set_fanout_

21、load命令来设定输出端口外部的扇出负载总和。 扇出负载不同于负载,它是一个无量纲的数值。 注:负载则是指电容值的大小。第30页/共91页31设计约束条件 两种设计约束 设计规则约束 设计优化约束 设计规则约束 反映了工艺方面的限制条件 由工艺库提供 设计优化约束 定义了时序上和面积上的优化目标第31页/共91页32设计规则约束 (1) 设计规则的约束设置要限定在工艺库中器件的 参数范围之内。 从优化的优先级来说,设计规则的约束比其它的相关约束要高。 在综合手段的实现中,设计规则的设置是很有讲究的。设计规则涉及到一些物理参数的设置,比如电容、0-1(1-0)跳变时间、扇出。 这些物理参数之间是

22、相互联系、相互影响的。 例如,如果电容过大,导致充放电时间过长,也就是0-1(1-0)跳变时间过长;如果扇出过大,又会导致电容过大。第32页/共91页33设计规则约束 (2) 有三种设计规则的约束: 最大电容 (max capacitance) 最大扇出 (max fanout) 最大跳变 (max transition) 三者相互联系,相互影响,用来控制设计中的缓冲 (buffering) 设定最大电容值命令:set_max_capacitance 最大电容(max capacitance)的约束提供了 一种直接的方式,来直接控制设计中线网(net)上的电容。 在编译过程中,综合器确保最大电

23、容没有违规(violation),DC把线负载的电容和与连线相关的pin的电容相加计算输出端口的电容,并且把它与最大电容的值比较,确保小于最大电容的值。第33页/共91页34设计规则约束 (3) 设定最大扇出命令:set_max_fanout 最大扇出 (max fanout)是对端口可以驱动的负载数目的估量。输出端口Z驱动2个反向器、一个输出端口、一个或非门。每个器件的输入端均具有fanout_load的属性,该属性由反向器所在的工艺库的工艺来决定它的参数范围。第34页/共91页35设计规则约束 (4) 设定最大跳变命令:set_max_transition 最大跳变 (max transi

24、tion)指的是0-1 (1-0)所花费的最长时间。 产生机制很简单:电容 (C)和电阻 (R)的乘积。但是如何对电容和电阻进行建模,快速获得合理的数值,却很困难。 最大跳变 (max transition)的定义:引脚的驱动强度乘以它驱动的连线上所有电容负载的总和的最大值第35页/共91页36设定面积约束 综合过程进行优化的依据之一 一旦确定了面积约束条件,在综合时,就将该条件通知综合工具,综合工具利用各种可能的规则和算法,尽可能地减少该设计的面积 通过命令set_max_area来给设计设置约束 在实际综合中,set_max_area 0,其意义在于在满足时序的前期下,使面积达到最小第36

25、页/共91页37施加时序约束 根据网表中每个连接元件的延时模型,对节点进行定时分析,给出最好和最坏的延时情况,然后检查电路所有的延时约束条件是否满足要求。如果符合时序约束要求,就可以进行工艺映射,进行器件实现了。 时序约束的设计是逻辑综合的重点和难点,将详细讲解。第37页/共91页38编译 (1) 命令:compile 编译策略: Top-down hierarchical compile Bottom-up compile Top-down hierarchical compile 将整个设计作为一个模块进行编译,仅需顶层约束。 对一些设计如:单时钟的设计,很适用。允许一次编译大于100K

26、gate的设计。 对于大型设计,可将子模块合并成一组,然后展开进行编译,可以改善时序。 优点: 仅需top level的约束 将整个设计作为整体优化,可获得较好的结果 缺点: 编译时间长 子模块的改变需要整个设计再综合 如果设计包含多个时钟或生成时钟逻辑,则不能很好执行第38页/共91页39编译 (2) Bottom-up compile 各个模块可独立编译,适合于划分合理、各个模块的时序约束能够被明确定义的设计 优点: 每一个子模块都由自己的脚本 (scripts)文件,可以灵活修改 子模块的改变不需要整个设计全部重新综合 不需要关心设计类型,如:多时钟或产生时钟 一般来说,可获得好的结果;

27、 缺点: 需要更新维护多个脚本(scripts)文件 顶层的关键路径也许在子模块并非关键路径第39页/共91页40时序分析 编译 (compile) 结束后,通过产生的DC时序报告来具体分析诊断时序的违规(violations) 时序报告包括四个部分:路径信息部分、路径延时部分、路径所要求时间部分、计算总结部分第40页/共91页41内容 逻辑综合概述 综合环境的设置 DC综合流程简介 时序分析基础 逻辑综合中的时序约束设计 DC的使用方式第41页/共91页42数字系统中的时序问题 时序问题 数字系统中的开关事件(逻辑运算、数据存储,等等)的发生在时间上具有先后顺序 必须使系统中所有的事件按预先

28、确定的次序正确执行 同步系统 产生时钟信号(clocking),用以协调把数据写入存储元件的时间 异步系统 完全取消本地时钟 采用自定时的异步电路,通过握手协议实现模块间正确的操作次序第42页/共91页43时钟的非理想情况 时钟偏差(Clock Skew) 定义:空间上两个不同点处、时序上等同的两个时钟沿在到达时间上的偏差 由时钟路径上的失配及时钟负载上的差别引起,取决于数据与时钟布线的方向,时钟偏差可正可负 具有确定性 (从一个周期至下一个周期是时不变的) 时钟偏差不会引起周期的变化,只会引起相移 (相位偏移) 时钟抖动 (Clock Jitter) 定义:空间上同一个点处时钟周期随时间的变

29、化 抖动是一个平均值为零的随机变量 绝对抖动 (tjitter):某点处一个时钟边沿相对于理想参照时钟边沿在最坏情况下偏差的绝对值jittji),(itjtjittert 2j点i点第43页/共91页44时钟不确定性的来源第44页/共91页45时序参数 时钟周期:T 建立(set-up)时间:tsu 保持(hold)时间:thold 时钟至输出(clk-q)时间:tclk-q (tclk-q,min , tclk-q,max) 数据至输出(d-q)时间:td-q (td-q,min , td-q,max)第45页/共91页46建立时间和保持时间 建立时间 (Setup Time):指时钟信号的

30、有效沿到来之前,数据输入信号必须到达的最小时间长度,保证该单元正确工作。 保持时间 (Hold Time):指时钟信号的有效沿或其它特定信号到来之后,数据输入信号必须保持稳定的最小时间长度,保证该单元正确工作。第46页/共91页47存在时钟偏差时的系统时序(1) 约束条件1:R2的输入数据必须在时钟的有效沿之前保持稳定sucombqclkclktttTmax,max,因此要求:sucombqclkclktttTmax,max,min,据此可得:第47页/共91页48存在时钟偏差时的系统时序(2) 约束条件2:避免R2的前后两次输入信号出现竞争因此要求:即:min,min,combqclkhol

31、dtttholdcombqclktttmin,min,第48页/共91页49正时钟偏差(Positive Skew) 发送边沿 (launch edge)在接收边沿 (capture edge)之前到达sucombqclkclktttTmax,max,min,)0(正的时钟偏差使得系统有可能提高时钟频率holdcombqclktttmin,min,但正的时钟偏差可能引起信号竞争第49页/共91页50负时钟偏差(Negative Skew) 接收边沿 (launch edge)在发送边沿 (capture edge)之前到达sucombqclkclktttTmax,max,min,负的时钟偏差会

32、降低系统的时钟性能holdcombqclktttmin,min,由于边沿2领先于边沿1,因此不会发生信号竞争)0(第50页/共91页51时钟分布网络 时钟分布已成为主要的设计问题 日益增大的芯片尺寸,不断提高的时钟频率 采用逐级增大的缓冲器来驱动全局时钟,供给所有模块 采用分布式树结构 二叉树或H树 使每个模块可以得到完好的时钟,能与模块的延时很好地匹配,或者使时钟的分配可以安排得使任何RC延时发生在Safe Slew的方向上(如与数据流的方向相反) H树 由于所有的子功能块与时钟源是等距离的,因此对于每一个子功能块,时钟信号被延迟一个相同的数量二叉树逐级增大的缓冲器H 树第51页/共91页5

33、2内容 逻辑综合概述 综合环境的设置 DC综合流程简介 时序分析基础 逻辑综合中的时序约束设计 DC的使用方式第52页/共91页53定义时钟(1) 定义时钟的周期与波形 (占空比) 命令格式:create_clock -name clock_name -add source_objects -period period_value -waveform edge_list -period选项指定时钟周期,单位ns -waveform选项指定时钟边沿的开始位置,单位ns 例1:在端口clk上定义一个周期为20 ns、占空比为40%的时钟信号 dc_shell-t create_clock -per

34、iod 20 -waveform 0 8 clk 例2:在端口clk上定义一个频率为25 MHz、占空比为50%的时钟信号 dc_shell-t create_clock clk -period 40第53页/共91页54定义时钟(2) 指定时钟网络的延时 采用set_clock_uncertainty和set_clock_latency命令对时钟树的延时量进行建模 不确定性(uncertainty):两个寄存器时钟引脚之间的相对延时,即clock skew 延时(latency):寄存器时钟引脚与时钟源之间的绝对延时 例1:为时钟信号clk设置1.2 ns的网络延迟 dc_shell-t s

35、et_clock_latency 1.2 clk 例2:为时钟信号clk设置0.8 ns的源延迟 dc_shell-t set_clock_latency 0.8 -source clk 例3:为时钟信号clk设置0.2 ns的不确定性偏差 dc_shell-t set_clock_uncertainty 0.2 clk 例4:在跳变沿两侧为时钟信号clk各设置0.2 ns的不确定性偏差 dc_shell-t set_clock_uncertainty -setup 0.2 clk dc_shell-t set_clock_uncertainty -hold 0.2 clk时钟树(网络)第54

36、页/共91页55定义时钟(3) 如果设计中有内部产生的时钟,如时钟分频器或者倍频器,定义时钟时要用到命令create_generated_clock 命令格式:create_generated_clock name clock_name source clock_source divide_by factor | -multiply_by factor 定义了时钟以后,要对时钟设置set_dont_touch属性,禁止往时钟上加入缓冲 相应的命令是:set_dont_touch_network get_clocks Clk 原因:综合时,一个时钟源驱动了很多门,由于所带的负载太多,时钟信号的边

37、缘会很差。如果为时钟插入缓冲 (Buffer)之后,时钟的驱动能力会增强,而且保持时钟信号的边缘陡峭,但是这样做会使得在不同路径上出现时钟偏移,从而带来时序上的问题。因此在综合时,将clock看作是理想的时钟,禁止加缓冲。第55页/共91页56指定I/O的时序要求 定义了时钟之后,两个相邻寄存器之间的时间路径已经被约束默认为一个时钟周期 输入端口的时序约束 如果已知输入端口的外部电路的延迟,就能计算留给输入端内部逻辑的最大允许延迟 DC命令:set_input_delay 输出端口的时序约束 指定了输出端口外部电路的延迟,DC就能得到留给输出端口的最大延迟 DC命令:set_output_de

38、lay第56页/共91页57设定输入延迟 (1) set_input_delay 设置输入端口的输入延迟,可规定时钟沿之后数据据需要稳定的时间,作为输入信号的建立或保持时间需求 定义信号相对于时钟的到达时间 (指一个信号在时钟沿之后多少时间到达) 规定输入信号在时钟有效沿后多长时间后才保持稳定(或说数据有效),对输入路径进行时间约束Td + TM第57页/共91页58设定输入延迟 (2) 下图说明了输入延迟的定义和时序关系第58页/共91页59设定输出延迟 set_output_delay 输出信号在时钟有效沿前多长时间开始保持稳定(或者说数据有效),对输出路径进行时间约束第59页/共91页6

39、0设定I/O延迟 举例: dc_shell-t set_input_delay 20 -clock CLK DATA_IN dc_shell-t set_output_delay 15 -clock CLK DATA_OUT在工程设计中,input delay和output delay通常取时钟周期的40 - 60%第60页/共91页61指定组合逻辑通路的延时要求 采用set_max_delay和set_min_delay命令来定义某条组合逻辑路径 (不含时序单元)的最大和最小延时 例1:RESET信号的延时不能超过5 ns dc_shell-t set_max_delay 5 -from R

40、ESET 例2:从IN2至OUT2的路径的最小延时是10 ns dc_shell-t set_min_delay 10 -from IN2 -to OUT2第61页/共91页62说明时序例外情况 应用于异步路径或不遵循单时钟时序的路径 用set_false_path命令指定设计中的假路径,从而在时序优化时不考虑它们U1配置寄存器,可以从双向总线(DATA)对其进行读写由于不允许同时进行读写,U1/GU1/D是一条功能上的假路径dc_shell-t set_false_path -from U1/G -to U1/D第62页/共91页63时序约束设计举例 create_clock -period

41、 20 -waveform 5 15 clka create_clock -period 30 -waveform 10 25 clkb set_input_delay 10.4 -clock clka in1 set_input_delay 6.4 -clock clkb -add_delay in1 set_output_delay 1.6 -clock clka -min out1 set_output_delay 4.8 -clock clka -max out1第63页/共91页64内容 逻辑综合概述 综合环境的设置 DC综合流程简介 时序分析基础 逻辑综合中的时序约束设计 DC的使

42、用方式第64页/共91页65两种使用方式 (1) 图形界面方式 在Unix下执行dc_shell, 启动DC的命令行界面 执行design_analyzer& 即可启动相应的图形界面第65页/共91页66两种使用方式 (2) 脚本 (Scripts)方式 在Unix环境下,输入dc_shell启动DC工具 dc_shell include scripts/.sc reports /.rpt第66页/共91页67图形界面:设置库文件 Stepup-Defaults第67页/共91页68图形界面:设计读入 (1) 设计的读入:analyze + elaborate第68页/共91页69图形界面:设

43、计读入 (2) 设计的读入:read第69页/共91页70图形界面:链接 链接 将设计中调用的子模块与链接库中定义的模块建立对应关系第70页/共91页71图形界面:添加约束 (1) 环境约束第71页/共91页72图形界面:添加约束 (2) 连线负载模型第72页/共91页73图形界面:添加约束 (3) 设置输出负载设置第73页/共91页74图形界面:添加约束 (4) 设置输入驱动第74页/共91页75图形界面:添加约束 (5) 创建时钟第75页/共91页76图形界面:添加约束 (6) 设置输入延时第76页/共91页77图形界面:添加约束 (7) 设置输出延时第77页/共91页78图形界面:添加约

44、束 (8) 组合电路的时延约束第78页/共91页79图形界面:添加约束 (9) 设计的面积约束第79页/共91页80图形界面:设计综合 设计综合第80页/共91页81图形界面:结果报告 设计结果报告报告面积和时序信息第81页/共91页82图形界面:设计保存 设计的保存第82页/共91页83图形界面:时序描述文件导出 时序描述文件的导出 描述了设计的时序情况主要用于进行综合后的动态仿真第83页/共91页84图形界面:时序约束文件导出 时序约束文件的导出 带有关键路径的时延约束信息,主要供后端工具进行时延驱动的布局布线第84页/共91页85脚本方式 (1) 设计读入 生成未映射的db设计文件的脚本

45、文件:db_gen.scr/* this script reads the vhdl files and generates db files */* ddfs MODULE */remove_design -designsanalyze -format vhdl -lib DEFAULT source/froma.vhd, source/fromb.vhd, source/croma.vhd, source/cromb.vhd, source/ddfs.vhd reports/analyze_elaborate.rptelaborate ddfs -arch ddfs -lib DEFAUL

46、T -update reports/analyze_elaborate.rptcurrent_design ddfswrite -format db -hierarchy -output unmapped/ddfs.db reports/analyze_elaborate.rptquit第85页/共91页86脚本方式 (2) 子模块约束脚本文件:constraints.scrMAX_INPUT_LOAD = load_of(REF_LOAD) * 2CLOCK_PERIOD = 10 /* the goal is 10ns */CLOCK_UNCERTAINTY = 0.4INPUT_DELA

47、Y = 3.0OUTPUT_DELAY = 3.0reset_designcreate_clock -period CLOCK_PERIOD find(port, clk)set_dont_touch_network find(port,clk)set_clock_uncertainty CLOCK_UNCERTAINTY find(port,clk)set_input_delay INPUT_DELAY -max -clock clk all_inputs() - find(port, clk)set_output_delay OUTPUT_DELAY -max -clock clk all

48、_outputs()set_operating_conditions OPERATING_CONDITIONSset_wire_load WIRE_LOAD_MODELset_driving_cell -lib_cell REF_DRIVER_CELL -pin REF_DRIVER_PIN all_inputs() -find(port, clk )set_max_capacitance MAX_INPUT_LOAD all_inputs() - find(port, clk)set_load MAX_INPUT_lOAD all_outputs()第86页/共91页87脚本方式 (3) 顶

49、层模块约束脚本文件:constraints_ddfs.scrMAX_INPUT_LOAD = load_of(REF_LOAD) * 2CLOCK_PERIOD = 10 /* the goal is 10ns */CLOCK_UNCERTAINTY = 0.4INPUT_DELAY = 3.0OUTPUT_DELAY = 3.0reset_designcreate_clock -period CLOCK_PERIOD -name clk_sys find(port, clk)set_dont_touch_network find(port, clk)set_clock_uncertainty

50、 CLOCK_UNCERTAINTY find(port,clk)set_input_delay INPUT_DELAY -max -clock clk_sys all_inputs() - find(port, clk)set_output_delay OUTPUT_DELAY -max -clock clk_sys all_outputs()set_operating_conditions OPERATING_CONDITIONSset_wire_load WIRE_LOAD_MODEL/* set_driving_cell -lib_cell REF_DRIVER_CELL -pin R

51、EF_DRIVER_PIN all_inputs() -find(port, clk) */* set_max_capacitance MAX_INPUT_LOAD all_inputs() - find(port, clk) */set_load MAX_INPUT_lOAD all_outputs()第87页/共91页88脚本方式 (4) 逻辑综合脚本文件:runit.scr/* Following dirctories must be maked before excuting this file */SOURCE_DIR = unmapped/SCRIPT_DIR = scripts/MAPPED_DIR = mapped/REPORTS_DIR = reports/SIMULATION_DIR = simulation/“

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论