1. 株式会社PALTEK
  2. TECHブログ
  3. 技術情報
  4. IPコアによるILA,VIOのデザインへの挿入

TECHブログ

IPコアによるILA,VIOのデザインへの挿入

IPコアによるILA,VIOのデザインへの挿入

AMD ザイリンクス社のVivado® ML Editionは、波形内部の波形を観測できるILA(Integrated Logic Analyzer)とVIO(Virtual Input/Output)をデザインに挿入することができます。

目次

IPコアによるILAの挿入方法

ILAのIPコアを直接デザインに挿入することで、合成後に手動で挿入しなくてもILAを挿入することが可能です。
ILAのIPコアを生成するにはVivado® ML Editionの「IP Catalog」からILAで検索をしてILAのコアを選択します。

※画像クリックで大きな画像が表示されます。

(出典:Vivado® ML Edition)

ILAのIPコア生成ウィンドウが表示されますので、今回は基本的な使い方として先ほどと同じCounter信号を挿入するための設定を行います。

General Optionsタブ

Number of Probes :

ILAに挿入したい信号の本数を設定します。(Bit幅ではなく1信号名に対して1個)
ここで注意したいのが、違うクロックドメインの信号を1つのILAに挿入した場合に正常に波形がみられない可能性があるため、違うクロックドメインの信号を見たい場合には複数のILA IPコアを生成が望ましいです。

Sample of data depth :

ILAで表示するクロック数を設定します。

Input pipe stages :

ILAの回路ブロックまでに挿入されるパイプラインを指定します。

※画像クリックで大きな画像が表示されます。

(出典:Vivado® ML Edition)

Probe Portsタブ

プローブ1個に対してのBit幅を設定します。
ここではCounter信号に合わせて32bitを設定しています。
設定が終わった「OK」を選択してIPコアを生成します。

※画像クリックで大きな画像が表示されます。

(出典:Vivado® ML Edition)

ILA IPコアをRTL上に記述します。
生成したILA IPコアのインスタンスは以下となりますので、それをベースに信号を設定していきます。
\(project名).gen\sources_1\ip\ila_0\ila_0.veo

ここではサンプリングクロック(CLK)とプローブ信号(counter)を設定しています。
この設定が終わったら、通常と同じようにVivado®でコンパイルすることでILAが挿入されたデザインが生成されます。

左右にスクロールしてご覧ください
// Logic
reg [31:0] counter;

always @(posedge CLK or posedge RSTP) begin
    if (RSTP) begin
        counter <= 32'd0;
    end else begin
        counter <= counter + 32'd1;
    end
end

ila_0 ila_counter (
    .clk    (CLK     ), // input wire clk
    .probe0 (counter )  // input wire [31:0] probe0
);

IPコアによるVIOの挿入方法

デザインへのVIOの挿入は、VIO IPコアを使用する方法のみとなります。

VIOのIPコアを生成するにはVivado®の「IP Catalog」からVIOで検索をしてVIOのコアを選択します。

※画像クリックで大きな画像が表示されます。

(出典:Vivado® ML Edition)

General Optionsタブ

VIOの入力と出力の本数を選択します。(Bit幅ではなく1信号名に対して1個)
ここでは入力4本、出力に4本を選択しています。

※画像クリックで大きな画像が表示されます。

(出典:Vivado® ML Edition)

PROBE_IN_Ports

設定された4本の入力プローブに対してBit数を設定できます。
ここでは、1,4,8,16Bitのプローブとしています。

※画像クリックで大きな画像が表示されます。

(出典:Vivado® ML Edition)

PROBE_OUT_Ports

設定された4本の出力プローブに対してBit数を設定できます。
ここでは、1,4,8,16Bitのプローブとしています。
また出力プローブは初期値を設定可能です。
設定が終わった「OK」を選択してIPコアを生成します。

※画像クリックで大きな画像が表示されます。

(出典:Vivado® ML Edition)

VIO IPコアをRTL上に記述します。
生成したVIO IPコアのインスタンスは以下となりますので、それをベースに信号を設定していきます。
\(project名).gen\sources_1\ip\vio_0\vio_0.veo

VIOは以下のように記述され入力と出力の各4本があり、ここに必要な信号を接続することで入力信号の状態と信号の出力が可能になります。
注意点はクロックを指定する必要があるということです。出力信号はこのクロックに同期して出力されます。

左右にスクロールしてご覧ください
vio_0 your_instance_name (
  .clk        (clk       ),  // input  wire clk
  .probe_in0  (probe_in0 ),  // input  wire [0 : 0] probe_in0
  .probe_in1  (probe_in1 ),  // input  wire [3 : 0] probe_in1
  .probe_in2  (probe_in2 ),  // input  wire [7 : 0] probe_in2
  .probe_in3  (probe_in3 ),  // input  wire [15: 0] probe_in3
  .probe_out0 (probe_out0),  // output wire [0 : 0] probe_out0
  .probe_out1 (probe_out1),  // output wire [3 : 0] probe_out1
  .probe_out2 (probe_out2),  // output wire [7 : 0] probe_out2
  .probe_out3 (probe_out3)   // output wire [15: 0] probe_out3
);

おわりに


弊社でのお受けしている開発の内容や開発体制、開発分野などについて、以下ページに記載していますので、ご興味がありましたらご覧ください。
https://www.paltek.co.jp/design/odm/index.html

調査依頼や、設計検討などありましたら、お気軽にお問い合わせください。

お問い合わせはこちら

最後までご覧いただきありがとうございました。


このブログのシリーズ

関連ブログ