コンパイル ユニット - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: 合成 (UG901)

Document ID
UG901
Release Date
2023-11-01
Version
2023.2 日本語

SystemVerilog では、コンパイル ユニットを使用することで、単一ファイルおよび複数ファイルのコンパイルがサポートされます。

コンパイル ユニットとは、一緒にコンパイルされた 1 つまたは複数の SV ソース ファイルのコレクションです。各コンパイル ユニットは、1 つのライブラリに関連付けられています。コンパイル ユニット スコープとは、グローバルなコンパイル ユニットに局所的に存在するスコープのことで、このスコープにはほかのデザイン スコープ外にあるすべての宣言が含まれます。コンパイル ユニット スコープには、通常、関数、タスク、パラメーター、ネット、モジュール外で宣言された変数およびユーザー定義のデータ型、インターフェイス、パッケージ、またはプログラムが含まれます。

たとえば、次のようなデザインがあるとします。

Tcl モード

read_verilog -lib lib1 {test1.sv }
read_verilog -lib lib2 {test2.sv }
read_verilog test3.sv

または

IDE

図 1. IDE

前述の場合、test1.sv に params や typedefs などのコンパイル ユニット スコープに次のような宣言があります。

Parameter P1 =2; // Parameter declared out of module scope
Module test1 (<port list>)
...
...
endmodule

上記のようにファイルを読み込みます。コンパイラ ユニット スコープでは、lib1 の下の test1.sv ファイルを読むことから開始しますが、コンパイル ユニットは単一のライブラリに関連付けられるべきなので、lib2 を使用して test2.sv を読み込むことはできません。これは、次のいずれかの方法で対処します。

Tcl モードの場合、すべてのファイルを 1 つのライブラリに含めます。

read_verilog -lib lib1 {test1.sv}
read_verilog -lib lib1 {test2.sv}
read_verilog test3.sv

または、ライブラリをまったく宣言しません。

read_verilog {test1.sv }
read_verilog {test2.sv}
read_verilog test3.sv

または、単一ファイルのコンパイル ユニット モードを使用します。

read_verilog -lib lib1 {test1.sv}
read_verilog -lib lib2 {test2.sv}
read_verilog test3.sv
synth_design -top <top_name> -sfcu
図 2. 設定