数字电路后端设计_逻辑综合_第1页
数字电路后端设计_逻辑综合_第2页
数字电路后端设计_逻辑综合_第3页
数字电路后端设计_逻辑综合_第4页
数字电路后端设计_逻辑综合_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

1、 逻辑综合逻辑综合2概述概述l 综合是将综合是将RTLRTL源代码转换成门级网表的过程。源代码转换成门级网表的过程。l 电路的逻辑综合一般由三个步骤组成,即电路的逻辑综合一般由三个步骤组成,即 综合转化逻辑优化映射(见下页图)综合转化逻辑优化映射(见下页图)(SynthesisSynthesisTranslationTranslationLogic OptimizationLogic OptimizationMappingMapping)l 在综合过程中,优化进程尝试完成库单元的组合,使组合成的电路能最好地在综合过程中,优化进程尝试完成库单元的组合,使组合成的电路能最好地满足设计的功能、时序和

2、面积的要求满足设计的功能、时序和面积的要求l 综合是约束驱动(综合是约束驱动(constraint drivenconstraint driven)的,给定的约束是综合的目标。约束)的,给定的约束是综合的目标。约束一般是在对整个系统进行时序分析得到的,综合工具会对电路进行优化以满一般是在对整个系统进行时序分析得到的,综合工具会对电路进行优化以满足约束的要求。足约束的要求。l 综合以时序路径为基础进行优化。综合以时序路径为基础进行优化。l 常用的综合工具有常用的综合工具有SynopsysSynopsys公司的公司的Design Compiler Design Compiler 和和Candanc

3、eCandance公司的公司的Enconter RTL CompilerEnconter RTL Compiler34l综合过程中时序与面积的关系综合过程中时序与面积的关系 从下图中可以看出面积与延迟的折衷关系,综合工具以约束为指导,在满足时从下图中可以看出面积与延迟的折衷关系,综合工具以约束为指导,在满足时序的情况下获得最小面积。如果不施加约束,综合工具会产生非优化的网表,序的情况下获得最小面积。如果不施加约束,综合工具会产生非优化的网表,而这是不能满足要求的网表。所以约束对于综合来说是必不可少的。而这是不能满足要求的网表。所以约束对于综合来说是必不可少的。 5l 综合的基本流程综合的基本流

4、程1.1.准备准备RTLRTL代码:代码:RTLRTL代码经过前端仿真后才能用于综合。代码经过前端仿真后才能用于综合。2.2.定义库:设定好所需要用到的综合库等多种库。定义库:设定好所需要用到的综合库等多种库。3.3.读入设计:综合工具读入读入设计:综合工具读入RTLRTL代码并进行分析。代码并进行分析。4.4.定义设计环境:设定设计的工作环境、端口的驱动和负载,线负载模型等定义设计环境:设定设计的工作环境、端口的驱动和负载,线负载模型等。5.5.设置设计约束:这是综合的一个极其重要的环节,设定好正确的约束才能设置设计约束:这是综合的一个极其重要的环节,设定好正确的约束才能得到正确的综合结果。

5、约束要适当,不能过紧或过松。主要是定义时钟和得到正确的综合结果。约束要适当,不能过紧或过松。主要是定义时钟和I/OI/O的约束。的约束。6.6.设置综合策略:有设置综合策略:有top-downtop-down和和bottom-upbottom-up两种策略,各有所长,对于不同的两种策略,各有所长,对于不同的设计要具体分析。设计要具体分析。7.7.优化设计:综合工具可以根据约束对电路进行优化,也可以人为地加入命优化设计:综合工具可以根据约束对电路进行优化,也可以人为地加入命令,改变优化方法。令,改变优化方法。8.8.分析和解决设计的问题:在设计综合(分析和解决设计的问题:在设计综合(compil

6、ecompile)后,根据报告来分析设计)后,根据报告来分析设计中出现的问题,进而修订所出现的问题。中出现的问题,进而修订所出现的问题。9.9.保存设计数据:综合完成后,保存各种数据,以供后续的布局布线使用(保存设计数据:综合完成后,保存各种数据,以供后续的布局布线使用(需先通过验证)。需先通过验证)。6l Basic FlowDevelop HDL filesSpecify librariesRead designDefine design environmentSet design constraintsSelectcompile strategyOptimize the designAn

7、alyze and resolvedesign problemSave the design database7Design Compiler简介简介l Design CompilerDesign Compiler有两种界面供用户使用,一种是命令界面,一种是图形界面有两种界面供用户使用,一种是命令界面,一种是图形界面。在。在UNIXUNIX命令行下分别执行以下命令可以分别进入上述两种界面:命令行下分别执行以下命令可以分别进入上述两种界面: unixunix dc_shell-tdc_shell-t (命令界面)(命令界面) unixunix design_visiondesign_vision

