casez是否认为在综合过程中将z指定为高阻抗?

时间:2016-10-05 10:11:03

标签: verilog system-verilog synthesis

我正在设计R3000 MIPS处理器,并且对于指令解码器,想要给出一个casez,以便对于涉及立即指令的情况,例如ADDI,ANDI,我将比特6:0提供为z。我只是想知道{opcode,func}在案例是z的情况下它是否被合成为高阻抗开放连接?

module Instr_decoder (
    input  logic [31:0]  instr,
    output logic         regDest, 
    output logic         jump,
    output logic         branch,
    output logic         memtoReg,
    output logic         memRead,
    output logic         memWrite,
    output logic         ALUSrc,
    output logic         signExtendInstruction,
    output logic         immediateInstruction,
    output logic         regWrite);

    logic immediate_i;
    logic [5:0] opcode;
    logic [4:0] rs;
    logic [4:0] rt;
    logic [4:0] rd;
    logic [15:0] immediate_data;
    logic [4:0] shamt;
    logic [5:0] func;
    logic [25:0] target;

    assign opcode = instr[31:26];
    assign shamt = instr[10:6];
    assign func = instr[5:0];
    assign target = instr[25:0];
    assign immediate_i = (opcode == (ADDI || ANDI || ORI || SLTI || XORI));

    always_comb
    begin
        casez({opcode, func}

           {6'h00, 6'h20} :  ADD = 1;
           {6'h08,  6'dz} :  ANDI = 1;

1 个答案:

答案 0 :(得分:1)

你可以在模拟器上编译和执行的任何东西都是可以合成的。它归结为您使用的工具是否具有识别代码并将其映射到硬件实现的算法。

BTW,人们通常在Verilog数字文字中使用?字符而不是z来表示{{1}中的不关心值声明。