cadence genus版的综合脚本

2022-06-21 15:58:16 浏览数 (1)

再来问一问什么是逻辑综合?

简单地讲就是把RTL转成网表。这不过这里要强调两点:

  1. 满足内部和外部的约束条件。具体包括面积、时序、功耗等,其中时序是重点。
  2. 要映射成指定fab的标准单元库。

在《把riscv core代码变成网表最少需要几步》里,写过synopsys dc版本的脚本例子。今天我们再来写个cadence genus版本的综合脚本。为了简单说明,只做了worst corner,可以满足大部分老工艺的综合。

代码语言:javascript复制

set TECH_LIB_PATH /data/fab/TSMC130/digital
set top digital_top

# global setting
set_db / .auto_ungroup none

# read library
set_design_mode -process 130
read_libs ${TECH_LIB_PATH}/Front_End/timing_power_noise/NLDM/wc.lib

# read rtl
read_hdl -languare v2001 {
    ../../rtl/a.v
    ../../rtl/b.v
    ../../rtl/digital_top.v
}

# elab
elaborate ${top}
check_design
uniquify ${top}

# constraints
read_sdc ../scr/normal_mode_max.sdc

# set dont touch to special insts in RTL
set_dont_touch [get_cells u_buf*]
set_dont_touch [get_cells u_icg*]
set_dont_touch [get_cells u_a/u_delaycell*]

# clock gates
set_db / .lp_insert_clock_gating true

# compile
syn_generic
syn_map
syn_opt

# check result
report_area
report_timing

# write result
write_hdl ${top} > ${top}_syn.v
write_sdc ${top} > normal_mode_max_out.sdc

初看与synopsys dc的版本也没有太大的区别,只是一些命令或者参数变了,但流程和要做的事情是一样的。有一点要注意的,genus默认是common ui,一些老命令不支持了,比如set_attribute,需要用set_db代替。

最后,通过下面的命令来运行综合:

代码语言:javascript复制
genus -no_gui -files syn.tcl

安装目录下有用户手册可以参考:

genus/doc/genus_user/genus_user.pdf

0 人点赞