EETOP 创芯网论坛 (原名:电子顶级开发网)
标题:
UVM test_case的随机化seed
[打印本页]
作者:
yuchen5098
时间:
2018-4-5 10:37
标题:
UVM test_case的随机化seed
我有一个用例,里面使用uvm_do_with随机产生64~1000字节包长的以太网报文, 我把这个用例文件夹复制了一份改了文件夹名字,重新运行还是一样的结果(所有包长的字节和相同),我理解是因为modelsim运行测试的时候随机化种子一样, 怎么能修改这个种子? 我目的就是希望能多跑几个用例、多随机几次包长pload_size的变化
报文的seq的部分如下定义
class seq_eth_ipv4_XXX extends uvm_sequence #(eth_frm);
eth_frm m_trans ;
rand bit[47:0] t_dmac ;
rand bit[47:0] t_smac ;
rand bit[15:0] pload_size;
function new(string name= "seq_eth_ipv4_XXX");
super.new(name);
m_trans = eth_frm::type_id::create("m_trans");
endfunction
virtual task body();
start_item(m_trans);
assert(m_trans.randomize() with {
dmac == t_dmac;
smac == t_smac;
pload.size == pload_size;
});
endtask
`uvm_object_utils(seq_eth_ipv4_XXX)
endclass
testcase如下去调用
seq_eth_ipv4_XXX ipv4_pkt ;
function new(string name= "test_sequence");
super.new(name);
ipv4_pkt = seq_eth_ipv4_XXX::type_id::create("ipv4_pkt");
endfunction
virtual task body();
if(starting_phase != null)
starting_phase.raise_objection(this);
repeat (1) begin
`uvm_do_with(ipv4_pkt,
{
ipv4_pkt.t_dmac == 48'hBBBB_FFFF_DDDD;
ipv4_pkt.t_smac == 48'h0000_1111_2222;
ipv4_pkt.pload_size >= `MIN_LENGTH-12-4 ;
ipv4_pkt.pload_size <= `MAX_LENGTH-12-4 ;
})
end
作者:
janelea
时间:
2018-4-6 22:26
回复
1#
yuchen5098
传一个种子进去仿真,种子不一样,随机序列就会不一样。
我们一般都是用seed=xxxx传进去的。
作者:
yuchen5098
时间:
2018-4-7 19:35
这个seed是怎么声明和使用的?谢谢。
作者:
yuchen5098
时间:
2018-4-8 17:33
modelsim运行命令中增加-sv_seed XX 好像就实现了不同的随机化,我再多试几个看看
作者:
fangxing523
时间:
2018-4-12 17:26
modelsim没用过,vcs中是在makefile中加上+ntb_random_seed=$(SEED),SEED可以用随机值。可以看看modelsim提供的运行脚本,里边有没有关于种子的赋值命令。
作者:
半山枫林晚
时间:
2022-6-8 22:45
MODELSIM中在vsim后面加-sv_seed random。
作者:
小欢喜
时间:
2024-9-5 18:47
这个不是因为先start_item 而后随机了嘛
欢迎光临 EETOP 创芯网论坛 (原名:电子顶级开发网) (https://bbs.eetop.cn/)
Powered by Discuz! X3.5