design compiler怎么暂停 compiling design_搜索

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

(1)    发展HDL文件

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

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

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

(2)    指定库

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

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

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

内存中的设计在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中该步骤下所列的一系列命令来定义设计环境。

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

design compiler怎么暂停 compiling design_链接库_02

(5)    设置设计约束

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

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

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

(6)    选择编译策略

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

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

由于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 compiler怎么暂停 compiling design_链接库_03