三、静态时序分析与门级仿真
注意:此部分内容在数字集成电路实验中有学到,但是写文档时还没有进行数集实验。数集实验中,老师给的模板更加完善。
1. 静态时序分析(STA)
静态时序分析用于验证同步时序的数字电路是否满足时序要求,比如说验证建立(setup)时间和保持(hold)时间是否满足要求,验证路径延迟是否满足要求等。
2. 门级仿真
在之前的仿真中,只是对电路的逻辑进行了仿真,但是没有考虑传播延迟等时序等方面的问题。而门级仿真是在逻辑门级别进行,考虑了延迟和时序的问题,可以更加精确的仿真数字电路。
3. 仿真示例
克隆仓库https://github.com/EPTansuo/rtl_gate_sim_template到服务器。
如果你使用的是华工微电子学院服务器,直接执行下面的命令:
make gate_sim
即可进行对示例代码进行门极仿真,默认使用的是csmc 180nm的库。
如果你在其它环境中,则需要更改工艺库,见下一节。
打开gate_sim/wave.vcd,如果你可以看到输入和输出之间存在了延时,则门极仿真成功:

在gate_sim/report/文件夹下,有三个文件,分别STA的面积,功率和时序报告:
report
├── design.area
├── design.power
└── design.timing
在gate_sim/文件夹下有demo.netlist.v文件,这是综合生成的网表文件。
在script/文件夹有三个文件:
scripts
├── dc.tcl
├── gate_sim.mk
└── rtl_sim.mk
dc.tcl是Design Compiler的综合脚本。
gate_sim.mk是用于门极仿真的make构建文件。
rtl_sim.mk是用于逻辑仿真的make构建文件,如果要想进行RTL级别的仿真(逻辑仿真),可以使用make rtl_sim。
4. 更改工艺库
如果你使用的是虚拟机或其它环境,则需要更改库文件,如果你想用其它的库,也需要进行下面的操作:
编辑Makefile,替换成需要的文件:
GATE_SIM_LIB_V = /SM01/foundry/csmc/bcd18/std_libs/CSMC018G3HD5VSBCD1P6Mlib_FB_V20F07/verilog/csmc018G3.v
编辑scripts/dc.tcl,替换成需要的文件:
set STD_LIBS_PATH /SM01/foundry/csmc/bcd18/std_libs/CSMC018G3HD5VSBCD1P6Mlib_FB_V20F07
set LINK_LIBRARY [ list "${STD_LIBS_PATH}/synopsys/csmc018g3_typ.db"]
set TARGET_LIBRARY [ list "${STD_LIBS_PATH}/synopsys/csmc018g3_typ.db" "${STD_LIBS_PATH}/synopsys/csmc018g3_max.db" ]
5. 将其应用到自己的工程
如果想要将该模板应用到自己的工程中,除了需要更改工艺库之外,还需要更改约束和顶层模块名:
修改Makefile,将$(TOP)改为顶层模块名,将$(TB_NAME)改为testbench模块名:
(这两个模块的名称应与文件名一致,否则可能会报错)
TOP_NAME = demo
TB_NAME = demo_tb
修改script/dc.tcl:
将$TOP_NAME改为自己的顶层模块名:
set TOP_NAME "demo"
将约束修改为自己所需要的条件:
set MAX_AREA 100
set MAX_FINOUT 8
set MAX_TRANSITION 5
create_clock -name "clk" -period 10 -waveform { 5 10 } [get_ports clk_port]
除此之外,还可以在script/dc.tcl中修改其它内容。