7. コンポーネント・インタフェース Tcl リファレンス この資料は英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。こちらの日本語版は参考用としてご利用 ください。設計の際には、最新の英語版で内容をご確認ください。 QII54022-8.0.0 概要 SOPC Builder コンポーネントは、ハードウェア Tcl ファイル(_hw.tcl) でプロパティと動作を宣言することによって定義します。SOPC Builder で識別される各 _hw.tcl ファイルは 1 つのコンポーネントを表しており、 そのインスタンスを SOPC Builder システムに追加できます。 SOPC Builder コンポーネントは通常、以下の 4 種類のファイルから構成 されます。 ■ ■ ■ ■ HDL ファイル — ハードウェアとしてのコンポーネントの機能を定 義します。 _hw.tclファイル—インタフェース動作など、SOPC Builder関連の特 性を説明します。このファイルはコンポーネント・エディタで作成 されます。 C 言語ファイル — プログラムからコンポーネントを制御するため の、コンポーネントのレジスタ・マップとドライバ・ソフトウェア を定義します。 ソフトウェア Tcl ファイル(_sw.tcl)— コンポーネントのドライバ・ コードを使用し、コンパイルするために、ソフトウェア・ビルド・ ツールによって使用されます。 この章では、以下の情報について説明します。 ■ ■ ■ ■ ■ ハードウェア Tcl ファイルの 情報 Altera Corporation 2008 年 5 月 7–1 ページの「ハードウェア Tcl ファイルの情報」 7–2 ページの「コンポーネント・フェーズ」 7–2 ページの「ハードウェア Tcl ファイルの記述」 7–8 ページの「デフォルト動作の変更」 7–13 ページの「ハードウェア Tcl コマンド・リファレンス」 通常のハードウェア Tcl ファイルには、以下の情報が含まれています。 ■ Basic component information— コンポーネントの名前、バージョ ン、説明、ドキュメントへのリンク、合成およびシミュレーション 用 HDL 実装ファイルのポインタなどの情報が含まれます。 7–1 Quartus II ハンドブック Volume 4 ■ ■ コンポーネン ト・フェーズ 以下の項では、SOPC Builder コンポーネントの作成と使用における各 フェーズについて説明します。 ■ ■ ■ ■ ■ ハードウェア Tcl ファイルの 記述 7–2 Parameter Declarations— パラメータを持つコンポーネントは、 SOPC Builder に対してそれぞれのパラメータを宣言します。パラメータと は、メモリのサイズなどコンポーネントの実装方法に影響する設定 可能な値です。各パラメータ・プロパティには、パラメータの名前、 表示可能かどうか、表示可能な場合は表示するテキストなどがあり ます。システム生成時に、パラメータは通常、Verilog HDL パラメー タまたは VHDL Generics としてコンポーネントに適用されます。 Interface Properties— コンポーネントのインタフェースは、コン ポーネントをシステムに接続する方法を定義し、システム内の他の コンポーネントがこのコンポーネントと交信する方法を決定しま す。インタフェース・プロパティを定義する場合、コンポーネント 内のインタフェースおよび各インタフェースを構成する信号を宣言 します。また、Avalon Memory-Mapped(Avalon-MM)インタフェー スの waite-states など、インタフェース・プロパティも定義します。 Main Program— これが実行されるのは、SOPC Builder が最初にコ ンポーネントを検出し、それをコンポーネント・ライブラリに追加 するときです。_hw.tcl が実行され、Tcl ステートメントは SOPC Builder に対してインスタンス非固有情報を提供します。 Edit— コンポーネントが SOPC Builder システムに追加された後、コ ンフィギュレーション・ウィザードでパラメータを編集できます。 Validaton— コンポーネントによるエラー、警告、または情報メッ セージの生成を可能にします。メッセージが生成されるのは、コン ポーネントのインスタンスの作成時、コンポーネントのパラメータ の変更時、またはシステムの他のプロパティの変更時です。 Elaboration—SOPC Builder がコンポーネントにインタフェース情 報を照会するときに実行されます。通常、これは Elaboration の直 後、および Generation の直前に実行されます。 Generation— コンポーネントの生成時、モジュールは Quartus II ソ フトウェアでのコンパイルに必要なもの、または HDL シミュレー タでのシミュレーションに必要なものをすべて提供します。通常、 必須ファイルには VHDL または Verilog HDL RTL ファイル、シミュ レーション・モデル、タイミング制約、その他の情報が含まれます。 この項では、_hw.tcl ファイルに関する詳細な情報を提供し、5 つのフェー ズすべてのコンポーネントのデフォルト動作を説明します。以下の例で は、簡単なパラメータ設定によるシンプルな UART を使用しています。 Altera Corporation 2008 年 5 月 ハードウェア Tcl ファイルの記述 基本情報の提供 通常の _hw.tcl ファイルでは、最初に基本情報が宣言されます。SOPC Builder はこの情報に基づいて、名前、場所、含まれるファイルなどの 基本情報を提供します。 例 7-1. # The name and version of the component set_module_property NAME “example_uart” set_module_property VERSION “1.0” # The name of the component to display in the library set_module_property DISPLAY_NAME “Example Component” # The component’s description. set_module_property DESCRIPTION “An Example Component” # The component library group that component belongs to set_module_property GROUP "Examples" パラメータの宣言 通常の _hw.tcl ファイルは、次にシステム設計者がコアのパラメータ設 定に使用するコンフィギュレーション・パラメータを宣言します。次の 例に示すように、パラメータを追加してそのプロパティを宣言します。 例 7-2. # Declare the Baud Rate parameter as an integer with a # default value of 9600. add_parameter BAUD_RATE int 9600 # Display it as “Baud Rate” in the Parameter Editor. set_parameter_property BAUD_RATE DISPLAY_NAME “Baud Rate (bps)” # We only support three baud rates set_parameter_property BAUD_RATE ALLOWED_RANGES {9600 19200 38400} Altera Corporation 2008 年 5 月 7–3 Quartus II ハンドブック Volume 4 インタフェースの宣言 次に、コンポーネントのインタフェースを宣言します。ほとんどのイン タフェースはクロック入力インタフェースを要求するため、クロック・ インタフェースを最初に宣言されています。インタフェースを宣言する には、各インタフェースを追加し、そのプロパティを宣言し、そのイン タフェースに属する信号を宣言します。 例 7-3. # Declare the clock sink interface, “clock_sink”, # type=clock, direction=sink # add_interface clock_sink clock sink # The clock interface has two signals, named “clk” and # “reset_n”, # of types “clk” and “reset_n”, both inputs of width 1 bit. add_interface_port clock_sink clk clk input 1 add_interface_port clock_sink reset_n reset_n input 1 # Declare the Avalon slave interface, # name=”avalon_slave_0”, type=avalon, directon=slave, # associated with the “clock_sink” clock interface. add_interface avalon_slave_0 avalon slave clock_sink # Set a number of properties about the Avalon Slave interface set_interface_property avalon_slave_0 writeWaitTime 0 set_interface_property avalon_slave_0 addressAlignment DYNAMIC set_interface_property avalon_slave_0 readWaitTime 1 set_interface_property avalon_slave_0 readLatency 0 # Declare all the signals that belong to my Avalon # Slave interface add_interface_port avalon_slave_0 readdata readdata output 32 add_interface_port avalon_slave_0 read read input 1 add_interface_port avalon_slave_0 write write input 1 add_interface_port avalon_slave_0 waitrequest waitrequest output 1 add_interface_port avalon_slave_0 address address input 7 add_interface_port avalon_slave_0 writedata writedata input 32 7–4 Altera Corporation 2008 年 5 月 ハードウェア Tcl ファイルの記述 ファイルの追加と生成のガイド Tcl モジュールは通常、生成に必要なすべての情報を提供し、他のツール に必要なすべての情報を提供します。HDL ファイルや Synopsys Design Constraint(.sdc)ファイルなどのコンポーネントによって使用されるそ の他のファイルをすべて指定します。また、トップレベルの HDL ファ イル、トップレベルのモジュールおよびエンティティ名を指定し、トッ プレベルのモジュール名を指定します。 例 7-4. # Add the HDL file to the component, to be used for # synthesis and simulation. add_file simple_uart.v {SYNTHESIS SIMULATION} # Timequest file with Quartus timing constraints. add_file simple_uart.sdc {SDC} # The top-level HDL file that describes the file, and # the name of the top-level module/entity. set_module_property TOP_LEVEL_HDL_FILE simple_uart.v set_module_property TOP_LEVEL_HDL_MODULE simple_uart 基本動作 前の項で説明したような _hw.tcl ファイルを使用する場合、 SOPC Builder は Edit、Validation、Elaboration、および Generation 時にデフォルト動 作を実行します。この項では、これらの各フェーズにおける SOPC Builder のデフォルト動作について説明します。この動作は、 「デフォル ト動作の変更」で説明するとおり、変更することができます。 Altera Corporation 2008 年 5 月 7–5 Quartus II ハンドブック Volume 4 Edit 時の動作 SOPC Builder のデフォルトの Edit 動作では、すべてのパラメータ定義 を使用して、デフォルトのパラメータ設定 GUI を表示します。表 7–1 に 示す各パラメータ・プロパティは、SOPC Builder がデフォルト GUI を 構築するときのガイダンスになります。 表 7–1. パラメータ・プロパティ パラメータ・ プロパティ TYPE デフォルトのパラメータ GUI での使用 パラメータのタイプは、生成された HDL での使用 方法、およびチェックボックス、編集フィールド、 ドロップダウン・リストなどの表示方法を決定し ます。 パラメータのタイプは、add_parameter コマンド でパラメータを追加するときに設定します。 DISPLAY_NAME パラメータの表示に使用される名前を定義しま す。 ALLOWED_RANGES 単一値、または整数の場合、1 ∼ 3(1 と 3 を含 む)を意味する "1:3" のような範囲のリスト。 GROUP パラメータをグループに割り当てることにより、 パラメータ設定 GUI を論理的に分割できます。 VISIBLE 値が VISIBLE=0 のパラメータは、パラメータ設定 GUI に表示されません。 ENABLED 値が ENABLED=0 のパラメータは、無効として表 示されます。これは値が他のパラメータから派生 したパラメータには便利です。 Validation 時の動作 SOPC Builder のデフォルトの Validation 動作では、コンポーネントのパ ラメータの現在の値が、ALLOWED_RANGES プロパティに照らして確認 されます。システム設計者がコンポーネントの許容範囲外の値を選択し た場合は、エラー・メッセージが表示されます。 各パラメータの ALLOWED_RANGES プロパティは、パラメータが取り得 る値の範囲のリストで、各範囲は単一値または次に示す値の範囲です。 “start:end” 7–6 Altera Corporation 2008 年 5 月 ハードウェア Tcl ファイルの記述 表 7–2 に、ALLOWED_RANGES プロパティが取り得る値の例を示します。 表 7–2. ALLOWED_RANGES プロパティ ALLOWED_RANGES プロパティ {a, b, c} {1, 2, 4, 8, 16} 1:3 1, 2, 3, 7:10 意味 "a"、"b"、または "c" 1、2、4、8、または 16 1 ∼ 3(1 と 3 を含む) 1、2、3、または 7 ∼ 10(7 と 10 を含む) Elaboration 動作 Elaboration の間、SOPC Builder はコンポーネントに現在のインタフェー スとそのプロパティを照会します。標準的なコンポーネントに必要な情 報はすべて、インタフェースの宣言と HDL から入手できます。パラメー タ が ポ ー ト 幅 に 影 響 す る場合、SOPC Builder は必要に応じて quartus_map を呼び出して、正しいポート幅を決定します。quartus_ map の呼び出しはリソースを多く消費する場合があるため、コンポーネ ントの一部またはすべてのパラメータに対し、AFFECTS_PORT_WIDTHS プロパティを false に設定して、必要ないときに quartus_map が呼び 出されるのを回避します。 Generation 動作 Generation 時に、SOPC Builder は次のいずれかを実行します。 ■ コンポーネントが TOP_LEVEL_MODULE プロパティを定義している 場合、SOPC Builder は Verilog HDL または VHDL ラッパー・モ ジュールを作成して、トップレベル・モジュールをインスタンス化 し、システム設計者が選択したパラメータを適用します。SOPC Builder は、基礎となる HDL ファイルに存在しないパラメータは ラッパーでは適用しません。 または ■ Altera Corporation 2008 年 5 月 コンポーネントが TOP_LEVEL_MODULE プロパティを定義していな い場合、モジュールは SOPC Builder システム内でインスタンス化 されず、ラッパー・ファイルは作成されません。ただし、モジュー ルへのインタフェースは、SOPC Builder システムのトップレベルに エクスポートされるため、モジュールはシステムの外部で接続する 必要があります。 7–7 Quartus II ハンドブック Volume 4 デフォルト 動作の変更 前項の各動作は、4 つのコールバック・プロパティのいずれかを設定す ることによって、変更することができます。各コールバック・プロパティ で指定するコールバック関数をデフォルトの動作の代わりに使用した り、デフォルト動作に加えて呼び出すことが可能です。 Edit コールバック Edit コールバックは、カスタム・コンポーネントのパラメータにデフォ ル ト 値 を 割 り 当 て る た め に 使 用 し ま す。次 の 例 に 示 す よ う に、 EDITOR_CALLBACK モジュール・プロパティをユーザーのコールバック 関数名に設定して指定できます。Edit コールバックが定義されている場 合、SOPC Builder はパラメータ設定 GUI を表示する必要があるとき(通 常はシステムにコンポーネントが追加されるとき、またはコンポーネン トがすでにシステムに存在し編集されるとき)は常に、Edit コールバッ クを呼び出します。 カスタム・コンポーネントに使用される Tcl インタプリタでは、Tk はサ ポートされません。GUI を表示するには、コンポーネントの Edit コール バックにより、プロセスで希望の GUI を表示する別のプログラムを呼び 出す必要があります。通常、Edit コールバックはコマンドラインを通じ て、カスタム GUI プログラムに現在のパラメータ値を提供し、stdout を使用して、カスタム GUI から新しいパラメータ値を収集します。次 に、set_parameter_value コマンドを使用して、SOPC Builder を新しい パラメータ値で更新します。 7–8 Altera Corporation 2008 年 5 月 デフォルト動作の変更 例 7-5. set_module_property EDITOR_CALLBACK my_editor # Define Module parameters add_parameter PARAMETER_ONE integer "32" "A parameter" add_parameter CSR_ENABLED boolean "true" "Enable CSR interface" # My editor method proc my_editor { # get parameter values set p1 [ get_parameter_value "PARAMETER_ONE" ] set csr [ get_parameter_value "CSR_ENABLED" ] # Display UI, populated with current parameter # values. # The stdout returned by the UI program includes the # new paramter values. set result = [exec my_component_ui.exe p1=$p1 csr=$csr] # use the fictional “parse_for_new_value” procedure # to # parse the returned text for the new parameter # values. set p1 [parse_for_new_value $result “p1”] set csr [parse_for_new_value $result “csr”] # Return the new parameter values to SOPC Builder set_parameter_value "PARAMETER_ONE" $p1 set_parameter_value "CSR_ENABLED" $csr } Validation コールバック Validationコールバックは、以下に示すように、VALIDATION_CALLBACK モジュール・プロパティをカスタムの Validation コールバック関数名に 設定して定義します。Validation コールバックが定義されている場合、 パラメータ範囲に基づくデフォルト Validation が実行され、続いて Validation コールバック関数が実行されます。 Validation コールバックを使用して、派生パラメータの現在の値を設定 し、パラメータ値に基づいてメッセージを表示できます。次の例は、 ボー・レート38400、奇数パリティを選択した場合はエラーを表示します。 Altera Corporation 2008 年 5 月 7–9 Quartus II ハンドブック Volume 4 また Validation コールバックは、派生パラメータ値の設定にも使用できま す。派生パラメータは、他のパラメータから派生したパラメータです。値 はコンポーネントのユーザーから指定されず、.sopc ファイルに保存され ません。パラメータへの派生マーキングは、パラメータの“derived”プ ロパティを TRUEに設定して行います。 以下の例で、 BAUDRATE_PRESCALE は Validation コールバック・ファンクション内で計算され、BAUDRATE パ ラメータ値の 1/16 の値を持つ派生パラメータです。 例 7-6. # Declare the validation callback. set_module_property VALIDATION_CALLBACK my_validation_callback # Add the BAUDRATE_PRESCALE parameter add_parameter BAUDRATE_PRESCALE int 600 set_parameter_property BAUDRATE_PRESCALE DERIVED “true” # The validation callback proc my_validation_callback { # Get the current value of parameters we care about set baudrate [get_parameter_value BAUD_RATE] set parity [get_parameter_value PARITY] # Display an error for invalid combinations. if {($baud_rate==38400) && ($parity==”odd”)} { send_message error “Odd parity at 38400 bps is not supported.” } # Set the value of our derived parameter set baudrate_prescale [expr $baud_rate / 16] set_parameter_value BAUDRATE_PRESCALE $baudrate_counter Elaboration コールバック Elaboration コールバックを使用して、インタフェース・プロパティを変更 したり、新しいインタフェースを追加できます。Elaboration コールバック は、以下に示すように、ELABORATION_CALLBACK モジュール・プロパティ を Elaboration コールバック関数名に設定して定義します。_hw.tcl の本文 内で定義されたインタフェースは、メイン・プログラムで追加され、 7–10 Altera Corporation 2008 年 5 月 デフォルト動作の変更 Elaboration 実行時に削除できません。次の例に、Avalon-MM スレーブ・ インタフェースを、USE_STATUS_INTERFACE パラメータに基づいてオプ ションでコンポーネントのインスタンスに配置する方法を示します。 また Elaboration コールバックは、コンポーネントで使用されるファイ ルの更新にも使用できます。例えば、あるパラメータが TRUE のときに HDL ファイルをインクルードしたい場合などで使用します。Elaboration コールバックで追加されたファイルは、ファイルの本体に追加される ファイルに加えられます。 例 7-7. # Declare the callback. set_module_property ELABORATION_CALLBACK my_elaboration_callback # Add the USE_STATUS_INTERFACE parameter add_parameter USE_STATUS_INTERFACE boolean # The elaboration callback proc my_elaboration_callback { # Get the current value of parameters we care about set use_status [get_parameter_value USE_STATUS_INTERFACE] # Optionally add an interface and HDL file. if { $use_status==1 } { # Declare the status slave interface add_interface status_slave avalon slave clock_sink # Set interface properties set_interface_property status_slave writeWaitTime 0 set_interface_property status_slave readWaitTime 1 # Declare signals add_interface_port status_slave st_readdata readdata output 32 add_interface_port status_slave st_read read input 1 add_interface_port status_slave st_write write input 1 add_interface_port status_slave st_waitrequest waitrequest output 1 add_interface_port status_slave st_address address input 7 add_interface_port status_slave st_writedata writedata input 32 #Include the file that defines the status interface add_file my_status_interface.v {SYNTHESIS SIMULATION} } Altera Corporation 2008 年 5 月 7–11 Quartus II ハンドブック Volume 4 } Generation コールバック Generation コールバックが定義されている場合、SOPC Builder はコン ポーネントにパラメータ値を適用するための HDL ラッパー・ファイル を生成しません。代わりに、Generation 時に提供された Generation コー ルバックを呼び出して、コンポーネントからのプログラムによる HDL の生成を可能にします。次の例に示すように、GENERATION_CALLBACK モジュール・プロパティを Generation コールバック関数名に設定して定 義します。 Generation コールバックは通常、コンポーネントのパラメータの現在の 値、および Generation プロセスをガイドする Generation プロパティを 取得し、続いて Tcl で、または外部プログラムを呼び出して、HDL ファ イルとサポート・ファイルを生成します。最後に、コールバックは add_files コマ ン ドで SOPC Builder に必須ファイルを報告します。 Generation コールバックで追加されたファイルは、ファイルの本体に追 加されるファイルに加えられます。 表 7–3 で Generation プロパティを説明します。 表 7–3. Generation プロパティ プロパティ名 意味 HDL_LANGUAGE 優先される生成 HDL 言語 Verilog または VHDL を指定します。コ ンポーネントは、可能な場合は HDL を希望の言語で、不可能な 場合はいずれかの言語で生成します。 OUTPUT_DIRECTORY HDL と他のファイルが保存されるディレクトリを示します。ファ イルはこのディレクトリに生成されなければなりません。 OUTPUT_NAME 生成されるモジュールのモジュール名を示します。システム設計 者が、コンポーネントのインスタンス名を comp_0 にした場合、 OUTPUT_NAME Generation プ ロ パテ ィ は comp_0 とな り、 Generation コールバックは comp_0 という名前のモジュールまた はエンティティを指定された出力ディレクトリに生成しなけれ ばなりません。 7–12 Altera Corporation 2008 年 5 月 ハードウェア Tcl コマンド・リファレンス 以下に Generation コールバックの例を示します。 例 7-8. set_module_property generationCallback my_generate # My generation method proc my_generate {} { send_message "info" "Starting Generation" # get generation settings set language [ get_generation_setting "HDL_LANGUAGE" ] set outdir [get_generation_setting "OUTPUT_DIRECTORY" ] set outputname [get_generation_setting "OUTPUT_NAME" ] # get parameter values set p1 [ get_parameter_value "PARAMETER_ONE" ] set csr [ get_parameter_value "CSR_ENABLED" ] # Do HDL generation with perl exec perl my_generate.pl lang=$language dir=$outdir name=$outputname p1=$p1 csr=$csr } ハードウェア Tcl コマンド・ リファレンス add_file “${outputname}.v” SYNTHESIS add_file “${outputname}_sim.v” SIMULATION この項では、すべてのハードウェア Tcl コマンドのリファレンスを以下 のとおり示します。 ■ ■ ■ ■ 7–14 ページの「モジュール定義」 7–20 ページの「パラメータ」 7–24 ページの「インタフェースおよびポート」 7–28 ページの「Generation」 各コマンドの説明では、利用可能な時期、プログラムの本体(メイン)、 または Edit、Validation、Elaboration、および Generation コールバック 時、あるいはこれらの組み合わせを示します。 Altera Corporation 2008 年 5 月 7–13 Quartus II ハンドブック Volume 4 モジュール 定義 get_module_properties 説明 : すべての利用可能なモジュール・プロパティを文字列リストとし て返します。 get_module_propertyコマンドとset_module_property コマンドは、これらの値の取得と設定に使用されます。特定の時間にの み設定できるプロパティもあります。 戻り値 : String[] 使用法 : list_of_module_properties コマンド使用箇所 : ■ メイン・プログラム 使用可能なモジュール・プロパティとその使用法、および設定のタイミ ングについては、表 7–4 で説明しています。 表 7–4. get_module_properties(1 / 3) プロパティ名 7–14 プロパティ・ タイプ 設定時 説明 NAME 文字列 メイン・ プログラム モジュール名、 “my_sopc_component” DISPLAY_NAME 文字列 メイン・ プログラム モジュール参照時に表示 される名前(例 : “My SOPC Component”) VERSION 文字列 メイン・ プログラム モジュールのバージョン (例 : “8.0”) AUTHOR 文字列 メイン・ プログラム モジュールの作成者 DESCRIPTION 文字列 メイン・ プログラム モジュールの説明 (例 : “Example SOPC Builder Module”) GROUP 文字列 メイン・ プログラム モジュールが所属する コンポーネント・グルー プ(例 : “Example Components”) ICON_PATH 文字列 メイン・ プログラム モジュール・パラメータ のエディタに表示される アイコンのパス DATASHEET_URL 文字列 メイン・ プログラム モジュールのデータシー トへのパス Altera Corporation 2008 年 5 月 モジュール定義 表 7–4. get_module_properties(2 / 3) プロパティ名 EDITABLE プロパティ・ タイプ ブール数 設定時 メイン・ プログラム 説明 コンポーネントがコン ポーネント・エディタで 編集可能かどうかを示し ます。 MODULE_TCL_FILE 読み出し専用、 _hw.tcl ファイルへの 設定不可 パス MODULE_DIRECTORY 読み出し専用、 _hw.tcl ファイルを含む 設定不可 ディレクトリ TOP_LEVEL_HDL_FILE 文字列 メイン・ プログラム、 Validation、 Generation “add_file” コマンドで追 加されるファイルのう ち、どのファイルにモ ジュールのトップレベル HDL が含まれるかを示 します。 TOP_LEVEL_HDL_MODULE 文字列 メイン・ プログラム、 Validation、 Generation モジュールのトップレベ ル HDL ファイルの名前 を示します。 INSTANTIATE_IN_SYSTEM_MODULE ブール数 メイン・ プログラム ‘false’ の場合、モジュー ルのインスタンスは生成 されるスイッチ・ファブ リックにインクルードさ れません。代わりに、モ ジュールへのインタ フェースがトップレベ ル・システムからエクス ポートされます。 VALIDATION_CALLBACK 文字列 メイン・ プログラム 呼び出す Validation コー ルバックの名前。このプ ロパティが設定されてい ない場合、ファンクショ ンは呼び出されません。 EDITOR_CALLBACK 文字列 メイン・ プログラム 呼び出す Edit コール バックの名前。このプロ パティが設定されていな い場合、ファンクション は呼び出されません。 Altera Corporation 2008 年 5 月 7–15 Quartus II ハンドブック Volume 4 表 7–4. get_module_properties(3 / 3) プロパティ・ タイプ プロパティ名 設定時 説明 ELABORATION_CALLBACK 文字列 メイン・ プログラム 呼び出す Elaboration コールバックの名前。こ のプロパティが設定され ていない場合、ファンク ションは呼び出されませ ん。 GENERATION_CALLBACK 文字列 メイン・ プログラム 呼び出す Generation コールバックの名前。こ のプロパティが設定され ていない場合、ファンク ションは呼び出されませ ん。 SIMULATION_MODEL_IN_VERILOG ブール数 メイン・ プログラム True の場合、SOPC Builder はコンポーネン トの Verilog HDL シミュ レーション・モデルを自 動的に作成します。 SIMULATION_MODEL_IN_VHDL メイン・ プログラム True の場合、SOPC Builder はコンポーネン トの VHDL シミュレー ション・モデルを自動的 に作成します。 ブール数 get_module_property 説明 : 1 つのモジュール・プロパティの値を返します。 戻り値 : プロパティに応じて文字列またはブール数 使用法 : get_module_property [propertyName} コマンド使用箇所 : ■ ■ ■ ■ ■ メイン・プログラム Validation コールバック Edit コールバック Elaboration コールバック Generation コールバック 例 : set my_name [get_module_property NAME] 7–16 Altera Corporation 2008 年 5 月 モジュール定義 set_module_property 説明 : モジュールのプロパティ値を設定できます。 戻り値 : <void> 使用法 : set_module_property [propertyName] [propertyName] コマンド使用箇所 : ■ ■ ■ メイン・プログラム Validation コールバック(一部のプロパティ、表 7–4 を参照) Generation コールバック(一部のプロパティ、表 7–4 を参照) 例 : set_module_property VERSION “8.0” add_file 説明 : 合成、シミュレーション、または .sdc ファイルをモジュールに追 加します。メイン・プログラムで追加されたファイルは削除できません。 Elaboration コールバックまたは Generation コールバックでのファイル の追加により、インクルードされたファイルをパラメータ・セットの関 数、または Generation の結果にすることができます。コールバックで追 加されたファイルは、メイン・プログラムで追加されるファイルに加え られます。ファイル・プロパティは、ファイルが追加されるときにイン クルードできます。これらのプロパティには、以下が含まれます。 ■ ■ ■ ■ SIMULATION— ファイルが HDL シミュレーションに使用されるこ とを示します。 SYNTHESIS— ファイルが合成用 HDL ファイルであることを示しま す。 SDC— ファイルに TimeQuest タイミング・アナライザのタイミング 制約が含まれることを示します。 QIP— ファイルが Quartus II IP ファイルであることを示します。 戻り値 : <void> 使用法 : add_file fileName [fileProperties] コマンド使用箇所 : ■ ■ ■ Altera Corporation 2008 年 5 月 メイン・プログラム Elaboration コールバック Generation コールバック 7–17 Quartus II ハンドブック Volume 4 例 : add_file my_component.v {SIMULATION SYNTHESIS} get_files 説明 : モジュールに追加されるすべてのファイル名のリストを返します。 戻り値 : String[] 使用法 : get_files [] コマンド使用箇所 : ■ ■ ■ ■ ■ メイン・プログラム Validation コールバック Edit コールバック Elaboration コールバック Generation コールバック get_file_property 説明 : 1 つのファイル・プロパティの値を返します。関数に渡されるファ イル名は、一意である限り部分ファイル名を使用できます。例えば、完 全ファイル名が “/components/my_file.v” の場合、“my_file.v” で十分で す。使用可能なプロパティは “add_files” に記述されます。 戻り値 : ブール数 使用法 : get_file_property [filename] [propertyName] コマンド使用箇所 : ■ ■ ■ ■ ■ メイン・プログラム Validation コールバック Edit コールバック Elaboration コールバック Generation コールバック 例 : get_file_property my_file.v SYNTHESIS 7–18 Altera Corporation 2008 年 5 月 モジュール定義 set_file_property 説明 : 1 つのファイル・プロパティの値を設定します。関数に渡される ファイル名は、一意である限り部分ファイル名を使用できます。例えば、 完全ファイル名が “/components/my_file.v” の場合、“my_file.v” で十分 です。使用可能なプロパティは、上記の “add_files” に記述されます。 戻り値 : <void> 使 用 法 : set_file_property [propertyValue] [fileName] [propertyName] コマンド使用箇所 : ■ ■ ■ メイン・プログラム Elaboration コールバック Generation コールバック 例 : set_file_property “my_file.v” SYNTHESIS true send_message 説明 : メッセージをコンポーネントのユーザーに送信します。各メッセー ジには、以下のいずれかのメッセージ・レベルが含まれます。 ■ ■ ■ ■ ■ ■ Error: ユーザーにエラー・メッセージを送ります。エラー・メッセー ジがある間はシステムを生成できません。 ToDoError: ユーザーに ToDo メッセージを送り、システム生成前に処 置が必要な問題があることを知らせます。 Info: ユーザーに情報メッセージを送ります。 Warning: ユーザーに警告メッセージを送ります。 Progress:ユーザーにプロセス情報を送ります。 通常はGenerationコー ルバック中に使用されます。 Debug: デバッグ・モードが有効のときにのみユーザーに表示されま す。 戻り値 : <void> 使用法 : send_message [messageLevel] [messageText] コマンド使用箇所 : ■ ■ ■ メイン・プログラム Validation コールバック Generation コールバック 例 : send_message Error “param1 must be greater than param2.” Altera Corporation 2008 年 5 月 7–19 Quartus II ハンドブック Volume 4 パラメータ add_parameter 説明 : モジュールにパラメータを追加します。モジュールのユーザーは、 パラメータを使用して、Verilog HDL Parameter または VHDL Generics と同じ方法でモジュールの動作を変更できます。パラメータ名は、コン ポーネントの作成者により決定され、そのタイプは以下のいずれかにな ります。 ■ ■ ■ ■ ■ Integer Boolean Std_logic(VHDL ベースのコンポーネントのみ) Std_logic_vector(VHDL ベースのコンポーネントのみ) String 戻り値 : <void> 使 用 法 : add_parameter [parameterName] [parameterType] [defaultValue description] コマンド使用箇所 : ■ メイン・プログラム 例 : add_parameter “seed” integer 17 ”The seed to use for data generation.” get_parameters 説明 : 以前に add_parameter により定義されているパラメータのリス トを返します。 戻り値 : String [] 使用法 : get_parameters コマンド使用箇所 : ■ ■ ■ ■ ■ 7–20 メイン・プログラム Validation コールバック Edit コールバック Elaboration コールバック Generation コールバック Altera Corporation 2008 年 5 月 パラメータ get_parameter_properties 説明 : 使用可能なすべての parameter_properties のリストを文字列 リストとして返します。get_parameter_property コマンドと set_ parameter_property コマンドは、これらのプロパティの値の取得と 設定に使用します。パラメータ・プロパティは、プロパティに応じて異 なるタイミングで設定できます。使用可能なパラメータ・プロパティと その使用法、および設定のタイミングについては、表 7–5 で説明してい ます。 表 7–5. get_parameter_properties プロパティ名 DISPLAY_NAME プロパティ・ タイプ 設定時 説明 String メイン・ プログラム パラメータを表示するときに使用さ れる文字列。 ALLOWED_RANGES String メイン・ プログラム パラメータ値の範囲を示します。整 数の場合、範囲は “17” のような単一 値か、[11:15] のような包括的範囲に なります。文字列とその他のタイプ の場合、単一値が範囲となります。 GROUP String メイン・ プログラム パラメータが属するパラメータ・グ ループ。 AFFECTS_PORT_ WIDTHS Boolean メイン・ プログラム ポート幅に影響するパラメータを変 更した場合、新しいポート幅を決定 するために quartus_map が呼び出さ れます。一方、ポート幅に影響しな いパラメータであると指定すると、 不必要な quartus_map の呼び出しが 回避されるため性能が向上します。 このパラメータは設定されていない 場合は、‘true’ とみなされます。 VISIBLE Boolean メイン・ プログラム Validation コールバック パラメータ設定 GUI にパラメータを 表示するかどうかを指示します。 ENABLED Boolean メイン・ プログラム Validation コールバック ‘false’ の場合、パラメータは無効に なります。すなわちパラメータはパ ラメータ設定 GUI に表示されます が、グレー表示になります。 戻り値 : String [] 使用法 : get_parameter_properties Altera Corporation 2008 年 5 月 7–21 Quartus II ハンドブック Volume 4 コマンド使用箇所 : ■ ■ ■ ■ ■ メイン・プログラム Validation コールバック Edit コールバック Elaboration コールバック Generation コールバック get_parameter_property 説明 : 1 つのパラメータ・プロパティを返します。 戻り値 : プロパティに応じます(表 7–5 参照)。 使用法 : get_parameter_property [parameterName] [propertyName] コマンド使用箇所 : ■ ■ メイン・プログラム Validation コールバック 例 : get_parameter_property “parameter1” “GROUP” set_parameter_property 説明 : 1 つのパラメータ・プロパティを設定します。 戻り値 : <void> 使用法 : set_parameter_property [parameterName][propertyName] [value] コマンド使用箇所 : ■ ■ メイン・プログラム Validation コールバック 例 : set_parameter_property “parameter1” ALLOWED_RANGES {1, 2, 4, 8} 7–22 Altera Corporation 2008 年 5 月 パラメータ get_parameter_value 説明 : 以前に add_parameter により定義されているパラメータの現在 の値を返します。 戻り値 : パラメータのタイプ 使用法 : get_parameter_value [parameterName] コマンド使用箇所 : ■ ■ ■ ■ Validation コールバック Edit コールバック Elaboration コールバック Generation コールバック 例 : get_parameter_value “parameter1” set_parameter_value 説 明 : パラ メ ー タ値 を設定します。通常、派生パラメータの値は、 Validation コールバックの間に他のパラメータの値に基づいて設定され ます。 戻り値 : <void> 使用法 : set_parameter_value [parameterName] [value] コマンド使用箇所 : ■ Validation コールバック 例 : set_parameter_value “parameter1” 4 Altera Corporation 2008 年 5 月 7–23 Quartus II ハンドブック Volume 4 インタフェース およびポート add_interface 説明 : モジュールにインタフェースを追加します。インタフェースの名 前は、コンポーネントの作成者により決定されます。表 7–6 に、インタ フェースの Type と Direction を示します。 表 7–6. add_interrface の Type および Direction Type Direction avalon マスター、スレーブ avalon_tristate スレーブ avalon_streaming ソース、シンク interrupt 送信者、受信者 conduit スタート clock ソース、シンク nios_custom_instruction スレーブ 戻り値 : <void> 使用法: add_interface interfaceName interfaceType direction [associatedClock] コマンド使用箇所 : ■ ■ メイン・プログラム Elaboration コールバック 例 : add_interface s0 avalon slave clock0 get_interfaces 説明 : 以前に add_interface により定義されているインタフェースの リストを返します。 戻り値 : String[] 使用法 : get_interfaces コマンド使用箇所 : ■ ■ 7–24 メイン・プログラム Elaboration コールバック Altera Corporation 2008 年 5 月 インタフェースおよびポート get_interface_properties 説明 : 指定されたインタフェースで利用できるすべてのインタフェース・ プロパティのリストを、文字列リストで返します。 各インタフェース・タイプで利用できるプロパティは、インタフェース のタイプごとに異なります。「Avalon Interface Specifications」を参照 してください。 戻り値 : String [] 使用法 : get_interface_properties [interfaceName] コマンド使用箇所 : ■ ■ メイン・プログラム Elaboration コールバック 例 : get_interface_properties “s0” get_interface_property 説明 : インタフェースの 1 つのインタフェース・プロパティを返します。 戻り値 : プロパティに応じます。 使用法 : get_interface_property [interfaceName] [propertyName] コマンド使用箇所 : ■ ■ メイン・プログラム Elaboration コールバック 例 : get_interface_property “s0” “readWaitTime” set_interface_property 説明:インタフェースの1つのインタフェース・プロパティを設定します。 戻り値 : <void> 使用法 : set_interface_property interfaceName apropertyName value Altera Corporation 2008 年 5 月 7–25 Quartus II ハンドブック Volume 4 コマンド使用箇所 : ■ ■ メイン・プログラム Elaboration コールバック 例 : set_interface_property “s0” “readWaitTime” 2 add_interface_port 説明 : モジュールのインタフェースにポートを追加します。ポートの名 前はコンポーネントの作成者が決定します。インタフェースのメンバに なることができるポートの役割は、インタフェースにより異なります。 詳細は、「Avalon Interface Specifications」を参照してください。 portDirection は、Input、Output、Bidir のいずれかに、また VHDL の場合は Buffer になります。幅はポート幅(ビット数)です。 戻り値 : <void> 使 用 法 : add_interface_port [interfaceName] [portName] [portRole direction] [Width] コマンド使用箇所 : ■ ■ メイン・プログラム Elaboration コールバック 例 : add_interface_port s0 s0_rdata readdata output 32 get_interface_ports 説明 : インタフェースに追加されているすべてのポートの名前を返しま す。インタフェース名が省略される場合、すべてのインタフェースのす べてのポートが返されます。 戻り値 : String[] 使用法 : get_interface_ports [interfaceName] コマンド使用箇所 : ■ ■ 7–26 メイン・プログラム Elaboration コールバック Altera Corporation 2008 年 5 月 インタフェースおよびポート get_port_properties 説明 : 使用可能なすべてのポート・プロパティのリストを返します。使 用可能なポート・プロパティは、表 7–7 に記載されています。 表 7–7. 使用可能なポート・プロパティ プロパティ名 DIRECTION タイプ 説明 Direction INPUT、OUTPUT、BIDIR、BUFFER の いずれか WIDTH Integer ポートの幅。 TERMINATION Boolean True の場合は、ポートを SOPC Builder システムに接続する代わりに、非接続 のままか(output & bidir)または固定 値(inputs)に設定されます。デフォ ルトのラッパー生成を使用しないで、 生成コールバックを実装するコン ポーネントには影響しません。 TERMINATION_ VALUE Long 入力終端ポートに設定する固定値。 戻り値 : String [] 使用法 : get_port_properties portName コマンド使用箇所 : ■ ■ メイン・プログラム Elaboration コールバック 例 : get_port_properties “s0” get_port_property 説明 : ポート・プロパティを取得できます。 戻り値 : プロパティによって異なります。 使用法 : get_port_property portName propertyName コマンド使用箇所 : ■ ■ メイン・プログラム Elaboration コールバック 例 : get_port_property “s0_rdata” WIDTH Altera Corporation 2008 年 5 月 7–27 Quartus II ハンドブック Volume 4 set_port_property 説明 : 1 つのポート・プロパティを設定します。 戻り値 : <void> 使用法 : set_port_property portName propertyName value コマンド使用箇所 : ■ ■ メイン・プログラム Elaboration コールバック 例 : set_port_property “s0_rdata” WIDTH 32 Generation get_generation_properties 説明 : 使用可能なすべての生成プロパティのリストを文字列リストとし て返します。get_generation_property コマンドは、これらのプロ パティ値の取得に使用します。モジュールでこれらのプロパティを変更 することはできません。プロパティとその使用法は、表 7–8 で説明して います。 表 7–8. get_generation_properties プロパティ名 HDL_LANGUAGE タイプ Enum 説明 生成する HDL 言語。小文字の “vhdl” ま たは “verilog” になります。モジュールを指 定した言語で生成できない場合、他の言 語での生成も許可されます。 OUTPUT_DIRECTORY File ファイルの生成場所。 OUTPUT_NAME 生成されるトップレベルのファイル 名とエンティティ。OUTPUT_NAME が “module_0”、HDL_LANGUAGE が “VERILOG” の場合、ファイル “module_o.v” が生成され、その中に モジュール “module_0” が含まれてい ます。 String 戻り値 : String [] 使用法 : get_generation_properties 7–28 Altera Corporation 2008 年 5 月 Generation コマンド使用箇所 : ■ ■ メイン・プログラム Generation コールバック get_generation_property 説明 : 1 つの生成プロパティの値を返します。 戻り値 : プロパティに応じて文字列またはブール数 使用法 : get_generation_property propertyName コマンド使用箇所 : ■ Generation コールバック get_project_property 説明 : 1 つのプロジェクト・プロパティの値を返します。モジュールでこ れらのプロパティを変更することはできません。プロパティとその使用 法は、表 7–9 で説明しています。 表 7–9. get_project_property(1 / 2) プロパティ名 QUARTUS_ROOTDIR タイプ String 説明 $QUARTUS_ROOTDIR 環境変数の値。 QUARTUS_PROJECT_DIRECTORY String 現在のプロジェクト・ディレクトリへ のパス。 QUARTUS_PROJECT_NAME 現在のQuartus IIプロジェクトの名前。 Altera Corporation 2008 年 5 月 String 7–29 Quartus II ハンドブック Volume 4 表 7–9. get_project_property(2 / 2) プロパティ名 タイプ 説明 DEVICE_FAMILY_NAME Enum 現在のデバイス・ファミリの名前で、 以下のいずれかです。 STRATIX STRATIXII STRATIXIIGX STRATIXIIGXLITE STRATIXGX STRATIXIII STRATIXIV CYCLONE CYCLONEII CYCLONEIII HARDCOPY HARDCOPYII HARDCOPYIII MAXII APEX20KE APEX20KC APEXII ACEX1K DEVICE_FAMILY_FEATURES Enum [ ] 現在のデバイス・ファミリでサポート される機能で、以下のものがあります。 M512_MEMORY M4K_MEMORY M9K_MEMORY M144K_MEMORY MRAM_MEMORY MLAB_MEMORY ESB EPCS DSP EMUL HARDCOPY LVDS_IO ADDRESS_STALL TRANSCEIVER_3G_BLOCK TRANSCEIVER_6G_BLOCK DSP_SHIFTER_BLOCK 戻り値 : プロパティに応じます。 使用法 : get_project_property propertyName コマンド使用箇所 : ■ 7–30 Generation コールバック Altera Corporation 2008 年 5 月 参考資料 参考資料 この章では以下のドキュメントを参照しています。 ■ 「Avalon Interface Specifications」 ■ 「Nios II ソフトウェア開発ハンドブック」の「Nios II Software Build Tools Reference」の章 改訂履歴 表 7–10 に、本資料の改訂履歴を示します。 表 7–10. 改訂履歴 日付およびドキュメント・ バージョン 変更内容 概要 「_hw.tcl コマンドとデバッグ・コマンド の編集」セクションを新規に追加。 「Tcl スクリプト・コマンドによるコン ポーネント・インタフェースの構築」の 章のタイトルを「コンポーネント・イン タフェース Tcl リファレンス」に変更。 — 2007 年 10 月 v7.2.0 章を大幅に再編成。新しいコマンド、プロ パティ、パラメータを追加。 — 2007 年 5 月 v7.1.0 初版 — 2008 年 5 月 v8.0.0 ● ● Altera Corporation 2008 年 5 月 7–31 Quartus II ハンドブック Volume 4 7–32 Altera Corporation 2008 年 5 月
© Copyright 2024 Paperzz