当前位置:文档之家› 数字电路后端设计 逻辑综合

数字电路后端设计 逻辑综合

11
系统层次的划分与基本概念
在DC中,每个设计由6个设计物体组成,它们分别是design,cell,port, pin,net和clock。其中clock是特别的端口,它存在DC内存中,是用户自己 定义的物体。如下图所示:
12
当前设计为TOP。Port和Pin是与当前设计有关的一对概念,如果当前设计改 变,相应的port和pin也会不同
set_driving_cell –lib_cell and2a0 [get_ports IN1] \
–library slow
19
set_drive 10 [get_ports Data_in_0] set_load将工艺库中定义的单位(通常为pf)上的容性负载设置到设计的指
定连线或端口,设置输出端口的负载。 set_load 5 [get_ports OUT1] set_load [load_of my_lib/and2a0/A] [get_ports OUT1]
2
3
综合过程中时序与面积的关系 从下图中可以看出面积与延迟的折衷关系,综合工具以约束为指导,在满足时
序的情况下获得最小面积。如果不施加约束,综合工具会产生非优化的网表, 而这是不能满足要求的网表。所以约束对于综合来说是必不可少的。
4Leabharlann 综合的基本流程 1.准备RTL代码:RTL代码经过前端仿真后才能用于综合。
set_operating_conditions -max slow -max_library slow \ -min fast -min_library fast
可以用set_min_library指定best和worst两种库,在设计中所用到的库都可 以指定。如: # 为综合用的sram库指定最佳情况可最坏情况
unix% dc_shell-t
(命令界面)
unix% design_vision
(图形界面)
Design Compiler支持TCL(Tool Command Language)语言,它是公开的业界 标准界面语言。DC-Tcl在TCL的基础上扩展丰富了TCL,使用户可以更加灵活
方便地运用TCL命令来对电路进行分析和优化。
9
变量的设定:设置的变量在DC启动时读入,便于综合的处理,同时有些DC的 变量必须在设置文件中输入。如可以设定命令的简写,保存多少条命令等: alias cud current_design alias rpt report_timing history keep 300
10
综合脚本实例(.synopsys_dc.setup)
读入代码后用命令current_design和link将读入的设计和综合库连接起来。
14
电路的设计目标与约束
RTL模块综合的流程如下图所示。电路的约束分为设计环境和设计约束,DC 以约束为目标进行电路优化。
15
设计环境 通过环境约束的设计,将设计所处的真实环境因素包含进去,使得设计可以 正常工作在真实环境下。环境约束如下图所示:
2.定义库:设定好所需要用到的综合库等多种库。
3.读入设计:综合工具读入RTL代码并进行分析。
4.定义设计环境:设定设计的工作环境、端口的驱动和负载,线负载模型等 。
5.设置设计约束:这是综合的一个极其重要的环节,设定好正确的约束才能 得到正确的综合结果。约束要适当,不能过紧或过松。主要是定义时钟和I/O 的约束。
3.enclosed模式指定所有的连线(属于子模块的)将继承完全包含该子模块 的模块线载模型。如上图中,整条连线处于模块MID的完全包围中,所以采 用40x40线载模型。其命令如下
set_wire_load_mode enclosed
set_driving_cell和set_drive用于设置模块输入端口的驱动能力。set_drive 命令用于指定输入端口的驱动强度,它主要用于模块或芯片端口外驱动电阻 。set_driving_cell用于对输入端口的驱动电阻进行建模,这一命令将驱动单 元的名称作为其参数并将驱动单元的所有设计规则约束应用于模块的输入端 口。
DC中包含了多种工具,如DFT Compiler,Power Compiler,HDL Compiler, Library Compiler等,使得DC具有强大的功能,成为业界最流行的综合工具

