Tcl与DesignCompiler(三)——DC综合的流程
1、基本流程概述
⾸先给三个图,⼀个图是⾼层次设计的流程图:
下⾯是我对这张图的理解:
①设计之前,准备好库、HDL代码的思想、约束⽣成;然后根据设计思想⽤ RTL 源码详细地、完整地为设计建⽴模型、定义设计中寄存器结构和数⽬、定义设计中的组合电路功能、定义设计中寄存器时钟等等的设计规格和实现。
②完成 RTL 源码设计之后,应让设计开发与功能仿真并⾏进⾏:
·在设计开发阶段,我们使⽤ DC 来实现特定的设计⽬标(设计规则和优化约束),以及执⾏默认选项的初步综合.
·如果设计开发结果未能在 10%的偏差范围内满⾜时序⽬标,则需要修正 HDL 代码,然后重复设计开发和功能验证的过程.
·在功能仿真中,通过特定的⼯具来确定设计是否能按如所需的功能⼯作.
·如果设计未能满⾜功能要求, 我们必须修改设计代码以及重复设计开发和功能仿真. 继续设计开发和功能仿真直⾄设计功能正确及满⾜⼩于 10%偏差的时序⽬标.
③使⽤ DC 完成设计的综合并满⾜设计⽬标.这个过程包括三个步骤,即综合=转化+逻辑优化+映射,
⾸先将 RTL 源代码转化为通⽤的布尔等式,然后设计的约束对电路进⾏逻辑综合和优化,使电路能满⾜设计的⽬标或者约束,最后使⽤⽬标⼯艺库的逻辑单元映射成门
级⽹表,在将设计综合成门级⽹表之后,要验证此时的设计是否满⾜设计⽬标.如果不能满⾜设计⽬标,此时需要产⽣及分析报告确定问题及解决问题
④当设计满⾜功能、时序以及其他的设计⽬标的时候,需要执⾏物理层设计最后分析物理层设计的性能,也就是使⽤DC的拓扑模式,加⼊floorplan的物理信息后进⾏综合分析设计的性能。如果结果未能满⾜设计⽬标,应返回第三步.如果满⾜设计⽬标,则本部分设计周期完成.
⼀个图是DC在设计流程中的位置:
这个图将上⾯的流程图细化,着重与DC的部分,描述了使⽤DC进⾏逻辑综合时要做的事,同时,也是对前⾯的流程图解说的图形概述。在综合的时候,⾸先DC的HDL compiler把HDL代码转化成DC⾃带的GTECH格式,然后DC的library compiler 根据标准设计约束(SDC)⽂件、IP-DW库、⼯艺库、图形库、(使⽤拓扑模式时,还要加⼊ICC⽣成的DEF模式,加载物理布局信息)进⾏时序优化、数据通路优化、功耗优化(DC的power compiler进⾏)、测试的综合优化(DC的DFT compiler),最后得到优化后的⽹表。
最后⼀个图是,使⽤DC进⾏基本的逻辑综合的流程图与相应的命令:
这个图给出了使⽤DC进⾏逻辑综合时的基本步骤,我们根据这个图运⾏DC,下⾯是这个图的具体解说:
①准备设计⽂件,DC 的设计输⼊⽂件⼀般为 HDL ⽂件。
②指定库⽂件,需要指定的库⽂件包括:
链接库(link library)、⽬标库(target library)、符号库(symbol library)、综合库(synthetic library)
design翻译 下⾯是库的解释,具体的解释在后⾯有说,这⾥先进⾏简单地概述⼀下:
Link library & target library
Link library 和 target library 统称为 technology library(即⼯艺库,习惯称之为综合库),technology library 由半导体制造商提供,包含相关 cell 的信息及设计约束标准,其中:
Target library: 在门级优化及映射的时候提供⽣成⽹表的 cell,即DC ⽤于创建实际电路的库。
Link library: 提供设计⽹表中的 cell,可以跟target_library使⽤同⼀个库,但是 DC 不⽤ link library中的 cell 来综合设计。
当DC 读⼊设计时,它⾃动读⼊由link library 变量指定的库。当连接设计时,DC 先搜寻其内存中已经有的库,然后在搜寻由link library 指定的库。
注:当读⼊的⽂件是门级⽹表时,需要把 link library 指向⽣成该门级⽹表的库⽂件,否则 DC 因不知道⽹表中门单元电路的功能⽽报错。关于⼯艺库⾥⾯的具体内容,后⾯会专门进⾏说明。
Symbol library
Symbol library 提供 Design Vision GUI 中设计实现的图形符号,如果你使⽤脚本模式⽽不使⽤ GUI,此库可不指定 Symbol library
Synthetic library
即为 Designware library ,名字上翻译是综合库,但却常称之为IP库,⽽不是直译。特殊的 Designware library 是需要授权的(⽐如使⽤多级流⽔线的乘法器),默认的标准 Designware 由 DC 软件商提供,⽆需指定。
Create_mw_lib :主要使⽤DC的物理综合的时候,需要⽣成物理库
③读⼊设计:
设计的读⼊过程是将设计⽂件载⼊内存,并将其转换为DC 的中间格式,即GTECH 格式,GTECH 格式由“soft macros” 如adders, comparators 等组成,这些组件来⾃ synopsys 的 synthetic lib,每种组件具有多种结构。
读⼊设计有两种实现⽅法实现⽅法:read 和 analyze & elaborate(实际上
read 是 analyze 与 elaborate 的打包操作),下⾯介绍⼆者在使⽤中的区
别:
从中可以看到,analyze & elaborate 可以⾃由指定设计库,并⽣成 GTECH中间⽂件前⽣成.syn ⽂件存储于 work ⽬录下,便于下次 elaborate 节省时间,我们⼀般选择 analyze & elaborate 的⽅法读
⼊设计。
④定义设计环境:
定义对象包括⼯艺参数(温度、电压等),I/O 端⼝属性(负载、驱动、扇出),
统计 wire-load 模型,设计环境将影响设计综合及优化结果。
⑤设置设计约束:
设计约束包括设计规则约束和优化约束,设计规则约束(design rule
constraint)由⼯艺库决定,在设计编译过程中必须满⾜,⽤于使电路能按功能要求正常⼯作。设计优化约束定义了DC 要达到的时序和⾯积优化⽬标,该约束由⽤户指定,DC 在不违反设计规则约束的前提下,遵循此约束综合设计。
⑥选择编译策略:
对于层次化设计,DC 中有两种编译策略供选择,分别为 top down 和 bottom
up。在 top down 策略中,顶层设计和⼦设计在⼀起编译,所有的环境和约束设置针对顶层设计,虽
然此种策略⾃动考虑到相关的内部设计,但是此种策略不适合与⼤型设计,因为 top down 编译策略中,所以设计必须同时驻内存,硬件资源耗费⼤。在 bottom up 策略中,⼦设计单独约束,当⼦设计成功编译后,被设置为dont_touch 属性,防⽌在之后的编译过程中被修改,所有同层⼦设计编译完成后,再编译之上的⽗设计,直⾄顶层设计编译完成。Bottom up 策略允许⼤规模设计,因为该策略不需要所有设计同时驻⼊内存。
⑦编译:
⽤ Compile 命令执⾏综合与优化过程,还可以利⽤⼀些选项指导编译和优化过程。
⑧分析及解决设计中存在的问题
DC 可以产⽣⼀些报告以反应设计的综合和优化结果,如:时序、⾯积、约束等报告,这些报告有助于分析和解决设计中存在的问题以改善综合结果,我们还可以利⽤ check_design 命令检验综合的设计的⼀致性。
⑨存储设计数据
DC 不会⾃动存储综合后的设计结果,因⽽需要在离开 DC 时⼿动存储设计数据。⽐如存储⽹表、延时信息等数据⽂件。
2、实战
在这⾥,我们将实战⼀下,做⼀下实验,让⼤家体验⼀下流程:
·⾸先准备好⽂件:
这个.synopsys_dc.setup⽂件(包含了com、dc_setup)、⽂件是需要我们书写的,这⾥以及写好了,我们来看⼀下就好了。.synopsys_dc.setup的内容:
然后我们移步到l和l的内容:
l⽂件定义了库的名字和名称,上⾯是逻辑库,下⾯物理库:
5⾏:定义库的搜索路径,当不到库时,从这个路径中寻
8⾏:定义target library使⽤的库(注意,只是定义⼀个变量)
10⾏:定义图形库变量
15⾏:定义顶层设计库的变量名称
17⾏:定义milkyway(参考)库(的位置)
19⾏:定义⼯艺库(的位置)
21⾏:定义寄⽣参数库(的位置)
23⾏:定义⼯艺库和寄⽣参数库的映射关系库(的位置)
l的内容:
l⽂件就是指定库了,⽽不是单单地定义了,ser_app_var是定义DC内部变量,4~7这是指定搜索路径个各种库的路径和名称下⾯的物理库设置中:
13⾏:指定milkyway(参考)库的名称
14⾏:指定当前设计的库的名称
16⾏:创建milkyway库,格式如图上⾯,需要⼯艺库、参考、当前设计库
19⾏:打开当前的设计库
20⾏:加载寄⽣参数(库)
·启动DC
这⾥是流程演⽰,因此我们使⽤图形化的⽅式启动:
design_vision -topo
·读⼊设计前的检查
-->检查库是否正确设置:
-->检查逻辑库和物理课的⼀致性:
Check_library
检查可能不会通过,结果不影响综合的话,可以忽略
-->检查寄⽣参数⽂件和⼯艺库⽂件的⼀致性:(物理综合的时候需要检查)
check_tlu_plus_files
通过的话会有三个passed
·读⼊设计和查看设计
-->读⼊设计:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论