Quartus® Primeプロ・エディションのユーザーガイド: デバッグツール

ID 683819
日付 7/08/2024
Public
ドキュメント目次

2.7.2. ランタイム・リコンフィグレーションが可能なオプション

Runtime Triggerモードを使用すると、.stp 内の特定の設定を変更できます。このとき、デザインのリコンパイルは不要です。

表 21.  ランタイム・リコンフィグレーションが可能な機能
ランタイム・リコンフィグレーションが可能な設定 説明
Basic Trigger ConditionおよびBasic Storage Qualifier Condition トリガー条件がオンになっているすべての信号をリコンパイルせずに、任意の基本トリガー条件値に変更します。
Comparison Trigger ConditionおよびComparison Storage Qualifier Condition

すべての比較オペランド、比較数値、インターバル境界値は、ランタイム・コンフィグレーションが可能です。

ComparisonトリガーからBasic ORトリガーにランタイムに切り替える場合、リコンパイルは不要です。

Advanced Trigger ConditionおよびAdvanced Storage Qualifier Condition 演算子の多くには、ランタイム・コンフィグレーションが可能な設定が含まれています。例えば、すべての比較演算子はランタイム・コンフィグレーションが可能です。コンフィグレーション可能な設定の表示は、ブロック図内で白い背景になります。このランタイム・コンフィグレーションが可能なオプションを、Object Propertiesダイアログボックスでオンにします。
Storage-qualifiedとContinuous acquisitionの切り替え Storage-qualifiedモード内では、デザインをリコンパイルせずに連続キャプチャモードに切り替えることができます。この機能をイネーブルするには、disable storage qualifierをオンにします。
State-basedトリガーフローのパラメーター State-basedトリガーフローでランタイム・リコンフィグレーションが可能な設定を参照してください。

Runtime Reconfigurableオプションを使用すると、より広範囲のイベントをカバーできるため、デバッグサイクルの時間を節約できます。このとき、デザインのリコンパイルは不要です。パフォーマンスおよびロジック使用量に多少の影響が生じることがあります。Advancedトリガー条件およびstate-basedトリガーフロー・パラメーターに対するランタイム・リコンフィグレーション機能をオフにすると、パフォーマンスが向上し、エリア使用量が低減します。

通常、Setupタブでリコンパイルが必要な変更を防止するように .stp ファイルをコンフィグレーションするには、ノードリストの上にあるAllow Trigger Condition changes onlyロックモードを選択します。

次の例で示すのは、Runtime Reconfigurable機能に使用可能なユースケースです。Storage qualifiedがイネーブルされたState-basedトリガーフローの記述および、キャプチャウィンドウのサイズ変更をリコンパイルなしで行う方法を示しています。この例の同等機能は、単一のトリガー条件を持つセグメント化バッファーに対するもので、そのセグメントサイズはランタイム・リコンフィグレーションが可能です。

state ST1:
if ( condition1 && (c1 <= m) )// each "segment"  triggers on condition // 1
begin			               // m  = number of total "segments"
   start_store;
   increment c1;
   goto ST2:
end

else (c1 > m )	            // This else condition handles the last
                              // segment.
begin
	start_store
	trigger (n-1)
end

state ST2:
if ( c2 >= n) 		       //n = number of samples to capture in each
                             //segment.
begin
	reset c2;
	stop_store;
	goto ST1;
end
	
else (c2 < n)
begin
	increment c2;
	goto ST2;
end
注: サンプルバッファー内のスペースを効率的に使用するには、m x nがサンプル深度と同じである必要があります。

次の図では、トリガーフローの例で説明されているセグメント化バッファーを示しています。

図 81. Storage QualifierとState-Basedトリガーを使用して作成されたセグメント化バッファー合計サンプル深度は固定されており、m x nがサンプル深度と同じである必要があります。

ランタイム時に、値 m と値 n を変更できます。トリガーフロー記述で mn の値を変更すると、リコンパイルせずにセグメント境界を調整できます。

トリガーフロー記述にステートを追加して特定のステートを選択的にマスクし、ランタイム時にステータスフラグを使用して他のステータスをイネーブルすることができます。

この例は、追加のステートが挿入された前の例に似ています。この追加のステータスを使用して、Storage qualifier機能を使用しない別のトリガー条件を指定します。トリガーフローの実行を制御するには、条件文にステータスフラグを挿入します。

state ST1 :
	if (condition2  && f1)   	      // additional state for non-segmented
                                       // acquisition set f1 to enable state
		begin
		     start_store;
		     trigger
		end
	else if (! f1)
		goto ST2;
state ST2:
	if ( (condition1 && (c1 <= m)  && f2) // f2 status flag used to mask state. Set f2
	                                      // to enable
		begin			
		   start_store;
		   increment c1;
		   goto ST3:
		end
	else (c1 > m )		
		   start_store;	
   trigger (n-1)
	end
state ST3:
	if ( c2 >= n) 		
		begin
			reset c2;
			stop_store;
			goto ST1;
		end	
	else (c2 < n)
	begin
		increment c2;
		goto ST2;
	end