Verilog HDL では、1 ビットを変更している間、レジスタ ファイルの残りの部分が変更されないようにする方法を教えてください。次の例のように、
reg [31:0] result;
reg [31:0] next_result;
reg [4:0] count;
wire done;
//some code here...
result <= 32'b0;
always @* begin
if(done==1'b1) begin
next_result[count] <= 1'b1;
end
end
always @(posedge clock) begin
result <= next_result;
//the rest of the sequential part, in which count increments...
end
x
数サイクル後に結果に多くの (未知の) 値が含まれていることが判明しました。これは、変更中にレジスタ ファイルが一定に保たれないことを意味しますresult[count]
。奇妙なことに、この問題は合成中にのみ発生し、シミュレーション目的ではすべてがうまくいきます。レジスタファイルの残りの部分を変更しないように「強制」したいことをシンセサイザーに伝える方法があるかどうか疑問に思います。