该基本综合流程包含下列步骤:

(1)    发展HDL文件

输入Design Compiler的设计文件通常都是用诸如VHDL和Verilog HDL等

硬件描述语言编写。这些设计描述必须小心地编写以获得可能的最好的综合结果。在编写HDL代码时,你需要考虑设计数据的管理、设计划分和HDL编码风格。划分和编码风格直接影响综合和优化过程。

虽然流程中包含该步骤,但实际上它并不是DesignCompiler的一个步骤。你不能用DesignCompiler工具来编写HDL文件。

(2)    指定库

通过link_,target_,symbol_,和synthetic_library命令为DesignCompiler指定链接库、对象库、符合库和综合库。

链接库和对象库是工艺库,详细说明了半导体厂家提供的单元和相关信息,像单元名称、单元管脚名称、管脚负载、延迟、设计规则和操作环境等。

除了你正在执行工艺转换,否则对目标库和链接库指定相同的值。对于链接库,你也应该指定星号(*),这说明DesignCompiler同时在搜索内存中的设计。如果link_library变量没有星号,那将不搜索内存中的设计。结果导致在链接过程中,可能找不到设计,使设计变得不可分解。

在指定link_library变量的文件,认为DesignCompiler从左到右搜索这些文件,当它找到一个参考时停止搜索。在下面这个例子里,内存中的设计在lsi_10k库之前被搜索:

link_library = {"*"lsi_10k.db}

符号库定义了设计电路图所调用的符号。如果你想应用DesignAnalyzer图形用户界面,就需要这个库。

另外,你必须通过synthetic_library命令来指定任何一种特殊的有许可的设计工具库(你不需要指定标准设计工具库)。

表2.2 库变量

库类型

变量

默认值

扩展名

目标库

target_library

{“your_library.db”}

.db

链接库

link_library

{“*”,“your_library.db”}

.db

符号库

symbol_library

{“your_library.sdb”}

.sdb

设计工具库

synthetic_library

{}

.sldb

(3)    读入设计

Design Compiler使用HDL Compiler将RTL级设计和门级网表作为设计输入文件读入。通过analyze和elaborate命令读入RTL级设计,通过read_file或read命令读入门级网表。DesignCompiler支持所有主要的门级网表格式。

如果你用read_file或read命令读入RTL设计,等于实现了组合analyze和elaborate命令的功能。

(4)    定义设计环境

Design Compiler要求设计者模拟出待综合设计的环境。这个模型由外部的操作环境(制造流程、温度和电压)、负载、驱动、扇出、线负载模型等组成。它直接影响到设计综合和优化的结果。利用图2-4中该步骤下所列的一系列命令来定义设计环境。

对于绝大多数工艺,操作温度、电压和制造流程的变化将会对电路的性能(速度)有相当重要的影响。这些因素称为操作环境。

(5)    设置设计约束

Design Compiler利用设计规则和最优化约束来控制设计的综合。厂家工艺库提供设计规则以保证产品符合规格、工作正常。典型的设计规则约束转换时间(set_max_transition)、扇出负载(set_max_fanout)和电容(set_max_capacitance)。这些规则指定了要求的工艺,你不能违反。当然,你可以设置更严格的约束。

最优化约束则定义了时序(时钟、时钟错位、输入延时和输出延时)和面积(最大面积)等设计目标。在最优化过程中,DesignCompiler试图去满足这些目标,但不会去违反任何设计规则。利用图2-4中该步骤下所列的一系列命令来定义这些约束。为能够正确地优化设计,必须设置更接近现实情况的约束。

你选择的编译策略将影响设计约束的设置。流程中的步骤5和步骤6是相互依赖的。

(6)    选择编译策略

你可以用来优化层次化设计的两种基本编译策略被称为自顶向下和从下上。

在自顶向下的策略里,顶层设计和它的子设计一起进行编译。所有的环境和约束设置都根据顶层设计来定义。因此,它会自动的考虑内部模块的依赖性。但对于大型设计,这种方法并不实用,因为所有的设计必须同时贮存在内存里。

在从下到上的策略里,分别对子设计进行约束和编译。在成功编译后,这些设计都被赋予一个dont_touch参数,防止在随后的编译过程中对它们进行进一步的改变。然后这些编译过的子设计组合成更高层次的设计,再进行编译。编译过程一直持续到顶层设计被综合。由于Design Compiler不需要同时将所有未编译的子设计装载进内存,这种方法允许你编译大型设计。然而,在每一个阶段,你必须估计每个内部模块的约束,更有代表性的是,你必须不停地编译、改进那些估计,直到所有的子设计界面都是稳定的。

每一个策略都有其优点和缺点,这取决于你设计的特殊性和设计目标。你可以选择任意一个策略来进行整个设计,或者混合使用,对每一个子设计采用最合适的策略。

(7)    优化设计

利用compiler命令启动DesignCompiler的综合和优化进程。有几个可选的编译选项。特别的,map_effort选项可以设置为low、mediu或high。

