数据后端之逻辑综合

Logic Synthesis

目的:

在满足约束(时序、面积、功耗等约束)的前提下,把design从RTL映射到门级网表(netlist)

需要满足setup timing检查,不需要理会hold timing检查。

工具:

Synopsys Design Compiler(DC)

Cadence Genus Synthesis

Input文件:

1,RTL文件.v

2,SDC约束文件

3,library ***.db

Output文件:

1,Mapped.v

2,Mapped.ddc

ddc为二进制文件,包含时序约束,还包含基本的布局物理信息。

先做一次综合,然后让后端布一个初步的物理信息,然后再做综合,吐出的.ddc文件,里面的时序信息更准确,而且和后端的一致性更好。

3,Map.svf

DC改变了RTL代码的结构,但是逻辑没有改变。比如调整组合逻辑的位置,但是最终的功能是一样的。 其中的变化写入到.svf中,文件用于后面的形式验证

4,report

具体脚本:

1,设置工艺库文件

set target_library "***.db"

set link_library "* $target_library"

2,读入RTL文件

read_verilog ***.v

current_design ***

link (将读入的RTL设计和综合库连接起来)

3,设置约束或者读入约束

  • # 时钟设定:
  • reset_design
  • create_clock
  • set_clock_latency
  • set_clock_uncertainty
  • set_clock_transition
  • # 输入延迟设定:
  • set_input_delay
  • # 输出延迟设定:
  • set_output_delay
  • # 输入转换时间
  • set_input_transition
  • # 输出负载
  • set_load

4,综合

compile_ultra

5,结果输出

report_power > ***.power

report_area > ***.area

report_timing > ***.timing

report_constraint -all_violators > ***.violation(违例报告)

write_file -format ddc -hierarchy -output ***.ddc (保存DC的各种数据)

write -h -f verilog -output ***.v(verilog门级网表,用于ICC)

write_sdc ***.sdc(SDC格式的约束,用于ICC)

如何启动:

pt_shell

背后逻辑:

逻辑综合共分为三步:

数据后端之逻辑综合

 1,翻译(Translation):

将RTL描述转换成未优化的门级布尔描述,包括相应的功能块以及功能块之间的拓扑结构。

input:RTL文件.v

output: gtech.v gyech.ddc

命令:read_verilog

数据后端之逻辑综合

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

转化的过程中,DC会利用其内部的DesignWare库对RTL代码进行结构级和逻辑级的优化

  • 比如,通过共用表达式,进行结构级优化:
  • 数据后端之逻辑综合
  • 比如,通过展平,把组合逻辑路径减少两级,变为乘积之和的电路,进行逻辑优化
  • 数据后端之逻辑综合

2,优化(Optimization):

根据所施加的时序和面积约束,按照一定的算法对翻译结果进行逻辑重组和优化。

3,映射(Mapping):

根据所施加的时序和面积约束,从目标工艺库中搜索符合条件的单元来构成实际电路的逻辑网表。

优化和映射的命令:compiler_ultra

优化和映射的input:Gtech.db + SDC + library.db

数据后端之逻辑综合

上一篇:cmodel模拟器开发


下一篇:如何使LinearLayout布局从右向左水平排列,而不是从左向右排列