Digamos que estamos tentando escrever um código de testbench Verilog/SystemVerilog chamado SC_TB para o módulo sample_code
. Existe uma maneira mais prática de ver o que reg B
e wire Cw
está fazendo no testbench, sem criar uma porta para eles?
module sample_code(
input A,
output Z
);
reg B;
wire Cw;
*stuff happens in this code*
endmodule
///código do testbench
module SC_TB();
reg A;
wire Z;
sample_code SCInst(
.A(A),
.Z(Z)
);
initial begin
A=0
#x a=value;
end
initial begin
$monitor(A,Z)
end
Atualmente, para ver o que "reg B" e "wire Cw" estão fazendo, eu criaria portas para eles e incluiria essas portas no meu código de testbench. Para os wires (Cw) declarados internamente no sample_code, eu os comentaria e criaria uma porta de wire de saída com um nome semelhante. Para reg (reg B) declarado internamente no sample_code, eu também criaria uma porta de wire de saída e atribuiria o reg interno a essa porta de wire. Meu código e meu código de testbench com base no sample_code e SC_TB acabam ficando assim.
module sample_code(
input A,
output Z,
output wire Cw,
output wire Bw
);
reg B;
//wire Cw;
assign Bw = B;
*stuff happens in this code*
endmodule
///código do testbench
module SC_TB();
reg A;
wire Z;
wire Cw;
wire Bw;
sample_code SCInst(
.A(A),
.Z(Z),
.Cw(Cw),
.Bw(Bw)
);
initial begin
A=0
#x a=value;
end
initial begin
$monitor(A,Z,Cw,Bw) //it doesnt have to be "monitor", "$display" or just the timing diagram works.
end