SystemVerilog probes · 25Vivado: supported
.* and .name implicit port connections
Vivado: supported. The open-source chain: all four stages pass.
| stage | today |
|---|---|
| rtl, simulation | pass |
| synth, synthesis | pass |
| netlist, the netlist | pass |
| bit, the bitstream | pass |
What does Vivado do with it?
Supported. UG901 v2023.2 Ch.10 (p.281-282): 'lower my_inst (.myout, .clk, .my_in, .my_in2);' and 'lower my_inst (.*);'; UG901 v2023.2 Ch.10 Table 27 (p.287): 'Module instantiation syntax: Supported'
What does the open-source chain do with it?
All four stages pass; expect.tsv records no message for this probe.
What is the probe's code?
From test/sv/25_port_conn_dotstar.
design.sv
module adder(input logic [3:0] a, b, output logic [4:0] s);
assign s = a + b;
endmodule
module top(input logic [15:0] sw, output logic [15:0] led);
logic [3:0] a, b;
logic [4:0] s, s2;
assign a = sw[3:0];
assign b = sw[7:4];
adder u0 (.*);
adder u1 (.a, .b(sw[11:8]), .s(s2));
assign led[4:0] = s;
assign led[9:5] = s2;
assign led[15:10] = '0;
endmodule
tb.sv
module tb;
reg clk = 1'b0;
reg btnC = 1'b0, btnU = 1'b0, btnD = 1'b0, btnL = 1'b0, btnR = 1'b0;
reg [15:0] sw = 16'h0000;
wire [15:0] led; wire [6:0] seg; wire dp; wire [3:0] an;
task tick; begin #5 clk = 1'b1; #5 clk = 1'b0; end endtask
initial begin #200000 $display("FAIL: timeout"); $finish; end
top dut(.sw(sw), .led(led));
initial begin
sw = 16'h0321; #1
if (!(led === 16'h0083)) begin $display("FAIL: .* and .name (led=%h seg=%b an=%b)", led, seg, an); $finish; end
$display("PASS"); $finish;
end
endmodule
previous: `include of a .svh, `define with arguments, `ifdef/`ifndef/`else, +: part select
next: array of instances: inv u_inv [3:0] (.a(sw[3:0]), .y(led[3:0]));