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