什么是逻辑综合
逻辑综合是将较高抽象级别的设计(RTL)转化为可实现的较低的抽象层级的设计的过程。就是将RTL转化成门极网表的过程。
逻辑综合过程可以针对时序、面积、可测性(DFT)、功耗(power)、运行时间(run time)进行优化。
逻辑综合的输入文件:RTL(file list)、物理库、时序库、逻辑综合flow、时序约束(clock、IO、异步设置等)、环境参数设置、upf(low power flow)。
逻辑综合的输出文件:netlist、sdc、ppa report等。
逻辑综合的EDA工具:Synopsys的DC(design compiler)和Cadence的genus是广泛使用的逻辑综合工具。
DC逻辑综合分为三个主要过程:翻译(Translation)+逻辑优化(logic optimization)+门级映射(mapping)。
逻辑综合的目标
获得门级网表;插入时钟门控;逻辑优化、插入DFT逻辑;保持RTL和Netlist之间的逻辑等效性。
逻辑综合的输入和输出文件
输入:RTL、library、Constraints、UPF(power intent);
输出:Netlist、Report(Qor、Area、Timing等),UPF等
HDL文件生成和库
HDL文件(以VHDL或Verilog或SystemVerilog编写);HDL分区和coding style会影响逻辑综合和逻辑优化过程;library基于所使用的的工艺制程。
库有不同的分类:目标库、单元库、符号库、合成库(DesignWare)等。
读取文件
有两种方法可以将文件读入DC,一种是使用Analyze和Elaborate命令;另一种是使用read_file命令。
Analyze命令做如下动作
读取HDL源文件并做语法检查和Synopsys规则检查;
在转化成通用逻辑门之前,检查文件本身的错误;
以中间文件的形式创建HDL库对象;
把中间文件存储在define_design_lib命令指定的路径。
Elaborate做如下动作
将design转化成GTECH形式;
允许更改source file中定义的parameter;
将design中的算术运算符替换为Design ware组件;
Link design;
Read file命令执行如下操作
执行与Analyze和Elaborate相同的检查动作;
不为verilog创建中间文件;
为VHDL创建中间文件;
不能自动完成link动作,需要在read_file命令完成后,手动去做link动作;
可以读取不同的文件格式,如VHDL、Verilog、System Verilog、ddc。
设计环境约束
读入设计后,就需要定义设计环境约束设计约束。Design environment包括Operating Condition 、 Wire Load Model、System interface requirements。
Operating condition:包括工艺、电压、温度要求(PVT);可以使用set_operating _condition在dc_setup.tcl中做相关设置。
Wire Load Model:允许DC估算net长度和扇出对电阻、电容、net area的影响;并使用相关估算值来计算net dealy;一般,DC会使用零线负载模型。
System interface:和design交互的外部逻辑的约束,包括输入强度设置(set_driving_cell)、输出电容负载(set_load)、输出扇出负载等。
可以使用report_lib、report_design等命令查看已经加载的Design environment设置。
Design rule constrain和Design optimization constrain
DC进行design优化时,主要使用两种类型的约束。
设计规则约束(Design rule constrain):逻辑库定义了这种隐式约束,这些约束是design必须满足的。默认情况下,设计规则约束优先级高于设计优化约束。
设计优化约束(Design optimization constrain):这是显式约束,DC会尝试满足这些约束,但不会以违反设计规则约束为代价。
DC会试图同时满足两种约束,但设计规则约束优先。
默认情况下,DC根据重要性,按以下顺序考虑各种约束:
设计规则约束:
Connection class、multiple port nets、maximum transition time、maximum fanout、maximum capacitance。
设计优化约束:
Maximum delay、minimum delay、maximum power、maximum area。
时序约束
时序约束需包括:时钟、IO时序要求、组合逻辑delay要求、false path设置等。
相关链接:
design中的timing path之R2R
design中的timing path之I2O
design中的timing path之 R2O
Design中的timing path之 I2R