Verilog でこのアーキテクチャ/トポロジを使用しています。
SystemVerilogIntReg
の入力/出力ではない内部 reg にアクセスするにはどうすればよいですか?IntModule
always @(posedge clk) begin
$display ("[Time %0t ps] IntReg value = %x", $time, DUT.IntModule.IntReg);
end
バインドは使えますか?どのように?
Verilog でこのアーキテクチャ/トポロジを使用しています。
SystemVerilogIntReg
の入力/出力ではない内部 reg にアクセスするにはどうすればよいですか?IntModule
always @(posedge clk) begin
$display ("[Time %0t ps] IntReg value = %x", $time, DUT.IntModule.IntReg);
end
バインドは使えますか?どのように?
使用する必要はありません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
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