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

将SystemVerilog接口作为模块输入端口的实现问题

问题:用SystemVerilog接口简化指令信号提取

我有多个模块,都需要接收如下输入信号(模块还有其他输入):

input[15:0] instruction

在这些模块里,我都得重复复制粘贴这段代码来拆分指令的各个字段:

wire aluBit = instruction[15];
wire jumpBit = instruction[14];
wire[2:0] mainOpcode = instruction[13:11];
wire constantBit = instruction[10];
wire standaloneBit = instruction[9];
wire[7:0] embeddedConstant = instruction[9:3];
wire[2:0] instrParam1 = instruction[8:6];
wire[2:0] instrParam2 = instruction[5:3];
wire[2:0] instrDestination = instruction[2:0];

我想用SystemVerilog接口来简化这个流程,避免重复复制粘贴操作,但不清楚具体怎么实现。注:我正在使用sv2v这款SystemVerilog转Verilog转换器。

我尝试编写了如下接口代码:

interface Instruction;
    logic[15:0] instruction,
    logic aluBit, jumpBit, isConstantInstruction, standaloneBit,
    logic[2:0] mainOpcode, instrParam1, instrParam2, instrDestination,
    logic[7:0] embeddedConstant

    always_comb aluBit = instruction[15];
    always_comb jumpBit = instruction[14];
    always_comb mainOpcode = instruction[13:11];
    always_comb isConstantInstruction = instruction[10];
    always_comb standaloneBit = instruction[9];
    always_comb embeddedConstant = instruction[9:3];
    always_comb instrParam1 = instruction[8:6];
    always_comb instrParam2 = instruction[5:3];
    always_comb instrDestination = instruction[2:0];
endinterface

随后我定义ControlUnit模块,将Instruction作为输入端口:

module ControlUnit(Instruction instruction);
    wire example = instruction.jumpBit;
    ...
endmodule

但这段代码无法通过编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:07:14