8、(图形界面)(图形界面)l Design CompilerDesign Compiler支持支持TCLTCL(Tool Command LanguageTool Command Language)语言,它是公开的业界)语言,它是公开的业界标准界面语言。标准界面语言。DC-TclDC-Tcl在在TCLTCL的基础上扩展丰富了的基础上扩展丰富了TCLTCL,使用户可以更加灵活,使用户可以更加灵活方便地运用方便地运用TCLTCL命令来对电路进行分析和优化。命令来对电路进行分析和优化。l DCDC中包含了多种工具,如中包含了多种工具,如DFT CompilerDFT Compiler,Power Co

9、mpilerPower Compiler,HDL CompilerHDL Compiler,Library CompilerLibrary Compiler等,使得等,使得DCDC具有强大的功能,成为业界最流行的综合工具具有强大的功能,成为业界最流行的综合工具。8目标库和初始环境的设置目标库和初始环境的设置l DCDC启动时会先启动启动时会先启动.synopsys_dc.setup.synopsys_dc.setup文件,它里面设定了综合所需要的工文件,它里面设定了综合所需要的工艺库的信息以及一些对于工具的设定命令。艺库的信息以及一些对于工具的设定命令。l 在综合之前,要设定好所需要的库,如综

10、合库、在综合之前,要设定好所需要的库,如综合库、I/OI/O单元库,单元库,IPIP核等。核等。l 半导体厂商提供与半导体厂商提供与DCDC兼容的工艺库综合库,它包含许多信息,如单元的功兼容的工艺库综合库,它包含许多信息,如单元的功能、面积、时间、功耗、测试等,线负载模型,工作条件和设计规则约束等能、面积、时间、功耗、测试等,线负载模型,工作条件和设计规则约束等。在。在0.18um0.18um的工艺下,可采用非线性延迟模型(的工艺下,可采用非线性延迟模型(NLDMNLDM)来计算单元的延迟。)来计算单元的延迟。单元的延迟与输入的逻辑转换时间和输出负载有关。根据每个单元的输入逻单元的延迟与输入的

11、逻辑转换时间和输出负载有关。根据每个单元的输入逻辑转换时间和输出负载,在工艺库提供的查找表(辑转换时间和输出负载,在工艺库提供的查找表(Look-Up TableLook-Up Table)中查出单)中查出单元的延迟。元的延迟。9l .synopsys_dc.setup.synopsys_dc.setup文件主要包括各种库的设定,变量的设定等。下面具体文件主要包括各种库的设定,变量的设定等。下面具体介绍各种库的意义及如何设定。(实例)介绍各种库的意义及如何设定。(实例)目标库目标库(target_librarytarget_library):):是是DCDC在做编译(在做编译(compilec

12、ompile)的时候来构成电路图的,将电路映射到具体的单元)的时候来构成电路图的,将电路映射到具体的单元上。例如上。例如 set target_library my_tech.dbset target_library my_tech.db链接库链接库(link_librarylink_library):):是将设计连接到对应的库上,一般包含目标库、宏单元、是将设计连接到对应的库上,一般包含目标库、宏单元、IPIP核等。例如:核等。例如: setset link_library “link_library “* * my_tech.db” my_tech.db”。其中。其中“* *”指明当链接设

13、计时,指明当链接设计时,DCDC先搜先搜寻内存中已有的库,然后再搜寻变量寻内存中已有的库,然后再搜寻变量link_librarylink_library中制定的其它库。中制定的其它库。符号库符号库(symbol_librarysymbol_library):):定义了单元显示的图形库,当用定义了单元显示的图形库,当用design_visiondesign_vision来查看图形的时候使用。来查看图形的时候使用。综合库综合库(synthetic_librarysynthetic_library):):是由是由SynopsysSynopsys公司提供的公司提供的DesignWareDesignWa

14、re库,包含了许多库,包含了许多IPIP核及运算单元,用于核及运算单元,用于实现实现verilogverilog描述的运算符,为电路的优化起着重要的作用。描述的运算符,为电路的优化起着重要的作用。搜寻路径搜寻路径(search_pathsearch_path):):指定各种库的路径,可以将所用的库的路径放入指定各种库的路径,可以将所用的库的路径放入search_pathsearch_path中,在设定中,在设定target_librarytarget_library和和link_librarylink_library时就不必加上库的绝对路径,时就不必加上库的绝对路径,DCDC会自动在会自动在s

