verilator/test_regress/t/t_bind.v

84 lines
1.4 KiB
Systemverilog
Raw Normal View History

// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain.
// SPDX-FileCopyrightText: 2012 Wilson Snyder
// SPDX-License-Identifier: CC0-1.0
2013-02-14 12:55:09 +01:00
bit a_finished;
bit b_finished;
2026-03-03 13:21:24 +01:00
module t ( /*AUTOARG*/
// Inputs
clk
);
input clk;
wire [31:0] o;
wire si = 1'b0;
2026-03-03 13:21:24 +01:00
ExampInst i ( // Outputs
.o(o[31:0]),
// Inputs
2026-03-03 13:21:24 +01:00
.i(1'b0)
/*AUTOINST*/);
2026-03-03 13:21:24 +01:00
Prog p ( /*AUTOINST*/
// Inputs
.si (si));
2026-03-03 13:21:24 +01:00
always @(posedge clk) begin
if (!a_finished) $stop;
if (!b_finished) $stop;
$write("*-* All Finished *-*\n");
$finish;
end
2013-02-14 12:55:09 +01:00
endmodule
module InstModule (
2026-03-03 13:21:24 +01:00
output logic [31:0] so,
input si
);
assign so = {32{si}};
endmodule
2026-03-03 13:21:24 +01:00
program Prog (
input si
);
initial a_finished = 1'b1;
endprogram
2026-03-03 13:21:24 +01:00
module ExampInst (
o,
i
);
output logic [31:0] o;
input i;
2026-03-03 13:21:24 +01:00
InstModule instName ( // Outputs
.so(o[31:0]),
// Inputs
2026-03-03 13:21:24 +01:00
.si(i)
/*AUTOINST*/);
2026-03-03 13:21:24 +01:00
//bind InstModule Prog instProg
// (.si(si));
2026-03-03 13:21:24 +01:00
// Note is based on context of caller
bind InstModule Prog instProg ( /*AUTOBIND*/
.si(si)
);
endmodule
2013-02-14 12:55:09 +01:00
// Check bind at top level
2026-03-03 13:21:24 +01:00
bind InstModule Prog2 instProg2 ( /*AUTOBIND*/
.si(si)
);
2013-02-14 12:55:09 +01:00
// Check program declared after bind
2026-03-03 13:21:24 +01:00
program Prog2 (
input si
);
initial b_finished = 1'b1;
2013-02-14 12:55:09 +01:00
endprogram