testbench中生成2个时钟我需要2个时钟以不同的频率工作。我怎么能在systembenchilog
,但如果我写的像
forever
begin
#5ns clk1=~clk1;
#4ns clk2=~clk2;
end
CLK2 CLK1完成后会产生,他们不会产生在同一时间。无论如何,它有效吗?
testbench中生成2个时钟我需要2个时钟以不同的频率工作。我怎么能在systembenchilog
,但如果我写的像
forever
begin
#5ns clk1=~clk1;
#4ns clk2=~clk2;
end
CLK2 CLK1完成后会产生,他们不会产生在同一时间。无论如何,它有效吗?
按顺序评估begin/end
块中的语句。您需要为它们并行运行两个forever
块。
forever begin
#5ns clk1 = ~clk1;
end
forever begin
#4ns clk2 = ~clk2;
end
的一种方式是使用2个独立的intital
块:
module tb;
bit clk1, clk2;
initial forever #5ns clk1 = ~clk1;
initial forever #4ns clk2 = ~clk2;
endmodule
另一种方式是使用一个单一的intital
块以fork
/join
代替begin
/end
。
尝试使用非阻塞分配
forever
begin
#5ns clk1 <= ~clk1;
#4ns clk2 <= ~clk2;
end
我很惊讶地发现,这个工程(一'initial'块内)。这很聪明,但我不推荐使用它,因为它不像2个初始块或fork-join那样简单。 – toolic