12 |
BSVでのデータの受け取り方2例 (2) |
次に、下位モジュールにおいて、入力信号をレジスタ受けではなく、ワイヤ受けに変更します。以下に修正部分のみを示します。
Processor.bsv:
Reg#(Bool) if_wait <- mkWire;
Reg#(Bool) mc_wait <- mkWire;
Reg#(Bool) ex_wait <- mkWire;
Reg#(Bool) ma_wait <- mkWire;
この場合は上位がRegisterですが、下位はWireであるため、図677.1に示すようにwait信号は遅れません。上位で変化したサイクルでそのまま下位に伝わります。
前稿でも同様ですが、上位ではサイクル毎に下位にwait信号を伝えるルールを記述しています。
Tb.bsv:
rule load_wait_values;
proc.if_wait_load(if_wait);
proc.mc_wait_load(mc_wait);
proc.ex_wait_load(ex_wait);
proc.ma_wait_load(ma_wait);
endrule