(图片来源网络,侵删)
综合流程通常所说的综合是指逻辑综合。逻辑综合就是使用综合工具将较高层次的 RTL 级描述转换为基于目标工艺库和特定约束条件的门级网表的过程。综合的结果是基于约束文件的,DC将我们用硬件描述语言描述的设计转换成经过优化过后的门级网标,如果这些网标经过DC优化后能够满足我们的约束(PPA),就可以将这些网标传递给后端用于物理实现。DC综合工具的运行通常有以下三种模式:1)、DC Expert 模式:在该模式下,综合工具使用设置的线负载模型进行设计的面积、时序以及功耗的优化。通过dc_shell命令激活该模式2)、DC Ultra模式:在该模式,工具会在综合阶段考虑post-layout的信息,并基于此进行PPA的优化(而不是线负载模型),在该模式下得到的综合网标与最终的物理设计相关性更高;同时基于此能够在项目早期预估当前设计是否存在拥塞,以便在项目前期暴露问题。通过dc_shell -topographical_mode命令激活该模式3)、GUI模式,提供 Expert及Ultra模式下所有的特性,并以图形的方式能够实时看到当前约束对设计的影响等。综合的流程及过程优化可以看上图所示,其主要包括转译(Translation)、映射(Mapping)、优化(Optimization)三个过程。其中,翻译(Translation)是把前端提供的RTL转换成与特定工艺无关的逻辑电路,对于DC来说就是转换成GTECH文件;映射(Mapping),是把转译后得到的电路结构用特定目标工艺库中的单元来实现。这时得到的电路包含了具体的制造工艺参数。优化(Optimization),则是综合工具根据设计者施加的时序和面积等约束条件对电路进行改进的过程。综合工具根据设定的参数采用一定的算法来使设计尽量满足设计要求。.综合准备在进行芯片设计的时候,第一件你需要考虑的事情就是你想要使用的半导体供应商和技术,在选择的过程中你需要基于下面这些问题综合考虑:1)、芯片最大的工作频率2)、物理约束3)、功率约束4)、封装约束5)、时钟树的实现6)、版图布局7)、工艺支持8)、一些第三方的IP,包括RAM等9)、测试方法以及模式等2.1、Library Requirements在wire load mode(Expert )模式下,DC综合工具使用logic,symbol和Design Ware库。在topographical(Ultra)模式下,DC综合工具使用logic,symbol和Design Ware库以及physical库,也可以提供TLUPlus文件用于在Ultra模式下RC参数的估计(此项非必须)。Logic librarysLogic librarys由半导体供应商维护和提供,包含关于每个单元的特性和功能的信息,如单元名称、引脚名称、区域、延迟弧和引脚加载。它们还定义了必须满足的条件,例如,nets的最大转换时间。这些条件被称为设计规则约束。此外,逻辑库指定了特定技术的操作条件和线负载模型。DC支持使用非线性延迟模型(NLDMs)或者复合电流源(CCS)模型。DC会根据逻辑库的内容自动选择要使用的定时模型的类型。如果库同时包含NLDM和CCS模型,则工具会优先使用CCS模型。在DC综合和优化期间,为了节约综合时间,并不会使用所有的CCS库中数据。通常semiconductor vendor 提供的logic library格式都以.dB为后缀的文件,如果semiconductor vendor提供的并不是.dB文件可以使用library compiler进行格式的转换。DC使用逻辑库用于以下目的:1)、Implementing the design functionTarget_library: 其中用于mapping及Optimization的library叫做target_liabrary,它是link_library的子集。Link_library:link_liabrary用于网标生产过程中参考cells的映射,例如设计中使用的一些第三方IP或者一些特殊的cells等。Logic librarys还包含了设计网标中cell的延时以及功耗信息,用于路径延时的估计以及设计的功耗计算。注意:DC使用在link_library变量中找到的第一个逻辑库作为主库。它使用主库来获得针对操作条件、导线负载选择组、导线负载模式和净延迟计算的默认值和设置。如果其他库具有不同于主库单元的测量单位,设计编译器将将所有单元转换为主库中指定的单元。Symbol librarysSymbol librarys用于使用cells的符号定义,当你在DC中想查看综合后电路的原理图时,你必须定义symbol librars。DC的安装目录下都包含了一个默认的symbol library($SYNOPSYS_ROOT/libraries/syn),generic.sdb,在通过软件加载原理图的时候,DC首先会检查你定义的symbol library 如果找不到就会在该目录下查找该默认文件。如果你的设计网标有个别cell在symbol library中为找到对应符号,那工具会默认将该cell用一个矩形来代替。Design Ware librarysDesign ware库是一个可重复利用的电路设计集合,其是SYNOPSYS提供的一些可重复利用电路,已经与DC工具进行了深度绑定,在综合的时候,工具会根据你的设计约束自动在该集合中找到满足的要求且最具性价比的电路模块代替。正常而言,如果Designware的licence可用,那么DC工具在启动时会自动加载dw_foundation.sldb库Physical librarys如果你要在topographical 模式下使用DC,则除了指定逻辑库之外,还需要指定物理库。如果想要将当前设计保存为milkway格式,那么需要以下这些文件信息:1)、Milkway reference library:包含了标准单元cells和宏的物理信息,在topographical模式下,Milkway使用FRAM信息去保存信息;reference library还定义了最小的布线间隙及布线方向等信息。2)、Synopsys technology file:tf文件包含了设计布线所需的特定信息。2.2、Library setup逻辑库设定通过2.1节我们知道在不同的DC模式下,需要制定的库,那么接下来我们就是通过脚本来设置各自库文件。在设定库文件的时候,你可以通过绝对地址设置或者只设置库名称,如果只设置了库名称,那么DC工具会在你定义的系统变量$search_path下进行查找,默认情况下serarch_path包含了当前工作目录及软件安装目录$SYNOPSYS/libraries/syn,且以第一个找到的为准。例如:set_app_var target_library [list_of_standard_cell_libraries]set_app_var synthetic_library [list_of_sldb_files_for_DesignWare]set additional_link_lib_files [additional_libraries]set_app_var link_library [list $target_library \ $additional_link_lib_files $synthetic_library]默认情况下不需要知道Desiginware library,因为工具会自动加载安装目录下的DW库,但是如果你除了工作默认的DW库外还有另外的DW库,那么你必须要通过synthetic library进行制定,并且需要将此DW库加入link_library中。set_app_var synthetic_library {dw_foundation.sldb}set_app_var link_library [list $target_library \ $additional_link_lib_files $synthetic_library]默认情况下,link_library中的库将同时用于最差和最好的时序分析,如果想根据不同的库进行不同的时序分析,那么需要进行独立的设定,通过set_min_library来进行minimum时序分析。set_app_var link_library { maxlib.db}set_min_library maxlib.db -min_version minlib.db物理库设定使用create_mw_lib命令创建Milkway库create_mw_lib -technology $mw_tech_file -mw_reference_library $mw_reference_library $mw_design_library_name打开创建的Milkway库使用open_mw_lib命令。open_mw_lib $mw_design_library_name(可选非必须)通过使用set_tlu_plus_files命令设置附加TLUPlus文件(它可以提供更准确的电容和电阻数据)。set_tlu_plus_files -max_tluplus $max_tlu_file -min_tluplus $min_tlu_file -tech2itf_map $prs_map_file举例说明:下面通过一个实际脚本进行库设定的说明,具体如下图所示:首先,定义工具综合所需的各种库文件。其次,将库文件定义到综合工具对应的各类变量上。上述文件编写成功后,就可以启动DC进行库的读入,我们在Terminal中输入dc_shell -topo启动DC,然后依次source上述文件,就成功进行了库的读入及设定。库文件读入后,可以通过如下DC自带的TCL命令,查看库的读入是否成功。例如:Printvar target_libraryPrintvar link_library 等也可以通过check_librarycheck_tlu_plus_files分别检查Logical库和physical库的一致性以及TLUPus及tf文件的一致性等。库设定完成之后,并且检查无误后,我们就可以读入我们的设计,这些将在后续章节介绍。
0 评论