vcs分步编译仿真


前言

通常情况下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}
	

总结

本文主要介绍vcs的三步编译仿真的方法。

  • 12
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值