MAX10のデュアルコンフィグPOFを自動生成させたい [FPGA]

いまのとこQuartusPrimeは、MAX10のPOFはシングルイメージコンフィグではコンパイルフローで自動で生成されるものの、メモリ初期値付きの圧縮コンフィグとデュアルイメージコンフィグを使う場合はConvert Programming Filesで手作業で変換してやらないといけない。
USB-BlasterとQuartus Programmerでやる分にはSOFを直接流し込めるので、さほど手間ではないのだけれど、Chromeアプリとシリアル経由でコンフィグするPERIDOT Projectでは毎回RPDを生成せねばならず、なかなかに面倒くさい。

なので、MAX10のデュアルイメージコンフィグ用のファイル(POFと書き込み用RPD)を自動で生成するTclを作った。
 → auto_generate_dualboot_rpd.tcl

このtclファイルをプロジェクトフォルダの直下に置き、qsfファイルに以下の一行を追加する。(表示の都合で2行に折り返されてるけどそこは心眼で)

set_global_assignment -name POST_MODULE_SCRIPT_FILE "quartus_sh:auto_generate_dualboot_rpd.tcl"

これでoutput_filesフォルダの下に自動でPOFとRPDが生成される。RPDは4ファイル生成され、各ファイルの内容は以下のとおり。

<project名>_auto.rpd
内蔵フラッシュ全領域のイメージ

<project名>_cfm0_auto.rpd
コンフィグレーション0領域のイメージ

<project名>_cfm1_auto.rpd
コンフィグレーション1領域のイメージ

<project名>_ufm_auto.rpd
ユーザーフラッシュ領域のイメージ

ただしこのTclで生成しているデータではcfm0とcfm1は同一でufmは利用しておらず、実際に使うのはcfm1のRPDだけ。

なお、このtclはMAX10のデュアルイメージコンフィグ専用なので、それ以外のコンフィグモードを使ってるプロジェクトに設定するとエラーで止まると思いまず。

CZGAW93UYAAYyoc.jpg