xilinx.analyzer - 2021.2 日本語

Vitis Model Composer ユーザー ガイド (UG1483)

Document ID
UG1483
Release Date
2021-10-22
Version
2021.2 日本語

xilinx.analyzer は、Model Composer モデルと Vivado® のタイミング パスの間のインターフェイスを提供する MATLAB® クラスです。

Model Composer のタイミング解析は、すべてのコンパイル ターゲットでサポートされています。System Generator トークンの Clocking タブにある Perform analysis ドロップダウン リストには、総実行時間と Vivado タイミング データの精度をトレードオフする 2 つのオプションがあります。Perform analysisPost Synthesis または Post Implementation オプションを選択し、Generate ボタンをクリックすると、ネットリスト生成時に Vivado タイミング パス情報が収集されます。Vivado タイミング パス情報にアクセスするには、xilinx.analyzer クラスを使用します。xilinx.analyzer クラスのオブジェクトにより、Vivado タイミング パスが処理され、ワーストのスラック値を持つ 50 個のパスが検出されます。これらのタイミング パスは、スラックの値が大きい順に並べ替えられ、アナライザー オブジェクトに保存されます。

Vivado タイミング パスと Model Composer モデルとのクロスプローブには、xilinx.analyzer クラスの次の API 関数を使用します。

表 1. xilinx.analyzer クラス関数
関数名 説明 関数の引数
xilinx.analyzer

これはクラスのコンストラクターです。

xilinx.analyzer のコンストラクターを呼び出すと、そのクラスのオブジェクトが返されます。

最初の引数は Model Composer モデル名です。

2 番目の引数は、既に生成されているネットリスト ディレクトリへのパスです。

isValid タイミング解析データが有効であるかどうかを示します。この API を使用して、xilinx.analyzer クラスが正常に構築されたことを確認します。 引数はありません。
getErrorMessage クラス コンストラクターやその他の API 関数の呼び出しにエラーがあった場合、エラー メッセージの文字列を返します。 引数はありません。
getStatus モデル内のタイミング パスのいずれかに違反 (負のスラック) があった場合に FAILED を返します。 引数はありません。
getVivadoStage 「Post Synthesis」または「Post Implementation」のいずれかを返します。タイミング解析を実行した後の Vivado デザイン段階を示します。 引数はありません。
paths MATLAB 構造体の配列を返します。各構造体にはタイミング パスのデータが格納されます。 'setup' または 'hold' のいずれかを指定します。
violations MATLAB 構造体の配列を返します。配列の各メンバーは、タイミング違反のあるパス構造です。 'setup' または 'hold' のいずれかを指定します。
print スラック、パス遅延、ロジック段数、ソースとデスティネーションのブロック名およびクロック名など、タイミング パス情報を出力します。 タイミング パス データの MATLAB 構造体の配列です。配列には、1 つ以上の構造体を含めることができます。
highlight Model Composer モデルで、引数で渡されたタイミング パスのブロックをハイライトします。モデル内で既にハイライトされているブロックは、ハイライトされたままになります。 1 つのタイミング パスの MATLAB 構造体
highlightOnePath Model Composer モデルで、引数で渡されたタイミング パスのブロックをハイライトします。このパスのブロックをハイライトする前に、モデル内で既にハイライトされているブロックのハイライトが解除されます。 1 つのタイミング パスの MATLAB® 構造体
unhighlight Simulink® モデルで、現在ハイライトされているすべてのブロックのハイライトを解除します。 引数はありません。
disp すべてのタイミング パスの中のワーストのスラック値など、タイミング解析結果のサマリを MATLAB コンソールに表示します。 引数はありません。
delete xilinx.analyzer クラスのデストラクターです。 引数はありません。
表 2. MATLAB 構造体の中のタイミング パス データ
フィールド名 説明
Slack パスのタイミング スラックを含む double 型の値
Delay パスのデータパス遅延の合計
Levels_of_Logic タイミング パスの Vivado デザイン内のエレメント数。タイミング パスにある HDL ブロック数は、Levels_of_Logic と異なる場合があります。
Source タイミング パス内の最初の HDL ブロック
Destination タイミング パス内の最後の HDL ブロック
Source_Clock ソース ブロックのクロック ドメイン名
Destination_Clock デスティネーション ブロックのクロック ドメイン名
Path_Constraints パスに使用されるタイミング制約。マルチクロック デザインの場合、パス制約はマルチクロックのタイミング制約になる可能性があります。
Block_Masks 各要素が HDL ブロックのマスク情報を含むセル配列。
Simulink_Names 各要素が Model Composer モデルのブロックの階層名を含むセル配列
Vivado_Names 各要素が Vivado データベース内の HDL ブロックの名前を含むセル配列
Type タイミング違反のタイプ。値は 'setup' または 'hold' のいずれかです。

