[VCS] 编译过程 - bulaqi/IC-DV.github.io GitHub Wiki

前言 通常情况下vcs的仿真分为两步,先用vcs编译生成一个sim文件,再执行这个sim文件进行仿真。这样的仿真方式存在两个问题:问题一,当设计比较大的时候,每次都要全部重新编译一遍,比较浪费时间;问题二,当设计中存在VHDL文件时,两步法就无法使用,因为VHDL文件需要单独处理。 本文主要介绍VCS的三步编译法,包括:

Analysis Elaboration Simulation

一、Analysis 代码如下所示,make vlog分析verilog代码,make vhdl分析vhdl的代码。

vlog:
	vlogan -l vlogan.log -sverilog -assert svaext +v2k -loc -F verilog.f
vhdl:
	vhdlan -l vhdlan.log -F vhdl.f
	

二、Elaboration 代码如下所示,make uvm分析并生成uvm的库文件;make testbench分析并生成顶层testbench的库文件;make elab编译生成simv文件,其中如果环境中用到了VIP,需要指定VIP自带的so库文件

uvm:
	vlogan -l uvm.log -ntb_opts uvm -full64 +define+UVM_NO_DPI +define+UVM_NO_DEPRECATED

testbench:
	vlogan -l testbench.log -ntb_opts uvm -full64 -sverilog -debug_pp +define+UVM_NO_DPI +define+NSYS_UVM +plusarg_save +v2k -lca -F tb.f

elab:
	vcs -l elab.log -full64 -debug_pp -debug_all -lca -fsdb -timescale=1ns/1ps ./vip/common/latest/C/lib/amd64/VipCommonNtb.so -top ${top_name}

其中tb.f文件如下所示:

./top_tb.sv
-F ./vip/latest/sim/vip.f    #vip的filelist

其中top_tb.sv文件如下所示:

`include "uvm_pkg.sv"
`include "vip.sv"     //VIP的env文件

module top_tb();
    `include "uvm_macros.svh"
    import uvm_pkg::*;

    `include "vip_testbench.sv"  //VIP的testbench文件

	***
	***
	***	
endmodule

三、Simulation 代码如下所示,执行仿真。

run:
	./simv -l run.log +UVM_VERBOSITY=UVM_FULL +UVM_TESTNAME=${testname}

————————————————
版权声明:本文为CSDN博主「hh199203」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/hh199203/article/details/120165288

⚠️ **GitHub.com Fallback** ⚠️