Xilinx 次世代FPGA設計手法セミナー: Mar.09, 2011

Xilinx の FPGA を使い始めたのは 2001 年だか 2002 年だから、もう10年くらい前になる。ISE が 3.x とか 4.x だった時代だけど、基本的に Project Navigator の使い勝手は大きく変わらなかった (XST の合成とかは、かなり賢くなったけど)。
PlanAhead って FloorPlanner の後継でしょ?くらいに思っていたのだが、どうやら違うし、しかも Project Navigator に代わって ISE の顔になるらしい、ということで、先日大阪で講習会受けてきた。これはすごいツールだぞ、という印象。それで、今回は東京で ISE 13.1 とかのお話。
[前置き]
Virtex-7, Zynq-7000: 大きすぎてひとりで設計するのは大変なので、チーム設計体制や IP の活用が重要。
– ISE 13.1 / PlanAhead = チームで設計するためのキー
– AXI4
といったあたりがXilinxの提案する解決策。
[PlanAhead 13.1 編のメモ]
– PlanAhead 13.1 では ISIm もサポートしている。新しい ISim がどれくらいイケてるかはわからんが・・・ (個人的にはソースが変わると毎回シミュレータを終了しないといけない(ような気がするんだけど解決法があるのかもしれない)点が非常に不服)
– RTL ソースファイルを入れたときに、simulation testbed も一緒に入ってしまうので、それは simulation testbed のほうに手動で移動する必要がある。
– ストラテジを選んだときに、各ツールのオプションでデフォルト値でないものには * が付く。
– 最近は Coregen でメモリブロックを作るときに、BlockRAM の消費電力を見積もれるらしい。
– PlanAhead ではどこかのウィンドウで何かを選択すると、ほかのウィンドウに対応するものがあった場合にそれも選択される。これ、聞いただけだとなんだかよくわかんないんだけど、実際に触ってみるとちょっとすごいインタフェイスだと思う。クロス選択というそうだ。
– なんとなく気づいてたんだけど、最近は Map で technology mapping と同時に timing driven synthesis もするのね。いつのまにか Map にずいぶん時間かかるようになったなあ、と思ってたんたが、そりゃ時間かかるわな。
– Schematic view で timing path をみるときに、単一のパスだけじゃなくて複数のパスを選択して一気に回路図を描くこともできる。遅い方のパスをまとめてみられるのは便利そう。
– netlist_hierarchy=rebuilt 重要。XST default.
– 自動生成した PBlock をそのまま使うのはあまりよくない。ちゃんと自分で考えて修正するべきとのこと。
– PlanAhead 13.1 では resource usage がネットリスト階層ごとに breakdown されて見られるぽい。これはいい。
– よりよいデザインのために、DRC の警告はちゃんと読みましょう。
– Slack histogram 便利だな。log scale おすすめ。slack が足りない bin のパスを全部出して、それがどこ通ってるか確認して・・・
– モジュールをいくつか選んで cycle color. レイアウトを確認するときにこれ便利。
– 複数の run set を使った場合は Design runs をみると、結果のまとめ一覧が比較できる (すげえ)。
– 複数の制約セットを作る場合には、新しい制約が書き込まれるファイル (target UCF) を指定しておく。これによって複数の floorplan とかを試すことができる。
– PlanAhead は複数の run set をごりごりやる場合のジョブ管理を効率よくやれる。これは Makefile (remote spawning ができない) とか LSF を使うよりいい、とのこと。まあ、そうだな。
– UG702 (部分再構成) とか UG748 (階層デザイン手法) はちゃんと読みたい。
– Project Navigator を discontinue する予定は今のところないとのこと。
– EDK との統合はこれから。
– PlanAhead は基本的にオンメモリでやりたいんだけど、XST から先のツールは Project Navigator といまのところ共通。新しい合成ツールは完全に PlanAhead に integrate されて物理合成をやるようになる、予定 (14.x 以降のどこかで)。
[AMBA AXI4 編のメモ]
AXI4 は既存の on-chip bus に代わるもの。
– AXI4 (ふつうのbus)、AXI4-Lite (レジスタベースでバーストができない)、AXI4-Stream (アドレスがないデータストリーム) の3つ。
– Master と slave のクロックが同一でなくてもよい。
– Master と slave の信号の動きはだいたい対称。
– 現在は複数のモジュールで外部メモリを共有するための MPMC (multi-port memory controller) みたいなのがあるわけだけど、AXI4 でインタフェイスが統一されるので便利ですよー (でもそれってアクセス系のタイミングをぎりぎりまで煮詰めて、みたいな設計できんのかな。難しそう。でも外部メモリコントローラの使い方とか絶対楽になるよね)。
– 基本的には ACLK, TDATA, TVALID, TREADY の4つの信号で動く。簡単。アドレスとデータとかは multiplex しないで別々のチャネルを使う。基本的に5チャネル必要 (address read/write + data read/write + write response) 。
– Lite ではバーストがないので、インタフェイスはかなり簡略化される。
– Xilinx の AXI4-Lite IP は 32bit 幅のみ
– AXI4-Stream + DMAC とかでうにょうにょしたい。そのへんどうなんだ。
– AXI4 interconnect の IP core は EDK のライセンスが必要。CPU (バスマスタ) なしでいけるかどうかも問題っぽい (これはたぶん問題ないんだ… が、ライセンスの問題は厳しいな)。
– PLB のサポートは 14.1 までで終了。PPC 使ってるひとは厳しいな・・・
– AXI のサポートは基本的に V6 以降。
– V6 は PLB も AXI4 も使える (V6 は PPC ないけどね)
– PCIe – AXP4-Stream bridge が使える。いまのローカルリンクとは違うインタフェイス。
– Platform studio を使わずに AXI interconnect その他を使うには Xilinx Answer #37856 を参照。
– Xilinx AXI Interconnect には crossbar mode (速いが大きい) と shared access mode (小さい) がある。
– Master と slave が直結できるような場合には pass-through mode、あるいは 1to1 conversion mode.
– N to 1, 1 to N もある。必要な機能を選んで使えばいい。
– Shared access mode では read / write のアドレス・データチャネルについてそれぞれ調停が行われ、同時に複数のトランザクションが走らないようになる。
– 今後 AXI Optimization Wizard みたいなのができる予定。Size, frequency, latency, etc.

コメントを残す