Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
System verilog 用typedefs随机化结构_System Verilog - Fatal编程技术网

System verilog 用typedefs随机化结构

System verilog 用typedefs随机化结构,system-verilog,System Verilog,我试图将一个有typedefs的结构随机化,但它并没有随机化。我怎样才能做到这一点 typedef enum bit[1:0]{A=0, B=1,E=2,F=3}dl_pkt_type; typedef enum bit[2:0]{G=4,H=5,C=6, D=7}tl_pkt_type; typedef struct { dl_pkt_type dl_pkt; tl_pkt_type tl_pkt; } pkt_struct; class packet;

我试图将一个有typedefs的结构随机化,但它并没有随机化。我怎样才能做到这一点

typedef enum bit[1:0]{A=0, B=1,E=2,F=3}dl_pkt_type;
typedef enum bit[2:0]{G=4,H=5,C=6, D=7}tl_pkt_type;
  
  typedef struct {
    dl_pkt_type dl_pkt;
    tl_pkt_type tl_pkt;
  } pkt_struct;
    
class packet;

 rand pkt_struct p;
 rand dl_pkt_type dl;
 rand tl_pkt_type tl;
  //pre randomization function
  function void pre_randomize();
    $display("Inside pre_randomize");
  endfunction
  
  //post randomization function
  function void post_randomize();
    $display("Inside post_randomize");
    $display("dl: %0s   tl: %0s",p.dl_pkt,p.tl_pkt);
    $display("dl: %0s   tl: %0s",dl,tl);
  endfunction
endclass

module rand_methods;
  initial begin
    packet pkt;
    pkt = new();
    pkt.randomize;
  end
endmodule
这是我得到的输出:

Inside pre_randomize
Inside post_randomize
p.dl_pkt: A   p.tl_pkt: 
dl: B   tl: G

我希望
p.dl\u pkt
p.tl\u pkt
能够随机化。

您还需要将关键字
rand
添加到您的结构中:

  typedef struct {
    rand dl_pkt_type dl_pkt;
    rand tl_pkt_type tl_pkt;
  } pkt_struct;

typedef enum bit[1:0]{A=0, B=1,E=2,F=3}dl_pkt_type;
typedef enum bit[2:0]{G=4,H=5,C=6, D=7}tl_pkt_type;
  
  typedef struct {
    rand dl_pkt_type dl_pkt;
    rand tl_pkt_type tl_pkt;
  } pkt_struct;
    
class packet;

 rand pkt_struct p;
 rand dl_pkt_type dl;
 rand tl_pkt_type tl;
  //pre randomization function
  function void pre_randomize();
    $display("Inside pre_randomize");
  endfunction
  
  //post randomization function
  function void post_randomize();
    $display("Inside post_randomize");
    $display("dl: %0s   tl: %0s",p.dl_pkt.name,p.tl_pkt.name);
    $display("dl: %0s   tl: %0s",dl.name,tl.name);
  endfunction
endclass

module rand_methods;
  initial begin
    packet pkt;
    pkt = new();
    pkt.randomize;
  end
endmodule