您好,欢迎来到易妖游戏网。
搜索
您的当前位置:首页Synopsys 综合工具Design Compiler(DC)

Synopsys 综合工具Design Compiler(DC)

来源:易妖游戏网
Synopsys 综合工具Design Compiler(DC)简介

一.约束的基本概念:

约束就是对用户的设计中可度量的电路参数(如时序、面积以及电容等)进行声明。没有约束,工具(本文为DC)就不能有效地优化电路,以满足要求。

当DC对设计进行优化时,使用了两类约束:

1) 设计规则约束(Design Rule Constraints, DRC):此类约束是工具固有的,由

工艺库(technology library)来定义。此类约束是设计功能正确的必要条件,通过库应用于所有设计上。当然,你可以将它们定义的更紧。 2) 优化约束(Optimization Constraints):它们是由用户定义的,前提是可实现的。 用户在使用DC时,可以通过命令行或编写约束文件(.scr)来定义约束。下图给出DC主要的DRC及优化约束,以及相关的DC命令(dc_shell接口命令)。

 DRC:

最大转换时间(Max Transition Time):对于一条连线(net)来说,是其驱动pin

逻辑值转化的最长时间。

最大扇出(Max Fanout):对于驱动pin来讲。 最大/最小电容(Max/Min Capacitance):用来控制连线的电容值。 器件退化(Cell Degradation):某些工艺库包括器件退化表,它列举了某一器件可

驱动的最大电容,是该器件输入pin最大转换时间的函数。

 优化约束:

时序约束:包括 输入/输出延迟(Input/Output Delay):同步路径 最大/最小延迟(Minimum/Maximum Delay):异步路径 最大面积(门数):

最小孔隙度(Min porosity):可布线性

二.约束报告

约束报告提供了设计规则和优化约束的信息。可采用如下命令产生相应报告: report_constraint report_port

report_clock

report_attribute

report_timing_requirements

用户可通过输出相应报告,来分析设计是否满足了约束。如下例使用report_constraint报告一个计数器的设计约束结果。可看到最后若干项不符合约束定义。

Example

dc_shell> report_constraint

**************************************** Report : constraint Design : counter Version: v1998.02 Date : Wed Jan 14 1998

**************************************** Weighted

Group (max_delay/setup) Cost Weight Cost

--------------------------------------------------------- CLK 0.001.00 0.00 default 0.001.00 0.00

--------------------------------------------------------- max_delay/setup 0.00 Total Neg Critical

Group (critical_range) Slack Endpoints Cost

----------------------------------------------------- CLK 0.00 0 0.00 default 0.00 0 0.00

----------------------------------------------------- critical_range 0.00 Constraint Cost

----------------------------------------------------- max_transition 0.00 (MET) max_fanout 0.00 (MET) max_delay/setup 0.00 (MET) critical_range 0.00 (MET) min_delay/hold 0.40 (VIOLATED) max_leakage_power 6.00 (VIOLATED)

max_dynamic_power 14.03 (VIOLATED) max_area 48.00 (VIOLATED) min_porosity 2.00 (VIOLATED)

三. 基本综合流程

一个基本的综合流程如下图所示,它包括如下步骤:

1) 开发HDL模型 2) 启动DC shell界面 3) 指定相关库 4) 读入设计 5) 定义设计环境 6) 选择编译策略 7) 设置设计约束 8) 优化

9) 分析与调试 10) 保存设计数据

11) 退出shell界面

3.1开发HDL模型

为了达到最佳综合结果,HDL文件编写应注意如下三方面:

1. 设计数据管理:为了简化数据的交换、查找,以及开发数据策划和版本控制方法,

设计者应遵循一定的规则,其中包括文件生成、维护及删除规则;文件命名规范;设计的层次化目录管理等。 2. 设计划分(partitioning):对于大的设计来说,设计划分的好坏影响综合结果。划

分得当会减少编译时间并简化约束定义。 3. 设计编码(Coding):好的HDL编码可以产生小而快的设计。 3.2启动DC shell界面

如果要进入dc_shell,可在系统提示符下键入 %dc_shell

3.3 指定相关库

DC使用了如下一些库:

a) 工艺库:半导体生产厂定义的器件信息,如器件名、器件管脚名、延迟时间以及管

脚负载等。采用link_library及target_library变量指定。 b) 符号库:定义了DA(Design Analyzer)的可视符号。采用symbol_library变量指定。 c) 宏单元库(DesignWare):提供很多内建HDL算子的实现模块。

3.4 读入设计

DC既可以读入RTL设计又可以读入门级网表。RTL设计可采用analyze和elaborate命令读入,而网表采用read_file读入。

3.5 定义设计环境

设计环境指围绕将要进行综合的设计的环境,由一套属性(attribute)和约束(constraint)来模拟。主要包括:

操作条件:温度、电压和制造过程。

线负载模型:通过估计连线长度、扇出以及面积等,预估连线延迟。 系统接口:包括驱动设计的器件以及被驱动的负载定义,如下图所示。

3.6 选择编译策略

对一个层次式设计来说,用户可选择的编译策略包括:

a) 自顶向下的编译 b) 自底向上的编译

c) 特征化编译(characterize)

3.7 设置设计约束

DC使用两类约束来优化设计: a) DRC:固有约束,包括

b) 优化约束:用户定义的约束,包括

3.8 优化

DC使用目标工艺库、DRC以及优化约束对设计进行综合,并将其变为专门面向工艺的门级实现。

可采用compile命令启动综合过程。

3.9 分析与调试

DC能生成报告帮助用户分析优化结果,并调试出现的问题。

3.10 保存设计数据

使用write命令存储设计的数据(如网表、SDF文件等)。

3.11 退出shell界面

用户可以在任何时候退出dc_shell,但是此时dc_shell并不会自动保存数据。可以采用下面任何一种方法退出

a) 输入quit b) 输入exit c) 按Ctrl+d

四. 设计实例

下面的例子给出一个约束文件,采用自顶向下的编译策略,对Adder16.v进行优化。

/* specify the libraries */ 指定库 target_library = my_lib.db symbol_library = my_lib.sdb

link_library = \"*\" + target_library /* read the design */读入设计 read -format verilog Adder16.v

/* define the design environment */定义设计环境 set_operating_conditions WCCOM set_wire_load \"10x10\" set_load 2.2 sout set_load 1.5 cout

set_driving_cell -cell FD1 all_inputs() set_drive 0 clk

/* set the optimization constraints */设置优化约束 create_clock clk -period 10

set_input_delay -max 1.35 -clock clk {ain, bin} set_input_delay -max 3.5 -clock clk cin set_output_delay -max 2.4 -clock clk cout set_max_area 0

/* map and optimize the design */映射并优化设计 uniquify

compile//执行综合并优化

/* analyze and debug the design */分析并调试设计 report_constraint -all_violators report_area

/* save the design database */保存设计数据

write -format db -hierarchy -output Adder16.db

用户可以采用如下几种方法执行命令: a) 进入dc_shell,并逐个键入命令

b) 进入dc_shell,并执行脚本文件,采用include命令(dcsh模式)或source命令(Tcl

模式)。如假设上面的脚本文件称作run.scr,则在dcsh模式下运行

dc_shell> include run.scr

c) 在UNIX命令行模式下运行脚本,如

% dc_shell -f run.scr

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- vipyiyao.com 版权所有 湘ICP备2023022495号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务