std_logic_vector でさまざまなビットをテストする必要があるとします。各ビットに対して for ループを実行する単一のプロセスを実装するか、各プロセスが 1 ビットをテストする for-generate を使用して「n」個のプロセスをインスタンス化する方がよいでしょうか?
FORループ
my_process: process(clk, reset) begin
if rising_edge (clk) then
if reset = '1' then
--init stuff
else
for_loop: for i in 0 to n loop
test_array_bit(i);
end loop;
end if;
end if;
end process;
生成する
for_generate: for i in 0 to n generate begin
my_process: process(clk, reset) begin
if rising_edge (clk) then
if reset = '1' then
--init stuff
else
test_array_bit(i);
end if;
end if;
end process;
end generate;
この場合、FPGA および ASIC の実装にどのような影響がありますか? CADツールで扱いやすいのは?
編集:私の質問をより明確にするために、私が1人の助っ人に与えた応答を追加するだけです:
たとえば、ISE で for ループを使用してコードを実行したとき、合成の要約では公正な結果が得られ、すべてを計算するのに長い時間がかかりました。今回は for-generate を使用していくつかのプロセスを使用してデザインを再コーディングしたとき、使用する領域が少し増えましたが、ツールはすべてをはるかに高速に計算でき、タイミング結果も向上しました。それで、それは、余分な領域のコストと複雑さの低い for-generates を使用する方が常に良いというルールを暗示していますか、それとも実装の可能性をすべて検証する必要があるケースの 1 つですか?