SV
[[sv.filesets]] エントリは Veryl プロジェクトと一緒に管理する IP などの SystemVerilog ファイルを指定します。指定したファイルとインクルードディレクトリはファイルリストに追加されます。
[[sv.filesets]]
root = "ip/foo"
enable_if = "!for_asic && width == 32"
files = ["rtl/foo_pkg.sv", "rtl/foo.sv"]
include_dirs = ["include"]
[[sv.filesets]] を繰り返すことで複数のファイルセットを指定できます。
設定
| 設定 | 設定値 | 必須 | 説明 |
|---|---|---|---|
| root | 文字列 | いいえ | files と include_dirs の相対パスの基準ディレクトリ |
| files | 文字列の配列 | はい | SystemVerilog ファイル |
| include_dirs | 文字列の配列 | いいえ | インクルードディレクトリ |
| enable_if | 文字列 | いいえ | プロジェクトプロパティに対する条件式。評価結果が真の場合のみファイルセットが有効になります。省略した場合は常に有効です。 |
root を省略した場合、相対パスはプロジェクトのルートディレクトリ (Veryl.toml があるディレクトリ) からの相対パスになります。絶対パスでは root は無視されます。
条件式
enable_if フィールドにはプロジェクトプロパティに対する条件式を指定します。以下のオペランドを使えます。
- プロパティ名
- Veryl 構文の幅指定なし数値 (例:
32,'b1010,'hff) - 括弧で囲んだ式
以下の演算子を使えます。すべての演算子は左結合です。
| 優先順位 | 演算子 | オペランドの型 |
|---|---|---|
| 高い | ! | bool |
<: >: <= >= | int | |
== != | 両辺が同じ型 | |
&& | bool | |
| 低い | || | bool |
[properties]
for_asic = false
width = 32
[[sv.filesets]]
enable_if = "for_asic"
files = ["ip/asic/foo_asic.sv"]
[[sv.filesets]]
enable_if = "!for_asic && (width == 32 || width == 64)"
files = ["ip/fpga/foo_fpga.sv"]
条件式の構文エラーは Veryl.toml の読み込み時に報告されます。未知のプロパティや型の不一致は式の評価時に報告されます。
ファイルリスト
有効なファイルセットのファイルとインクルードディレクトリは、生成されたファイルより前にファイルリストへ追加されます。インクルードディレクトリは veryl test が実行するシミュレータにも渡されます。
依存関係
依存関係のファイルセットもファイルリストに追加されます。依存関係の enable_if は、プロジェクトプロパティの上書きを反映した依存関係側のプロパティ値で評価されます。
- Git 依存関係: ファイルとインクルードディレクトリは
dependenciesディレクトリにコピーされ、コピー先のパスが参照されます。 - パス依存関係: ファイルとインクルードディレクトリは直接参照されます。
Publish
公開するプロジェクトの [[sv.filesets]] のパスは .. を含まない相対パスでなければなりません。enable_if に関わらず、いずれかのファイルセットに絶対パスや .. を含むパスがあると veryl publish はエラーを報告します。