Vengineerの妄想

人生を妄想しています。

Bluespec SystemVerilog : HELLO WORLDを学ぶ(その3)

Verification Engineerの戯言


ここまでの記述をシミュレーションするには、次のコマンドを実行します。
bscコマンドでオプションに -sim を指定します。
この時点では、まだ中間ファイル(mkAttempt.ba)が生成されるだけです。
中間ファイル名は、モジュール名(ここではmkAttempt).ba です。

    % bsc -sim FirstAttempt.bsv
    Elaborated module file created: mkAttempt.ba

次にシミュレータを生成します。
-e オプションでトップ階層を指定し、シミュレータの名前を -o オプションで指定します。

    % bsc -sim -e mkAttempt -o ./sim mkAttempt.ba
    Bluesim object created: mkAttempt.{h,o}
    Bluesim object created: schedule.{h,o}
    Simulation shared library created: sim.so
    Simulation executable created: ./sim

生成されたシミュレータを実行すると、"Hello World"がずーと表示されます。


では、シミュレーションを終了するには、どうすればいいのでしょう!

SystemVerilogと同じように $finish を使います。

    package FirstAttempt;

        // My first design in the cool Bluespec language

        String s = "Hello world";

        (* synthesize *)
        module mkAttempt(Empty);
            rule say_hello;
                $display(s);
                $finish(0);
            endrule
        endmodule
    endpackage

これで1回だけ、"Hello World" が表示されます。

    % bsc -sim FirstAttempt.bsv
    Elaborated module file created: mkAttempt.ba
    % bsc -e mkAttempt -sim -o ./sim mkAttempt.ba
    Bluesim object created: mkAttempt.{h,o}
    Bluesim object created: schedule.{h,o}
    Simulation shared library created: sim.so
    Simulation executable created: ./sim

    % ./sim
    Hello World

検証、Verification、Bluespec SystemVerilog