xilinx.analyzer - xilinx.analyzer クラス オブジェクトを構築

構文


analyzer_object = xilinx.analyzer(<name_of_the_model>', '<path_to_netlist_directory>')
Description

xilinx.analyzer のコンストラクターを呼び出すと、そのクラスのオブジェクトが戻されます。

最初の引数は、Model Composer のモデル名です。クラスのコンストラクターを呼び出す前に、モデルを開いておく必要があります。

2 番目の引数には、ネットリスト ディレクトリへの絶対パスまたは相対パスを指定します。netlist ディレクトリの読み取り権限が必要です。

xilinx.analyzer クラスの API 関数にアクセスするには、次のようにクラスのオブジェクトを使用します。特定の API 関数の詳細を取得するには、MATLAB コマンド プロンプトで次のように入力します。


help xilinx.analyzer.<API_function>
Example

//Construct class. Must give the model name and absolute or relative path to the 
//target directory

>> timing_object = xilinx.analyzer('fixed_point_IIR', './netlist_for_timing_analysis')

timing_object = 

Number of setup paths = 9
Worst case setup slack = -1.6430

isValid – Vivado タイミング パスの有効性を確認

Syntax

result = analyzer_object.isValid();
Description

タイミング解析データが有効な場合は 1、そうでない場合は 0 が返されます。この API を使用して、xilinx.analyzer クラスが正常に構築されたこと、およびタイミング データが有効であることを確認します。

Example

//Determine if timing analysis data is valid

>> valid_status = timing_object.isValid()

valid_status =

     1

getErrorMessage - エラー メッセージを取得

Syntax

result = analyzer_object.getErrorMessage();
Description

クラス コンストラクターやその他の API 関数の呼び出しにエラーがあった場合、エラー メッセージの文字列を返します。

Example

//Determine if there was an error in the xilinx.analyzer constructor
//or in any of the API functions

>> err_msg = timing_object.getErrorMessage()

err_msg =

     ''

getStatus - タイミング解析のステータスを取得

Syntax

string = analyzer_object.getStatus();
Description

戻り値は PASSED または FAILED です。いずれかのタイミング パスに違反 (負のスラック) があった場合、タイミング解析のステータスは FAILED とみなされます。

Example

//Determine if there were timing path violations in Simulink model

>> analysis_status = timing_object.getStatus()

analysis_status =

FAILED

getVivadoStage - タイミング解析の Vivado デザイン段階を取得

Syntax

string = analyzer_object.getVivadoStage();
Description

Vivado でタイミング解析が実行され、データが収集された後の Vivado デザイン段階が返されます。戻り値は、Post Synthesis または Post Implementation のいずれかです。

Example

//Determine Vivado stage when timing data was collected

>> design_stage = timing_object.getVivadoStage()

design_stage =

Post Synthesis

paths - すべてのタイミング パスにアクセス

Syntax

<array_of_timing_paths_structure> = analyzer_object.paths('<violation_type>');
Description

MATLAB 構造体の配列を返します。各構造体にはタイミング パスのデータが含まれており、タイミング違反の大きいものから順に (スラック値の昇順に) 並べられています。

引数 '<violation_type>' の値は 'setup' または 'hold' です。

Example

//Return an array of the timing path structures

>> all_timing_paths = timing_object.paths('setup')

all_timing_paths = 

1x9 struct array with fields:

    Slack
    Delay
    Levels_of_Logic
    Source
    Destination
    Source_Clock
    Destination_Clock
    Path_Constraints
    Block_Masks
    Simulink_Names
    Vivado_Names
    Type
注記:

このタイミング解析では、合計 9 つのタイミング パスがあります。

各タイミング パスのデータ フィールドは、その他の情報 の例 1 に示すようになります。

violations - タイミング違反のあるパスにアクセス

Syntax

<array_of_timing_paths_structure> = analyzer_object.violations('<violation_type>');
Description

MATLAB 構造体の配列を返します。配列の各メンバーは、タイミング違反のあるパスのデータです。配列要素は、タイミング違反の大きい方から順に並べられます。デザインにタイミング違反がない場合、API 関数は空の配列を返します。

引数 '<violation_type>' の値は 'setup' または 'hold' です。

Example

//Return an array of timing paths with setup violations

>> violating_paths = timing_object.violations('setup')

violating_paths = 

1x2 struct array with fields:

    Slack
    Delay
    Levels_of_Logic
    Source
    Destination
    Source_Clock
    Destination_Clock
    Path_Constraints
    Block_Masks
    Simulink_Names
    Vivado_Names
    Type

このタイミング解析では、違反のあるパスが 2 つあります。

各タイミング パスのデータ フィールドは、その他の情報 の例 3 に示すようになります。

print - タイミング パス情報を出力

Syntax

analyzer_object.print(<timing_path_structures>);
Description

入力タイミング パス構造のスラック、パス遅延、ロジック段数、ソースとデスティネーションのブロック名、ソースとデスティネーションのクロック名、パス制約など、タイミング パス情報を出力します。

引数は、1 つ以上の要素を持つ MATLAB 構造体の配列です。

Examples

//Print timing path information for path #1

>> timing_object.print(all_timing_paths(1))
Path Num            Slack (ns)             Delay (ns)            Levels of Logic   
Source/Destination Blocks            Source Clock      Destination Clock              Path 
Constraints
   1                            -1.6430                 11.5690                     6                           
fixed_point_IIR/Delay1                                 clk                           clk                           
create_clock -name clk -period 2 [get_ports clk]
                                                                                                                                  
fixed_point_IIR/IIR Filter Subsystem/Delay4

ans =

     1

//Print timing path information for path #3

>> timing_object.print(all_timing_paths(3))
Path Num            Slack (ns)             Delay (ns)            Levels of Logic   
Source/Destination Blocks            Source Clock      Destination Clock              Path 
Constraints
   1                            1.1320                   0.5270                      0                           
fixed_point_IIR/Delay1                            clk                              clk                             
create_clock -name clk -period 2 [get_ports clk]
                                                                                                                                  
fixed_point_IIR/Delay1

ans =

     1

//Print timing path information for path #2 from violating_paths array

>> timing_obj.print(violating_paths(2))
Path Num            Slack (ns)             Delay (ns)            Levels of Logic   
Source/Destination Blocks            Source Clock      Destination Clock              Path 
Constraints
   1                            -1.3260                 11.2520                    6                            
fixed_point_IIR/Delay1                                 clk                           clk                           
create_clock -name clk -period 2 [get_ports clk]
                                                                                                                                  
fixed_point_IIR/Delay2

ans =

     1

highlight - タイミング パスのデザイン ブロックをハイライト

Syntax

analyzer_object.highlight(<timing_path_structure>);
Description

この API は、引数で指定したタイミング パスの HDL ブロックをハイライトします。ほかのパスからブロックのハイライトを変更するわけではないので、この機能を繰り返し使えば、複数のタイミングのパスがハイライトされます。

引数は、1 つのタイミング パスの MATLAB 構造体です。

Example

//Highlight Simulink model blocks in the selected path
//Don't change highlighting of currently highlighted blocks in the model

>> [result, err_msg] = timing_object.highlight(all_timing_paths(1));

ハイライトされた Model Composer のモデル ブロックは次のように表示されます。

図 2. HDL モデル ブロック

highlightOnePath - タイミング パスのデザイン ブロックをハイライト

Syntax

analyzer_object.highlightOnePath(<timing_path_structure>);
Description

この API は、引数で指定したタイミング パスの HDL ブロックをハイライトします。既にハイライトされているパスのブロックがある場合は、そのブロックのハイライトが解除されるので、一度にハイライトされるのは 1 つのパスだけです。

引数は、1 つのタイミング パスの MATLAB 構造体です。

Example

//Highlight a single path in Model Composer model, and unhighlight currently
//highlighted paths

>> [result, err_msg] = timing_object.highlightOnePath(violating_paths(2));

unhighlight - デザイン ブロックのハイライトを解除

Syntax

analyzer_object.unhighlight();
Description

この API は、既にハイライトされているブロックのハイライトを解除します。Model Composer モデルのブロックは、元の色で表示されます。

Example

//Unhighlight any Simulink block that is currenly highlighted

>> [result, err_msg] = timing_object.unhighlight();

disp - タイミング解析のサマリを表示

Syntax

analyzer_object.disp();
Description

この API は、ワーストのスラック値を含むタイミング パスのサマリを MATLAB コンソールに表示します。

Example

//Display a summary of timing analysis

>> timing_object.disp()
Number of setup paths = 9
Worst case setup slack = -1.6430

delete - xilinx.analyzer クラス オブジェクトを削除

Syntax

analyzer_object.delete();
Description

xilinx.analyzer クラスのデストラクターです。

Example

//Delete xilinx.analyzer object, i.e., timing_object

>> timing_object.delete();

その他の情報

タイミング パス構造のデータ フィールドにアクセスします。

Example 1: Data for timing path #1

//Return the data fields for the timing path with the worst slack

>> all_timing_paths(1)

ans = 

                Slack: -1.6430
                Delay: 11.5690
      Levels_of_Logic: 6
               Source: 'fixed_point_IIR/Delay1'
          Destination: 'fixed_point_IIR/IIR Filter Subsystem/Delay4'
         Source_Clock: 'clk'
    Destination_Clock: 'clk'
     Path_Constraints: 'create_clock -name clk -period 2 [get_ports ...'
          Block_Masks: {1x5 cell}
       Simulink_Names: {1x5 cell}
         Vivado_Names: {1x5 cell}
                 Type: 'setup'

Example 2: Data for timing path #3

//Return the data fields for a timing path

>> all_timing_paths(3)

ans = 

                Slack: 1.1320
                Delay: 0.5270
      Levels_of_Logic: 0
               Source: 'fixed_point_IIR/Delay1'
          Destination: 'fixed_point_IIR/Delay1'
         Source_Clock: 'clk'
    Destination_Clock: 'clk'
     Path_Constraints: 'create_clock -name clk -period 2 [get_ports ...'
          Block_Masks: {'fprintf('','COMMENT: begin icon graphics')...'}
       Simulink_Names: {'fixed_point_IIR/Delay1'}
         Vivado_Names: {'fixed_point_iir.fixed_point_iir_struct.delay1'}

'setup'と入力します。

Example 3: Data for path #1 in violating_paths array

//Return the data fields in a timing path with timing violations

>> violating_paths(1)

ans = 

                Slack: -1.6430
                Delay: 11.5690
      Levels_of_Logic: 6
               Source: 'fixed_point_IIR/Delay1'
          Destination: 'fixed_point_IIR/IIR Filter Subsystem/Delay4'
         Source_Clock: 'clk'
    Destination_Clock: 'clk'
     Path_Constraints: 'create_clock -name clk -period 2 [get_ports ...'
          Block_Masks: {1x5 cell}
       Simulink_Names: {1x5 cell}
         Vivado_Names: {1x5 cell}
                 Type: 'setup'