6

Verilog でこのアーキテクチャ/トポロジを使用しています。

写真

SystemVerilogIntRegの入力/出力ではない内部 reg にアクセスするにはどうすればよいですか?IntModule

always @(posedge clk) begin
    $display ("[Time %0t ps] IntReg value = %x", $time, DUT.IntModule.IntReg);
end

バインドは使えますか?どのように?

4

2 に答える 2

2

使用する必要はありませんbind:

module DUT;
bit clk;
initial begin
    repeat (5) begin
        #5 clk = 0; 
        #5 clk = 1;
    end
end

always @(posedge clk) begin
    $display ("[Time %0t ps] IntReg value = %x", $time, DUT.IntModule.IntReg);
end

IntModule IntModule ();
endmodule

module IntModule;
    reg IntReg = 1;
endmodule

出力:

[Time 10 ps] IntReg value = 1
[Time 20 ps] IntReg value = 1
[Time 30 ps] IntReg value = 1
[Time 40 ps] IntReg value = 1
[Time 50 ps] IntReg value = 1
于 2013-08-27T23:55:21.250 に答える
2

interfaceはい、次のように使用できますbind

// Interface
interface my_if(
  input IntReg
);
endinterface: my_if

// Interface bind
bind intModule my_if my_if0(
  .IntReg(IntReg)
);

次に、次のようにレジスタにアクセスします。

virtual my_if _if = top.DUT.IntModule.my_if0;
$display ("[Time %0t ps] IntReg value = %x",
  $time, _if.IntReg);

EDA Playground でのシミュレーション結果を含む完全な例: http://www.edaplayground.com/s/4/115

于 2013-08-27T23:49:55.303 に答える