15、earch_pathsearch_path中寻找所用到的库的路径从而读入该库。中寻找所用到的库的路径从而读入该库。.synopsys_dc.setup文件文件10变量的设定变量的设定:设置的变量在:设置的变量在DCDC启动时读入,便于综合的处理,同时有些启动时读入,便于综合的处理,同时有些DCDC的的变量必须在设置文件中输入。如可以设定命令的简写,保存多少条命令等:变量必须在设置文件中输入。如可以设定命令的简写,保存多少条命令等:alias cud current_designalias cud current_designalias rpt report_timingalias rpt re

16、port_timinghistory keep 300history keep 30011l 综合脚本实例(综合脚本实例(.synopsys_dc.setup)12系统层次的划分与基本概念系统层次的划分与基本概念l 在在DC中,每个设计由中,每个设计由6个设计物体组成,它们分别是个设计物体组成,它们分别是design,cell,port,pin,net和和clock。其中。其中clock是特别的端口,它存在是特别的端口,它存在DC内存中,是用户自己内存中,是用户自己定义的物体。如下图所示:定义的物体。如下图所示:13l 当前设计为当前设计为TOP。Port和和Pin是与当前设计有关的一对概念,

17、如果当前设计改是与当前设计有关的一对概念,如果当前设计改变,相应的变,相应的port和和pin也会不同也会不同14设计读入设计读入l 读入设计有多种方法,读入设计有多种方法,DC支持读入支持读入Verilog,VHDL,可以是,可以是RTL级代码,也级代码,也可以是门级网表,也可是可以是门级网表,也可是ddc格式的文件。综合前的设计不需用格式的文件。综合前的设计不需用RTL格式(虽格式(虽然也有其它格式)输入到然也有其它格式)输入到DC中。中。l 可以用以下命令读入设计:可以用以下命令读入设计:1.analyze和和elaborate命令:这是两个不同的命令,它使得设计人员可以在命令:这是两个

18、不同的命令,它使得设计人员可以在建立设计通用逻辑之前先对设计进行语法错误和建立设计通用逻辑之前先对设计进行语法错误和RTL转换分析。转换分析。2.read_file命令:如:命令:如:read_file format verilog sd_clk.v3.read_verilog或或read_vhdl命令,这些是从命令,这些是从read_file中分离出来的命令,中分离出来的命令,如:如:read_verilog sd_clk.vl 读入代码后用命令读入代码后用命令current_design和和link将读入的设计和综合库连接起来。将读入的设计和综合库连接起来。15电路的设计目标与约束电路的设

19、计目标与约束l RTL模块综合的流程如下图所示。电路的约束分为设计环境和设计约束,模块综合的流程如下图所示。电路的约束分为设计环境和设计约束,DC以约束为目标进行电路优化。以约束为目标进行电路优化。16l 设计环境设计环境通过环境约束的设计,将设计所处的真实环境因素包含进去,使得设计可以通过环境约束的设计,将设计所处的真实环境因素包含进去,使得设计可以正常工作在真实环境下。环境约束如下图所示正常工作在真实环境下。环境约束如下图所示: : 17l set_operating_conditions描述了设计的工艺、电压及温度条件。描述了设计的工艺、电压及温度条件。Synopsys库包含这些条件的描

20、述,通常为库包含这些条件的描述,通常为WORST,TYPICAL,BEST情况情况。工作条件的名称可库的名称是相关的,如。工作条件的名称可库的名称是相关的,如SMIC 0.18um工艺提供工艺提供slow.db,typical.db,fast.db三种工艺库,它们的工作条件分别是三种工艺库,它们的工作条件分别是slow(WORST),typical(TYPICAL)和和fast(BEST)。)。WORST情况通常用于综合阶段,而情况通常用于综合阶段,而BEST情况通常用于修正保持时间违规。有时可能同时用情况通常用于修正保持时间违规。有时可能同时用WORST和和BEST情情况同时优化设计,这时使

21、用命令:况同时优化设计,这时使用命令: set_operating_conditions -max slow -max_library slow -min fast -min_library fastl 可以用可以用set_min_library指定指定best和和worst两种库,在设计中所用到的库都可两种库,在设计中所用到的库都可以指定。如以指定。如:# 为综合用的为综合用的sram库指定最佳情况可最坏情况库指定最佳情况可最坏情况set_min_library sram_slow.db min_vision sram_fast.db18l set_wire_load_model命令为命令为

22、DC提供估计的线负载信息,反过来提供估计的线负载信息,反过来DC使用线使用线载信息把连线延迟建模为负载的函数,载信息把连线延迟建模为负载的函数,Synopsys工艺库里提供了多种线载模工艺库里提供了多种线载模型,每个模型代表一个特定大小的模块。设计人员需要准确地选择线载模型型,每个模型代表一个特定大小的模块。设计人员需要准确地选择线载模型。设置线载模型命令如下:。设置线载模型命令如下:set_wire_load_model name smic18_wl10 library slowl set_wire_load_mode定义了三种同建模线负载模型相关的模式,分别是定义了三种同建模线负载模型相关

