(一)UVM验证平台搭建1

这篇具有很好参考价值的文章主要介绍了(一)UVM验证平台搭建1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 UVM实战中实例源码下载:https://www.hzcourse.com/web/refbook/detail/5651/229

一、环境配置

终于配置跑通 UVM实战中的实例了,下面是基于linux+vcs+verdi的环境配置

1、将下载的源码文件夹解压后共享到虚拟机中

2、需要重新配置setup.vcs文件

uvm安装,UVM学习,fpga开发,硬件工程

原始文件:

#!/bin/csh
setenv VCS_HOME /opt/vcs/E-2011.03 
setenv UVM_HOME ~/uvm/uvm-1.1d
setenv WORK_HOME `pwd`
setenv SIM_TOOL VCS 
set path = (/opt/vcs/E-2011.03/bin ${WORK_HOME}/bin $path)

说明:

  1. 这个配置文件是基于csh的,安装的虚拟机不一定支持,支持bash。

修改文件:

#!/bin/bash

export VCS_HOME=/opt/synopsys/vcs
export UVM_HOME=/home/host/verify/example_and_uvm_source_code/uvm-1.1d/
export WORK_HOME=/home/host/verify/example_and_uvm_source_code/puvm
export SIM_TOOL=VCS
export NOVAS_HOME=/opt/synopsys/verdi
export PATH=/opt/synopsys/vcs/linux64/bin:$PATH

说明:

  1. vcs_home:vcs的安装路径
  2. uvm_home:uvm库文件的路径
  3. work_home:执行代码的工作路径
  4. sim_tool:设置使用的仿真工具是vcs
  5. novas_home:verdi的安装路径
  6. path:脚本的路径
  7. 修改完后要source setup.vcs

3、run文件配置

 uvm安装,UVM学习,fpga开发,硬件工程

#!/bin/csh
if ( $SIM_TOOL == "QUESTA" ) then
vlib work
vlog -f filelist.f
vsim -sv_lib $UVM_DPI_DIR/uvm_dpi -do $WORK_HOME/bin/vsim.do -c top_tb
endif

if ( $SIM_TOOL == "VCS" ) then
vcs -sverilog $UVM_HOME/src/dpi/uvm_dpi.cc -CFLAGS -DVCS -timescale=1ns/1ps -f filelist.f 
./simv 
endif

if ( $SIM_TOOL == "NCSIM" ) then
ncverilog +sv -f filelist.f -licqueue -timescale 1ns/1ps -uvm -uvmhome $UVM_HOME 
endif

 说明:

  1. sim_tool:对应不同的仿真工具,在setup.vcs中设置的是vcs
  2. 但不能直接使用这个run文件,需要修改
  3. 使用Makefile来运行

4、Makefile

使用makefile用着更习惯

UVM_HOME = /home/host/verify/example_and_uvm_source_code/uvm-1.1d/

elab:
	vcs -top top_tb -full64 -lca -sverilog -debug_access+all -timescale=1ps/1ps -sim_res=1ps -kdb \
    $(UVM_HOME)/src/dpi/uvm_dpi.cc -CFLAGS -DVCS \
    +incdir+$(UVM_HOME)/src $(UVM_HOME)/src/uvm.sv \
    -f filelist.f \
	-LDFLAGS"-Wl,--rpth,$(NOVAS_HOME)/share/PLI/VCS/LINUX64"
run:
	./simv &
verdi:
    verdi -ssf ./tb.fsdb &
clean:
	\rm -rf AN.DB
	\rm -rf *simv*
	\rm -rf DVEfiles
	\rm -rf ucli.key

all: clean elab run

说明:

  • 设置uvm_home的路径
  • elab中要把UVM的库文件incdir进来,设置了top顶层是top_tb
  • 若UVM的库文件就在VCS的安装路径下面可以直接用-ntb_opts uvm
  • 需要修改filelist和把dut.sv包含到对应的路径中
  • 在原始的top_tb.sv文件中加入下列initial代码
  • 先删掉原本的run文件,执行make all 再make verdi 即可以用verdi看波形
initial begin
	$fsdbDumpfile("tb.fsdb");
	$fsdbDumpvars;
end

(修改后的)2.2.1代码运行结果:

uvm安装,UVM学习,fpga开发,硬件工程文章来源地址https://www.toymoban.com/news/detail-524162.html

