10時間単位またはクロック後に変数の1回限りの割り当てを行う方法:
テストベンチレベルの構成として:
reg c,d,e;
initial begin
#10;
c = a+b;
d = a;
e = b;
end
RTL(合成)の場合、最初に時計付きのテストベンチが必要です。
私は私のテストハーネスでこのような時計を生成します:
reg clk ; //Rising edge every 10 timesteps
initial begin
clk = 0;
#5;
forever begin
#5 ;
clk = ~clk;
end
end
10までカウントするカウンターを作成し、10に達すると、フリップフロップが新しい値をロードできるようにします。
wire enable = (counter == 4'b10);
always @(posedge clk or negedge rst_n) begin
if (~rst_n) begin
c <= 1'b0;
d <= 1'b0;
e <= 1'b0;
end
else if (enable) begin
c <= (a+b);
d <= a;
e <= b;
end
end
endmodule
追加のVerilogのヒント
出力は暗黙的にワイヤであり、再定義する必要はありません。
ノンブロッキング割り当ては、フリップフロップを推測するときに<=
常に使用するためのものです。@(posedge clk)
reg
sまたはタイプは、またはブロックlogic
内に割り当てることができます。sは、ポート間の接続とともに、またはポート間の接続に使用されます。always
initial
wire
assign