Vivado デバッグ コアの使用 - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: Dynamic Function eXchange (UG909)

Document ID
UG909
Release Date
2023-11-15
Version
2023.2 日本語

Vivado デバッグ コア (ILA、VIO など) は、RM 内も含め、Dynamic Function eXchange デザインのどこにでも配置できます。デザイン全体の通信のために中央デバッグ ハブにこれらのコアを接続するには、特定の設計手法が必要です。

スタティック領域の中央デバッグ ハブ間の接続は自動的に設定でき、RP のポート名に特定の命名規則を使用することによりトリガーできます。これらの 12 本のピンは必須で、命名規則に従っていればハブが推論されます。次に、Verilog、VHDL、およびブロック デザインの例を示します。

スタティック デザインの Verilog インスタンシエーション:

my_count counter_inst (
.clk(my_clk),
.dout(dout),
.S_BSCAN_drck(),
.S_BSCAN_shift(),
.S_BSCAN_tdi(),
.S_BSCAN_update(),
.S_BSCAN_sel(),
.S_BSCAN_tdo(),
.S_BSCAN_tms(),
.S_BSCAN_tck(),
.S_BSCAN_runtest(),
.S_BSCAN_reset(),
.S_BSCAN_capture(),
.S_BSCAN_bscanid_en()
);

スタティック デザインの VHDL コンポーネント宣言およびインスタンシエーション:

component my_count is
Port ( clk : in STD_LOGIC;
dout : out STD_LOGIC;
S_BSCAN_drck: IN std_logic := '0';
S_BSCAN_shift: IN std_logic := '0';
S_BSCAN_tdi: IN std_logic := '0';
S_BSCAN_update: IN std_logic := '0';
S_BSCAN_sel: IN std_logic := '0';  
S_BSCAN_tdo: OUT std_logic;
S_BSCAN_tms: IN std_logic := '0';
S_BSCAN_tck: IN std_logic := '0';
S_BSCAN_runtest: IN std_logic := '0';
S_BSCAN_reset: IN std_logic := '0';
S_BSCAN_capture: IN std_logic := '0';
S_BSCAN_bscanid_en: IN std_logic := '0'
);
end component;
…
counter_inst: my_count
port map (clk => my_clk,
dout => dout,
S_BSCAN_drck => open, 
S_BSCAN_shift => open, 
S_BSCAN_tdi => open, 
S_BSCAN_update => open, 
S_BSCAN_sel => open, 
S_BSCAN_tdo => open, 
S_BSCAN_tms => open, 
S_BSCAN_tck => open, 
S_BSCAN_runtest => open, 
S_BSCAN_reset => open, 
S_BSCAN_capture => open, 
S_BSCAN_bscanid_en => open
);
注記: open キーワードを使用するには、これらの入力ポートで初期値を受信する必要があり、初期値は 0 である必要があります。1 に接続されているポートは、ローカル デバッグ ハブには接続されません。

RM の最上位 RTL 内では、これらの 12 本のポートは未接続のままにします。デバッグ ハブは、合成時に、スタティック領域に 1 つ、各 RM に 1 つずつ、ブラック ボックスとして挿入されます。これらの挿入された IP は、opt_design 中に展開されます。これは、RM (グレー ボックス RM を含む) 内にデバッグ コアがない場合でも、各 RM に対して実行されます。

複数の BSCAN インスタンスに接続する必要がある場合など、これらのポートに命名規則に従った名前を使用しない場合、属性を使用してデバッグ ハブを挿入できます。この方法は、最初に処理されたコンフィギュレーションにデバッグ コアが存在しない場合にも使用する必要があります。デバッグ ハブの推論は、Vivado インプリメンテーション ツールが RM 内にデバッグ コアを見つけられない場合は実行されません。

デバッグ ポートを割り当てるには、次の構文でポート名以外のものを変更しないでください。これらの属性は、すべての RM 最上位ソース ファイルで使用されます。

RM 最上位の Verilog 属性:

(* X_INTERFACE_INFO = "xilinx.com:interface:bscan:1.0 S_BSCAN drck" *) (* DEBUG="true" *) 
input my_drck; 
(* X_INTERFACE_INFO = "xilinx.com:interface:bscan:1.0 S_BSCAN shift" *) (* DEBUG="true" *) 
input my_shift;     
(* X_INTERFACE_INFO = "xilinx.com:interface:bscan:1.0 S_BSCAN tdi" *) (* DEBUG="true" *) 
input my_tdi;      
(* X_INTERFACE_INFO = "xilinx.com:interface:bscan:1.0 S_BSCAN update" *) (* DEBUG="true" *)   
input my_update;     
(* X_INTERFACE_INFO = "xilinx.com:interface:bscan:1.0 S_BSCAN sel" *) (* DEBUG="true" *)    
input my_sel;      
(* X_INTERFACE_INFO = "xilinx.com:interface:bscan:1.0 S_BSCAN tdo" *) (* DEBUG="true" *)    
output my_tdo;      
(* X_INTERFACE_INFO = "xilinx.com:interface:bscan:1.0 S_BSCAN tms" *) (* DEBUG="true" *)    
input my_tms;      
(* X_INTERFACE_INFO = "xilinx.com:interface:bscan:1.0 S_BSCAN tck" *) (* DEBUG="true" *)    
input my_tck;      
(* X_INTERFACE_INFO = "xilinx.com:interface:bscan:1.0 S_BSCAN runtest" *) (* DEBUG="true" *)  
input my_runtest;    
(* X_INTERFACE_INFO = "xilinx.com:interface:bscan:1.0 S_BSCAN reset" *) (* DEBUG="true" *) 
input my_reset;     
(* X_INTERFACE_INFO = "xilinx.com:interface:bscan:1.0 S_BSCAN capture" *) (* DEBUG="true" *)  
input my_capture;    
(* X_INTERFACE_INFO = "xilinx.com:interface:bscan:1.0 S_BSCAN bscanid_en" *) 
(* DEBUG="true" *) input my_bscanid_en; 

