FPGAにおける配置配線の話
Advanced FPGA Design: Architecture, Implementation, and Optimizationから。
Chapter16の Place and Route Optimizationがおもしろい。
FPGAの開発においてあまり配置と配線を意識したことは無かったのですが、この本にはこう書いてある。
For a design of any complexity, a good route can only be achieved with a good placement.
言われてみれば確かにそうで、まずは良い配置ありき、良い配置無しで良い配線はできない。
いくつか最適化の話もあり、QuartusIIで最適化によるレジスタの削除を抑止に書いたような話もいくつか出てきています。Xilinxの有料セミナー以外では、あまり聞けない話もあっておもしろい。
配置配線周りも、自分自身なかなか上手く使いこなせていないところがある。小さいデバイスだと配置の制約無くても何回も回せばそれなりに収束してくれるし、大きいデバイスはフロアプランナーで開こうとすると落ちる。大きいデバイスの場合は、フロアプランナー以外も不安定なので、余計な事をしないで素直に配置配線が終わるのを待っている方が良かったことの方が多い。これは、XもAも両方ね。
Xilinxのバッドノウハウの一つを紹介。
引き継いだ時にやばいプロジェクトというのは傾向があります。
・タイミング制約が正確ではない。そもそも制約がかかっていない
・タイミング制約がところどころ外してある
・それなのにタイミングエラーが大量に出ている
・FPGA Editorのlogがある
・Starting Placer Cost Tableが1じゃない。(parの-t optionで値が設定してある)
この場合、ちょっと回路を変えただけで動きが微妙に変わってしまうことが多い。
この本にも書いてありますが、こんな時はまず今の配置配線結果をそのままucfに落として、そこをスタート地点にする方法がある。回路を変更しても、最初の配置配線の結果を制約として与えることで、変更していないところへの影響を抑える。変更の結果ノード名が変わり配置配線時にエラーがでますが、それはしょうがないのでその行をコメントアウト。回路がFIXした時点で、コメントアウト部分を元に戻し、再度エラーの箇所をコメントアウトしていくとさらに良い。
Chap17には実際にFloorpalnを使ったチューニングが書いてあって、最適化したフィジカルシンセシス後の配置配線だけで10%も速度を上げている。RISCプロセッサが、Virtex2で122MHz→135MHzなのでかなりすごい。
The comments to this entry are closed.
Comments