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