【问题标题】:Quartus - synthesizing interfaces resulting in dangling netsQuartus - 合成接口导致悬空网络
【发布时间】:2021-05-21 21:44:30
【问题描述】:

我在 Quartus 20.1 中有如下 modports 的基本接口:

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

当我合成模块之间连接的这些接口时,我收到以下警告:

Warning (12158): Entity "if_memory" contains only dangling pins

我使用以下基本任务连接这些接口

if_memory if_memory();
assign some_strobe = if_memory.strobe;
assign some_wren = if_memory.wren;
assign some_address = if_memory.address;

使用 some_block 接口:

some_block some_block (
...
.if_memory(if_memory.client),
...
);

使用 some_block 作为

module some_block (

..
.
// memory interface
if_memory if_memory,
...
);

我也尝试过 if_memory.client 作为端口声明,并传入 if_memory。

这里发生了什么?唯一没有这个悬空问题的接口是时钟接口。

请注意,我上面的内容与接口的英特尔示例相匹配 - 是否缺少某些设置?

当我将接口更改为端口时 - 设计在芯片上按预期工作。

【问题讨论】:

    标签: quartus


    【解决方案1】:

    这是精心制作的文字结果。当行

    if_memory if_memory();

    已详细说明,它没有考虑到上下文逻辑网络在该层次结构或其他层次上连接到什么。

    如果声明包含端口,例如:

    if_memory if_memory(.clk(clk));

    这个警告会消失,因为会有一个默认的网络连接。显然,quartus 汇编器会在稍后的运行时构建 modport。

    虽然这是“quartus 的工作原理”,但这不是一个有用的警告,并且在此上下文中实际上不包含有用的信息。警告之前是细化步骤。在系统 verilog 中,通常会有只连接网络的接口,在这种情况下,即使所有网络都连接在较低级别的模块中,即使 modport 连接到所有网络,也无法不收到此警告。

    【讨论】:

      猜你喜欢
      • 2011-03-09
      • 2022-01-01
      • 1970-01-01
      • 2016-11-26
      • 2014-08-02
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多