23、的模式,分别是top,segmented和和enclosed,如下图所示:,如下图所示:191.top模式定义层次中所有连线将继承和顶层模型同样的线载模型。如上图中模式定义层次中所有连线将继承和顶层模型同样的线载模型。如上图中,所有的连线都继承顶层的线载模型,所有的连线都继承顶层的线载模型50 x50。2.segmented模式用于跨越层次边界的连线。如上图中,子模块模式用于跨越层次边界的连线。如上图中,子模块A和子模块和子模块B中的连线继承各自的线载模型,而中的连线继承各自的线载模型,而A与与B之间的连线继承模块之间的连线继承模块MID的线载模型的线载模型。3.enclosed模式指定所有的

24、连线(属于子模块的)将继承完全包含该子模块模式指定所有的连线(属于子模块的)将继承完全包含该子模块的模块线载模型。如上图中,整条连线处于模块的模块线载模型。如上图中,整条连线处于模块MID的完全包围中,所以采的完全包围中,所以采用用40 x40线载模型。其命令如下线载模型。其命令如下set_wire_load_mode enclosedl set_driving_cell和和set_drive用于设置模块输入端口的驱动能力。用于设置模块输入端口的驱动能力。set_drive命令用于指定输入端口的驱动强度,它主要用于模块或芯片端口外驱动电阻命令用于指定输入端口的驱动强度,它主要用于模块或芯片端口

25、外驱动电阻。set_driving_cell用于对输入端口的驱动电阻进行建模,这一命令将驱动单用于对输入端口的驱动电阻进行建模,这一命令将驱动单元的名称作为其参数并将驱动单元的所有设计规则约束应用于模块的输入端元的名称作为其参数并将驱动单元的所有设计规则约束应用于模块的输入端口。口。set_driving_cell lib_cell and2a0 get_ports IN1 library slow20set_drive 10 get_ports Data_in_0l set_load将工艺库中定义的单位(通常为将工艺库中定义的单位(通常为pf)上的容性负载设置到设计的指)上的容性负载设置到设

26、计的指定连线或端口,设置输出端口的负载。定连线或端口,设置输出端口的负载。set_load 5 get_ports OUT1set_load load_of my_lib/and2a0/A get_ports OUT121l 设计约束描述了设计目标,包括时序和面积等。设计约束描述了设计目标,包括时序和面积等。DC会依据约束来优化电路。会依据约束来优化电路。因为不实际的规范会导致面积增大、功耗增加和因为不实际的规范会导致面积增大、功耗增加和/或时序恶化,所以设计人员或时序恶化,所以设计人员必须根据情况指定实际的约束,约束设计的基本命令如下图所示。必须根据情况指定实际的约束,约束设计的基本命令如下

27、图所示。设计约束设计约束22l单周期同步设计的时序要求单周期同步设计的时序要求 DC DC默认的时序电路是单周期的,如下图所示。假设默认的时序电路是单周期的,如下图所示。假设FF3FF3的建立时间为的建立时间为TsetupTsetup,保持时间为保持时间为TholdThold,触发器,触发器FF2FF2的时钟端到的时钟端到Q Q端的延迟为端的延迟为Tclk-q,Tclk-q,对于对于setup来说:来说:clock period Tclk-q + Tx-max + Tsetup对于对于hold来说:来说: Thold Tclk-q + Tx-min时钟时钟23l 定义时钟定义时钟create_

28、colck period 10 get_port clk对于时钟(除了虚拟时钟)的定义来说,时钟周期和时钟源(对于时钟(除了虚拟时钟)的定义来说,时钟周期和时钟源(port或或pin)是)是必不可少的,还可以定义时钟的占空比,时钟名等。定义虚拟时钟时,不必必不可少的,还可以定义时钟的占空比,时钟名等。定义虚拟时钟时,不必定义时钟源。定义时钟源。l 设定时钟的设定时钟的uncertainty、latency和和transition,其中,其中uncertainty是用来模拟是用来模拟时钟的时钟的skew和和jetter,latency设定时钟的延迟,设定时钟的延迟,transition设定时钟的

