uvm-1.2 examples —— 1.2 makefile

1.2 makefile



前言

makefile文件是测试用例的入口文件,这里主要介绍uvm-1.2自带测试用例中,VCS工具的makefile文件。包括每个case共用的makefile文件,和每个case单独使用的makefile文件。


一、所有测试用例共用的makefile文件

共用的makefile文件如下所示。

x: all

#
# Include file for VCS Makefiles
#

UVM_VERBOSITY =	UVM_LOW

#
# Note that +acc and +vpi have an adverse impact on performance
# and should not be used unless necessary.
#
# They are used here because they are required by some examples
# (backdoor register accesses).
#


TEST = /usr/bin/test
N_ERRS = 0
N_FATALS = 0

VCS =	vcs -sverilog -timescale=1ns/1ns \
	+acc +vpi \
	+incdir+$(UVM_HOME)/src $(UVM_HOME)/src/uvm.sv \
	$(UVM_HOME)/src/dpi/uvm_dpi.cc -CFLAGS -DVCS

SIMV = 	./simv +UVM_VERBOSITY=$(UVM_VERBOSITY) -l vcs.log

URG  = urg -format text -dir simv.vdb

CHECK = \
	@$(TEST) \( `grep -c 'UVM_ERROR :    $(N_ERRS)' vcs.log` -eq 1 \) -a \
		 \( `grep -c 'UVM_FATAL :    $(N_FATALS)' vcs.log` -eq 1 \)

clean:
	rm -rf *~ core csrc simv* vc_hdrs.h ucli.key urg* *.log

其中,最开始的x和最后的clean分别定义了两个函数,x调用的all函数,是在每个case单独的makefile中实现的,clean则是删除仿真生成的临时文件。
其余都是声明一些变量。
UVM_VERBOSITY变量用于控制uvm打印的log等级;
TEST、N_ERRS、N_FATALS这三个变量在CHECK中被使用,
CHECK主要的目的是,在仿真结束后检查有没有UVM_ERROR和UVM_FATAL;
VCS变量存放的是vcs仿真的命令和添加的选项,其中,

  • -sverilog:支持SystemVerilog
  • -timescale=1ns/1ns:指定仿真的时间单位和精度,斜杠前面是时间单位,后边是时间精度
  • +acc:使能PLI中的ACC
  • +vpi:使能VPI
  • +incdir+$(UVM_HOME)/src $(UVM_HOME)/src/uvm.sv $(UVM_HOME)/src/dpi/uvm_dpi.cc :添加仿真的搜索路径
  • -CFLAGS -DVCS:编译UVM源文件时,一般使用 -CFLAGS -DVCS 选项。-DVCS代表为C源代码定义的宏。所有已-D开始的选项都被gcc、g++编译器当做宏来处理。和VCS编译时间的选项一起,应该传输-DVCS时加上选项-CFLAGS,这样-DVCS就可以传给gcc、g++编译器了。

-CFLAGS 和 -DVCS有什么用?
How to use the gcc compiler’s option “-DVCS”?
-DVCS represents a macro defined for C source code. Please note that anything followed by -D is treated as a macro by the gcc/g++ compiler. Along with VCS compile-time options one should pass -DVCS with -CFLAGS so that -DVCS gets passed to gcc/g++.Example steps:% vcs top.v test.c -CFLAGS -DVCS
What’s the compile environment that we need to use this option?
“-CFLAGS -DVCS” is usually required during UVM source compilation.
Therefore, if we are using an external UVM source then you must pass -DVCS.(If we are using -ntb_opts uvm then no need to pass this option because it is internally passed with -ntb_opts uvm). Also, if we have any macros with the name ‘VCS’ defined in any other C source then we need to pass it with -CFLAGS -D

SIMV变量存放的是执行vcs仿真的命令;
URG变量用于生成覆盖率文件。

二、每个测试用例单独的makefile文件

下面列出了hello_world这个测试用例的makefile文件。

UVM_HOME	= ../../..

include ../../Makefile.vcs


all: comp run

comp:
	$(VCS) +incdir+. \
		hello_world.sv

run:
	$(SIMV)
	$(CHECK)

首先指定UVM_HOME的相对路径;其次加入共用的makefile文件;再定义all函数,all函数分别调用了comp和run函数;接着定义comp函数,这里使用了前面公共makefile中定义的VCS变量;最后定义了run函数,分别执行仿真和检查仿真log中是否有UVM_ERROR和UVM_FATAL。


