Forum Discussion
pnutboy
New Contributor
5 years agoIt may also be prudent to note that the 'case when' syntax using wildcards is also broken:
--/-----------------------------\ --| OPCODE INSTRUCTION DECODING | --\-----------------------------/ case? fetched_instruction is when "-----------------000-----00000--" => next_decoded_opcode <= LB; when "-----------------001-----00000--" => next_decoded_opcode <= LH; when "-----------------010-----00000--" => next_decoded_opcode <= LW; when "-----------------100-----00000--" => next_decoded_opcode <= LBU; when "-----------------101-----00000--" => next_decoded_opcode <= LHU; when "-----------------000-----01000--" => next_decoded_opcode <= SB; when "-----------------001-----01000--" => next_decoded_opcode <= SH; when "-----------------010-----01000--" => next_decoded_opcode <= SW; when "-----------------000-----11000--" => next_decoded_opcode <= BEQ; when "-----------------001-----11000--" => next_decoded_opcode <= BNE; when "-----------------100-----11000--" => next_decoded_opcode <= BLT; when "-----------------101-----11000--" => next_decoded_opcode <= BGE; when "-----------------110-----11000--" => next_decoded_opcode <= BLTU; when "-----------------111-----11000--" => next_decoded_opcode <= BGEU; when "-------------------------11001--" => next_decoded_opcode <= JALR; when "-------------------------11011--" => next_decoded_opcode <= JAL; when "-----------------000-----00100--" => next_decoded_opcode <= Addi; when "-----------------001-----00100--" => next_decoded_opcode <= SLLI; when "-----------------010-----00100--" => next_decoded_opcode <= SLTI; when "-----------------011-----00100--" => next_decoded_opcode <= SLTIU; when "-----------------100-----00100--" => next_decoded_opcode <= XORI; when "-----------------110-----00100--" => next_decoded_opcode <= ORI; when "-----------------111-----00100--" => next_decoded_opcode <= ANDI; when "-0---------------101-----00100--" => next_decoded_opcode <= SRLI; when "-1---------------101-----00100--" => next_decoded_opcode <= SRAI; when "-0---------------000-----01100--" => next_decoded_opcode <= ADD; when "-1---------------000-----01100--" => next_decoded_opcode <= SUB; when "-----------------001-----01100--" => next_decoded_opcode <= inst_SLL; when "-----------------010-----01100--" => next_decoded_opcode <= SLT; when "-----------------011-----01100--" => next_decoded_opcode <= SLTU; when "-----------------100-----01100--" => next_decoded_opcode <= inst_XOR; when "-0---------------101-----01100--" => next_decoded_opcode <= inst_SRL; when "-1---------------101-----01100--" => next_decoded_opcode <= inst_SRA; when "-----------------110-----01100--" => next_decoded_opcode <= inst_OR; when "-----------------111-----01100--" => next_decoded_opcode <= inst_AND; when "-------------------------00101--" => next_decoded_opcode <= AUIPC; when "-------------------------01101--" => next_decoded_opcode <= LUI; when "-----------------010-----11100--" => next_decoded_opcode <= CSRRS; -- NEEDS IMPLEMENTATION-- when "-----------------001-----11100--" => next_decoded_opcode <= CSRRW; -- NEEDS IMPLEMENTATION-- when "-----------------011-----11100--" => next_decoded_opcode <= CSRRC; -- NEEDS IMPLEMENTATION-- when "-----------------110-----11100--" => next_decoded_opcode <= CSRRSI; -- NEEDS IMPLEMENTATION-- when "-----------------101-----11100--" => next_decoded_opcode <= CSRRWI; -- NEEDS IMPLEMENTATION-- when "-----------------111-----11100--" => next_decoded_opcode <= CSRRCI; -- NEEDS IMPLEMENTATION-- when others => next_decoded_opcode <= INVALID;