Design Compile 是 synopsys 的综合软件,它的功能是把 RTL 级的代码转化为门级 表。
综合包括:
- 转译(translation),在转译的过程中,软件自动将源代码翻译成每条语句所对应的功能模块以及模块之间的拓扑结构,这一过程是在综合器内部生成电路的布尔函数的表达,不做任何的逻辑重组和优化。
- 优化(Opitimization),基于所施加的一定时序和面积的约束条件,综合器按照一定的算法对转译结果作逻辑优化和重组。
- 检查库是否正确设置
- 检查逻辑库和物理库的一致性(检查可能不会通过,结果不影响综合的话,可以忽略)
- 检查寄生参数文件和工艺库文件的一致性:(物理综合的时候需要检查)
- 读入代码
- 读入代码后,查看顶层设计
- link设计:查看当前综合的设计是否缺少子模块,返回值为1,说明子模块完整。
- 检查当前设计的连接性层次性(设计是否有问题)check_design:check_design 返回值为1则正确
- 以ddc的格式保存未映射的设计(注意需要先创建unmapped文件夹,但每次改变verilog时,都要重新刷新此句)
- 查看内存中的设计与库
分析工艺库,得出相关信息
芯片供应商提供的库通常有 max,type,min 三种类型,代表操作环境为最坏(worst),典型(type),最好(best)三种情况。芯片的操作环境包括:操作温度,供电电压,制造工艺偏差和RC 树模型。
导线负载模型(导线也具有电阻和电容,也会有延时)
库里面对每个单元都有描述,比如该单元的功能,时间,面积等等。除此之外,对于单元的每个引脚还提供有设计规则约束(DRC), 这些值由设计工艺决定,只有满足这些条件的单元在运行时才会操作正常,因此在设计中有很高的权重。
延时计算最常见的是 CMOS 非线性查找表模型。
工艺库文件的配置放在三个地方,A:软件安装目录$SYNOPSYS/admin/setup。B:~user,用户安装目录。C:DC startup directory前两个目录是早已配置好,最好不要动的;第三个目录放在工作目录下的隐藏目录:.synopsys_dc.setup,通过ls -al才能看到此文件。
时序约束的基本知识:
约束对象:
set_app_var target_library 22nm.db #对于DC内部原变量,最好使用第二种方法,set_app_var会检查变量拼写是否为内部变量,若拼写错误,则出现error。
(1)准备设计文件,DC 的设计输入文件一般为 HDL 文件
(2)指定库文件
(3)读入设计:设计的读入过程是将设计文件载入内存,并将其转换为 DC 的中间格式,即GTECH 格式,GTECH 格式由“soft macros” 如 adders, comparators 等组成,这些组件来自 synopsys 的 synthetic lib,每种组件具有多种结构。
(4)定义设计环境: 定义对象包括工艺参数(温度、电压等),I/O 端口属性(负载、驱动、扇出), 统计 wire-load 模型,设计环境将影响设计综合及优化结果。
(5)设置设计约束:设计约束包括设计规则约束和优化约束,设计规则约束(design rule constraint)由工艺库决定,在设计编译过程中必须满足,用于使电路能按功能要求正常工作。设计优化约束定义了 DC 要达到的时序和面积优化目标,该约束由用户指定,DC 在不违反设计规则约束的前提下,遵循此约束综合设计。
(6)选择编译策略:
对于层次化设计,DC 中有两种编译策略供选择,分别为 top down 和 bottom up。在 top down 策略中,顶层设计和子设计在一起编译,所有的环境和约束设置针对顶层设计,虽然此种策略自动考虑到相关的内部设计,但是此种策略不适合与大型设计,因为 top down 编译策略中,所以设计必须同时驻内存,硬件资源耗费大。在 bottom up 策略中,子设计单独约束,当子设计成功编译后,被设置为 dont_touch 属性,防止在之后的编译过程中被修改,所有同层子设计编译完成后,再编译之上的父设计,直至顶层设计编译完成。Bottom up 策略允许大规模设计,因为该策略不需要所有设计同时驻入内存。
(7)编译:
用 Compile 命令执行综合与优化过程,还可以利用一些选项指导编译和优化过程。
(8)分析及解决设计中存在的问题 :
DC可以产生一些 告以反应设计的综合和优化结果,如:时序、面积、约束等 告,这些 告有助于分析和解决设计中存在的问题以改善综合结果,我们还可以利用 check_design 命令检验综合的设计的一致性。
(9)存储设计数据:
DC不会自动存储综合后的设计结果,因而需要在离开 DC 时手动存储设计数据。比如存储 表、延时信息等数据文件,ddc文件。
1:准备好rtl代码(放在rtl文件夹里),约束文件(scripts里),库文件(.synopsys_dc.setup)
下面的物理库设置中:
13行:指定milkyway(参考)库的名称
14行:指定当前设计的库的名称
16行:创建milkyway库,格式如图上面,需要工艺库、参考、当前设计库
19行:打开当前的设计库
20行:加载寄生参数(库)
2、启动DC
3、读代码前的检查
4、读入代码和查看设计
5、插入约束设计,在scripts文件里
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!