wbOutputData
バスのタイミングを向上するため、出力レジスタを対応する出力パッドの近くに配置し、タイミングを再実行して効果を確認します。出力レジスタを配置するには、配置可能なサイトを特定し、Tcl コマンドまたは Tcl スクリプトを使用して、セルの配置および接続の再配線を実行します。wbOutPutData
バスの出力パッドに隣接するスライスに配置します。- [Device] ウィンドウのツールバーで、[Routing Resources] をクリックしてオフにし、[Autofit Selection] がオンになっていることを確認します。
これにより、[Device] ウィンドウで配線の詳細が表示されなくなり、オブジェクトを配置しやすくなります。
- 次の Tcl コマンドを使用して、I/O ブロックに配置されている
wbOutputData
ポートを選択します。select_objects [get_ports wbOutputData*]
[Device] ウィンドウで選択したポートが白でハイライトされ、拡大表示されます。選択したポートの周辺のデバイス リソースを確認することにより、出力レジスタを配置可能なサイトを特定できます。
- [Device] ウィンドウで選択されている出力ポートの最下部周辺を拡大表示します。次の図のようになります。
下部のポートは出力バスの下位ビット (
wbOutputData[0]
から開始) です。このポートはパッケージ ピン Y21 に配置されています。その右側で出力レジスタを配置するのに必要なデバイス リソースを含むスライスの座標は X0Y36 です。この位置を 32 個の出力レジスタ
wbOutputData_reg[31:0]
を配置する開始点として使用します。[Device] ウィンドウをスクロールしたり移動したりして、最上位の出力データ ポート
wbOutputData[31]
がパッケージ ピン K22 に、その右側のレジスタがスライス X0Y67 に配置されていることを確認します。出力レジスタに必要な配置リソースを特定したので、これらのリソースがセルを配置するのに使用可能であることを確認する必要があります。これには、スライスの配置を解除して、現在配置されているロジックをクリアします。
- 次の Tcl コマンドを使用して、出力レジスタに必要なスライス
SLICE_X0Y36
~SLICE_X0Y67
に現在配置されているセルの配置を解除します。for {set i 0} {$i<32} {incr i} { unplace_cell [get_cells -of [get_sites SLICE_X0Y[expr 36 + $i]]] }
このコマンドは、インデックス カウンター (
i
) と Tcl 表現 (36 + $i
) を使用したfor
ループを使用して、指定のスライス範囲に含まれるセルを取得して配置を解除します。for
ループおよびその他のスクリプト記述の推奨事項は、 『Vivado Design Suite ユーザー ガイド: Tcl スクリプト機能の使用』 (UG894) を参照してください。ヒント: 指定のスライスに配置されているセルがない場合は、配置が解除されるものが何もないことを示す警告メッセージが表示されます。これらのメッセージは無視しても問題ありません。スライス内のロジック セルがクリアされると、出力レジスタの配置に必要なリソースが使用可能になります。これらを配置したら、前の手順で配置を解除したロジックを配置する必要があります。
- 次のコマンドを使用して、出力レジスタ
wbOutputData_reg[31:0]
を指定のスライス範囲に配置します。for {set i 0} {$i<32} {incr i} { place_cell wbOutputData_reg[$i] SLICE_X0Y[expr 36 + $i]/AFF }
- 次のコマンドを使用して、配置されていない残りのセルを配置します。
place_design
注記: Vivado 配置では、部分的に配置済みのデザインに対してインクリメンタル配置が実行されます。 - 念のため、次の Tcl コマンドを使用して、出力レジスタ セル
wbOutputData_reg[31:0]
に接続されているネットの配線を解除します。route_design -unroute -nets [get_nets -of [get_cells \ wbOutputData_reg[*]]]
- 次のコマンドを使用して、デザインで現在配線されていないすべてのネットを配線します。
route_design
注記: Vivado 配線では、部分的に配線済みのデザインに対してインクリメンタル配線が実行されます。 - 現在のデザインの配線ステータスを解析し、配線の競合がないことを確認します。
report_route_status
- [Device] ウィンドウの [Routing Resources] ツールバー ボタン をクリックし、配線リソースの詳細を表示します。
- 次の Tcl コマンドを使用して、出力ポートとレジスタをマークし、それらの間の配線をハイライトします。
mark_objects -color blue [get_ports wbOutputData[*]] mark_objects -color red [get_cells wbOutputData_reg[*]] highlight_objects -color yellow [get_nets -of [get_pins -of [get_cells\ wbOutputData_reg[*]] -filter DIRECTION==OUT]]
ヒント: これらのコマンドは前にも入力したので、ジャーナル ファイル (vivado.jou) からコピーできます。 - [Device] ウィンドウで、マークした出力ポートのいくつかを拡大表示します。
- それらを接続するネットを選択します。ヒント: ネットは [Netlist] ウィンドウで選択することもできます。[Netlist] ウィンドウで選択すると、[Device] ウィンドウでも選択されます。
[Device] ウィンドウで、すべての出力レジスタが対応する出力から同じ距離に配置され、出力レジスタから出力へのネットすべての配線パスが類似したものであることを確認できます。これにより、すべての出力で clock-to-out 時間がほぼ同じになります。
-
[Report Datasheet] ダイアログ ボックスの設定は、前回実行したときと同じです。
-
Reference:
[get_ports {wbOutputData[0]}]
-
Ports:
[get_ports {wbOutputData[*]}]
をクリックします。 -
Reference:
- [Timing] ウィンドウの [Datasheet] タブで
結果を見ると、出力バスの下位ビット
wbOutputData[0-13]
間と上位ビットwbOutputData[14-31]
間ではタイミング スキューがほぼ一致しています。全体的なスキューは削減されましたが、それでも上位ビットと下位ビットの間では 200 ps の差があります。配置を向上したので、スキューは 2 つのクロック領域 (X0Y0 および X0Y1) にまたがる出力ポートとレジスタによるもので、これによりクロック ネットワーク スキューが発生します。
wbOutputData
バスを見ると、最大遅延が上位ビットよりも下位ビットで大きいことがわかります。スキューを削減するため、上位ビットに遅延を追加します。出力レジスタへのクロック供給には、BUFG の代わりに BUFMR/BUFR の組み合わせを使用してスキューの一部を取り除くことができます。このチュートリアルでは、BUFG でクロックが供給される出力レジスタから上位ビット
wbOutputData[14-31]
の出力ピンに手動配線を使用して遅延を追加し、バス内の clock-to-out のばらつきをさらに削減します。
セクションを選択します。