UVM - 13 (lab2)

Makefile传递参数到SV中

  • 在仿真阶段使用$value$plusargs函数传递字符串
// 接收Makefile中传递过来的参数
if($value$plusargs("UVM_TESTNAME",test_name)) begin
  // 传递参数之后执行这里的内容
end

应用举例

// sv文件中,用于接收仿真的时候传入的number_packets

if($(value$plusargs("NUMBER_PACKET=%d",number_packets)) begin
  $display("TEST_BASE,number_packets = %d",number_packets);
end

if($(value$plusargs("TEST_MODE=%d",test_mode)) begin
  $display("TEST_BASE,test_mode = %d",test_mode);
end
# Makefile文件
simulate:
  +NUMBER_PACKET=10  # 会传给sv中定义的变量number_packets

cmdline中传递参数

# Makefile
# 定义变量10
PKT_NUM=10

simulate:
  +NUMBER_PACKET=$(PKT_NUM);

// 命令行执行仿真的时候,可以将命令行的参数传递进去
make simulate PKT_NUM=100

Lab2思路

different seed的必要性

  • 使用不同的seed,随机的变量才会得到不同的数据
    uploading-image-458343.png

复现ERROR

  • 如果ERROR是设计的问题,本地code再跑一遍,dump波形
  • error和约束相关,将本地代码和出现error的server上的代码版本一致,设置同一个seed,跑一遍,然后dump波形

uvm testbench architecture

  • active agent中含有monitor,driver,sequencer
  • passive agent中只含有monitor

phase相关

  • build_phase() - 创建对象
  • connect_phase() - tlm连接
  • run_phase() - task,进行事务处理

master agent中monitor的作用

  • 采样接口信号,将接口信号转为transaction,发送给reference model
  • check接口信号
  • 功能覆盖率收集

Lab2_Flow

test-->env-->agent-->driver
pacekt
sequence

packet.sv


uvm component

packet_da_3

  • 一个新transaction的类,继承自老的transaction的类

test_base



posted @ 2024-03-19 10:46  Icer_Newer  阅读(19)  评论(0编辑  收藏  举报