bitstreamer
Occasional Contributor
5 years agoQuartus 20.1.0 Synthesis of System Verilog Interfaces
I have basic interfaces with modports as below:
interface if_memory (
);
logic valid;
logic strobe;
logic wren;
logic [31:0] address;
modport client (
input valid,
output strobe, wren, address
);
modport host (
output valid,
input strobe, wren, address
);
endinterface
when I synthesize these interfaces connected between modules, I get the following warning:
Warning (12158): Entity "if_memory" contains only dangling pins
I connect these interfaces using the following basic assignments
if_memory if_memory();
assign some_strobe = if_memory.strobe;
assign some_wren = if_memory.wren;
assign some_address = if_memory.address;
With the some_block using the interface:
some_block some_block (
...
.if_memory(if_memory.client),
...
);
With some_block as
module some_block (
...
// memory interface
if_memory if_memory,
...
);
I've also tried if_memory.client as the port declaration, and passing in if_memory.
What is going on here? The only interfaces that do not have this dangling issue are clocked interfaces.
Also, where are the system verilog capabilities for 20.1.0 that were last present in documents for 17.0?
Note that what I have above matches Intel examples for interfaces - is there some setting that I am missing?
When i change the interfaces to ports - the designs work on the chip as expected.