初步编译,如果你想对设计面积和性能有一个快速的概念,将map_effort设置为low;默认编译,如果你在进行设计开发,将map_effort设置为medium;当在进行最后设计实现编译时,将map_effort设置为high。通常设置map_effort为medium。

(8)    分析和解决设计问题

通常DesignCompiler根据设计综合和优化的结果生成众多的报告。你根据诸如面积、约束和时序报告来分析和解决任何设计问题,或者改进综合结果。你可以用check命令来检查综合过的设计,也可用其他的check_命令。

(9)    保存设计数据

利用write命令来保存综合过的设计。DesignCompiler在退出时并不自动保存设计。你也可以在一个脚本文件里保存那些综合过程中用过的设计参数和约束。脚本文件是用来管理设计参数和约束的理想工具。

Design Complier流程相关推荐

  1. Design Complier基本知识问答

    Design Complier基本知识问答 1.1 什么是DC?       DC(Design Compiler)是Synopsys公司的logical synthesis工具,它根据design ...

  2. 数字IC设计的基本流程和主流EDA工具

    数字IC设计的基本流程和主流EDA工具 IC设计全周期存在迭代,以下按照正常无迭代流程: ~ ~~ ~~ 芯片设计与芯片制造缺一不可,另有一篇博文详细介绍芯片从0-1,传送门 芯片从0到1 spec ...

  3. 完整的芯片反向设计流程原来是这样的!(实例讲解)

    完整的芯片反向设计流程原来是这样的!(实例讲解) 作者:时间:2018-02-23来源:网络收藏 现代IC产业的市场竞争十分激烈,所有产品都是日新月异,使得各IC设计公司必须不断研发新产品,维持自身企 ...

  4. FPGA与普通数字芯片设计流程的差异

    FPGA与普通数字芯片设计流程的差异 FPGA与普通数字芯片设计流程的差异 设计步骤 FPGA 数字芯片 逻辑设计与仿真 在这一点上二者非常接近,一般采用硬件设计语言进行设计,并进行功能仿真.FPGA ...

  5. 产品管理|产品设计流程[完整版]

    产品设计(Product Design)没有一个合乎情理的流程,即使人们总是呼吁敏捷开发(AD:Agile Development).极限编程(XP:Extreme Programming),但必要的 ...

  6. Allegro学习之PCB SI后仿真流程

    目录 ................................................................................................. ...

  7. Synopsys Design compiler 学习笔记(收藏)

    IC学习・成长加油站 LoveIC Synopsys Design compiler 学习笔记    design compiler流程 Design compiler工作流程大致分为四步: 1)Lo ...

  8. BPM流程引擎常用术语和概念介绍

    本文重点介绍BPM业务流程管理中常常用到概念和术语,这些概念同样适用于JBPM.Activiti.Flowable.Camunda等主流的开源工作流引擎. 一.BPM模型符号协议 1.BPMN (业务 ...

  9. DC学习-前言及第一章

    Design Compiler User Guide Version F-2011.09-SP2, December 2011 前言 前言包含以下部分: • 此次发布版本的新增内容 • 关于本手册 • ...

最新文章

  1. IDEA入门级教程(文末常用快捷键)
  2. python从命令行获取参数_python从命令行获取参数操作
  3. python 字符串总结
  4. java数组复制的方式和效率比较
  5. 输入参数的数目不足 matlab_哈工大被禁用MATLAB,工科学生慌了,论文至上间接导致软件依赖?...
  6. springboot和ssm的区别
  7. 剑指offer之二叉搜索树的第K个结点
  8. python之路--小数据池,再谈编码,is和 == 的区别
  9. python 机器学习库 —— featuretools(自动特征工程)
  10. python 3.5 format_python 3.5学习笔记(第四章)
  11. Docker 全套笔记整理
  12. 2014 找工作总结
  13. 数字图像处理及MATLAB实现实验四——图像变换
  14. python表白代码简单
  15. 【GAMES-202实时渲染】4、3D空间全局光照(RSM、LPV、VXGI)
  16. jsessionid和jwt_jsessionid
  17. html5百度地图选中标注点,jQuery百度地图单点标注
  18. 一个简单的C语言代码段,逻辑题
  19. 供应链管理最重要的竟然是它
  20. 吃透Chisel语言.33.Chisel进阶之硬件生成器(二)——Chisel组合逻辑电路生成:以BCD编码表为例

热门文章

  1. 使用private修饰内部类
  2. mysql存储过程练习题,2016年计算机二级考试MySQL数据库练习题模拟
  3. 机器学习9:关于pytorch中的zero_grad()函数
  4. python 实现自动批量下载腾讯在线excel
  5. 孩子在读研究生,父亲该做些什么?
  6. Java实现数组的倒序输出
  7. 百度软件测试工程师 智能硬件面试,百度智能硬件质量白皮书(1)
  8. 房地产开发项目实施阶段风险分析
  9. RPN网络(区域候选网络源码)
  10. java中向上转型和向下转型浅析