ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Design Compiler:Milkyway库的创建与使用

Design Compiler:Milkyway库的创建与使用 相关阅读Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482目录Milkyway参考库技术文件高阶RC模型文件和映射文件Milkyway设计库写在最后DC Ultra在2005版本推出了拓扑模式在综合时会对标准单元进行粗布局(Coarse Placement)并使用虚拟布线(Virtual Routing)技术计算互联延迟关于拓扑技术的更详细介绍可以参考下面的博客。Design Compiler什么是拓扑技术(Topographical)https://chenzhang.blog.csdn.net/article/details/145748306由于拓扑模式需要使用物理信息即除了逻辑库之外还需要使用物理库它可以是Milkyway库 DC Ultra、DC Graphical、DC NXT与IC Compiler支持或者NDM库DC NXT与IC Compiler II支持物理库中包括了标准单元、IP单元、宏单元的视图(View)。注意老版的.pdb格式的物理库已经被抛弃了。Milkyway库是Synopsys Galaxy设计平台包括Design Compiler、IC Compiler、Custom Designer、Formality、PrimeTime、PrimeRail、StarRC、IC Validator的统一设计存储格式。该数据库提供持久化数据存储将Galaxy平台工具相互连接从而避免使用大型的中间交换文件并防止使用其他数据交换格式时可能发生的设计意图丢失。插个题外话Galaxy设计平台是Synopsys在2002年收购了Avant!后推出的在这次收购前Avant!和Cadence有过长达六年多的法律与商业纠葛除了Milkyway格式Avant!当时的产品有Apollo、Astro、Jupiter、StarRC、Saturn、Mars、Hercules、HSPICE等不得不说Avant!是真爱天文学这次收购大大加强了Synopsys在后端物理实现领域的实力并直接催生出了2005年IC Compiler(ICC)的诞生该工具由Synopsys自己的Physical Compiler和Astro整合而来并在之后又吸收了Jupiter的布图规划能力。本文就将介绍Milkyway库创建与使用。Milkyway参考库Milkyway参考库以目录的形式存在这与逻辑库不同不同类别的单元以不同的目录表示例如标准单元、IP单元、宏单元每个目录包含几个子目录CEL、FRAM等分别代表不同的视图这些视图通常由其他格式的源文件通过Milkyway工具生成例如GDSII、OASIS、LEF文件。下面的例子展示了Milkyway参考库的结构。physical_libs/ ├── IP_lib/ │ ├── CEL/ │ └── FRAM/ │ ├── Std_Cell_lib/ │ ├── CEL/ │ │ ├── and2a1:1 │ │ ├── and2a2:1 │ │ └── xor3a27:1 │ └── FRAM/ │ ├── and2a1:1 │ ├── and2a2:1 │ └── xor3a27:1 │ └── Macro_lib/ ├── CEL/ └── FRAM/CEL目录下包含了单元的完整布局视图会在布局布线(PR)完成后被IC Compiler使用当设计准备好tape out时该视图用于将设计的完整布局表示导出为标准格式的GDSII文件。这个文件必须包含设计的所有物理数据而不仅仅是PR阶段所用的抽象数据。图1展示了一个在IC Compiler中打开的两输入或门的CEL视图。FRAM目录下包含了单元的抽象视图会在布局布线(PR)阶段被IC Compiler使用以及在综合阶段被Design Compiler使用。图2展示了一个在IC Compiler中打开的两输入或门的FRAM视图。图1 FRAM视图在旧版本的Milkyway参考库中还存在包含了单元的逻辑视图的LM目录包含时序视图的TIM目录和包含功耗视图的PWR目录但现在这些信息通常用Milkyway数据库外部的Synopsys数据库文件.db文件中单独维护而.db文件通过Library Compiler工具由Liberty文件.lib文件生成。技术文件技术文件是针对每种工艺技术唯一的描述文件为所有工艺层定义参数包括层名、层编号、显示用的颜色和图案、设计规则如线宽(defaultWidth)、间距(pitch)等、通孔接触定义包括上下金属层、金属包围等、Tile(Site)定义、默认通孔阵列规则、区域定义等信息。Design Compiler可以利用技术文件建立简单的RC模型用于计算互连的RC参数。下面的例子展示了技术文件的内容。Technology { name cb1314 dielectric 3.73e-05 unitTimeName ns timePrecision 1000 unitLengthName micron ... } Layer METAL1 { layerNumber 14 maskName metal1 pitch 0.41 defaultWidth 0.16 minWidth 0.16 ... }更多详细信息可以参考Synopsys Technology File and Routing Rules Reference Manual。高阶RC模型文件和映射文件TLUPlus文件用于存储高阶RC查找表主要用于建模超深亚微米工艺效应如包覆介电层、金属填充、浅沟槽隔离、铜凹陷包括密度分析和宽度/间距、梯形导体等。TLUPlus文件本身是二进制格式但它可以通过将ASCII格式的ITF文件通过StarRC编译而来通过grdgxenxo程序。下面的例子展示了TLUPlus文件头部的注释这也是来自ITF文件。# TECHNOLOGY1314max # CONDUCTOR cm4 { THICKNESS0.90 WMIN0.44 SMIN0.46 RPSQ0.060 } # CONDUCTOR cm3 { THICKNESS0.35 WMIN0.20 SMIN0.21 RPSQ0.081 } # CONDUCTOR cm2 { THICKNESS0.35 WMIN0.20 SMIN0.21 RPSQ0.081 } # CONDUCTOR cm1 { THICKNESS0.26 WMIN0.16 SMIN0.18 RPSQ0.109 } # CONDUCTOR poly { THICKNESS0.18 WMIN0.13 SMIN0.20 RPSQ10.965 } ... # DIELECTRIC cm4_extra1 { THICKNESS0.23 ER3.7 } # DIELECTRIC cm4_extra2 { THICKNESS0.03 ER8.1 } # DIELECTRIC cm4_extra3 { THICKNESS0.09 ER3.7 } ...除了使用TLUPlus文件还可以使用nxtgrd文件也可以通过grdgxenxo程序编译而来它是比TLUPlus文件还准确的RC模型文件StarRC工具用该文件进行寄生参数提取但是对于Design Compiler而言使用的依然是其中的TLUPlus数据因此结果是一致的该功能由2017版本引入。映射文件用于将RC模型文件中的层名与技术文件中的层名进行映射如图3所示。如果RC模型文件中的层名与技术文件中的层名完全一致则可以不指定映射文件如果两者不一致且未指定映射文件流程后期将报错。图3 映射文件Milkyway设计库要使用物理库用户必须创建一个Milkyway设计库它充当一个容器存储了技术文件和Milkyway参考库的路径注意不是参考库本身且路径可以是绝对路径或相对路径相对路径指的是相对Milkyway设计库而不是当前工作目录如果用户选择将设计以CEL视图保存在Milkyway设计库中Milkyway设计库中还有设计相关的信息和TLUPlus数据但很遗憾Design Compiler中没有open_mw_cel命令所以并不能重新读取保存为CEL视图的设计因此将设计保存为ddc格式可能更好。使用create_mw_lib命令创建Milkyway设计库同时必须使用-technology选项指定技术文件可以使用-mw_reference_library选项指定Milkyway参考库也可以选择之后指定但必须在综合前指定如下所示。对于Milkyway库而言无论是技术文件、Milkyway参考库还是Milkyway设计库的路径都只能使用绝对路径或相对路径而不会考虑search_path变量这点与NDM库、目标库、链接库有区别。dcnxt_shell-topo create_mw_lib *** -technology *** -mw_reference_library *** // 需要注意对于-mw_reference_library选项而言如果使用相对路径则该相对路径是相对Milkyway设计库而不是当前工作目录需要注意的是Milkyway设计库的创建需要在未打开Milkyway设计库时进行因为Milkyway设计库的创建涉及到短暂打开库并关闭的过程。如果在已打开Milkyway设计库的情况下创建Milkyway设计库会出现下面的错误。Error: Fail to create library. Only one library can be opened for editing. (MWUI-290)建议在读取设计前创建或打开Milkyway设计库这对于NDM库是强制要求的。如果Milkyway参考库的位置改变了或者需要重新指定Milkyway设计库的参考库可以使用set_mw_lib_reference命令如下所示。dcnxt_shell-topo set_mw_lib_reference *** -mw_reference_library *** // 需要注意对于-mw_reference_library选项而言如果使用相对路径则该相对路径是相对Milkyway设计库而不是当前工作目录需要注意的是set_mw_lib_reference命令也只能在未打开Milkyway设计库时进行即使设置的设计库就是被打开的那个否则会出现下面的错误。Error: Fail to set mw reference libraries for *** (MW-215)可以使用set_mw_technology_file命令重新指定Milkyway设计库的技术文件如下所示。dcnxt_shell-topo set_mw_technology_file *** -technology ***需要注意的是set_mw_technology_file命令也只能在未打开Milkyway设计库时进行除非设置的设计库就是被打开的那个否则会出现下面的错误。ERROR : Fail to open library *** for write使用open_mw_lib命令可以打开一个Milkyway设计库但无法打开其中的CEL视图如果在之前保存了的话如下所示。使用current_mw_lib命令可以查询打开的Milkyway设计库。dcnxt_shell-topo open_mw_lib ***如果在打开了Milkyway设计库的情况下再次尝试打开其他设计库则会出现下面的错误。Error: only one library can be opened as main library. (MWUI-209)使用report_mw_lib -mw_reference_library命令可以查看Milkyway设计库中保存的的参考库路径可以是绝对路径或相对路径如下所示。dcnxt_shell-topo report_mw_lib -mw_reference_library想要查看Milkyway设计库中保存的技术文件信息比较麻烦需要使用write_mw_lib_files命令将其输出为文件后再查看如下所示。dcnxt_shell-topo write_mw_lib_files *** -technology -output ***.tf使用set_tlu_plus_files命令可以指定RC模型文件和映射文件如下所示。dcnxt_shell-topo set_tlu_plus_files -max_tluplus *** -min_tluplus *** -tech2itf_map ***需要注意的是如果选择将设计保存为CEL视图则TLUPlus数据是跟随设计一起保存的但又无法被Design Compiler重新读取因此在使用之前保存了CEL视图的Milkyway设计库时需要重新使用set_tlu_plus_files命令。使用write_milkyway命令Design Compiler特有命令可以将设计以CEL视图保存为mw_design_library变量指定的Milkyway设计库如下所示。该变量通常无需用户设置因为open_mw_lib命令会自动将其设置为将打开的Milkyway设计库设置该变量甚至可以完成将一个设计保存到另一个完全不相关的Milkyway设计库中。dcnxt_shell-topo write_milkyway -output ***上面的-output选项指定了设计文件名最好和设计名一致。设计文件会保存在mw_design_library变量指定的Milkyway设计库中的CEL目录下还会有类似:1形式的后缀这在Milkyway参考库中也存在在最后会进行说明这表示设计文件的版本如果以同一个名字多次保存设计版本号则会自动递增除非使用-overwrite选项指定覆盖最新版本的设计文件。需要注意的是在将设计保存为CEL视图之前需要保证设计是已映射的且唯一化的关于唯一化的更详细介绍可以参考下面的博客。SDC命令详解使用uniquify命令进行唯一化https://blog.csdn.net/weixin_45791458/article/details/148564739?ops_request_misc%257B%2522request%255Fid%2522%253A%25227917092785529b70a6fce5a75c531564%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_id7917092785529b70a6fce5a75c531564biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-148564739-null-null.nonecaseutm_term%E5%94%AF%E4%B8%80%E5%8C%96spm1018.2226.3001.4450使用close_mw_lib命令可以关闭一个Milkyway设计库需要注意的是这也会导致设计被移除如下所示。dcnxt_shell-topo close_mw_lib ***在将设计保存为Milkyway设计库中的CEL视图时读者是否会疑惑这不是与Milkyway参考库目录下的CEL子目录很相似吗是的实际上参考库的概念不是绝对的而是相对的换句话说一个Milkyway库是设计库还是参考库取决于它的使用方式而不是严格定义的。对于包含了标准单元、IP单元、宏单元的Milkyway库而言它们只能作为Milkyway参考库供Milkyway设计库使用当然也可以用open_mw_lib命令打开这些Milkyway库此时它们就成为了Milkyway设计库但一般不会这么做而对于包含了设计的Milkyway库而言它即可以使用其他Milkyway参考库也可以作为Milkyway参考库被其他Milkyway设计库使用这通常用于层次化设计如图4所示。图4 参考库和设计库的关系1在图2中mw_lib_B库是mw_lib_A库的参考库同时也是设计库它的参考库是mw_lib_C库。需要注意的是mw_lib_C库中的单元并不能直接在mw_lib_A库中使用也就是说参考关系不能传递除非将mw_lib_C库也设置为mw_lib_A库的参考库如图5所示。图5 参考库和设计库的关系2写在最后虽然Milkyway库已略显过时被最新的NDM库DC NXT与IC Compiler II支持代替但对于那些因为种种原因还在使用DC Ultra、Design Compiler Graphical或IC Compiler的用户来说它依然是一个重要的概念这也是本文存在的意义。部分Milkyway库和NDM库相关命令的对应关系如图6所示。图6 物理库相关命令部分关于Milkyway库的更多详细信息可以参考Milkyway Database Application Note关于NDM库的更多详细信息可以参考Library Manager User Guide。
返回列表