mirror of
https://github.com/antonblanchard/microwatt.git
synced 2026-02-02 06:41:07 +00:00
Merge pull request #206 from Jbalkind/icachecleanup
Icache constants cleanup
This commit is contained in:
19
icache.vhdl
19
icache.vhdl
@@ -32,6 +32,12 @@ entity icache is
|
||||
SIM : boolean := false;
|
||||
-- Line size in bytes
|
||||
LINE_SIZE : positive := 64;
|
||||
-- BRAM organisation: We never access more than wishbone_data_bits at
|
||||
-- a time so to save resources we make the array only that wide, and
|
||||
-- use consecutive indices for to make a cache "line"
|
||||
--
|
||||
-- ROW_SIZE is the width in bytes of the BRAM (based on WB, so 64-bits)
|
||||
ROW_SIZE : positive := wishbone_data_bits / 8;
|
||||
-- Number of lines in a set
|
||||
NUM_LINES : positive := 32;
|
||||
-- Number of ways
|
||||
@@ -65,19 +71,14 @@ entity icache is
|
||||
end entity icache;
|
||||
|
||||
architecture rtl of icache is
|
||||
-- BRAM organisation: We never access more than wishbone_data_bits at
|
||||
-- a time so to save resources we make the array only that wide, and
|
||||
-- use consecutive indices for to make a cache "line"
|
||||
--
|
||||
-- ROW_SIZE is the width in bytes of the BRAM (based on WB, so 64-bits)
|
||||
constant ROW_SIZE : natural := wishbone_data_bits / 8;
|
||||
constant ROW_SIZE_BITS : natural := ROW_SIZE*8;
|
||||
-- ROW_PER_LINE is the number of row (wishbone transactions) in a line
|
||||
constant ROW_PER_LINE : natural := LINE_SIZE / ROW_SIZE;
|
||||
-- BRAM_ROWS is the number of rows in BRAM needed to represent the full
|
||||
-- icache
|
||||
constant BRAM_ROWS : natural := NUM_LINES * ROW_PER_LINE;
|
||||
-- INSN_PER_ROW is the number of 32bit instructions per BRAM row
|
||||
constant INSN_PER_ROW : natural := wishbone_data_bits / 32;
|
||||
constant INSN_PER_ROW : natural := ROW_SIZE_BITS / 32;
|
||||
-- Bit fields counts in the address
|
||||
|
||||
-- INSN_BITS is the number of bits to select an instruction in a row
|
||||
@@ -118,7 +119,7 @@ architecture rtl of icache is
|
||||
subtype row_in_line_t is unsigned(ROW_LINEBITS-1 downto 0);
|
||||
|
||||
-- The cache data BRAM organized as described above for each way
|
||||
subtype cache_row_t is std_ulogic_vector(wishbone_data_bits-1 downto 0);
|
||||
subtype cache_row_t is std_ulogic_vector(ROW_SIZE_BITS-1 downto 0);
|
||||
|
||||
-- The cache tags LUTRAM has a row per set. Vivado is a pain and will
|
||||
-- not handle a clean (commented) definition of the cache tags as a 3d
|
||||
@@ -363,7 +364,7 @@ begin
|
||||
way: entity work.cache_ram
|
||||
generic map (
|
||||
ROW_BITS => ROW_BITS,
|
||||
WIDTH => wishbone_data_bits
|
||||
WIDTH => ROW_SIZE_BITS
|
||||
)
|
||||
port map (
|
||||
clk => clk,
|
||||
|
||||
Reference in New Issue
Block a user