29、转换设定时钟的转换时间。通过这些设定让时钟更加接近实际情况,更有利于综合的准确性,但时间。通过这些设定让时钟更加接近实际情况,更有利于综合的准确性,但过分约束会使得综合起来比较困难。过分约束会使得综合起来比较困难。l 由于时钟一般是高扇出(由于时钟一般是高扇出(high fanout)的,)的,DC不会对高扇出的连线做设计不会对高扇出的连线做设计规则(规则(DRC)的检查和优化。)的检查和优化。DC默认的时钟网络是理想的。在综合时不对时默认的时钟网络是理想的。在综合时不对时钟的高扇出做处理,而是留在后续的布局布线中做时钟树综合(钟的高扇出做处理,而是留在后续的布局布线中做时钟树综合(CTS)。

30、)。24l source latency是指实际的时钟源到时钟定义点的传播延迟,而是指实际的时钟源到时钟定义点的传播延迟,而network latency是指设计内部从时钟定义点到触发器时钟端的延迟。如下图所示,设是指设计内部从时钟定义点到触发器时钟端的延迟。如下图所示,设置如下:置如下:create_clock period 10 get_ports CLK#设置设置source latency 为为3nsset_clock_latency source 3 get_clocks CLK 设置设置network latency 为为1nsset_clock_latency 1 get_clo

31、cks CLK25l set_clock_uncertainty命令让用户定义时钟扭斜信息。基本上此命令用于给命令让用户定义时钟扭斜信息。基本上此命令用于给时钟的建立时间和保持时间增加一定的余量。由时钟的抖动(时钟的建立时间和保持时间增加一定的余量。由时钟的抖动(jitter)可扭斜)可扭斜(skew)组成,如下图:)组成,如下图:set_clock_uncertainty 0.6 get_clocks CLKl set_clock_transition命令让用户定义时钟的转换时间。如下图命令让用户定义时钟的转换时间。如下图set_clock_transition 0.45 get_clock

32、s CLK26l 除了除了create_clockcreate_clock命令,还有命令,还有create_generated_clockcreate_generated_clock命令用来创建产生的命令用来创建产生的时钟,如时钟经过分频后的时钟,在创建生成时钟时,要指定源时钟的名字时钟,如时钟经过分频后的时钟,在创建生成时钟时,要指定源时钟的名字和端口,分频数(倍频数),生成时钟的端口。和端口,分频数(倍频数),生成时钟的端口。 create_generated_clock source clk2x divied_by2 get_pins clkl 有时需要创建虚拟时钟(有时需要创建虚拟时钟

33、(virtual clockvirtual clock)用来说明相对于时钟的)用来说明相对于时钟的I/OI/O端口的端口的延迟,虚拟时钟在设计里并不驱动触发任何寄存器。延迟,虚拟时钟在设计里并不驱动触发任何寄存器。# #建立虚拟时钟,周期为建立虚拟时钟,周期为10ns10ns,命名为,命名为vclkvclk,不需要定义时钟源,不需要定义时钟源 create_clock period 10 name vclkl 通常给时钟加上通常给时钟加上dont_touchdont_touch的约束,使得的约束,使得DCDC在综合的时候不会给时钟网络加在综合的时候不会给时钟网络加入入BUFFERBUFFER以

34、满足以满足skewskew的要求,时钟网络通常留在布局布线阶段进行时钟树综的要求,时钟网络通常留在布局布线阶段进行时钟树综合合(CTS)(CTS)。set_dont_touch_network get_clocks clk 27I/O的约束的约束l set_input_delayset_input_delay指定相对于时钟的信号输入的到达时间。它用在输入端口,指定相对于时钟的信号输入的到达时间。它用在输入端口,指定在时钟沿后数据稳定所需的时间。如下图所示,设置的输入延迟的值为指定在时钟沿后数据稳定所需的时间。如下图所示,设置的输入延迟的值为T Tclk-qclk-q T TM M。28l 例例

35、: :根据外部逻辑的延迟设定输入延迟根据外部逻辑的延迟设定输入延迟# #创建时钟创建时钟create_clock period 20 name Clk get_ports Clkcreate_clock period 20 name Clk get_ports Clk将时钟设置为将时钟设置为dont_touch_networkdont_touch_networkset_dont_touch_network get_clocks Clkset_dont_touch_network get_clocks Clk设置输入延迟设置输入延迟 ,外部逻辑延迟最大值为,外部逻辑延迟最大值为7.47.4,加入

36、,加入-max-max选项选项用于用于setupsetup分析(分析(setupsetup分析采用最慢的路径延迟)分析采用最慢的路径延迟)set_input_delay 7.4 max clock Clk get_ports Aset_input_delay 7.4 max clock Clk get_ports A29l set_output_delayset_output_delay命令用于在输出端口定义在时钟边沿来到之前数据有效所命令用于在输出端口定义在时钟边沿来到之前数据有效所需时间。如下图所示,设置输出时间的值为需时间。如下图所示,设置输出时间的值为T TT T T Tsetupse

