A QSPI XiP Flash COntroller with a parameterized Direct-Mapped Cache.
The IP comes with an AHBL Wrapper
EF_QSPI_XIP_CTRL_AHBL INST (
.HCLK(CLK),
.HRESETn(RESETn),
.HADDR(HADDR),
.HWRITE(HWRITE),
.HSEL(HSEL),
.HTRANS(HTRANS),
.HWDATA(HWDATA),
.HRDATA(HRDATA),
.HREADY(HREADY),
.HREADYOUT(HREADYOUT),
.sck(sck),
.ce_n(ce_n),
.din(din),
.dout(dout),
.douten(douten)
);
The following table is the result for implementing the EF_QSPI_XIP_CTRL IP with different wrappers using Sky130 PDK and OpenLane2 flow.
Module | Number of cells | Max. freq |
---|---|---|
EF_QSPI_XIP_CTRL | 1973 | 250 |
EF_QSPI_XIP_CTRL_AHBL | 1973 | 250 |
Parameter | Description | Default Value |
---|---|---|
NUM_LINES | The cache number of lines. | 16 |
LINE_SIZE | The cache line size in bytes. | 32 |
RESET_CYCLES | The number of cycles needed for the s/w reset command; reset time = (RESET_CYCLES + 1) * 2 /(HCLK frequency). | 999 |
Port | Direction | Width | Description |
---|---|---|---|
sck | output | 1 | SPI serial clock |
ce_n | output | 1 | SPI chip select (Active Low). |
dout | output | 4 | Flash controller SPI data out. |
din | input | 4 | Flash controller SPI data in. |
douten | output | 4 | Flash controller data out enable (Active Low) |
You can install the IP either by cloning this repository or by using IPM.
1. Using IPM:
- [Optional] If you do not have IPM installed, follow the installation guide here
- After installing IPM, execute the following command
ipm install EF_QSPI_XIP_CTRL
.
Note: This method is recommended as it automatically installs EF_IP_UTIL as a dependency.
- Clone EF_IP_UTIL repository, which includes the required modules from the common modules library, ef_util_lib.v.
git clone https://github.com/efabless/EF_IP_UTIL.git
- Clone the IP repository
git clone github.com/efabless/EF_QSPI_XIP_CTRL