8 |
BSVにおけるコマンドバッファ制御 (6) |
3. トップモジュール
次にトップモジュールのサンプルを提供します。
package TopDirect;
import Producer4::*;
import Consumer4::*;
module mkTopDirect ();
Producer4Ifc prod <- mkProducer4();
Consumer4Ifc cons <- mkConsumer4();
/* 10 回受信したらシミュレーション終了 */
Reg#(UInt#(5)) recvCnt <- mkReg(0);
rule connect;
UInt#(4) x <- prod.produce;
cons.consume(x); // 直ちに渡す
$display("%0t: produce = %h", $time, x);
recvCnt <= recvCnt + 1;
endrule
/* 受信 10 回で $finish */
rule finish (recvCnt == 10);
$display("=== simulation finished ===");
$finish;
endrule
endmodule
endpackage
Leave a Comment