instr_mem.sv 603 B

123456789101112131415161718192021222324252627
  1. module instr_mem(addr, instr, imm);
  2. parameter IMEM_FILE = "";
  3. parameter WIDTH=8, LENGTH=256;
  4. localparam ADDR_WIDTH = $clog2(LENGTH);
  5. input [ADDR_WIDTH-1:0] addr;
  6. output [WIDTH-1:0] imm;
  7. output [WIDTH-1:0] instr;
  8. logic [WIDTH-1:0] rom [LENGTH-1:0];
  9. initial $readmemh(IMEM_FILE, rom);
  10. initial begin
  11. $display("Instruction ROM dump");
  12. for (int i=0; i < rom_size; i+=16) begin
  13. $write("%h:", i);
  14. for(int j=0; j<16 && j+i < rom_size; j++)
  15. $write(" %h", rom[i+j]);
  16. $display(" :%h", i);
  17. end
  18. end
  19. always_comb begin
  20. instr = rom[addr];
  21. imm = rom[addr + 1];
  22. end
  23. endmodule