如何在verilog中将寄存器初始化为随机值?

如何在verilog中将寄存器初始化为随机值?,verilog,system-verilog,Verilog,System Verilog,我在设计中使用了时钟切换电路。这是细胞的行为模型 module toggle (En, CP, Q); input CP, En ; output Q; reg Q_int; `ifdef INIT initial Q_int = 1'b0; `endif always @ (posedge CP) begin if (En) Q_int <= ~Q_int; end assign Q = Q_int; endmodule

我在设计中使用了时钟切换电路。这是细胞的行为模型

module toggle (En, CP, Q);
   input CP, En ;
   output Q;

   reg Q_int;

 `ifdef INIT
  initial Q_int = 1'b0;
 `endif

   always @ (posedge CP) begin
     if (En) Q_int <= ~Q_int;
   end

   assign Q = Q_int;

endmodule
在Verilog还是SystemVerilog中

一种方法是使用第18.13.2节
$uradom\u range()
函数。将单个参数传递给它1将随机返回0或1。当我将杂项种子值传递给模拟器命令(VCS或Incisive)时,我会得到分配给
Q_int
的随机初始值

module toggle (En, CP, Q);
   input CP, En ;
   output Q;

   reg Q_int;

  initial Q_int = $urandom_range(1);

   always @ (posedge CP) begin
     if (En) Q_int <= ~Q_int;
   end

   assign Q = Q_int;

endmodule
模块切换(En、CP、Q);
输入CP,En;
输出Q;
注册会计师;
初始Q_int=$Uradom_范围(1);
始终@(posedge CP)开始
如果(En)Q_int您也可以使用

 $random(seed_value) % 2...

种子值很重要,因为如果您希望通过输入相同的种子值来复制相同的输出

您的代码看起来不错,应该将Q_int初始化为0,但请确保您在命令行中传递了“INIT”。

您的代码看起来很简单

module toggle (En, CP, Q);
   input CP, En ;
   output Q;

   reg Q_int;

  // initial Q_int = $urandom_range(1,0);

  // initial Q_int = $random();

   always @ (posedge CP) begin
     if (En) Q_int <= ~Q_int;
   end

   assign Q = Q_int;

endmodule
模块切换(En、CP、Q);
输入CP,En;
输出Q;
注册会计师;
//初始Q_int=$Uradom_范围(1,0);
//初始Q_int=$random();
始终@(posedge CP)开始

如果(En)Q_int这如何回答关于初始化为随机值的主要问题?这应该是评论,而不是答案。是的,toolic应该是评论而不是答案,但根据堆栈溢出规则,只有得到50分的人才能对任何人的问题或答案发表评论。关于问题,据我从问题和代码的意图理解,此人在初始化Q_int时遇到问题,所以我相应地回答了它。这里的要点是,问题中提到的任何原始代码对我来说都很好,应该可以工作,但由于某种原因,它无法工作,无法初始化变量Q_int。此外,在问题的最后一部分,人们问
,那么我如何将Q_int初始化为零或一以进行模拟。
。因此,此语句表明此人在初始化变量时遇到问题。我只是表达了我的想法,他/她可能错过了什么。是的,一开始我试着对它发表评论,但没能做到,所以我回答了这个问题。
module toggle (En, CP, Q);
   input CP, En ;
   output Q;

   reg Q_int;

  // initial Q_int = $urandom_range(1,0);

  // initial Q_int = $random();

   always @ (posedge CP) begin
     if (En) Q_int <= ~Q_int;
   end

   assign Q = Q_int;

endmodule