37、tup30l 例例: :设置输出延迟设置输出延迟# #创建时钟创建时钟create_clock period 20 name Clock get_ports Clockcreate_clock period 20 name Clock get_ports Clock将时钟设置为将时钟设置为dont_touch_networkdont_touch_networkset_dont_touch_network get_clocks Clockset_dont_touch_network get_clocks Clock设置输入延迟设置输入延迟 ,外部逻辑,外部逻辑setupsetup要求为要求为7.

38、07.0,即为,即为setupsetup分析设分析设 定输出延迟定输出延迟set_output_delay 7.0 max clock Clock get_ports Bset_output_delay 7.0 max clock Clock get_ports B31DRC约束约束l DRC即即Design Rule Constraints,一般由半导体厂商提供,在使用工艺库中,一般由半导体厂商提供,在使用工艺库中的逻辑单元时对其连接所强加的限制,主要有:的逻辑单元时对其连接所强加的限制,主要有:max_capacitance,max_transition,max_fanout为当前设计设定

39、最大电容值为为当前设计设定最大电容值为0.5pfset_max_capacitance 0.5 current_design为当前设计设定最大转换时间为为当前设计设定最大转换时间为2.0ns,在整个设计上施加最,在整个设计上施加最大转换时间延迟可以帮助防止在上连线上出现长的转换时间,大转换时间延迟可以帮助防止在上连线上出现长的转换时间,也可以约束单元的输出端的转换时间以减少其功耗也可以约束单元的输出端的转换时间以减少其功耗set_max_transition 2.0 current_design在当前设计的所有单元的输出引脚上设置在当前设计的所有单元的输出引脚上设置max_fanoutset_

40、max_fanout 10 current_designl 在在DC优化时,优化时,DRC约束具有最高的优先级,约束具有最高的优先级,DC会先让电路满足会先让电路满足DRC,然后,然后才是时序约束。才是时序约束。32面积约束面积约束l 我们用我们用set_max_area来设定面积约束。例如来设定面积约束。例如set_max_area 1000set_max_area 0l 面积的单位由工艺库定义,可以是:面积的单位由工艺库定义,可以是: 1. 2输入与非门输入与非门2. 晶体管数目晶体管数目3. 平方微米平方微米l 设定了面积约束,设定了面积约束,DC会尽量优化到所设定的面积;当没有设定面积

41、约束时,会尽量优化到所设定的面积;当没有设定面积约束时,DC会做最小限度的面积优化;若设定为会做最小限度的面积优化;若设定为0,则,则DC会对面积做优化直到再继续会对面积做优化直到再继续优化也没有大的效果,这样可以使得面积优化最小,但运行时间较长。优化也没有大的效果,这样可以使得面积优化最小,但运行时间较长。l 可用命令可用命令report_area报告面积。报告面积。33时序例外时序例外l 时序例外有以下几种:时序例外有以下几种:1.False paths。用。用set_false_path来设定路径使得来设定路径使得DC不对其进行时序分析不对其进行时序分析,移除该路径上的时序约束。通常异步

42、电路的时钟之间、逻辑上不存在的,移除该路径上的时序约束。通常异步电路的时钟之间、逻辑上不存在的路径等上设定为路径等上设定为falst path2.Minimum and maximum path delay value。我们使用命令。我们使用命令set_max_delay和和set_min_delay来覆盖默认的用于来覆盖默认的用于setup和和hold约束的约束的最大最大/最小延迟。最小延迟。3.Multicycle paths。由于。由于DC默认的是单周期,有时某些路径可能需要多个默认的是单周期,有时某些路径可能需要多个周期的时间才能到达,如在两个寄存器之间进行乘法操作可能需要多个周周期的

43、时间才能到达,如在两个寄存器之间进行乘法操作可能需要多个周期才能完成,这时用命令期才能完成,这时用命令set_muticycle_path来设定多周期路径,以满来设定多周期路径,以满足时序要求。同时要注意足时序要求。同时要注意setup check和和hold check的设定。的设定。34综合策略的选择综合策略的选择l 综合的策略有两种:自顶向下和自底向上。综合的策略有两种:自顶向下和自底向上。1.自顶向下(自顶向下(top-down):):在在top-downtop-down的综合方案中,顶层模块和它的所有的综合方案中,顶层模块和它的所有子模块放在一起优化,所有的限制条件和电路工作环境一般

44、也都是针对顶层子模块放在一起优化,所有的限制条件和电路工作环境一般也都是针对顶层模块设置的,因此,这种综合方案能够自动将模块之间的连接和依赖关系考模块设置的,因此,这种综合方案能够自动将模块之间的连接和依赖关系考虑到综合中去,从而优化综合结果。但是,这种方法对于一个规模比较大的虑到综合中去,从而优化综合结果。但是,这种方法对于一个规模比较大的电路显然不适合,因为在综合的过程中,所有的模块必须同时存在于存储区电路显然不适合,因为在综合的过程中,所有的模块必须同时存在于存储区中,而且运行时间也会比较长。中,而且运行时间也会比较长。 2.自底向上(自底向上(bottom-up):):即分而治之的解决