到了这里,关于(一)UVM验证平台搭建1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 诙谐有趣的《UVM实战》笔记——第二章 一个简单的UVM验证平台

    某天白天在地铁上听鬼故事,结果晚上要睡觉时,故事里的情节都历历在目,给我鸡皮疙瘩起的~ 不过我倒是没有吓得睡不着,而是转念一想,为啥我学知识忘得很快,随便听的鬼故事却记得这么清楚咧? 那如果能像听鬼故事那样去学知识,是不是可以记得更牢固呢? 经过一

    2024年02月08日
    浏览(61)
  • 【UVM】-- UVM测试平台搭建与调试

    《UVM》实战中这个DUT的功能比较简单: 在clk的上升沿,且rst不为低电平的时候,将输入的信号直接发送出去,并且输出输入的使能信号; 在clk上升沿,如果rst为低电平,复位输出信号和使能信号 clk 时钟输入信号 rst_n 复位输入信号  rxd 8bit输入数据信号 rx_dv 输入使能信号

    2024年02月15日
    浏览(37)
  • (UVM验证学习13) apb和ahb的另外一些笔记

    APB slave端的要求比较灵活: 对于总线写入到slave的传输行为,写入的数据data既可以在PSEL为高时,在CLK的上升沿锁存;也可以当PSEL为高时,在PENABLE的上升沿锁存。区别就是前者会早一点,PENABLE要在CLK上升沿后才会被驱动拉高。 对于总线的读slave行为,数据只要在PWRITE=0,然后

    2024年02月08日
    浏览(39)
  • 基于vcs+uvm+xilinx ip的仿真平台的半自动化搭建

    系 统:ubuntu 18.04 仿真平台:vcs_2018.09-SP2 开发平台:vivado 2019.2 本文的主要目的是自动化搭建基于vcs+uvm+xilinx ip的仿真平台,节省平台搭建的时间与精力。 拿到一个项目,一般的平台搭建的步骤:去网上找一个makefile脚本(或者使用原项目脚本),修改相应的软件路径,添加

    2024年01月18日
    浏览(48)
  • 基于UVM+VCS基本平台,运行《UVM实战》中的第一个UVM代码并输出结果

    (1)下载puvm.tar.gz和uvm-1.1d.tar.gz压缩包 ,使用分别使用tar zxvf puvm.tar.gz和 tar zxvf uvm-1.1d.tar.gz解压到当前目录下 (2)找到puvm-src-ch2-dut-dut.sv文件,将该文件拷贝到puvm-src-ch2-section2.2-2.2.1目录下 (3)打开puvm-src-ch2-section2.2-2.2.1-Makefile.vcs文件并按照下面的方法进行编辑,编辑完后

    2024年02月09日
    浏览(46)
  • UVM验证方法学_phase机制

    phase机制是uvm最重要的几个机制之一,它使得uvm的运行仿真层次化,使得各种例化先后次序正确,保证了验证环境与DUT的正确交互。 目录 一、phase机制概述 二、phase执行顺序 (1)时间顺序 (2)空间顺序 三、phase机制中uvm树的遍历 四、phase的super 五、phase的跳转 六、phase的调

    2024年02月13日
    浏览(39)
  • UVM验证方法学_config_db机制

    config_db机制是uvm中很重要的机制之一。由于验证平台的结构往往会比较复杂,其中的组件如果要进行互相通信和参数传递,则需要一种高效且稳妥的办法,这就是config_db机制的意义。  目录 一、config_db机制概述 (1)路径 (2)set和get (3)省略get函数 二、跨层次多重设置 三

    2024年02月05日
    浏览(45)
  • 【从零开始学习 UVM】6.4、UVM 激励产生 —— uvm_do 宏详解

    请注意, start 方法的 call_pre_post 字段设置为0, 这意味着在使用这些序列宏时,序列的pre_body和post_body方法将永远不会被调用 。否则,执行流程与通过start方法执行序列时类似。 使用序列宏的优点是可以使用内联约束,但是您失去了控制执行sequence中 pre_body 和 post_body 方法调

    2023年04月08日
    浏览(75)
  • 【从零开始学习 UVM】9.2、UVM Config DB —— UVM config database 详解【重要】

    UVM有一个内部数据库表,可以将值存储在给定名称下,并且稍后可以由其他TestBench组件检索。 uvm_config_db 类提供了一个方便的接口,位于 uvm_resource_db 之上,以简化用于uvm_component实例的基本接口。 请注意,所有函数都是静态的,并且必须使用 :: 作用域运算符调用 。 这样的配

    2023年04月09日
    浏览(78)
  • 【从零开始学习 UVM】8.2、Reporting Infrastructure —— uvm_printer 详解

    在一个随机验证环境中,数据对象不断地由不同的组件生成和操作, 如果能够显示对象的内容,则调试会变得更加容易 。 传统上,这是通过将值打印到日志文件或屏幕上的 $display 语句和自定义打印函数来完成的。

    2023年04月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包