2013-10-22 217 views
1

testbench中生成2个时钟我需要2个时钟以不同的频率工作。我怎么能在systembenchilog

,但如果我写的像

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

CLK2 CLK1完成后会产生,他们不会产生在同一时间。无论如何,它有效吗?

回答

1

按顺序评估begin/end块中的语句。您需要为它们并行运行两个forever块。

forever begin 
    #5ns clk1 = ~clk1; 
end 

forever begin 
    #4ns clk2 = ~clk2; 
end 
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

尝试使用非阻塞分配

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

我很惊讶地发现,这个工程(一'initial'块内)。这很聪明,但我不推荐使用它,因为它不像2个初始块或fork-join那样简单。 – toolic