:私は警告を無視(または変更した場合はYosysの初期ブロックにRAM値を割り当てる方法は?私は、読み取り専用の推論されたRAMに値を代入する最初のブロックを使用しようとしています
$ yosys -q -p "synth_ice40 -blif rom.blif" rom.v
Warning: Blocking assignment to memory in line rom.v:9 is handled like a non-blocking assignment.
Warning: Blocking assignment to memory in line rom.v:10 is handled like a non-blocking assignment.
:
module rom (
input clk,
input [5:0] addr,
output reg [15:0] data);
reg [15:0] mem [0:63];
initial begin
mem[0] = 1;
mem[1] = 2;
end
always @(posedge clk)
data <= mem[addr];
endmodule
Yosysは、この警告メッセージを表示しますノンブロッキングへの最初の割り当て)、私は実験的にRAMがパワーアップ後いくつかのクロックサイクルまで正しい値を取得しないことがわかります。
このように初期ブロックを使用することはできませんか? yosys githubリポジトリの第50号の議論では、それが必要であることを示唆するサンプルモジュールmem2reg_with_two_always_blocks
が提供されています。しかし、そのモジュールをコンパイルすると、同じ警告メッセージが表示されます。
はい、コンテキストは、SPIスレーブプログラミングを使用するICE40です(myStormボード上の唯一のオプションです)。設定後に起動を遅らせるためにカウンタを使用して回避策を講じます。しかし、私はまだブロックされていない初期ブロックの中で非ブロックとしてブロック割り当てを扱うことに関する警告メッセージを理解していません。私は初期化がタイムステップ0の開始時に(または前に)起こるという意図を表現したいと思っています。 –
@ R.Millerは編集を参照してください。 – CliffordVienna