Verification Engineerの戯言
ここまでの記述をシミュレーションするには、次のコマンドを実行します。
bscコマンドでオプションに -sim を指定します。
この時点では、まだ中間ファイル(mkAttempt.ba)が生成されるだけです。
中間ファイル名は、モジュール名(ここではmkAttempt).ba です。
bscコマンドでオプションに -sim を指定します。
この時点では、まだ中間ファイル(mkAttempt.ba)が生成されるだけです。
中間ファイル名は、モジュール名(ここではmkAttempt).ba です。
% bsc -sim FirstAttempt.bsv
Elaborated module file created: mkAttempt.ba
次にシミュレータを生成します。
-e オプションでトップ階層を指定し、シミュレータの名前を -o オプションで指定します。
-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"がずーと表示されます。
% ./sim
Hello World
Hello World
Hello World
Hello World
Hello World
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