45、方法。从最底层模块开始综合即分而治之的解决方法。从最底层模块开始综合优化,必须对所有底层子模块施加限制条件并且需要单独优化,这个过程一优化,必须对所有底层子模块施加限制条件并且需要单独优化,这个过程一直延续到顶层模块。其中每一个子模块综合完成之后,直接将该模块集成到直延续到顶层模块。其中每一个子模块综合完成之后,直接将该模块集成到它的上一级中和上一级的其他模块一起优化,而且一般使用它的上一级中和上一级的其他模块一起优化,而且一般使用set_dont_touchset_dont_touch命令让命令让DCDC不再改变该子模块的结构。使用这种方法进行优化的优点是当工作不再改变该子模块的结构。使用这

46、种方法进行优化的优点是当工作站的处理能力不足时,可以分别进行子模块的优化,而不需要将所有的模块站的处理能力不足时,可以分别进行子模块的优化,而不需要将所有的模块都放到存储区中,这种做法的缺点是只能在子模块内部进行优化,无法考虑都放到存储区中,这种做法的缺点是只能在子模块内部进行优化,无法考虑到模块周围的环境而将子模块和其他的模块一起优化。到模块周围的环境而将子模块和其他的模块一起优化。35设计优化设计优化l 采用命令采用命令compile或或compile_ultra来启动来启动DC综合和优化的进程。综合和优化的进程。DC提供许提供许多选项来设定进行何种综合。多选项来设定进行何种综合。l co

47、mpile_ultra命令具有强大的功能,使用该命令可以得到更好的延迟质量,命令具有强大的功能,使用该命令可以得到更好的延迟质量,特别适用于高性能的算术电路优化。该命令包含了以时间为中心的优化算法特别适用于高性能的算术电路优化。该命令包含了以时间为中心的优化算法。compile_ultra命令主要的开关选项有:命令主要的开关选项有:-scan 做可测性设计编辑,加入扫描链做可测性设计编辑,加入扫描链-no_autoungroup 关掉自动取消划分特性关掉自动取消划分特性-no_boundary_oprimization 不作边界优化不作边界优化-area_high_effort_script

48、面积优化面积优化-timing_high_effort_script 时序优化时序优化36l 电路的优化分为三个阶段:结构级的优化,逻辑级优化和门级优化,如下图电路的优化分为三个阶段:结构级的优化,逻辑级优化和门级优化,如下图所示。所示。371.结构级的优化,包括:结构级的优化,包括:1.1设计结构的选择:在设计结构的选择:在DesignWare中选择最合适的结构或算法实现电路的中选择最合适的结构或算法实现电路的功能。功能。1.2数据通路的优化:选择数据通路的优化:选择CSA等算法优化数据通路的设计等算法优化数据通路的设计1.3共用子表达式:例如下面两个等式:共用子表达式:例如下面两个等式:S

49、UM1 = A+B+C; Temp = A+B; SUM2 = A+B+D; SUM1 = Temp + C;SUM3 = A+B+E; SUM2 = Temp + D ; SUM3 source echo verbose read_file.tcl4.设置约束。设置约束。 dc_shell source echo verbose constraints.tcl5.综合综合,优化优化dc_shell compile_ultra no_autogroup6.查看报告查看报告dc_shell report_constraint all_violarors7.保存文件保存文件dc_shell wri

50、te format ddc hierarchy output Recordchiptop.ddc55 1.1.熟悉设计,获得设计目的和要求。熟悉设计,获得设计目的和要求。输入信号:在小芯片中,输入时钟输入信号:在小芯片中,输入时钟clk_128clk_128,时钟频率为,时钟频率为128KHz128KHz。Read_ADPCMRead_ADPCM为输入控制信号,采样速率为为输入控制信号,采样速率为8K8K,类似于一个频率为,类似于一个频率为8K8K的时钟的时钟,且占空比为,且占空比为5050。另外就是。另外就是8 8位的数据输入信号,位的数据输入信号,resetreset信号。在这里还信号。在

51、这里还有有inoutinout信号信号CMDCMD,DATA0DATA0,但不用作输入,只用作输出。,但不用作输入,只用作输出。输出信号:输出输出信号:输出SDSD卡输入时钟信号卡输入时钟信号CLKCLK,这里输出的,这里输出的CLKCLK配置成配置成clk_128clk_128的两分频,即的两分频,即64K64K,和输出数据,和输出数据DATA0DATA0信号,输出信号,输出CMDCMD信号。信号。562.2.设置设置.synopsys_dc.setup.synopsys_dc.setup文件文件 选择要使用的工艺文件,这里采用选择要使用的工艺文件,这里采用SMICSMIC的的0.18um0

