在verilog中生成自定义波形

在verilog中生成自定义波形,verilog,Verilog,我试图用下面的代码在verilog中生成波形,但结果并不像预期的那样 initial begin d = 1'b0; #8 d <= 1'b1; #15 d <= 1'b0; end 初始开始 d=1'b0; #8天你可以这样做: initial fork d = 1'b0; #8 d = 1'b1; #15 d = 1'b0; join initial d = 1'b0; initial #8 d = 1'b1; initial #15 d = 1

我试图用下面的代码在verilog中生成波形,但结果并不像预期的那样

initial begin
    d = 1'b0;
#8  d <= 1'b1;
#15 d <= 1'b0;
end
初始开始
d=1'b0;
#8天你可以这样做:

initial fork
    d = 1'b0;
#8  d = 1'b1;
#15 d = 1'b0;
join
initial     d = 1'b0;
initial  #8 d = 1'b1;
initial #15 d = 1'b0;
initial begin
  d  =     1'b0;
  d <=  #8 1'b1;
  d <= #15 1'b0;
end
fork join
中的所有语句将同时执行

或者你可以这样做:

initial fork
    d = 1'b0;
#8  d = 1'b1;
#15 d = 1'b0;
join
initial     d = 1'b0;
initial  #8 d = 1'b1;
initial #15 d = 1'b0;
initial begin
  d  =     1'b0;
  d <=  #8 1'b1;
  d <= #15 1'b0;
end
显然,这三个初始块将同时执行

如果确实希望从过程(顺序)代码中计划3个事件,则可以执行以下操作:

initial fork
    d = 1'b0;
#8  d = 1'b1;
#15 d = 1'b0;
join
initial     d = 1'b0;
initial  #8 d = 1'b1;
initial #15 d = 1'b0;
initial begin
  d  =     1'b0;
  d <=  #8 1'b1;
  d <= #15 1'b0;
end
初始开始
d=1'b0;

d这是否意味着使用分配间延迟来提前模拟时间?@devvaibhav我不确定你的确切意思。然而,IEEE1800-2012第9.4.5节(“分配内定时控制”)规定,“分配内延迟或事件控制应延迟将新值分配到左侧,但应在延迟之前而不是延迟之后评估右侧表达式。”。如果将内部分配延迟添加到非阻塞分配,则执行将在延迟之后立即继续,并且分配将在延迟之后发生。因此,您可以有效地将事件安排在未来某个时间进行。