7
目标库和初始环境的设置
DC启动时会先启动.synopsys_dc.setup文件,它里面设定了综合所需要的工 艺库的信息以及一些对于工具的设定命令。
set_min_library sram_slow.db –min_vision sram_fast.db
17
set_wire_load_model命令为DC提供估计的线负载信息,反过来DC使用线 载信息把连线延迟建模为负载的函数,Synopsys工艺库里提供了多种线载模 型,每个模型代表一个特定大小的模块。设计人员需要准确地选择线载模型 。设置线载模型命令如下: set_wire_load_model –name smic18_wl10 –library slow
13
设计读入
读入设计有多种方法,DC支持读入Verilog,VHDL,可以是RTL级代码,也 可以是门级网表,也可是ddc格式的文件。综合前的设计不需用RTL格式(虽 然也有其它格式)输入到DC中。
可以用以下命令读入设计: 1.analyze和elaborate命令:这是两个不同的命令,它使得设计人员可以在 建立设计通用逻辑之前先对设计进行语法错误和RTL转换分析。 2.read_file命令:如: read_file –format verilog sd_clk.v 3.read_verilog或read_vhdl命令,这些是从read_file中分离出来的命令, 如: read_verilog sd_clk.v
满足设计的功能、时序和面积的要求 综合是约束驱动(constraint driven)的,给定的约束是综合的目标。约束
一般是在对整个系统进行时序分析得到的,综合工具会对电路进行优化以满 足约束的要求。 综合以时序路径为基础进行优化。 常用的综合工具有Synopsys公司的Design Compiler 和Candance公司的 Enconter RTL Compiler
20
设计约束
设计约束描述了设计目标,包括时序和面积等。DC会依据约束来优化电路。 因为不实际的规范会导致面积增大、功耗增加和/或时序恶化,所以设计人员 必须根据情况指定实际的约束,约束设计的基本命令如下图所示。
21
时钟
单周期同步设计的时序要求 DC默认的时序电路是单周期的,如下图所示。假设FF3的建立时间为Tsetup,
设定时钟的uncertainty、latency和transition,其中uncertainty是用来模拟 时钟的skew和jetter,latency设定时钟的延迟,transition设定时钟的转换 时间。通过这些设定让时钟更加接近实际情况,更有利于综合的准确性,但 过分约束会使得综合起来比较困难。
在综合之前,要设定好所需要的库,如综合库、I/O单元库,IP核等。 半导体厂商提供与DC兼容的工艺库-综合库,它包含许多信息,如单元的功
能、面积、时间、功耗、测试等,线负载模型,工作条件和设计规则约束等 。在0.18um的工艺下,可采用非线性延迟模型(NLDM)来计算单元的延迟。 单元的延迟与输入的逻辑转换时间和输出负载有关。根据每个单元的输入逻 辑转换时间和输出负载,在工艺库提供的查找表(Look-Up Table)中查出单 元的延迟。
set_wire_load_mode定义了三种同建模线负载模型相关的模式,分别是top ,segmented和enclosed,如下图所示:
18
1.top模式定义层次中所有连线将继承和顶层模型同样的线载模型。如上图中 ,所有的连线都继承顶层的线载模型50x50。
2.segmented模式用于跨越层次边界的连线。如上图中,子模块A和子模块B 中的连线继承各自的线载模型,而A与B之间的连线继承模块MID的线载模型 。
8
.synopsys_dc.setup文件
.synopsys_dc.setup文件主要包括各种库的设定,变量的设定等。下面具体 介绍各种库的意义及如何设定。(实例) 目标库(target_library): 是DC在做编译(compile)的时候来构成电路图的,将电路映射到具体的单元 上。例如 set target_library my_tech.db 链接库(link_library): 是将设计连接到对应的库上,一般包含目标库、宏单元、IP核等。例如: set link_library “* my_tech.db”。其中“*”指明当链接设计时,DC先 搜寻内存中已有的库,然后再搜寻变量link_library中制定的其它库。 符号库(symbol_library): 定义了单元显示的图形库,当用design_vision来查看图形的时候使用。 综合库(synthetic_library): 是由Synopsys公司提供的DesignWare库,包含了许多IP核及运算单元,用于 实现verilog描述的运算符,为电路的优化起着重要的作用。 搜寻路径(search_path): 指定各种库的路径,可以将所用的库的路径放入search_path中,在设定 target_library和link_library时就不必加上库的绝对路径,DC会自动在 search_path中寻找所用到的库的路径从而读入该库。
9.保存设计数据:综合完成后,保存各种数据,以供后续的布局布线使用( 5
Basic Flow
Develop HDL files
Specify libraries Read design
Define design environment
Set design constraints
相关主题