UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 51327

Vivado 合成のデザイン アシスタント - SystemVerilog データ型のサポート

説明

このアンサーでは、Vivado 合成でサポートされるさまざまな SystemVerilog データ型を説明し、コード例を示します。これらのコード例は、このアンサーの最後に添付されています。このアンサーには、既知の問題、適切なコード記述に関する情報も含まれます。

注記 : 各コード例は Vivado プロジェクトを作成するのに直接使用できます。各例に含まれる SystemVerilog コンストラクトは、各ソース ファイルのヘッダーを参照してください。

ソリューション

Vivado 合成でサポートされている SystemVerilog のデータ型です。

次は、Vivado 合成でサポートされる SystemVerilog のデータ型です。データ型のコード例については、このアンサーの最後にある表 1-1 を参照してください。

1. 整数データ型

Vivado 合成は、次の整数 SystemVerilog データ型をサポートしています。

  • shortint : 2 値の 16 ビット符号付き整数
  • int : 2 値の 32 ビット符号付き整数
  • longint : 2 値の 64 ビット符号付き整数
  • byte : 2 値の 8 ビット符号付き整数
  • bit : 2 値のユーザー定義のベクター サイズ
  • logic : 4 値のユーザー定義のベクター サイズ
  • reg : 4 値のユーザー定義のベクター サイズ
  • integer : 4 値の 32 ビット符号付き整数
  • time : 4 値の 64 ビット符号なし整数

logic データ型は、Verilog の reg 型に相当しますが、reg データ型よりも機能があります。logic データ型は、ポート出力の assign ブロックで駆動できるほか、手続きブロック内に存在することもできます。このため、logic は通常 Verilog で使用される reg および wire の代わりに使用できます。

logic a, a1, a2;
assign a = b ^ c;
always @ (c or d) a1 = c + d;
mymodule module(.out(a2), .in(xyz));

2. 実数

Vivado 合成は、次の実数型をサポートします。

  • real : C の double 同様
  • shortreal : C の float 同様
  • realtime : real と同一

ただし、Vivado 合成では定数実数型のデータしかサポートされていません。たとえば、次のコードでは「[Synth 8-502] non-constant real-valued expression is not supported」というエラーが発生します。

input real r;
input int a;
output int y;

always_comb
y = a + int'(r);

3. void データ型

void 型はストレージがないことを表し、値を返さない関数を定義するために使用できます。

4. ユーザー定義型

Vivado 合成は、typedef キーワードを使って定義されるユーザー定義型をサポートします。

typedef data_type type_identifier {size};

または

typedef [enum, struct, union] type_identifier;

5. enum データ型

Vivado 合成では enum データ型がサポートされます。enum データ型を使用すると、数量を示す値を名前に付けることができます。実際の値はデフォルトで 0 から始まって、増加していきます。列挙する値をユーザーが選択することもできます。enum データ型は厳密に型指定されています。enum データ型は定義済みの定数名か別の同一の enum 型にのみ割り当てることができます。

typedef enum { circle, ellipse, freeform } ClosedCurve;
ClosedCurve a, b, c, d;
parameter int e = 2;

assign a = 2; //illegal, must assign a label name
assign b = ellipse; //legal
assign c = e; //illegal, must assign an identical enum type
assign d = ClosedCurve'(2); //legal, SystemVerilog requires to explicitly cast the value when trying to store integer value in an enum.

6. 定数

SystemVerilog および Vivado 合成は、次のエラボレーション時定数をサポートします。

  • parameter : 元の Verilog 規格と同じであり、同じように使用できます。
  • localparam : parameter に類似していますが上位のモジュールや defparam で上書きすることはできません。
  • const : グローバル定数であり、エラボレーションの最後に修正されます。
    const bit TRUE = 1
  • SystemVerilog にはもう一つ specparam と呼ばれる定数型があり、指定ブロックで遅延値やタイミング値の指定に使用します。この値は Vivado 合成ではサポートされていません。

7. type 演算子

SystemVerilog では、データ型をパラメーター化できます。これはモジュール内の parameter 文でデータ型を定義することで、モジュールをインスタンシエートする際にパラメーターを変更するだけで異なるデータ型を使用できるようになります。次に例を示します。

module my_mod #(parameter type my_param = int)
(//inputs and outputs);
my_param my_sig; //this declares a signal called my_sig that is of type int
......
endmoddule


上記のレベルでは、my_mod を次のようにインスタンシエートできるため有用です。
my_mod #(.my_param(shortint)) u0 (<port names>);

8. キャスティング

SystemVerilog 内で 1 つのデータ型の値を別のデータ型に割り当てると不正となります。キャスティングは、あるデータ型を別のデータ型に変換するのに使用します。

  • <type>'(<expression>) : 記述を別のデータ型に型変換する
  • <size>'(<expression>) : 記述をベクター サイズに型変換する
  • <sign>'(<expression>) : 記述を符号付きまたは符号なしに型変換する

各例では、コードとデータ型を実証しています。

表 1-1

コード例の名前 データ型

data_types_example1.zip

  • ユーザー定義のデータ型
  • void データ型
  • logic データ型
  • enum データ型

data_types_example2.zip

  • shortreal、realtime、real データ型
  • const データ型
  • int、longint データ型
  • キャスティング

data_types_example3.zip

  • logic データ型
  • localparam
  • enum データ型
data_types_example4.zip
  • parameter
  • type 演算子

 

添付ファイル

関連添付ファイル

タイトル サイズ File Type
data_types_example2.zip 1 KB ZIP
data_types_example3.zip 1 KB ZIP
data_types_example4.zip 1 KB ZIP
data_types_example1.zip 2 KB ZIP

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
51360 Vivado 合成のデザイン アシスタント - SystemVerilog のサポート N/A N/A
AR# 51327
作成日 08/16/2012
最終更新日 04/15/2013
ステータス アクティブ
タイプ ソリューション センター
ツール
  • Vivado Design Suite