RM 最上位の VHDL 属性:

attribute X_INTERFACE_INFO : string; 
attribute DEBUG : string; 
attribute X_INTERFACE_INFO of my_drck: signal is "xilinx.com:interface:bscan:1.0 S_BSCAN 
drck"; 
attribute DEBUG of my_drck: signal is "true"; 
attribute X_INTERFACE_INFO of my_shift: signal is "xilinx.com:interface:bscan:1.0 S_BSCAN 
shift"; 
attribute DEBUG of my_shift: signal is "true"; 
attribute X_INTERFACE_INFO of my_tdi: signal is "xilinx.com:interface:bscan:1.0 S_BSCAN 
tdi"; 
attribute DEBUG of my_tdi: signal is "true"; 
attribute X_INTERFACE_INFO of my_update: signal is "xilinx.com:interface:bscan:1.0 S_BSCAN 
update"; 
attribute DEBUG of my_update: signal is "true"; 
attribute X_INTERFACE_INFO of my_sel: signal is "xilinx.com:interface:bscan:1.0 S_BSCAN 
sel"; 
attribute DEBUG of my_sel: signal is "true"; 
attribute X_INTERFACE_INFO of my_tdo: signal is "xilinx.com:interface:bscan:1.0 S_BSCAN 
tdo"; 
attribute DEBUG of my_tdo: signal is "true"; 
attribute X_INTERFACE_INFO of my_tms: signal is "xilinx.com:interface:bscan:1.0 S_BSCAN 
tms"; 
attribute DEBUG of my_tms: signal is "true"; 
attribute X_INTERFACE_INFO of my_tck: signal is "xilinx.com:interface:bscan:1.0 S_BSCAN 
tck"; 
attribute DEBUG of my_tck: signal is "true"; 
attribute X_INTERFACE_INFO of my_runtest: signal is "xilinx.com:interface:bscan:1.0 S_BSCAN 
runtest"; 
attribute DEBUG of my_runtest: signal is "true"; 
attribute X_INTERFACE_INFO of my_reset: signal is "xilinx.com:interface:bscan:1.0 S_BSCAN 
reset"; 
attribute DEBUG of my_reset: signal is "true"; 
attribute X_INTERFACE_INFO of my_capture: signal is "xilinx.com:interface:bscan:1.0 S_BSCAN 
capture"; 
attribute DEBUG of my_capture: signal is "true"; 
attribute X_INTERFACE_INFO of my_bscanid_en: signal is "xilinx.com:interface:bscan:1.0 
S_BSCAN bscanid_en"; 
attribute DEBUG of my_bscanid_en: signal is "true"; 

この方法は IP インテグレーターにも使用できます。IP インテグレーター フローのブロック デザインに必要なポートを追加するには、次の Tcl コマンドを使用します。

create_bd_port -dir I S_BSCAN_drck
create_bd_port -dir O S_BSCAN_tdo
create_bd_port -dir I S_BSCAN_shift
create_bd_port -dir I S_BSCAN_tdi
create_bd_port -dir I S_BSCAN_update
create_bd_port -dir I S_BSCAN_sel
create_bd_port -dir I S_BSCAN_tms
create_bd_port -dir I S_BSCAN_tck
create_bd_port -dir I S_BSCAN_runtest
create_bd_port -dir I S_BSCAN_reset
create_bd_port -dir I S_BSCAN_capture
create_bd_port -dir I S_BSCAN_bscanid_en

次の図は、IP インテグレーター キャンバスと適切な接続を示しています。

図 1. IP インテグレーターのキャンバス
重要: 現在、このソリューションには 1 つの追加要件があります。グレー ボックス コンフィギュレーションは、最初に処理できません。デバッグ コアを含まないバージョンに移動する前に、デバッグ コアを含む RM 内でデバッグ ブリッジを確立してデバッグ ハブと接続する必要があります。

このコアの挿入例および Vivado ハードウェア マネージャー内の機能については、 『Vivado Design Suite チュートリアル: Dynamic Function eXchange』 (UG947)このセクションを参照してください。