52、.18um工艺,工艺,SMICSMIC提供了提供了slow.dbslow.db,fast.dbfast.db和和typical.dbtypical.db三种标准单元的综合库,我们选用三种标准单元的综合库,我们选用slowslow和和fastfast两种库,两种库,其中其中slowslow用于最坏情况分析,用于最坏情况分析,fastfast用于最佳情况分析。用于最佳情况分析。 芯片中的芯片中的sramsram是是IPIP核,提供了包含时序信息的综合库用于逻辑综合,它也有最核,提供了包含时序信息的综合库用于逻辑综合,它也有最坏情况和最佳情况之分,另外用到的综合库还有标准的坏情况和最佳情况之分,另外

53、用到的综合库还有标准的IOIO单元的综合库。单元的综合库。 具体设置可参见示例文件。具体设置可参见示例文件。3.3.启动启动DCDC,读入,读入RTLRTL代码,并写出代码,并写出RTLRTL级代码的级代码的ddcddc文件。文件。 在在unixunix的终端中键入的终端中键入dc_shelldc_shell,即可启动,即可启动DCDC,这时读入代码文件,可以一个一,这时读入代码文件,可以一个一个的读入,也可以写成个的读入,也可以写成TCLTCL语言的文本,用语言的文本,用sourcesource命令在命令在dc_shelldc_shell中读入。使用中读入。使用命令命令analyzeanal

54、yze和和elaborateelaborate来读入设计。读入设计后用来读入设计。读入设计后用check_designcheck_design命令来检查命令来检查设计存在的问题,是否是可综合的。具体命令可见脚本文件。设计存在的问题,是否是可综合的。具体命令可见脚本文件。4.4.设置约束。这是一个及其重要的环节。要在熟悉设计的前提下才能设置好正确设置约束。这是一个及其重要的环节。要在熟悉设计的前提下才能设置好正确的约束,约束的设置要参考与芯片输入输出有关的芯片的输出的约束,约束的设置要参考与芯片输入输出有关的芯片的输出/ /输入信号时序,输入信号时序,还要了解还要了解0.180.18工艺下如何选

55、择线负载模型,如何设置工艺下如何选择线负载模型,如何设置DRCDRC规则等。规则等。 可以先设置工作条件,最坏情况采用可以先设置工作条件,最坏情况采用slowslow,最佳情况采用,最佳情况采用fastfast,并对应相应的,并对应相应的库,选择库,选择wire_load_modelwire_load_model,要根据设计的大小来选择合适的线负载模型。,要根据设计的大小来选择合适的线负载模型。57 设置设置DRCDRC规则,通常规则,通常DRCDRC约束由工艺厂商设定,我们可以选择加紧约束以使得约束由工艺厂商设定,我们可以选择加紧约束以使得综合出来的结果更加满足各种约束条件。不同工艺下的综合

56、出来的结果更加满足各种约束条件。不同工艺下的DRCDRC约束是不同的,可以约束是不同的,可以根据经验对设计加紧约束,但约束不可过紧,这样会延长综合的时间,甚至导致根据经验对设计加紧约束,但约束不可过紧,这样会延长综合的时间,甚至导致综合出的结果不可用。综合出的结果不可用。 定义时钟。定义两个输入时钟和一个输出时钟。并设置时钟的延迟,转换时间定义时钟。定义两个输入时钟和一个输出时钟。并设置时钟的延迟,转换时间和不确定时间,使得时钟和真实的情况更加接近。综合时通常对时钟加紧约束,和不确定时间,使得时钟和真实的情况更加接近。综合时通常对时钟加紧约束,如加上如加上1010的余量,这样综合出的结果更加可信。的余量,这样综合出的结果更加可信。 I/OI/O端口的设置。端口的设置。I/OI/O约束的设置通常要参考各种手册,与芯片相连的外围芯片约束的设置通常要参考各种手册,与芯片相连的外围芯片的输入输出端口的时序要求,驱动负载要求,然后参考设置本芯片的的输入输出端口的时序要求,驱动负载要求,然后参考设置本芯片的I/OI/O约束。约束。如果没有用户手册,可根据经验加以约束,在综合之后查看报告,再进行适当的如果没有用户手册,可根据经验加以约束,在综合之后查看报告,再进行适当的修改,然后再进行综合。综合是个不断修改不断完善

温馨提示

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

评论

0/150

提交评论