Summary
Completion inside a named port connection does not suggest compatible in-scope signals when the port and candidate signals use parameterized packed widths such as [WIDTH-1:0].
This affects a common RTL workflow: connecting reusable parameterized modules by named ports.
Environment
- OS: Windows
- VS Code version: 1.120.0
- Vizsla extension version: 0.1.4
Minimal Reproduction
Create a workspace with these files:
completion-parameterized-width/
.vscode/
settings.json
vizsla.toml
top.sv
.vscode/settings.json:
{
"editor.wordBasedSuggestions": "off",
"editor.snippetSuggestions": "none"
}
vizsla.toml:
#:schema https://pascal-lab.github.io/vizsla/schemas/v1/vizsla.schema.json
top_modules = ["top"]
sources = [
"top.sv",
]
top.sv:
module leaf #(
parameter int WIDTH = 8
) (
input logic clk,
input logic [WIDTH-1:0] data_i,
output logic [WIDTH-1:0] data_o
);
endmodule
module top;
localparam int WIDTH = 8;
logic clk;
logic [WIDTH-1:0] data_i;
logic [WIDTH-1:0] data_o;
leaf #(
.WIDTH(WIDTH)
) u_leaf (
.clk(),
.data_i(),
.data_o()
);
endmodule
Reproduction Steps
- Open the
completion-parameterized-width/ directory in VS Code.
- Wait until Vizsla is ready.
- Open
top.sv.
- Put the cursor inside the empty
.data_i() connection:
- Trigger completion with
Ctrl+Space.
- Repeat inside
.data_o().
- As a control case, trigger completion inside
.clk().
Expected
Inside .data_i() and .data_o(), Vizsla should suggest compatible in-scope signals:
Both candidate signals and target ports use the same parameterized packed width:
logic [WIDTH-1:0] data_i;
logic [WIDTH-1:0] data_o;
Actual
No variable candidates are shown inside .data_i() or .data_o().
The .clk() control case can still produce a suggestion for clk, so completion itself is active. The issue appears specific to signals whose type width depends on a parameter or localparam.
Summary
Completion inside a named port connection does not suggest compatible in-scope signals when the port and candidate signals use parameterized packed widths such as
[WIDTH-1:0].This affects a common RTL workflow: connecting reusable parameterized modules by named ports.
Environment
Minimal Reproduction
Create a workspace with these files:
.vscode/settings.json:{ "editor.wordBasedSuggestions": "off", "editor.snippetSuggestions": "none" }vizsla.toml:top.sv:Reproduction Steps
completion-parameterized-width/directory in VS Code.top.sv..data_i()connection:.data_i()Ctrl+Space..data_o()..clk().Expected
Inside
.data_i()and.data_o(), Vizsla should suggest compatible in-scope signals:Both candidate signals and target ports use the same parameterized packed width:
Actual
No variable candidates are shown inside
.data_i()or.data_o().The
.clk()control case can still produce a suggestion forclk, so completion itself is active. The issue appears specific to signals whose type width depends on a parameter or localparam.