总结

makefile是测试用例的入口文件,只有了解了makefile文件后,才能知道如何启动仿真。本文以uvm-1.2/examples中的hello_world测试用例为例,分别介绍了共用的makefile文件和case单独的makefile文件。

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: VCS 2016是一种流行的硬件描述语言仿真器,由Synopsys公司开发。它提供了许多功能和工具,可用于验证和仿真芯片级设计。 UVM(统一验证方法)是一种用于验证设计的模块化和可重用验证方法学。UVM 1.2是最早版本的UVM,它提供了一种基于基类的验证方法学,使用SystemVerilog语言进行描述。 VCS 2016与UVM 1.2的结合可以为设计验证工程师提供更高效和准确的验证环境。VCS 2016提供了对UVM的全面支持,包括UVM 1.2的所有特性和功能。 通过将VCS 2016与UVM 1.2结合使用,验证工程师可以更轻松地构建复杂的验证环境,编写可重用的测试类和组件,并进行仿真和调试。使用VCS 2016的仿真器,验证工程师可以高效地运行UVM 1.2验证环境,并跟踪和分析仿真结果。 此外,VCS 2016还具有更高的性能和更好的调试能力,可以加速验证过程并减少验证周期。验证工程师可以利用VCS 2016的先进调试功能,如波形查看器和覆盖分析器,快速定位和解决验证问题。 总之,VCS 2016与UVM 1.2的结合提供了验证工程师所需的强大工具和方法,使他们能够更高效地验证芯片级设计,并确保其功能和可靠性。 ### 回答2: vcs2016是一个流行的EDA工具,用于数字电路设计和仿真。它为设计工程师提供了强大的功能和性能,可以在各种设计阶段进行仿真和验证。 UVM(Universal Verification Methodology)是一个用于验证系统级集成电路(SoC)设计的标准方法学。它提供了一种结构化的、可重复使用的验证环境,可以加速和简化验证过程,并增强团队之间的协作。 vcs2016和UVM1.2可以很好地结合使用,以实现高效的验证。vcs2016具有对UVM1.2标准的完全支持,可以轻松地集成UVM环境。使用vcs2016进行仿真和验证时,可以充分利用UVM1.2中提供的各种验证组件和方法。 通过vcs2016和UVM1.2的结合,设计工程师可以创建复杂的验证环境,包括生成测试用例、检测设计中的错误和漏洞,以及跟踪和调试仿真结果。此外,vcs2016和UVM1.2还提供了详细的报告和覆盖率分析,可以帮助工程师评估验证的完整性和覆盖率。 总的来说,vcs2016和UVM1.2是一对强大的工具组合,可以使设计工程师更高效地进行数字电路的仿真和验证工作。它们的使用可以显著提高设计的质量,并缩短产品开发周期。 ### 回答3: vcs2016是一种常见的硬件验证工具,而UVM1.2则是一种通用验证方法。VCS2016是由Synopsys公司开发的一款高性能仿真工具,主要用于硬件设计验证和功能验证。它支持多种语言,如Verilog、SystemVerilog和VHDL,可以进行功能仿真、时序仿真、功耗仿真等多种仿真场景。 而UVM1.2(Universal Verification Methodology)是一种通用验证方法,它基于SystemVerilog编程语言,并结合了基于类的对象编程和事务级建模的思想。UVM提供了一系列的类和方法,用于验证硬件设计的正确性和功能性。它能够对设计进行自动化的验证,包括测试生成、结果收集和分析等。 VCS2016和UVM1.2在硬件验证中常常配合使用。VCS2016作为一个仿真工具,可以通过UVM1.2提供的验证方法和库,对设计进行仿真和验证。UVM1.2提供了一套丰富的验证组件和机制,如驱动器、监视器、代理等,可以方便地完成仿真和验证的任务。通过VCS2016和UVM1.2的组合使用,验证工程师可以更高效地完成硬件设计的验证工作。 总结起来,VCS2016和UVM1.2都是在硬件验证中常用的工具和方法。VCS2016是一款强大的仿真工具,而UVM1.2提供了一种通用的验证方法。它们的配合使用可以提高硬件验证的效率和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值