- Flow Navigator で Project Manager をクリックします。
- [Design Runs] ウィンドウで impl_1 を右クリックし、Open Run Directory をクリックします。
- run ディレクトリがファイル ブラウザーで開きます。run ディレクトリには、ECO フローに使用する配線済みチェックポイント (top_routed.dcp) が含まれています。ヒント: プロジェクトベースのデザインでは、Vivado Design Suite により、中間インプリメンテーション結果がデザイン チェックポイントとしてインプリメンテーション run ディレクトリに保存されます。インプリメンテーションを再実行すると、前の結果は削除されます。変更したチェックポイントを保持するには、配線チェックポイントを新しいディレクトリに保存します。
-
C:/Vivado_Tutorial/project_ECO_lab プロジェクト ディレクトリに
ECO
というディレクトリを作成し、インプリメンテーション run ディレクトリから top_routed.dcp ファイルを作成したディレクトリにコピーします。 - メイン メニューから
[Open Checkpoint] ダイアログ ボックスが開きます。
をクリックします。 -
C:/Vivado_Tutorial/project_ECO_lab/ECO に移動し、top_routed.dcp チェックポイントを選択します。
現在のプロジェクトを閉じるかどうか尋ねるメッセージが表示されます。
- Yes をクリックします。
- メイン メニューから
[ECO] レイアウトが選択されます。左側に ECO Navigator が表示されます。ここから、ネットリスト コマンド、run ステップ、レポートおよび解析ツール、変更保存およびプログラミング ファイル生成コマンドにアクセスできます。
レイアウトの中央に表示されている [Scratch Pad] ウィンドウには、ネットリストの変更記録と、セル、ピン、ポート、およびネットの配置配線ステータスが表示されます。
注記: ECO は、デザイン チェックポイントにのみ使用できます。[ECO] レイアウトは、Vivado IDE でデザイン チェックポイントを開いた後にのみ使用可能になります。
ECO フローの機能を学ぶため、乗算器の機能を
count[3:0]
の 2 乗から 2 倍に変更します。
をクリックします。 - [Tcl Console] ウィンドウに次のコマンドを入力します。
mark_objects -color blue [get_cells my_mult_0]
ヒント: 異なる色でオブジェクトをマークまたはハイライトして、ECO 変更に含まれるオブジェクトを見つけやすくできます。
- [Schematic] ウィンドウで乗算器を拡大表示し、in2[3:0] ピンを選択します。
または、[Tcl Console] ウィンドウに次のコマンドを入力します。
select_objects [get_pins my_mult_0/in2[*]]
-
Vivado ECO Navigator の [Edit] の下にある Disconnect Net をクリックします。回路図でピンからネットへの接続が解除されます。
[Tcl Console] ウィンドウに、ECO Navigator で実行した
disconnect_net
コマンドが表示されます。これは、ECO 変更を後で再実行する場合に便利です。ECO コマンドを含む Tcl スクリプトを作成して、元のチェックポイントに適用できます。
[Scratch Pad] ウィンドウに、接続を解除した 4 つのネット
divClk_reg[28:25]
と乗算器入力ピンmy_mult_0/in2[3:0]
が表示されます。[Scratch Pad] ウィンドウで次の点に注目してください。- [Scratch Pad] ウィンドウで、
divClk_reg[28:25]
ネットの [Con] (接続) 列にチェック マークが表示されており、これらがほかの乗算器入力に接続されていることが示されています。 -
my_mult_0/in2[3:0]
ピンには接続されているネットがないので、チェック マークは表示されていません。 - [PnR] (配置配線) 列にはどれにもチェック マークは表示されておらず、変更がデバイスにインプリメントされていないことを示しています。
- [Scratch Pad] ウィンドウで、
- [Scratch Pad] ウィンドウで
my_mult_0/in2[3]
、my_mult_0/in2[2]
、my_mult_0/in2[0]
ピンを選択します。 -
Vivado ECO Navigator の [Edit] の下にある Connect Net をクリックします。
[Connect Net] ダイアログ ボックスが開きます。
- [Connect Net] ダイアログ ボックスで、[GROUND] セクションから <const0> を選択します。
-
OK をクリックします。
[Scratch Pad] ウィンドウに
<const0>
が追加されます。 -
<const0>
信号を非展開にします。[Scratch Pad] ウィンドウで、接続した 3 つのピンの [Con] 列にチェック マークが表示されます。
- [Scratch Pad] ウィンドウで my_mult_0/in2[1] ピンを選択します。
-
Connect Net をクリックします。
[Connect Net] ダイアログ ボックスが開きます。
- [Connect Net] ダイアログ ボックスで、[POWER] セクションから <const1> を選択します。
-
OK をクリックします。
[Scratch Pad] ウィンドウに
<const1>
が追加されます。 -
<const1>
信号を非展開にします。[Scratch Pad] ウィンドウで、接続したピンの [Con] 列にチェック マークが表示されます。
- [Scratch Pad] ウィンドウで my_mult_0/in2 ピンを選択します。
開いている [Schematic] ウィンドウで選択したピンがハイライトされ、アップデートされた接続が表示されます。
注記: [Schematic] ウィンドウで [Autofit Selection] がイネーブルになっていることを確認し、パス全体が表示されるようにします。
LED の count 信号を見ると、4 ビットのみを使用しています。上位 4 ビットは 0 でパディングされます。
ここで、ECO フローを使用して、LED 7 のカウンター ビット 24 を観察します。まず、
count_out_reg[3]
を駆動するロジックを解析します。 - [Tcl Console] ウィンドウに次のコマンドを入力します。
select_objects [get_cells count_out[3]_i_1]
これにより、LED 3 を駆動する
count_out_reg[3]
レジスタを駆動するLUT3
を特定できます。入力は次のとおりです。- ピン I0 は
mul_out_pre_reg[3]
- ピン I1 は
count_out_pre_reg[3]
- ピン I2 は
tog_state_reg
- ピン I0 は
- Cell Properties タブをクリックしてセル プロパティを表示し、Truth Table タブをクリックします。
-
Edit LUT Equation をクリックして LUT3 の論理式を表示します。LUT の論理式は次のとおりです。
O= I1 & !I2 + I0 & I2
-
Cancel をクリックしてウィンドウを閉じます。
- [Tcl Console] ウィンドウに次のコマンドを入力します。
select_objects [get_cells count_out[7]_i_1]
これにより、KCU105 ボード上の LED 7 を駆動する
count_out_reg[7]
レジスタを駆動する LUT2 が選択されます。入力は、I0 ピンのtog_state_reg
と I1 ピンのmul_out_pre_reg[7]
のみです。LUT2 を 3 入力 LUT に置き換え、カウンター レジスタdivClk_reg[24]
の出力を追加の入力ピンに接続する必要があります。 -
Vivado ECO Navigator で [Edit] の下の Create Cell をクリックします。
[Create Cell] ダイアログ ボックスが開きます。
- [Cell name] フィールドに「
ECO_LUT3
」と入力します。 - [Search] フィールドに「
LUT3
」と入力します。 - [Cell type] として LUT3 を選択し、セル
count_out[3]_i_1
の論理式 O=I1 & !I2 + I0 & I2 を [LUT Equation] にコピーします。 -
OK をクリックします。
[Scratch Pad] ウィンドウおよび [Schematic] ウィンドウに
ECO_LUT3
が追加されます。 - [Scratch Pad] ウィンドウで新しく追加した
ECO_LUT3
セルを右クリックし、Mark をクリックして赤を選択します。注記:ECO_LUT3
セルをマークすると、見つけやすくなります。
LUT の論理式をセル
count_out[3]_i_1
からコピーしたので、ネットも同じ順で次のように接続する必要があります。- ネット
mul_out_pre[7]
をピンI0
に接続 - ネット
divClk_reg_n_0_[24]
をピンI1
に接続 - ネット
tog_state
をECO_LUT3
のピンI2
に接続
- ネット
- [Cell name] フィールドに「
- [Schematic] ウィンドウで
tog_state_reg
レジスタで駆動されるtog_state
ネットを選択します。または、[Tcl Console] ウィンドウで次のコマンドを実行してネットを選択することもできます。select_objects [get_nets tog_state]
- 次の操作を実行して新しく追加した
ECO_LUT3
セルのI2
ピンを接続します。- [Scratch Pad] ウィンドウで Ctrl キーを押しながら I2 ピンを選択します。これにより、既に選択されている
tog_state
ネットに加えてI2
ピンが選択されます。 - Connect Net をクリックします。
- [Scratch Pad] ウィンドウで Ctrl キーを押しながら I2 ピンを選択します。これにより、既に選択されている
- [Schematic] ウィンドウで
mul_out_pre[7]
ネットを選択します。または、[Tcl Console] ウィンドウで次のコマンドを実行してネットを選択することもできます。
select_objects [get_nets mul_out_pre[7]]
- 次の操作を実行して新しく追加した
ECO_LUT3
セルのI0
ピンを接続します。- [Scratch Pad] ウィンドウで CTRL キーを押しながら I0 ピンを選択します。これにより、既に選択されている
mul_out_pre[7]
ネットに加えてI0
ピンが選択されます。 -
Connect Net をクリックします。注記: オブジェクトの中に DONT_TOUCH とマークされるものがあることを示すメッセージが表示されたら、Unset Property and Continue をクリックします。
- [Scratch Pad] ウィンドウで CTRL キーを押しながら I0 ピンを選択します。これにより、既に選択されている
- [Schematic] ウィンドウで
divClk_reg_n_0_[24]
ネットを選択します。または、[Tcl Console] ウィンドウで次のコマンドを実行してネットを選択することもできます。
select_objects [get_nets divClk_reg_n_0_[24]]
- 次の操作を実行して新しく追加した
ECO_LUT3
セルのI1
ピンを接続します。- [Scratch Pad] ウィンドウで CTRL キーを押しながら I1 ピンを選択します。これにより、既に選択されている
divClk_reg_n_0_[24]
ネットに加えてI1
ピンが選択されます。 -
Connect Net をクリックします。
次に、新しく作成した
LUT3
にインプリメントされるアップデートされたロジック ファンクションをcount_out_reg[7]
のD
入力に接続する必要があります。まず、D
入力に接続されているLUT2
を削除します。
- [Scratch Pad] ウィンドウで CTRL キーを押しながら I1 ピンを選択します。これにより、既に選択されている
- [Schematic] ウィンドウ LUT2 count_out[7]_i_1 を選択します。または、[Tcl Console] ウィンドウで次のコマンドを実行して選択することもできます。
select_objects [get_cell count_out[7]_i_1]
- メイン ツールバーの [Delete] ボタン をクリックして選択したセルを削除します。
- [Schematic] ウィンドウで
count_out_reg[7]
レジスタのD
入力に接続されているネットを選択します。または、[Tcl Console] ウィンドウで次のコマンドを実行してネットを選択することもできます。select_objects [get_nets count_out[7]_i_1_n_0]
- 次の操作を実行して新しく追加した
ECO_LUT3
セルのO
ピンを接続します。- [Scratch Pad] ウィンドウで CTRL キーを押しながら
O
ピンを選択します。 - Connect Net をクリックします。
ECO 変更が終了しました。
- [Scratch Pad] ウィンドウで CTRL キーを押しながら