【FPGA/HDL】Xilinx ISE 14.7でIO信号をIO registerにパッキングする方法&確認する方法

投稿日:2015年10月14日
最終更新日:2018年11月4日

IOレジスタへのパッキングについて色々調べたのでメモ。

FPGAをcompile(mapping)するときに、IO padの信号はなるべくI/O registerにパッキングした方がimingパフォーマンス的には望ましく、Timing制約を達成するうえでも有効。ただ、特に指定せずにコンパイルをかけるとI/Oレジスタにパッキングされないことがよくある。GUIからパッキングを指定する場合、processウィンドウの「Implement Design」→「Map」を右クリックして「Process Properties」を選択。すると以下のウィンドウが出てくる。Defaultだと、下の「Property display level」が「Standard」になっているので、ここを「Advanced」にして、「Pack I/O Registers/Latches into IOBs」を「For Inputs and Outputs」にしてApply。

(注意:上の画像は設定後にコンパイルした後の結果なので、コンパイル前とちょっと異なります)もっと明示的に指示したい場合は、ucfファイルの中に以下の条件

INST “****(階層を含むRegister名)” IOB = FORCE;

を書くことで、強制的にI/Oレジスタへのパッキングをさせることができる。I/Oレジスタのパック制御についてはこのARが詳しい。マッピング後ちゃんとIOレジスタにパッキングされているか確認する場合は

「Design OverView」タブ→「IOB Properties」

をクリックすると、各IOBについての詳細が見られる。この中で、「Reg(s)」の項に「IFF」(入力レジスタ)または「OFF」(出力レジスタ)がついていればパッキングされている。空白ならパッキングされていないので、設定を確認するべし。


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください