Menu Close

数字电路逻辑综合(Synopsys Design Compiler)

逻辑综合(Synopsys Design Compiler)

逻辑综合是自动生成逻辑组件(特别是数字电路)的过程。这是一个关于如何抽象和表示逻辑电路,如何操纵和转换逻辑电路以及如何分析和优化逻辑电路的主题。它不仅在电子设计自动化流程中起着至关重要的作用,而且其技术还在形式验证,软件综合和其他领域中找到了更广泛的应用。

IMG_256

图 1     逻辑综合的流程

 

DC(Design Compile)的逻辑综合是将行为级(RTL)的源码转换为门级网表的过程。

综合基本上可以分为三个步骤:
综合 = 转化+逻辑优化+映射

图 2     逻辑综合的三个步骤

 

GTECH格式

GTECH格式是DC先将不同语言的RTL网表(如Verilog,VHDL等),转化成统一的与工艺无关的门级网表形式。

转化的过程中,DC会利用其内部的DesignWare库对RTL代码进行结构级和逻辑级的优化。
比如,通过共用表达式,进行结构级优化:

图 3     与工艺无关的优化

 

通过展平,把组合逻辑路径减少两级,变为乘积之和的电路,进行逻辑优化

图 4     布尔运算的逻辑优化

 

约束

下图是经典的时序路径图,设时钟周期为Tc,触发器FF3的建立时间为Tsetup ,保持时间为Thold,触发器FF2的时钟端到Q端的延迟为Tclk-q, 那么时序上应该满足:

Tc -Tsetup > Tclk-q + Tx

Tclk-q + Tx > Thold

或者中间的逻辑单元延时Tx应该满足:

Thold – Tclk-q < Tx < Tc – Tsetup – Tclk-q

图 5     时序路径图

 

因此,不同的时钟,不同的建立时间,会有不同的组合逻辑延迟。慢时钟下,Tx可以较大,可以用驱动能力较小的逻辑门,获得更小的面积;快时钟下,需要更大的逻辑门提高驱动能力,需要更大的面积。

综合时会在给定约束的情况下,满足时序,并尽量减小面积,即优化。

映射Mapping:

Mapping是将工艺库中的逻辑门映射到gtech网表中,工艺库文件后缀一般为.db(database),不能直接打开,需要变为.lib格式,它包含组合单元的时序信息。下图是一个二输入或门的部分信息:

图 6     工艺库逻辑门包含的信息

 

它包含总面积,输入管脚的电容,最重要的是延迟计算信息,如上面的图表,给定输入转换时间(input Transitopn)和扇出(Load),就能插值得到传输延迟(Cell Delay)和输出转换时间(output Transition)。当前的输出转换时间又可以作为下一级的输入转换时间,这样就可以计算出模块各个单元的延迟。

DC在满足时序的条件下,尽量选择工艺库里的小单元以减小面积,最后生成与工艺库相关的逻辑网表。逻辑网表利用IC Compiler工具,加入各个单元的版图信息,布局布线信息,就可以生成版图,送至晶圆厂流片。

 

综合流程 DC:

设置工艺库文件

搜索路径search_path:工艺库文件存放的文件夹,DC会自动在该文件下读入需要的库文件。

目标库 target_library:包含基本单元(standard cell),将gtech网表元件映射到具体的工艺单元。

链接库 link_libary:包含目标库之外的宏单元、IP核等常用模块。

符号库 symbol_library:定义单元的图形库,可以用design_vision查看。

综合库 syntehtic_library:是Synopsys公司提供的DesignWare库,包含许多运算单元和IP核,用于产生gtech网表。

读入RTL文件

DC支持读入Verilog、VHDL、ddc等格式文件,读入后需要定义顶层模块current_design,并link将读入设计和综合库连接起来。

设置约束

设置约束是最重要的一步。

DC判断时序主要看setup time是否满足,hold time需要在IC Compiler 加入版图、布局等信息后更有意义。

DC的判断时序时,会比较data arrival time 和data required time:

Data arrival time = Tclk-q + Tx

Data required time  = Tc -Tsetup

要满足: Tc -Tsetup > Tclk-q + Tx

添加约束就是要提供信息,计算上述表达式的数值,然后进行比较。

因此约束通常包含如下部分:

时钟设定:时钟周期、不确定偏斜、转换时间、内部时钟延迟等。

输入延时设定:模块外的寄存器到模块输入端的时间,用来计算输入端的Data arrival time。

输出延时设定:模块输出端到模块外寄存器的时间,用来计算输出端的Data required time。

输入端转换时间:用来计算输入端Tx的延迟。

输出端负载:用来计算输出端Tx的延迟。

综合

通过compile_ultra启动DC综合,DC用内建的静态时序工具Design Time来估计路径延迟来指导优化,一般包括三个主要的步骤:

1、把设计分解成时间路径的集合

2、计算每一条路径的延迟

3、所有路径延迟都要检查时序

图 7    逻辑综合的时间路径

 

结果输出

输出主要有报告和文件两部分。

报告:面积、约束、功耗、时序、违例路径

文件:网表文件.v(用于ICC布局布线),约束文件.sdc(用于ICC布局布线),.ddc(保存DC的各种数据)

图 8     案例

 

DC注释详解

DC的命令采用tcl语言,下面是一段综合的脚本供参考

约束信息来自最初的设计要求:

图 9     综合的脚本

Posted in 数字集成电路

发表评论

您的电子邮箱地址不会被公开。

Leave the field below empty!

相关链接