You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将组合逻辑代码连接至模块的interface modport?

SystemVerilog接口临时连接组合逻辑的解决方案

要在顶层模块中将dst_rd_blk的sec_rd接口临时连接到组合逻辑,核心是先实例化对应接口,再通过接口桥接组合逻辑与模块端口,具体实现如下:

关键逻辑说明

SystemVerilog的接口端口无法直接绑定到零散信号或组合逻辑块,必须先实例化接口实体,再通过接口的modport匹配信号方向,完成组合逻辑与模块的连接。

完整修改后的顶层模块代码

module top (
  input logic clk
);

  // 1. 实例化sec_rd接口
  sec_rd_if sec_rd_inst (
    .clk (clk)
  );

  // 2. 组合逻辑块:驱动接口的输入信号(对应dst模块的输入)
  always_comb begin
    // 临时逻辑示例:可按需修改,需避免组合latch(保证所有分支都有赋值)
    sec_rd_inst.sec_rd = 1'b0;
    sec_rd_inst.sec_rd_addr = 8'h00;

    // 可选:添加条件触发逻辑
    // if (some_internal_condition) begin
    //   sec_rd_inst.sec_rd = 1'b1;
    //   sec_rd_inst.sec_rd_addr = 8'h20;
    // end

    // 若需读取模块输出的sec_rd_rdy,直接调用即可
    // logic rdy_signal;
    // rdy_signal = sec_rd_inst.sec_rd_rdy;
  end

  // 3. 连接模块的接口端口到实例化的接口(指定dst modport匹配方向)
  dst_rd_blk rd_blk (
    .clk (clk),
    .sec_rd (sec_rd_inst.dst)
  );

endmodule

注意事项

  • modport匹配:dst_rd_blk使用dst modport,连接时必须指定sec_rd_inst.dst,确保信号输入输出方向与模块定义一致。
  • 组合逻辑规范:驱动sec_rd和sec_rd_addr时,要保证所有分支都有赋值,避免生成不必要的组合latch,引发仿真或综合错误。
  • 信号读取:模块输出到接口的sec_rd_rdy可直接在组合逻辑中读取,无需额外配置。

内容的提问来源于stack exchange,提问作者DarinT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 02:33:18