7. コンポーネント・インタフェース Tcl リファレンス 概要 ハード

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 月