1、运行helloworld.sv时,报错如下:
原因是work文件夹已经存在,解决方式:手动删除work文件夹,或者在do脚本中添加如下代码,通过脚本删除work文件夹:
if [file exists work] {
vdel -all
}
2、参照《UVM实战》的代码尝试通过modelsim仿真,发现仿真数据从复位之前就开始了
对应的driver代码为:
`ifndef MY_DRIVER__SV
`define MY_DRIVER__SV
class my_driver extends uvm_driver;
function new(string name = "my_driver", uvm_component parent = null);
super.new(name, parent);
endfunction
extern virtual task main_phase(uvm_phase phase);
endclass
task my_driver::main_phase(uvm_phase phase);
top_tb.rxd <= 8'b0;
top_tb.rx_dv <= 1'b0;
while(!top_tb.rst_n)
@(posedge top_tb.clk);
for(int i = 0; i < 256; i++)begin
@(posedge top_tb.clk);
//top_tb.rxd <= $urandom_range(0, 255);
top_tb.rxd <= i;
top_tb.rx_dv <= 1'b1;
`uvm_info("my_driver", "data is drived", UVM_LOW)
end
@(posedge top_tb.clk);
top_tb.rx_dv <= 1'b0;
endtask
`endif
还没弄明白,rx计数不应该从top_tb.rst_n拉高之后,跳出while,之后才开始rxd计数吗?