hw/ip/flash_ctrl/rtl/flash_ctrl_pkg.sv Cov: 100%

   1: // Copyright lowRISC contributors.
   2: // Licensed under the Apache License, Version 2.0, see LICENSE for details.
   3: // SPDX-License-Identifier: Apache-2.0
   4: //
   5: // Faux Flash Controller module.
   6: //
   7: 
   8: package flash_ctrl_pkg;
   9: 
  10:   localparam int FlashTotalPages = top_pkg::FLASH_BANKS * top_pkg::FLASH_PAGES_PER_BANK;
  11:   localparam int AllPagesW = $clog2(FlashTotalPages);
  12: 
  13:   // Flash Operations Supported
  14:   typedef enum logic [1:0] {
  15:     FlashRead      = 2'h0,
  16:     FlashProg      = 2'h1,
  17:     FlashErase     = 2'h2
  18:   } flash_op_e;
  19: 
  20:   // Flash Erase Operations Supported
  21:   typedef enum logic  {
  22:     PageErase     = 0,
  23:     BankErase     = 1
  24:   } flash_erase_op_e;
  25: 
  26:   // Flash tlul to fifo direction
  27:   typedef enum logic  {
  28:     WriteDir     = 1'b0,
  29:     ReadDir      = 1'b1
  30:   } flash_flfo_dir_e;
  31: 
  32:   // Flash controller to memory
  33:   typedef struct packed {
  34:     logic                         req;
  35:     logic                         rd;
  36:     logic                         prog;
  37:     logic                         pg_erase;
  38:     logic                         bk_erase;
  39:     logic [top_pkg::FLASH_AW-1:0] addr;
  40:     logic [top_pkg::FLASH_DW-1:0] prog_data;
  41:   } flash_c2m_t;
  42: 
  43:   // memory to flash controller
  44:   typedef struct packed {
  45:     logic                         rd_done;
  46:     logic                         prog_done;
  47:     logic                         erase_done;
  48:     logic [top_pkg::FLASH_DW-1:0] rd_data;
  49:     logic                         init_busy;
  50:   } flash_m2c_t;
  51: 
  52: endpackage : flash_ctrl_pkg
  53: