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: