FC2カウンター FPGAの部屋 Xilinx/PYNQのプロジェクトを生成した4(タイミングエラーの解決)

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

FPGAの部屋

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

Xilinx/PYNQのプロジェクトを生成した4(タイミングエラーの解決)

Xilinx/PYNQのプロジェクトを生成した3(タイミングエラーの解析2)”の続き。

前回は、Report CDC で異なるクロック・ドメイン間のデータのやり取りの状況を解析した。今回はその問題となるパスを確認して解決してみよう。

最初の system_i/iop3/arduino_io_switch_0/inst/arduino_io_switch_v1_0_S_AXI_inst/slv_reg2_reg[14]/C から system_i/tracebuffer_arduino/trace_cntrl_0/inst/ap_CS_fsm_reg[7]/D へのパスを解析してみよう。

iop3 はここにある。
pynq-master_29_170125.png

pynq-master_30_170125.png

ipp3 をダブルクリックして開くと、arduino_io_switch_0 があった。
pynq-master_31_170125.png

さて、行先を見てみよう。Unknown のパスの 1, 2 番目の tracebuffer_arduino と tracebuffer_pmods が上下に配置されている。
pynq-master_32_170125.png

system_i/iop3/arduino_io_switch_0 から system_i/tracebuffer_arduino へのデータパスがあるかどうか?を見てみた。ある。。。
pynq-master_33_170125.png

2, 3 番目の iop1/mb1_gpio を見てみよう。iop1 をダブルクリックして開いた。
pynq-master_34_170125.png

pynq-master_35_170125.png

iop1/mb1_gpio から tracebuffer_pmods へのデータパスがあるかどうか?確かめてみた。やはり、あるね。。。
pynq-master_36_170125.png

arduino_io_switch_0 はプロジェクト内にローカルに存在するIP の様なので、IP の中身を見ることができる。
arduino_io_switch_0 を右クリックし、右クリックメニューからEdit in IP Packager を選択する。
pynq-master_37_170125.png

Edit in IP Packager ダイアログが表示された。OK ボタンをクリックした。
pynq-master_38_170125.png

arduino_io_switch_0 プロジェクトが表示された。
pynq-master_39_170125.png

slv_reg2 には S_AXI_WDATA が代入されていた。

そのarduino_io_switch_0 の slv_reg2 が接続されている先は、tracebaffer_arduino の A_TDATA だが、これはVivado HLSで生成された trace_cntrl_0 に直接接続されている。これは問題があるな。。。
pynq-master_40_170125.png

tracebuffer_pmods も同じだった。
pynq-master_41_170125.png

tracebaffer_arduino や tracebuffer_pmods は clk_fpga_3 クロックを使用している。
pynq-master_42_170125.png

Xilinx/PYNQのプロジェクトを生成した2(タイミングエラーの解析1)”でも、clk_fpga_3 のタイミングエラーは最大 - 2.258 ns でかなり大きい。よって、これを clk_fpga_0 にしてしまえば、全部解決すると思う。

PS からPL に回っているクロックを見てみよう。
pynq-master_43_170125.png

clk_fpga_0 は 100 MHz で、 clk_fpga_3 は166.667 MHz だった。

PS の FCLK_CLK3 ピンをクリックして、そこで右クリックし、右クリックメニューからDisconnect Pin を選択して、PS の FCLK_CLK3 ピンだけをクロックネットから外す。配線を消してしまうと、clk_fpga_3 のクロック配線をすべて削除することになり大変なことになってしまう。
次にPS の FCLK_CLK0 ピンからPS の FCLK_CLK3 ピンに接続されていたクロックネットに配線した。
pynq-master_44_170125.png

次に、ルーターとプレーサーにもう少し頑張ってもらうために、Flow Navigator のImplementation → Implementation Settings をクリックして、出てきたProject Settings ダイアログで、Strategy にPerformance_ExtraTimingOpt を選択した。
pynq-master_45_170125.png

これで、もう一度、論理合成、インプリメント、ビットストリームの生成を行った。
レポートを示す。
pynq-master_46_170126.png

うまくタイミングメットしたようだ。
  1. 2017年01月26日 05:08 |
  2. PYNQ
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3705-dddd024e
この記事にトラックバックする(FC2ブログユーザー)