« Youtubeでサポートを受けた | Main | QuartusIIで最適化によるレジスタの削除を抑止 その2 »

2008.02.02

QuartusIIで最適化によるレジスタの削除を抑止

元ネタはFPGAの部屋さんから

この手の最適化が一番困るのが、やはりメモリのI/O周りです。128bitのイネーブルを1つのFFでやろうとすると、すぐに同じ問題にぶちあたります。

Xilinxの場合は、コメントの通りEquivalent Register RemovalのチェックをはずすでOK。
当然Alteraでも当然同じ事はできるわけで。昔のQuartusはそんなのわかんねーよって所に設定があったのですが、今はそれなりに分かりやすいところで設定できます。

これくらいの簡単なVerilogで試してみます。

module er(inp, outp, clk);

input inp;
output [7:0] outp;
input clk;

reg [7:0] r;
reg [7:0] outp;

always @ (posedge clk)begin
  r <= {inp, inp, inp, inp, inp, inp, inp, inp};
  outp <= r;
end

endmodule

まず普通に合成してみると、このようなメッセージが出て等価なレジスタは削除された事がわかります。

Info: Duplicate registers merged to single register
Info: Duplicate register "r[7]" merged to single register "r[0]"
Info: Duplicate register "r[6]" merged to single register "r[0]"
Info: Duplicate register "r[5]" merged to single register "r[0]"
Info: Duplicate register "r[4]" merged to single register "r[0]"
Info: Duplicate register "r[3]" merged to single register "r[0]"
Info: Duplicate register "r[2]" merged to single register "r[0]"
Info: Duplicate register "r[1]" merged to single register "r[0]"
Info: Duplicate register "outp[7]~reg0" merged to single register "outp[0]~reg0"
Info: Duplicate register "outp[6]~reg0" merged to single register "outp[0]~reg0"
Info: Duplicate register "outp[5]~reg0" merged to single register "outp[0]~reg0"
Info: Duplicate register "outp[4]~reg0" merged to single register "outp[0]~reg0"
Info: Duplicate register "outp[3]~reg0" merged to single register "outp[0]~reg0"
Info: Duplicate register "outp[2]~reg0" merged to single register "outp[0]~reg0"
Info: Duplicate register "outp[1]~reg0" merged to single register "outp[0]~reg0"

Technology map Viewerで見ると、間違いなく最適化により8bitのレジスタが1つにまとめられています。

次に、設定を変えて最適化を抑止してみましょう。Quartusの設定で、Assignment→Setting→Analysis & Synthesis Setting とすすみ、More Settingでこの画面に行きます。

ここで、Remove Duplicate RegistersがデフォルトでONになっているはずですので、ここをOFFにします。
もう一度論理合成をかけると、さっきのメッセージは出なくなります。

Technology map Viewerで見ると、宣言した数だけFFが使われています。

めでたし、めでたし。

ちなみにQuartusのVersionは 7.1 Web Editionです。

|

« Youtubeでサポートを受けた | Main | QuartusIIで最適化によるレジスタの削除を抑止 その2 »

Comments

The comments to this entry are closed.

TrackBack


Listed below are links to weblogs that reference QuartusIIで最適化によるレジスタの削除を抑止:

« Youtubeでサポートを受けた | Main | QuartusIIで最適化によるレジスタの削除を抑止 その2 »