Hello, World!
プロジェクトを作る
まず始めに、新しい Veryl プロジェクトを作りましょう。
veryl new hello
コマンドを実行すると、以下のディレクトリとファイルが作成されます。もし git
コマンドが利用できれば、ディレクトリは Git リポジトリとして初期化され、デフォルトの .gitignore
ファイルも追加されます。
$ veryl new hello
[INFO ] Created "hello" project
$ cd hello
$ tree
.
├── src
└── Veryl.toml
1 directory, 1 file
Veryl.toml
はプロジェクトの設定ファイルです。
[project]
name = "hello"
version = "0.1.0"
[build]
source = "src"
target = {type = "directory", path = "target"}
全設定の説明はこちら。
コードを書く
ソースコードはプロジェクトディレクトリ内のどこに書いても構いません。これは Veryl プロジェクトが独立したプロジェクトである場合もあれば、他のSystemVerilog プロジェクトに組み込まれている場合もあるからです。Veryl のソースコードの拡張子は .veryl
です。
例えば以下のコードを src/hello.veryl
に書いてみましょう。
module ModuleA {
initial {
$display("Hello, world!");
}
}
$ tree
.
├── src
│ └── hello.veryl
└── Veryl.toml
1 directory, 2 files
注:この本のいくつかのソースコードには、マウスをホバーすると現れるプレイボタン “▶” があります。ボタンをクリックすると、トランスパイルされた SystemVerilog のコードが現れます。
module ModuleA
のコードのボタンを押してみましょう。
ビルドする
veryl build
コマンドで SystemVerilog のソースコードを生成できます。
$ veryl build
[INFO ] Processing file ([path to hello]/src/hello.veryl)
[INFO ] Output filelist ([path to hello]/hello.f)
$ tree
.
├── dependencies
├── hello.f
├── src
│ └── hello.veryl
├── target
│ ├── hello.sv
│ └── hello.sv.map
├── Veryl.lock
└── Veryl.toml
3 directories, 6 files
デフォルトでは SystemVerilog のコードは Veryl のコードと同じディレクトリに生成されます。つまり src/hello.sv
です。
module hello_ModuleA;
initial begin
$display("Hello, world!");
end
endmodule
//# sourceMappingURL=hello.sv.map
さらに、生成されたコードのファイルリスト hello.f
も生成されます。これは SystemVerilog コンパイラで使用できます。Verilator で使用するには以下のようにします。
$ verilator --binary -f hello.f
生成されたコードを片づける
生成されたコードは veryl clean
コマンドで削除することができます。
$ veryl clean
[INFO ] Removing file ([path to hello]/src/hello.sv)
[INFO ] Removing file ([path to hello]/src/hello.sv.map)
[INFO ] Removing dir ([path to hello]/dependencies)
[INFO ] Removing file ([path to hello]/hello.f)