FC2カウンター FPGAの部屋 PlanAheadで配置配線後のクリティカルパスを修正し、配置制約をUCFに書く
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

PlanAheadで配置配線後のクリティカルパスを修正し、配置制約をUCFに書く

どうしてもクリティカルパスの遅延が制約ないに収まらない場合は、Floorplannnerで配置配線後のクリティカルパスをドラック&ドロップで移動して、その決定した制約をUCFに書き戻していた。PlanAheadでは、そのやり方が分からなかったが、筑波大学の武内修先生の”PlanAhead の基本的な使い方”に書いてあった。実際に自分のプロジェクトでやって見ながら、LOC制約だけではなく、BEL制約も出力する方法を書いてみたいと思う。使用したISEのバージョンは12.1。

使用する回路は、CMOSカメラから画像を入力してディスプレイへ出力する回路とする。”CMOSカメラから画像を入力してディスプレイへ出力15(できた!!!)”で完成したのだが、どうもメインのクロックをDCMから使っていると不安定になり、”ESP企画の旧パージョンボードでのPCLK処理方法”で直接PCLKをメインのクロックに使ったので、セットアップ時間がわずかに足りなくなっている。

それではProject NavigatorからPlanAheadを起動する。
Project NavigatorのProcessesウインドウのImplement Designを展開し、その中のPlace & Routeを展開する。Analyzer Timing / Floorplan Design (PlanAhead) をダブルクリックして、PlanAheadを起動する。
PlanAhead_1_100604.png

PlanAheadが立ち上げる。下から2番目のウインドウ(Timing Results) にタイミングエラーとなった制約が並んでいる。そのうちの一番上のタイミングエラーの制約のエラーが出ているSetupの制約をクリックする。
PlanAhead_2_100604.png

そうすると、右上のDeviceウインドウに、そのパスが表示される。これを移動するのだが、上の図で青い矢印と四角で示したCreate Site Constraint Modeと、赤い矢印と四角で示したCreate BEL Constraint Modeがある。
まずは、Create Site Constraint Modeからやってみようと思う。Create Site Constraint Modeアイコンをクリックしてハイライトさせる。ピンクの矢印のように、パスの真ん中のSRAM_Controller_inst/mem_addr<15>FDRをドラック&ドロップする。
PlanAhead_3_100604.png

そして、マウスの左ボタンを離して、配置したところが下の図だ。
PlanAhead_4_100604.png

これを拡大してみた。
PlanAhead_5_100604.png

スライスには2つのFFがあるが、SRAM_Controller_inst/mem_addr<15>FDRは、そのうちの下のFF、FFXを使用している(上のFFはFFY)。Create Site Constraint Modeだと、スライスのFFXとFFYの位置を変えることなく、配置を移動することができる。
ここで、PlanAheadのFileメニューからSave Designを実行すると、下のような制約がUCFファイルに加えられた。

# PlanAhead Generated physical constraints

INST "SRAM_Controller_inst/mem_addr_15" LOC = SLICE_X18Y6;


SRAM_Controller_inst/mem_addr_15は SLICE_X18Y6のスライスにマップされるが、2つあるうちのどちらのFFに配置されるか指定されていない。


次に、Create BEL Constraint Modeだが、これはCreate Site Constraint Modeと違い、スライス内のFFの位置も変更することができる。Create Site Constraint Modeではドラック&ドロップで、スライスごとにしか移動できなかったが、Create BEL Constraint Modeでは、スライス内のFFYにも配置できる。
PlanAhead_6_100604.png

これで、同様に、PlanAheadのFileメニューからSave Designを実行すると、UCFに加えられる制約は下のようになる。

# PlanAhead Generated physical constraints

INST "SRAM_Controller_inst/mem_addr_15" BEL = FFY;
INST "SRAM_Controller_inst/mem_addr_15" LOC = SLICE_X18Y6;


SRAM_Controller_inst/mem_addr_15は SLICE_X18Y6のスライスにマップされ、スライスの中の上側のFFYにマップされる。

  1. 2010年06月04日 05:26 |
  2. PlanAheadについて
  3. | トラックバック:0
  4. | コメント:2

コメント

記事を紹介していただきありがとうございます。訪問者数が一気に増えて驚きました。
で、、、「先生」はやめて下さい。恥ずかしい(笑
特にFPGA関連では私が皆さんに教えを請うている状況ですし、武内さん、くらいの普通な感じで、今後ともどうかよろしくお願いいたしますm(..)m
  1. 2010/06/04(金) 15:37:58 |
  2. URL |
  3. takeuchi #-
  4. [ 編集 ]

こんにちは。

それでは、武内さんの記事でかねてからの課題だったPlanAheadでクリティカルパスを修正する方法がわかりました。ありがとうございました。
なんで自分でわからなかったか?と思いましたが、Floorplannerのやり方に囚われていたみたいです。懸案事項が1つ解決しました。
  1. 2010/06/04(金) 15:54:13 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/1488-83d30adc
この記事にトラックバックする(FC2ブログユーザー)