いいえ、そのような自動ループ展開はありません。このようなタイトなループの場合、ザイリンクス フォーラムで一般的に推奨されているのは、手動で 10 ~ 20 回展開し、パフォーマンスが許容できるかどうかを確認するか、アセンブリでループ コードを記述することです。
通常、ループ分岐ごとに 3 ~ 4 クロック サイクルが失われるため、fetch_data の実行にかかる時間に応じて、実行するアンロールの量を把握できます。
for (i = 0; i < 100; i+=10 ) {
a[i] = fetch_data(i);
a[i+1] = fetch_data(i+1);
a[i+2] = fetch_data(i+2);
a[i+3] = fetch_data(i+3);
a[i+4] = fetch_data(i+4);
a[i+5] = fetch_data(i+5);
a[i+6] = fetch_data(i+6);
a[i+7] = fetch_data(i+7);
a[i+8] = fetch_data(i+8);
a[i+9] = fetch_data(i+9);
}
インクリメント ステップの倍数ではない間隔サイズを監視するなど、標準のループ展開に関する注意事項に注意してください。