将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
相关产品推荐
相关产品推荐

