数字电路后端设计逻辑综合课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数字电路后端设计逻辑综合课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字电路 后端 设计 逻辑 综合 课件
- 资源描述:
-
1、1概述概述l综合是将综合是将RTLRTL源代码转换成门级网表的过程。源代码转换成门级网表的过程。l电路的逻辑综合一般由三个步骤组成,即电路的逻辑综合一般由三个步骤组成,即 综合转化逻辑优化映射(见下页图)综合转化逻辑优化映射(见下页图)(SynthesisSynthesisTranslationTranslationLogic OptimizationLogic OptimizationMappingMapping)l在综合过程中,优化进程尝试完成库单元的组合,使组合成的电路能最好地满足设计的功能、时序和在综合过程中,优化进程尝试完成库单元的组合,使组合成的电路能最好地满足设计的功能、时序和面
2、积的要求面积的要求l综合是约束驱动(综合是约束驱动(constraint drivenconstraint driven)的,给定的约束是综合的目标。约束一般是在对整个系统进行)的,给定的约束是综合的目标。约束一般是在对整个系统进行时序分析得到的,综合工具会对电路进行优化以满足约束的要求。时序分析得到的,综合工具会对电路进行优化以满足约束的要求。l综合以时序路径为基础进行优化。综合以时序路径为基础进行优化。l常用的综合工具有常用的综合工具有SynopsysSynopsys公司的公司的Design Compiler Design Compiler 和和CandanceCandance公司的公司的
3、Enconter RTL CompilerEnconter RTL Compilerl综合过程中时序与面积的关系综合过程中时序与面积的关系 从下图中可以看出面积与延迟的折衷关系,综合工具以约束为指导,在满足时序的情况下获得最小面积。从下图中可以看出面积与延迟的折衷关系,综合工具以约束为指导,在满足时序的情况下获得最小面积。如果不施加约束,综合工具会产生非优化的网表,而这是不能满足要求的网表。所以约束对于综合来说是如果不施加约束,综合工具会产生非优化的网表,而这是不能满足要求的网表。所以约束对于综合来说是必不可少的。必不可少的。l综合的基本流程综合的基本流程1.1.准备准备RTLRTL代码:代码
4、: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.分析和解决设计的问题:在设计综合(分析和解决设计的问题:在设计综合(compilecompile)后,根据报告来分析设
6、计中出现的问题,进而修订)后,根据报告来分析设计中出现的问题,进而修订所出现的问题。所出现的问题。9.9.保存设计数据:综合完成后,保存各种数据,以供后续的布局布线使用(需先通过验证)。保存设计数据:综合完成后,保存各种数据,以供后续的布局布线使用(需先通过验证)。l Basic FlowDevelop HDL filesSpecify librariesRead designDefine design environmentSet design constraintsSelectcompile strategyOptimize the designAnalyze and resolvedes
7、ign problemSave the design databaseDesign Compiler简介简介lDesign CompilerDesign Compiler有两种界面供用户使用,一种是命令界面,一种是图形界面。在有两种界面供用户使用,一种是命令界面,一种是图形界面。在UNIXUNIX命令行下分别执命令行下分别执行以下命令可以分别进入上述两种界面:行以下命令可以分别进入上述两种界面:unixunix dc_shell-t dc_shell-t (命令界面)(命令界面)unix unix design_visiondesign_vision(图形界面)(图形界面)lDesign Co
8、mpilerDesign Compiler支持支持TCLTCL(Tool Command LanguageTool Command Language)语言,它是公开的业界标准界面语言。)语言,它是公开的业界标准界面语言。DC-TclDC-Tcl在在TCLTCL的基础上扩展丰富了的基础上扩展丰富了TCLTCL,使用户可以更加灵活方便地运用,使用户可以更加灵活方便地运用TCLTCL命令来对电路进行分析和优化。命令来对电路进行分析和优化。lDCDC中包含了多种工具,如中包含了多种工具,如DFT CompilerDFT Compiler,Power CompilerPower Compiler,HDL
9、 CompilerHDL Compiler,Library CompilerLibrary Compiler等,使等,使得得DCDC具有强大的功能,成为业界最流行的综合工具。具有强大的功能,成为业界最流行的综合工具。目标库和初始环境的设置目标库和初始环境的设置lDCDC启动时会先启动启动时会先启动.synopsys_dc.setup.synopsys_dc.setup文件,它里面设定了综合所需要的工艺库的信息以及一些对于文件,它里面设定了综合所需要的工艺库的信息以及一些对于工具的设定命令。工具的设定命令。l在综合之前,要设定好所需要的库,如综合库、在综合之前,要设定好所需要的库,如综合库、I/
10、OI/O单元库,单元库,IPIP核等。核等。l半导体厂商提供与半导体厂商提供与DCDC兼容的工艺库综合库,它包含许多信息,如单元的功能、面积、时间、功耗、兼容的工艺库综合库,它包含许多信息,如单元的功能、面积、时间、功耗、测试等,线负载模型,工作条件和设计规则约束等。在测试等,线负载模型,工作条件和设计规则约束等。在0.18um0.18um的工艺下,可采用非线性延迟模型(的工艺下,可采用非线性延迟模型(NLDMNLDM)来计算单元的延迟。单元的延迟与输入的逻辑转换时间和输出负载有关。根据每个单元的输入)来计算单元的延迟。单元的延迟与输入的逻辑转换时间和输出负载有关。根据每个单元的输入逻辑转换时
11、间和输出负载,在工艺库提供的查找表(逻辑转换时间和输出负载,在工艺库提供的查找表(Look-Up TableLook-Up Table)中查出单元的延迟。)中查出单元的延迟。l.synopsys_dc.setup.synopsys_dc.setup文件主要包括各种库的设定,变量的设定等。下面具体介绍各种库的意义及如何文件主要包括各种库的设定,变量的设定等。下面具体介绍各种库的意义及如何设定。(实例)设定。(实例)目标库(目标库(target_librarytarget_library):):是是DCDC在做编译(在做编译(compilecompile)的时候来构成电路图的,将电路映射到具体的单
12、元上。例如)的时候来构成电路图的,将电路映射到具体的单元上。例如 set target_library my_tech.dbset target_library my_tech.db链接库(链接库(link_librarylink_library):):是将设计连接到对应的库上,一般包含目标库、宏单元、是将设计连接到对应的库上,一般包含目标库、宏单元、IPIP核等。例如:核等。例如:set link_library“set link_library“*my_tech.db”my_tech.db”。其中。其中“*”指明当链接设计时,指明当链接设计时,DCDC先搜寻内存中已有的库,然后先搜寻内存中
13、已有的库,然后再搜寻变量再搜寻变量link_librarylink_library中制定的其它库。中制定的其它库。符号库(符号库(symbol_librarysymbol_library):):定义了单元显示的图形库,当用定义了单元显示的图形库,当用design_visiondesign_vision来查看图形的时候使用。来查看图形的时候使用。综合库(综合库(synthetic_librarysynthetic_library):):是由是由SynopsysSynopsys公司提供的公司提供的DesignWareDesignWare库,包含了许多库,包含了许多IPIP核及运算单元,用于实现核及
14、运算单元,用于实现verilogverilog描述的运算符描述的运算符,为电路的优化起着重要的作用。,为电路的优化起着重要的作用。搜寻路径(搜寻路径(search_pathsearch_path):):指定各种库的路径,可以将所用的库的路径放入指定各种库的路径,可以将所用的库的路径放入search_pathsearch_path中,在设定中,在设定target_librarytarget_library和和link_librarylink_library时就不必加上库的绝对路径,时就不必加上库的绝对路径,DCDC会自动在会自动在search_pathsearch_path中寻找所用到的库的路径
15、从而读入中寻找所用到的库的路径从而读入该库。该库。.synopsys_dc.setup文件文件变量的设定:设置的变量在变量的设定:设置的变量在DCDC启动时读入,便于综合的处理,同时有些启动时读入,便于综合的处理,同时有些DCDC的变量必须在设置文件中输的变量必须在设置文件中输入。如可以设定命令的简写,保存多少条命令等:入。如可以设定命令的简写,保存多少条命令等:alias cud current_designalias cud current_designalias rpt report_timingalias rpt report_timinghistory keep 300history
16、 keep 300l综合脚本实例(综合脚本实例(.synopsys_dc.setup)系统层次的划分与基本概念系统层次的划分与基本概念l在在DC中,每个设计由中,每个设计由6个设计物体组成,它们分别是个设计物体组成,它们分别是design,cell,port,pin,net和和clock。其中。其中clock是特别的端口,它存在是特别的端口,它存在DC内存中,是用户自己定义的物体。如下图所示:内存中,是用户自己定义的物体。如下图所示:l当前设计为当前设计为TOP。Port和和Pin是与当前设计有关的一对概念,如果当前设计改变,相应的是与当前设计有关的一对概念,如果当前设计改变,相应的port和
17、和pin也也会不同会不同设计读入设计读入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将读入的设计和综合库连接起来。将读入的设计和综合库连接起来。电路的设计目标与约束电路的设计目标与约束lRTL模块综合的流程如下图所示。电路的约束分为设计环境和设计约束,模块综合的流程如下图
19、所示。电路的约束分为设计环境和设计约束,DC以约束为目标进行电路优以约束为目标进行电路优化。化。l设计环境设计环境通过环境约束的设计,将设计所处的真实环境因素包含进去,使得设计可以正常工作在真实环境下。通过环境约束的设计,将设计所处的真实环境因素包含进去,使得设计可以正常工作在真实环境下。环境约束如下图所示环境约束如下图所示:lset_operating_conditions描述了设计的工艺、电压及温度条件。描述了设计的工艺、电压及温度条件。Synopsys库包含这些条件的描述,库包含这些条件的描述,通常为通常为WORST,TYPICAL,BEST情况。工作条件的名称可库的名称是相关的,如情况
20、。工作条件的名称可库的名称是相关的,如SMIC 0.18um工艺工艺提供提供slow.db,typical.db,fast.db三种工艺库,它们的工作条件分别是三种工艺库,它们的工作条件分别是slow(WORST),typical(TYPICAL)和和fast(BEST)。)。WORST情况通常用于综合阶段,而情况通常用于综合阶段,而BEST情况通常用于修正保持情况通常用于修正保持时间违规。有时可能同时用时间违规。有时可能同时用WORST和和BEST情况同时优化设计,这时使用命令:情况同时优化设计,这时使用命令:set_operating_conditions-max slow-max_lib
21、rary slow -min fast -min_library fastl可以用可以用set_min_library指定指定best和和worst两种库,在设计中所用到的库都可以指定。如两种库,在设计中所用到的库都可以指定。如:#为综合用的为综合用的sram库指定最佳情况可最坏情况库指定最佳情况可最坏情况set_min_library sram_slow.db min_vision sram_fast.dblset_wire_load_model命令为命令为DC提供估计的线负载信息,反过来提供估计的线负载信息,反过来DC使用线载信息把连线延迟建模为负使用线载信息把连线延迟建模为负载的函数,载
22、的函数,Synopsys工艺库里提供了多种线载模型,每个模型代表一个特定大小的模块。设计人员需工艺库里提供了多种线载模型,每个模型代表一个特定大小的模块。设计人员需要准确地选择线载模型。设置线载模型命令如下:要准确地选择线载模型。设置线载模型命令如下:set_wire_load_model name smic18_wl10 library slowlset_wire_load_mode定义了三种同建模线负载模型相关的模式,分别是定义了三种同建模线负载模型相关的模式,分别是top,segmented和和enclosed,如下图所示:,如下图所示:1.top模式定义层次中所有连线将继承和顶层模型同
23、样的线载模型。如上图中,所有的连线都继承顶层模式定义层次中所有连线将继承和顶层模型同样的线载模型。如上图中,所有的连线都继承顶层的线载模型的线载模型50 x50。2.segmented模式用于跨越层次边界的连线。如上图中,子模块模式用于跨越层次边界的连线。如上图中,子模块A和子模块和子模块B中的连线继承各自的线载中的连线继承各自的线载模型,而模型,而A与与B之间的连线继承模块之间的连线继承模块MID的线载模型。的线载模型。3.enclosed模式指定所有的连线(属于子模块的)将继承完全包含该子模块的模块线载模型。如上图模式指定所有的连线(属于子模块的)将继承完全包含该子模块的模块线载模型。如上
24、图中,整条连线处于模块中,整条连线处于模块MID的完全包围中,所以采用的完全包围中,所以采用40 x40线载模型。其命令如下线载模型。其命令如下set_wire_load_mode enclosedlset_driving_cell和和set_drive用于设置模块输入端口的驱动能力。用于设置模块输入端口的驱动能力。set_drive命令用于指定输入端口的命令用于指定输入端口的驱动强度,它主要用于模块或芯片端口外驱动电阻。驱动强度,它主要用于模块或芯片端口外驱动电阻。set_driving_cell用于对输入端口的驱动电阻进行用于对输入端口的驱动电阻进行建模,这一命令将驱动单元的名称作为其参数
25、并将驱动单元的所有设计规则约束应用于模块的输入端建模,这一命令将驱动单元的名称作为其参数并将驱动单元的所有设计规则约束应用于模块的输入端口。口。set_driving_cell lib_cell and2a0 get_ports IN1 library slowset_drive 10 get_ports Data_in_0lset_load将工艺库中定义的单位(通常为将工艺库中定义的单位(通常为pf)上的容性负载设置到设计的指定连线或端口,设置输出)上的容性负载设置到设计的指定连线或端口,设置输出端口的负载。端口的负载。set_load 5 get_ports OUT1set_load lo
展开阅读全文