我怎么能用systemverilog在testbench中生成2个时钟

时间:2013-10-22 17:00:43

标签: verilog system-verilog

我需要2个不同频率的时钟工作。

但是如果我写的那样

forever
begin
 #5ns clk1=~clk1;
 #4ns clk2=~clk2;
end
在clk1完成后,clk2将生成,它们不会同时生成。无论如何要让它发挥作用?

3 个答案:

答案 0 :(得分:2)

一种方法是使用2个单独的intital块:

module tb;
    bit clk1, clk2;
    initial forever #5ns clk1 = ~clk1;
    initial forever #4ns clk2 = ~clk2;
endmodule

另一种方法是使用intital / fork而不是join / begin的单个end块。

答案 1 :(得分:1)

begin / end块中的语句按顺序进行评估。您需要创建两个forever块才能并行运行。

forever begin
  #5ns clk1 = ~clk1;
end

forever begin
  #4ns clk2 = ~clk2;
end

答案 2 :(得分:-1)

尝试使用非阻止分配

forever
begin
 #5ns clk1 <= ~clk1;
 #4ns clk2 <= ~clk2;
end