Hello, World!

プロジェクトを作る

まず始めに、新しい Veryl プロジェクトを作りましょう。

veryl new hello

コマンドを実行すると、以下のようなディレクトリとファイルが作成されます。

$ veryl new hello
[INFO ]      Created "hello" project
$ cd hello
$ tree
.
`-- Veryl.toml

0 directories, 1 file

Veryl.toml はプロジェクトの設定ファイルです。

[project]
name = "hello"
version = "0.1.0"

全設定の説明はこちら

コードを書く

ソースコードはプロジェクトディレクトリ内のどこに書いても構いません。これは 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.sv
|   `-- hello.veryl
`-- Veryl.toml

2 directories, 4 files

デフォルトでは SystemVerilog のコードは Veryl のコードと同じディレクトリに生成されます。つまり src/hello.sv です。

module hello_ModuleA;
    initial begin
        $display("Hello, world!");
    end
endmodule

さらに、生成されたコードのファイルリスト hello.f も生成されます。これは SystemVerilog コンパイラで使用できます。Verilator で使用するには以下のようにします。

$ verilator --cc -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)