URL
https://opencores.org/ocsvn/storm_core/storm_core/trunk
Subversion Repositories storm_core
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 20 to Rev 21
- ↔ Reverse comparison
Rev 20 → Rev 21
/storm_core/rtl/CACHE.vhd
9,7 → 9,7
-- # A cache line contains a complete word (32-bit). # |
-- # The cache is fully associative. # |
-- # *************************************************** # |
-- # Last modified: 04.01.2012 # |
-- # Last modified: 15.02.2012 # |
-- ####################################################### |
|
library IEEE; |
24,11 → 24,10
-- ## Cache Configuration ## |
-- ################################################################################################################ |
generic ( |
CACHE_PAGES : natural := 4; |
LOG2_CACHE_PAGES : natural := 2; |
PAGE_SIZE : natural := 4; -- #words |
LOG2_PAGE_SIZE : natural := 2; |
READ_ONLY : boolean := FALSE |
CACHE_PAGES : natural := 8; |
LOG2_CACHE_PAGES : natural := 3; |
PAGE_SIZE : natural := 2; -- #words |
LOG2_PAGE_SIZE : natural := 1 |
); |
port ( |
-- ################################################################################################################ |
36,7 → 35,6
-- ################################################################################################################ |
|
CORE_CLK_I : in STD_LOGIC; -- core clock, all triggering on rising edge |
BUS_CLK_I : in STD_LOGIC; -- bus clock, all triggering on rising edge |
RST_I : in STD_LOGIC; -- global reset, high active, sync |
HALT_I : in STD_LOGIC; -- global storm halt signal |
|
59,17 → 57,17
B_ADR_I : in STD_LOGIC_VECTOR(31 downto 0); -- address input |
B_DATA_I : in STD_LOGIC_VECTOR(31 downto 0); -- data input |
B_DATA_O : out STD_LOGIC_VECTOR(31 downto 0); -- data output |
B_DQ_I : in STD_LOGIC_VECTOR(01 downto 0); -- data quantity |
B_WE_I : in STD_LOGIC; -- write enable |
B_PG_SEL_I : in STD_LOGIC_VECTOR(LOG2_CACHE_PAGES-1 downto 0); |
B_DRT_SEL_O : out STD_LOGIC; -- dirty bit of selected page |
B_BSA_O : out STD_LOGIC_VECTOR(31 downto 0); -- base adr of selected page |
B_DRT_ACK_I : in STD_LOGIC; -- dirty acknowledged |
B_MSS_ACK_I : in STD_LOGIC; -- miss acknowledged |
B_IO_ACC_I : in STD_LOGIC; -- IO access |
|
-- ################################################################################################################ |
-- ## Cache Control Port ## |
-- ################################################################################################################ |
|
C_UPDATE_I : in STD_LOGIC; -- bus unit takes control |
C_FRESH_I : in STD_LOGIC; -- refresh accessed page |
C_FLUSH_I : in STD_LOGIC; -- flush cache |
C_CLEAR_I : in STD_LOGIC; -- clear cache |
C_MISS_O : out STD_LOGIC; -- cache miss access |
81,71 → 79,71
|
architecture Behavioral of CACHE is |
|
-- Are we simulating? -- |
constant IS_SIM : boolean := FALSE; |
-- Cache Arbiter -- |
type ARB_STATE_TYPE is (STORM_ACCESS, MISS_STATE, IO_REQUEST, IO_PIPE_RESYNC, IO_PIPE_RESYNC_END, DIRTY_STATE, PIPE_RESYNC); |
signal ARB_STATE, ARB_STATE_NXT : ARB_STATE_TYPE; |
signal ADR_BUF, ADR_BUF_NXT : STD_LOGIC_VECTOR(31 downto 0); |
signal DAT_BUF, DAT_BUF_NXT : STD_LOGIC_VECTOR(31 downto 0); |
signal HST_BUF, HST_BUF_NXT : STD_LOGIC_VECTOR(LOG2_CACHE_PAGES-1 downto 0); |
signal BIT_BUF, BIT_BUF_NXT : STD_LOGIC; |
|
-- Cache Memory -- |
type cache_base_type is array(0 to (CACHE_PAGES*PAGE_SIZE)-1) of STD_LOGIC_VECTOR(07 downto 0); |
type sim_mem_type is array(0 to (CACHE_PAGES*PAGE_SIZE)-1) of STD_LOGIC_VECTOR(31 downto 0); |
signal CACHE_MEM_LL : cache_base_type := (others => (others => '0')); |
signal CACHE_MEM_LH : cache_base_type := (others => (others => '0')); |
signal CACHE_MEM_HL : cache_base_type := (others => (others => '0')); |
signal CACHE_MEM_HH : cache_base_type := (others => (others => '0')); |
signal CACHE_WE : STD_LOGIC; |
signal CACHE_ADR : STD_LOGIC_VECTOR(LOG2_CACHE_PAGES+(LOG2_PAGE_SIZE-1) downto 0); |
signal CACHE_R_DATA : STD_LOGIC_VECTOR(31 downto 0); |
signal CACHE_W_DATA : STD_LOGIC_VECTOR(31 downto 0); |
signal ADR_INT : STD_LOGIC_VECTOR(31 downto 0); |
signal DQ_INT : STD_LOGIC_VECTOR(01 downto 0); |
type cache_mem_type is array(0 to (CACHE_PAGES*PAGE_SIZE)-1) of STD_LOGIC_VECTOR(07 downto 0); |
signal CACHE_MEM_LL : cache_mem_type := (others => (others => '0')); |
signal CACHE_MEM_LH : cache_mem_type := (others => (others => '0')); |
signal CACHE_MEM_HL : cache_mem_type := (others => (others => '0')); |
signal CACHE_MEM_HH : cache_mem_type := (others => (others => '0')); |
type sim_mem_type is array(0 to (CACHE_PAGES*PAGE_SIZE)-1) of STD_LOGIC_VECTOR(31 downto 0); |
signal SIM_MEM : sim_mem_type; |
signal CACHE_ADR : STD_LOGIC_VECTOR(LOG2_CACHE_PAGES+(LOG2_PAGE_SIZE-1) downto 0); |
|
-- Page Base Memory -- |
type page_base_type is array(0 to CACHE_PAGES-1) of STD_LOGIC_VECTOR(31 downto LOG2_PAGE_SIZE+2); |
type page_base_type is array(0 to CACHE_PAGES-1) of STD_LOGIC_VECTOR(31 downto LOG2_PAGE_SIZE+2); |
signal PAGE_BASE_ADR : page_base_type; |
signal SET_NEW_BAS : STD_LOGIC; |
|
-- Status Flags -- |
signal VALID_FLAG : STD_LOGIC_VECTOR(CACHE_PAGES-1 downto 0); |
signal CLR_CUR_VAL : STD_LOGIC; |
signal SET_CUR_VAL : STD_LOGIC; |
signal CLR_ALL_VAL : STD_LOGIC; |
signal DIRTY_FLAG : STD_LOGIC_VECTOR(CACHE_PAGES-1 downto 0); |
signal CACHE_DIRTY : STD_LOGIC; |
signal CLR_CUR_DRT : STD_LOGIC; |
signal SET_CUR_DRT : STD_LOGIC; |
signal SET_ALL_DRT : STD_LOGIC; |
|
-- Cache Access History -- |
type cache_hist_mem is array(CACHE_PAGES-1 downto 0) of STD_LOGIC_VECTOR(LOG2_CACHE_PAGES-1 downto 0); |
signal HIST_MEM : cache_hist_mem; |
signal NEW_ENTRY_ADR : STD_LOGIC_VECTOR(LOG2_CACHE_PAGES-1 downto 0); |
signal ACCESS_SREG : STD_LOGIC_VECTOR(03 downto 0); |
signal UPDATE_HISTORY : STD_LOGIC; |
signal UPDATE_HIST_FF : STD_LOGIC; |
|
-- Page Selector -- |
signal PAGE_SELECT : STD_LOGIC_VECTOR(LOG2_CACHE_PAGES-1 downto 0); |
signal PAGE_SELECT_FF : STD_LOGIC_VECTOR(LOG2_CACHE_PAGES-1 downto 0); |
signal PAGE_TRANSLATE : STD_LOGIC_VECTOR(LOG2_CACHE_PAGES-1 downto 0); |
signal NEW_ENTRY_PAGE : STD_LOGIC_VECTOR(LOG2_CACHE_PAGES-1 downto 0); |
signal B_BASE_O_SEL : STD_LOGIC_VECTOR(LOG2_CACHE_PAGES-1 downto 0); |
|
-- Read-Back Buffer -- |
signal RB_BUFFER : STD_LOGIC_VECTOR(31 downto 0); |
signal RB_DATA : STD_LOGIC_VECTOR(31 downto 0); |
signal RB_BUFF_EN : STD_LOGIC; |
|
-- Internal Access Signals -- |
signal DATA_INT : STD_LOGIC_VECTOR(31 downto 0); |
signal ADR_INT : STD_LOGIC_VECTOR(31 downto 0); |
signal DQ_INT : STD_LOGIC_VECTOR(01 downto 0); |
signal WE_INT : STD_LOGIC; |
signal CS_INT : STD_LOGIC; |
|
-- Internal Control -- |
signal CACHE_HIT : STD_LOGIC; |
signal CACHE_MISS : STD_LOGIC; |
signal BYTE_SEL : STD_LOGIC_VECTOR(03 downto 0); |
signal P_DATA_O_SEL : STD_LOGIC; |
signal P_DATA_O_BUF : STD_LOGIC_VECTOR(31 downto 0); |
signal P_DATA_O_INT : STD_LOGIC_VECTOR(31 downto 0); |
|
-- Cache Coherency Control -- |
signal DRT_CNT : STD_LOGIC_VECTOR(02 downto 0); |
|
begin |
|
-- Access Control -------------------------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
ADR_INT <= P_ADR_I when (C_UPDATE_I = '0') else B_ADR_I; -- access address |
DATA_INT <= P_DATA_I when (C_UPDATE_I = '0') else B_DATA_I; -- input data |
DQ_INT <= P_DQ_I when (C_UPDATE_I = '0') else B_DQ_I; -- data quantity |
WE_INT <= P_WE_I when (C_UPDATE_I = '0') else B_WE_I; -- write enable |
CS_INT <= P_CS_I when (C_UPDATE_I = '0') else B_CS_I; -- chip select |
|
|
|
-- Page Base Address System ---------------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
PAGE_ADR_SYS: process(CORE_CLK_I, PAGE_BASE_ADR, B_PG_SEL_I) |
PAGE_ADR_SYS: process(CORE_CLK_I, PAGE_BASE_ADR, B_BASE_O_SEL) |
begin |
-- Update Base Adr Register -- |
if rising_edge(CORE_CLK_I) then |
153,24 → 151,69
for i in 0 to CACHE_PAGES-1 loop |
PAGE_BASE_ADR(i) <= (others => '0'); |
end loop; |
elsif (CS_INT = '1') and (WE_INT = '1') and (C_UPDATE_I = '1') then |
PAGE_BASE_ADR(to_integer(unsigned(NEW_ENTRY_ADR))) <= ADR_INT(31 downto LOG2_PAGE_SIZE+2); |
elsif (SET_NEW_BAS = '1') then |
PAGE_BASE_ADR(to_integer(unsigned(NEW_ENTRY_PAGE))) <= ADR_INT(31 downto LOG2_PAGE_SIZE+2); |
end if; |
end if; |
|
-- Bus unit Base Adr request -- |
--if rising_edge(CLK_I) then |
--if (RST_I = '0') then |
--B_BSA_O <= (others => '0'); |
--else |
B_BSA_O <= (others => '0'); |
B_BSA_O(31 downto LOG2_PAGE_SIZE+2) <= PAGE_BASE_ADR(to_integer(unsigned(B_PG_SEL_I))); |
--end if; |
--end if; |
-- Base ADR output for bus unit -- |
B_BSA_O <= (others => '0'); |
B_BSA_O(31 downto LOG2_PAGE_SIZE+2) <= PAGE_BASE_ADR(to_integer(unsigned(B_BASE_O_SEL))); |
end process PAGE_ADR_SYS; |
|
|
|
-- Cache Access History -------------------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
CACHE_ACCESS_HIST_BUF: process(CORE_CLK_I) |
begin |
if rising_edge(CORE_CLK_I) then |
if (RST_I = '1') then |
PAGE_SELECT_FF <= (others => '0'); |
UPDATE_HIST_FF <= '0'; |
else |
PAGE_SELECT_FF <= PAGE_SELECT_FF; |
UPDATE_HIST_FF <= UPDATE_HISTORY; |
end if; |
end if; |
end process CACHE_ACCESS_HIST_BUF; |
|
|
CACHE_ACCESS_HISTORY: process(HIST_MEM, PAGE_SELECT_FF, CORE_CLK_I) |
variable hist_mem_ce_v : std_logic_vector(CACHE_PAGES-1 downto 0); |
begin |
--- CE signal hierarchy comparator --- |
hist_mem_ce_v := (others => '1'); |
for i in 0 to CACHE_PAGES-1 loop |
if (HIST_MEM(CACHE_PAGES-1-i) = PAGE_SELECT_FF) then |
exit; |
else |
hist_mem_ce_v(CACHE_PAGES-1-i) := '0'; -- compare hit |
end if; |
end loop; |
|
--- Sync update --- |
if rising_edge(CORE_CLK_I) then |
if (RST_I = '1') then |
for i in 0 to CACHE_PAGES-1 loop |
HIST_MEM(i) <= std_logic_vector(to_unsigned(i, LOG2_CACHE_PAGES)); |
end loop; |
elsif (UPDATE_HIST_FF = '1') then |
for i in 0 to CACHE_PAGES-1 loop |
if (hist_mem_ce_v(CACHE_PAGES-1-i) = '1') then |
if (i = CACHE_PAGES-1) then |
HIST_MEM(CACHE_PAGES-1-i) <= PAGE_SELECT_FF; |
else |
HIST_MEM(CACHE_PAGES-1-i) <= HIST_MEM(CACHE_PAGES-1-i-1); |
end if; |
end if; |
end loop; |
end if; |
end if; |
end process CACHE_ACCESS_HISTORY; |
|
|
|
-- Page Validation System ------------------------------------------------------------------------------ |
-- -------------------------------------------------------------------------------------------------------- |
PAGE_VALID_SYS: process(CORE_CLK_I) |
177,12 → 220,14
begin |
-- Update Valid Status Flag -- |
if rising_edge(CORE_CLK_I) then |
if (RST_I = '1') or (C_CLEAR_I = '1') then |
if (RST_I = '1') or (CLR_ALL_VAL = '1') then |
for i in 0 to CACHE_PAGES-1 loop |
VALID_FLAG(i) <= '0'; |
end loop; |
elsif (CS_INT = '1') and (WE_INT = '1') and (C_UPDATE_I = '1') then |
VALID_FLAG(to_integer(unsigned(NEW_ENTRY_ADR))) <= '1'; |
elsif (CLR_CUR_VAL = '1') then |
VALID_FLAG(to_integer(unsigned(PAGE_SELECT))) <= '0'; |
elsif (SET_CUR_VAL = '1') then |
VALID_FLAG(to_integer(unsigned(PAGE_SELECT))) <= '1'; |
end if; |
end if; |
end process PAGE_VALID_SYS; |
189,52 → 234,229
|
|
|
-- Page Modification Flag ------------------------------------------------------------------------------ |
-- -------------------------------------------------------------------------------------------------------- |
DIRTY_REG: process(CORE_CLK_I, DIRTY_FLAG, VALID_FLAG) |
variable temp_v : std_logic; |
begin |
-- Sync update -- |
if rising_edge(CORE_CLK_I) then |
if (RST_I = '1') then |
for i in 0 to CACHE_PAGES-1 loop |
DIRTY_FLAG(i) <= '0'; |
end loop; |
elsif (SET_ALL_DRT = '1') then |
for i in 0 to CACHE_PAGES-1 loop |
DIRTY_FLAG(i) <= '1'; |
end loop; |
else |
if (CLR_CUR_DRT = '1') then |
DIRTY_FLAG(to_integer(unsigned(PAGE_SELECT))) <= '0'; |
elsif (SET_CUR_DRT = '1') then |
DIRTY_FLAG(to_integer(unsigned(PAGE_SELECT))) <= '1'; |
end if; |
end if; |
end if; |
|
-- Any dirty bits? -- |
temp_v := '0'; |
for i in 0 to CACHE_PAGES-1 loop |
temp_v := temp_v or (DIRTY_FLAG(i) and VALID_FLAG(i)); |
end loop; |
CACHE_DIRTY <= temp_v; |
end process DIRTY_REG; |
|
|
|
-- HIT / MISS Detector --------------------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
CONTENT_DETECTOR: process(ADR_INT, PAGE_BASE_ADR, VALID_FLAG, P_CS_I, C_UPDATE_I, NEW_ENTRY_ADR) |
CONTENT_DETECTOR: process(ADR_INT, PAGE_BASE_ADR, VALID_FLAG, P_CS_I) |
variable miss_v : std_logic; |
begin |
miss_v := '1'; |
for i in 0 to CACHE_PAGES-1 loop |
PAGE_SELECT <= std_logic_vector(to_unsigned(i, LOG2_CACHE_PAGES)); |
if (PAGE_BASE_ADR(i) = ADR_INT(31 downto LOG2_PAGE_SIZE+2)) then |
if (VALID_FLAG(i) = '1') then |
miss_v := '0'; |
exit; |
end if; |
PAGE_TRANSLATE <= std_logic_vector(to_unsigned(i, LOG2_CACHE_PAGES)); |
if (PAGE_BASE_ADR(i) = ADR_INT(31 downto LOG2_PAGE_SIZE+2)) and (VALID_FLAG(i) = '1') then |
miss_v := '0'; |
exit; |
end if; |
end loop; |
|
-- Only STORM access can cause a hit/miss |
CACHE_HIT <= (not miss_v) and P_CS_I; |
C_MISS_O <= miss_v and P_CS_I; |
C_HIT_O <= (not miss_v) and P_CS_I; |
CACHE_HIT <= not miss_v; |
CACHE_MISS <= miss_v; |
C_HIT_O <= (not miss_v) and P_CS_I; -- Output for statistic generator |
end process CONTENT_DETECTOR; |
|
|
|
-- Cache Access History -------------------------------------------------------------------------------- |
-- Cache Arbiter --------------------------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
CACHE_ACCESS_HISTORY: process(CORE_CLK_I) -- 0, 1, 2, 3, ... older ones |
CACHE_ARBITER_SYNC: process(CORE_CLK_I) |
begin |
if rising_edge(CORE_CLK_I) then |
if (RST_I = '1') then |
for i in 0 to CACHE_PAGES-1 loop |
HIST_MEM(i) <= std_logic_vector(to_unsigned((CACHE_PAGES-1)-i, LOG2_CACHE_PAGES)); |
end loop; |
elsif (CACHE_HIT = '1') and (C_UPDATE_I = '0') then -- Cache access |
if (HIST_MEM(0) /= PAGE_SELECT) then |
HIST_MEM <= HIST_MEM(CACHE_PAGES-2 downto 0) & PAGE_SELECT; |
end if; |
ARB_STATE <= STORM_ACCESS; |
ADR_BUF <= (others => '0'); |
DAT_BUF <= (others => '0'); |
HST_BUF <= (others => '0'); |
BIT_BUF <= '0'; |
else |
ARB_STATE <= ARB_STATE_NXT; |
ADR_BUF <= ADR_BUF_NXT; |
DAT_BUF <= DAT_BUF_NXT; |
HST_BUF <= HST_BUF_NXT; |
BIT_BUF <= BIT_BUF_NXT; |
end if; |
end if; |
end process CACHE_ACCESS_HISTORY; |
end process CACHE_ARBITER_SYNC; |
|
-- New Entry address is least used cache page -- |
NEW_ENTRY_ADR <= HIST_MEM(CACHE_PAGES-1); |
|
|
CACHE_ARBITER: process(ARB_STATE, HIST_MEM, PAGE_TRANSLATE, ADR_BUF, DAT_BUF, HST_BUF, BIT_BUF, CACHE_R_DATA, DIRTY_FLAG, |
CACHE_MISS, CACHE_DIRTY, C_FRESH_I, C_CLEAR_I, C_FLUSH_I, CACHE_HIT, C_WTHRU_I, |
P_ADR_I, P_DATA_I, P_CS_I, P_WE_I, P_DQ_I, |
B_ADR_I, B_DATA_I, B_CS_I, B_WE_I, B_IO_ACC_I, B_MSS_ACK_I, B_DRT_ACK_I) |
begin |
--- Arbiter --- |
ARB_STATE_NXT <= ARB_STATE; |
ADR_BUF_NXT <= ADR_BUF; |
DAT_BUF_NXT <= DAT_BUF; |
HST_BUF_NXT <= HST_BUF; |
BIT_BUF_NXT <= BIT_BUF; |
|
--- Cache Control --- |
CACHE_WE <= '0'; |
CACHE_W_DATA <= P_DATA_I; -- (others => '0'); |
CACHE_ADR <= (others => '0'); |
ADR_INT <= P_ADR_I; -- (others => '0'); |
DQ_INT <= DQ_WORD; |
PAGE_SELECT <= PAGE_TRANSLATE; |
|
--- Cache History --- |
UPDATE_HISTORY <= '0'; |
NEW_ENTRY_PAGE <= HST_BUF; -- (others => '0'); |
|
--- Cache Status --- |
CLR_CUR_DRT <= '0'; |
SET_CUR_DRT <= '0'; |
SET_ALL_DRT <= C_FLUSH_I; |
CLR_CUR_VAL <= '0'; |
SET_CUR_VAL <= '0'; |
CLR_ALL_VAL <= C_CLEAR_I; |
SET_NEW_BAS <= '0'; |
|
--- STORM --- |
P_DATA_O_INT <= CACHE_R_DATA; -- (others => '0'); |
|
--- Bus Unit --- |
B_DATA_O <= CACHE_R_DATA; -- (others => '0'); |
C_DIRTY_O <= '0'; |
C_MISS_O <= '0'; |
B_BASE_O_SEL <= HIST_MEM(CACHE_PAGES-1); |
|
--- State machine --- |
case (ARB_STATE) is |
|
when STORM_ACCESS => -- STORM can use the cache |
---------------------------------------------------------------- |
ADR_INT <= P_ADR_I; |
DQ_INT <= P_DQ_I; |
PAGE_SELECT <= PAGE_TRANSLATE; |
CACHE_ADR <= PAGE_TRANSLATE & P_ADR_I((LOG2_PAGE_SIZE-1)+2 downto 2); |
CACHE_W_DATA <= P_DATA_I; |
CACHE_WE <= P_CS_I and CACHE_HIT and P_WE_I and (not B_IO_ACC_I); |
CLR_CUR_VAL <= C_FRESH_I and CACHE_HIT and P_CS_I and (not B_IO_ACC_I); |
SET_CUR_DRT <= P_CS_I and CACHE_HIT and P_WE_I and (not B_IO_ACC_I); |
UPDATE_HISTORY <= P_CS_I and CACHE_HIT and (not B_IO_ACC_I); |
P_DATA_O_INT <= CACHE_R_DATA; |
DAT_BUF_NXT <= P_DATA_I; |
ADR_BUF_NXT <= P_ADR_I; |
HST_BUF_NXT <= HIST_MEM(CACHE_PAGES-1); -- next page for writing |
BIT_BUF_NXT <= P_CS_I and P_WE_I; |
if (C_WTHRU_I = '0') and (DIRTY_FLAG(to_integer(unsigned(HIST_MEM(CACHE_PAGES-1)))) = '1') then |
ARB_STATE_NXT <= DIRTY_STATE; |
elsif (B_IO_ACC_I = '1') and (P_CS_I = '1') then |
ARB_STATE_NXT <= IO_REQUEST; |
elsif ((CACHE_MISS = '1') or (C_FRESH_I = '1')) and (P_CS_I = '1') then |
ARB_STATE_NXT <= MISS_STATE; |
elsif ((CACHE_DIRTY = '1') and (C_WTHRU_I = '1')) then -- write through |
ARB_STATE_NXT <= DIRTY_STATE; |
end if; |
|
when IO_REQUEST => -- IO Access |
---------------------------------------------------------------- |
B_DATA_O <= DAT_BUF; |
if (B_MSS_ACK_I = '1') or (B_DRT_ACK_I = '1') then |
DAT_BUF_NXT <= B_DATA_I; |
if (BIT_BUF = '1') then -- write |
ARB_STATE_NXT <= IO_PIPE_RESYNC_END; |
else -- read |
ARB_STATE_NXT <= IO_PIPE_RESYNC; |
end if; |
end if; |
when IO_PIPE_RESYNC => -- IO Pipeline Re-Sync |
P_DATA_O_INT <= DAT_BUF; |
ARB_STATE_NXT <= IO_PIPE_RESYNC_END; |
when IO_PIPE_RESYNC_END => -- IO Pipeline Re-Sync finished |
P_DATA_O_INT <= DAT_BUF; |
ARB_STATE_NXT <= STORM_ACCESS; |
|
when MISS_STATE => -- Cache miss |
---------------------------------------------------------------- |
C_MISS_O <= '1'; -- we're missing something |
ADR_INT <= B_ADR_I; |
DQ_INT <= DQ_WORD; |
PAGE_SELECT <= HST_BUF; |
CACHE_ADR <= HST_BUF & B_ADR_I((LOG2_PAGE_SIZE-1)+2 downto 2); |
CACHE_W_DATA <= B_DATA_I; |
CACHE_WE <= B_CS_I;-- and B_WE_I; |
SET_CUR_VAL <= B_CS_I;-- and B_WE_I; |
CLR_CUR_DRT <= B_CS_I;-- and B_WE_I; |
SET_CUR_DRT <= BIT_BUF; |
SET_NEW_BAS <= B_CS_I;-- and B_WE_I; |
UPDATE_HISTORY <= B_CS_I;-- and B_WE_I; |
B_DATA_O <= CACHE_R_DATA; |
NEW_ENTRY_PAGE <= HST_BUF; |
if (B_MSS_ACK_I = '1') then |
ARB_STATE_NXT <= PIPE_RESYNC; |
end if; |
|
when DIRTY_STATE => -- Cache dirty |
---------------------------------------------------------------- |
C_DIRTY_O <= '1'; |
if (C_WTHRU_I = '1') then |
B_BASE_O_SEL <= PAGE_SELECT; |
end if; |
ADR_INT <= B_ADR_I; |
DQ_INT <= DQ_WORD; |
PAGE_SELECT <= PAGE_TRANSLATE;--HST_BUF; |
CACHE_ADR <= PAGE_TRANSLATE & B_ADR_I((LOG2_PAGE_SIZE-1)+2 downto 2);--HST_BUF & B_ADR_I((LOG2_PAGE_SIZE-1)+2 downto 2); |
CLR_CUR_DRT <= B_CS_I;-- and B_WE_I; |
--UPDATE_HISTORY <= B_CS_I;-- and B_WE_I; |
B_DATA_O <= CACHE_R_DATA; |
if (B_DRT_ACK_I = '1') then |
ARB_STATE_NXT <= PIPE_RESYNC; |
end if; |
|
when PIPE_RESYNC => -- Re-sync Pipeline |
---------------------------------------------------------------- |
ADR_INT <= ADR_BUF; |
DQ_INT <= DQ_WORD; |
PAGE_SELECT <= PAGE_TRANSLATE; |
CACHE_ADR <= PAGE_TRANSLATE & ADR_BUF((LOG2_PAGE_SIZE-1)+2 downto 2); |
CACHE_W_DATA <= DAT_BUF; |
CACHE_WE <= BIT_BUF; |
P_DATA_O_INT <= CACHE_R_DATA; |
if (CACHE_DIRTY = '1') and (C_WTHRU_I = '1') then -- write through |
ARB_STATE_NXT <= DIRTY_STATE; |
else |
ARB_STATE_NXT <= STORM_ACCESS; |
end if; |
|
end case; |
end process CACHE_ARBITER; |
|
|
|
-- Data Quantity Decoder ---------------------------------------------------------------------------------- |
-- ----------------------------------------------------------------------------------------------------------- |
DQ_DECODER: process(DQ_INT, ADR_INT(1 downto 0)) |
277,158 → 499,68
|
|
|
-- Cache Read/Write Access ----------------------------------------------------------------------------- |
-- Cache Memory Access --------------------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
|
-- Cache Access Address -- |
CACHE_ADR <= (NEW_ENTRY_ADR & ADR_INT((LOG2_PAGE_SIZE-1)+2 downto 2)) when ((C_UPDATE_I = '1') and (B_WE_I = '1')) else (PAGE_SELECT & ADR_INT((LOG2_PAGE_SIZE-1)+2 downto 2)); |
|
-- Sync Cache Read/Write -- |
CACHE_ACCESS: process(CORE_CLK_I, CS_INT, CACHE_HIT, C_UPDATE_I) |
variable cache_mem_cs_int_v : std_logic; |
CACHE_ACCESS: process(CORE_CLK_I) |
begin |
|
-- Cache select -- |
cache_mem_cs_int_v := CS_INT and (CACHE_HIT or C_UPDATE_I); |
|
-- Sync Write-- |
if rising_edge(CORE_CLK_I) then |
if (cache_mem_cs_int_v = '1') then |
if (WE_INT = '1') then -- cache write access |
if (BYTE_SEL(0) = '1') then |
CACHE_MEM_LL(to_integer(unsigned(CACHE_ADR))) <= DATA_INT(07 downto 00); |
end if; |
if (BYTE_SEL(1) = '1') then |
CACHE_MEM_LH(to_integer(unsigned(CACHE_ADR))) <= DATA_INT(15 downto 08); |
end if; |
if (BYTE_SEL(2) = '1') then |
CACHE_MEM_HL(to_integer(unsigned(CACHE_ADR))) <= DATA_INT(23 downto 16); |
end if; |
if (BYTE_SEL(3) = '1') then |
CACHE_MEM_HH(to_integer(unsigned(CACHE_ADR))) <= DATA_INT(31 downto 24); |
end if; |
if (CACHE_WE = '1') then -- cache write access |
if (BYTE_SEL(0) = '1') then |
CACHE_MEM_LL(to_integer(unsigned(CACHE_ADR))) <= CACHE_W_DATA(0*8+7 downto 0*8); |
end if; |
RB_DATA(07 downto 00) <= CACHE_MEM_LL(to_integer(unsigned(CACHE_ADR))); |
RB_DATA(15 downto 08) <= CACHE_MEM_LH(to_integer(unsigned(CACHE_ADR))); |
RB_DATA(23 downto 16) <= CACHE_MEM_HL(to_integer(unsigned(CACHE_ADR))); |
RB_DATA(31 downto 24) <= CACHE_MEM_HH(to_integer(unsigned(CACHE_ADR))); |
if (BYTE_SEL(1) = '1') then |
CACHE_MEM_LH(to_integer(unsigned(CACHE_ADR))) <= CACHE_W_DATA(1*8+7 downto 1*8); |
end if; |
if (BYTE_SEL(2) = '1') then |
CACHE_MEM_HL(to_integer(unsigned(CACHE_ADR))) <= CACHE_W_DATA(2*8+7 downto 2*8); |
end if; |
if (BYTE_SEL(3) = '1') then |
CACHE_MEM_HH(to_integer(unsigned(CACHE_ADR))) <= CACHE_W_DATA(3*8+7 downto 3*8); |
end if; |
end if; |
CACHE_R_DATA(07 downto 00) <= CACHE_MEM_LL(to_integer(unsigned(CACHE_ADR))); |
CACHE_R_DATA(15 downto 08) <= CACHE_MEM_LH(to_integer(unsigned(CACHE_ADR))); |
CACHE_R_DATA(23 downto 16) <= CACHE_MEM_HL(to_integer(unsigned(CACHE_ADR))); |
CACHE_R_DATA(31 downto 24) <= CACHE_MEM_HH(to_integer(unsigned(CACHE_ADR))); |
end if; |
end process CACHE_ACCESS; |
|
|
|
-- Dummy memory for simulation ----------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
DEBUG_SIM_MEM: |
if (IS_SIM = TRUE) generate |
GEN_DEBUG_MEM: |
for i in 0 to (CACHE_PAGES*PAGE_SIZE) - 1 generate |
SIM_MEM(i) <= CACHE_MEM_HH(i) & CACHE_MEM_HL(i) & CACHE_MEM_LH(i) & CACHE_MEM_LL(i); |
end generate; |
-- Dummy for simulation -- |
GEN_DEBUG_MEM: |
for i in 0 to (CACHE_PAGES*PAGE_SIZE)-1 generate |
SIM_MEM(i) <= CACHE_MEM_HH(i) & CACHE_MEM_HL(i) & CACHE_MEM_LH(i) & CACHE_MEM_LL(i); |
end generate; |
|
|
|
-- Page Modification Flag ------------------------------------------------------------------------------ |
-- Read-Access Synchronizer ---------------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
DIRTY_REG: process(CORE_CLK_I) |
R_ACC_SYNC: process(CORE_CLK_I, HALT_I, ARB_STATE) |
variable sel_v : std_logic; |
begin |
if rising_edge(CORE_CLK_I) then |
if (RST_I = '1') then |
for i in 0 to CACHE_PAGES-1 loop |
DIRTY_FLAG(i) <= '0'; |
end loop; |
elsif (C_FLUSH_I = '1') then |
for i in 0 to CACHE_PAGES-1 loop |
DIRTY_FLAG(i) <= '1'; |
end loop; |
else |
if ((B_CS_I and C_UPDATE_I and (not B_WE_I)) = '1') then -- bus unit write access |
DIRTY_FLAG(to_integer(unsigned(PAGE_SELECT))) <= '0'; -- cache re-sync |
elsif ((CACHE_HIT and P_WE_I) = '1') then -- processor write access |
DIRTY_FLAG(to_integer(unsigned(PAGE_SELECT))) <= '1'; -- processor modified cache |
end if; |
end if; |
sel_v := '0'; |
if (HALT_I = '1') and (ARB_STATE = STORM_ACCESS) then |
sel_v := '1'; |
end if; |
end process DIRTY_REG; |
|
--- Bus unit Dirty_Flag_Reg Access --- |
B_DRT_SEL_O <= DIRTY_FLAG(to_integer(unsigned(B_PG_SEL_I))) and VALID_FLAG(to_integer(unsigned(B_PG_SEL_I))); |
|
|
|
-- Global Dirty Flag ----------------------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
CACHE_DIRTY_DETECTOR: process(CORE_CLK_I, DIRTY_FLAG, VALID_FLAG) |
variable dirty_tmp_v : std_logic; |
begin |
-- global dirty bit -- |
dirty_tmp_v := '0'; |
if (READ_ONLY = FALSE) then |
for i in 0 to CACHE_PAGES-1 loop |
if ((DIRTY_FLAG(i) and VALID_FLAG(i)) = '1') then |
dirty_tmp_v := '1'; |
exit; |
end if; |
end loop; |
end if; |
|
|
if rising_edge(CORE_CLK_I) then |
if (RST_I = '1') then |
C_DIRTY_O <= '0'; |
--B_DRT_SEL_O <= '0'; |
P_DATA_O_SEL <= '0'; |
P_DATA_O_BUF <= (others => '0'); |
else |
--B_DRT_SEL_O <= DIRTY_FLAG(to_integer(unsigned(B_PG_SEL_I))) and VALID_FLAG(to_integer(unsigned(B_PG_SEL_I))); |
if (C_WTHRU_I = '0') then |
if (dirty_tmp_v = '0') then |
C_DIRTY_O <= '0'; |
elsif (HIST_MEM(0) /= PAGE_SELECT) then |
C_DIRTY_O <= dirty_tmp_v; |
end if; |
else |
C_DIRTY_O <= dirty_tmp_v; |
P_DATA_O_SEL <= sel_v; |
if (P_DATA_O_SEL = '0') then |
P_DATA_O_BUF <= P_DATA_O_INT; |
end if; |
end if; |
end if; |
end process CACHE_DIRTY_DETECTOR; |
end process R_ACC_SYNC; |
|
--- Data output buffer --- |
P_DATA_O <= P_DATA_O_INT when (P_DATA_O_SEL = '0') else P_DATA_O_BUF; |
|
TIMEOUT_COUNTER: process(CORE_CLK_I) |
begin |
if rising_edge(CORE_CLK_I) then |
if (RST_I = '1') then |
DRT_CNT <= (others => '1'); |
elsif ((P_CS_I and P_WE_I) = '1') and (HIST_MEM(0) = PAGE_SELECT) then |
DRT_CNT <= "000"; |
elsif (DRT_CNT /= "111") then |
DRT_CNT <= Std_Logic_Vector(unsigned(DRT_CNT) + 1); |
end if; |
end if; |
end process TIMEOUT_COUNTER; |
|
|
|
-- Cache Read Buffer ----------------------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
CACHE_R_BUFFER: process(CORE_CLK_I) |
begin |
if rising_edge(CORE_CLK_I) then |
if (RST_I = '1') then |
RB_BUFFER <= (others => '0'); |
RB_BUFF_EN <= '0'; |
else |
RB_BUFF_EN <= HALT_I; |
if (RB_BUFF_EN = '0') then |
RB_BUFFER <= RB_DATA; |
end if; |
end if; |
end if; |
end process CACHE_R_BUFFER; |
|
-- readback buffer select -- |
P_DATA_O <= RB_BUFFER when (RB_BUFF_EN = '1') else RB_DATA; |
B_DATA_O <= RB_DATA; |
|
|
|
end Behavioral; |
/storm_core/rtl/STORM_TOP.vhd
21,7 → 21,7
-- # - LOAD_STORE_UNIT.vhd | Download at http://opencores.org/project,storm_core # |
-- # - OPCODE_DECODER.vhd | # |
-- # ***************************************************************************************************** # |
-- # Last modified: 04.01.2012 =/\= # |
-- # Last modified: 15.02.2012 =/\= # |
-- ######################################################################################################### |
|
library IEEE; |
37,11 → 37,13
-- ## System Architecture Configuration ## |
-- ############################################################################################### |
|
I_CACHE_PAGES : natural := 4; -- number of pages in I cache |
I_CACHE_PAGE_SIZE : natural := 32; -- page size in I cache |
D_CACHE_PAGES : natural := 8; -- number of pages in D cache |
D_CACHE_PAGE_SIZE : natural := 4; -- page size in D cache |
BOOT_VECTOR : STD_LOGIC_VECTOR(31 downto 0) := x"00000000" -- boot address |
I_CACHE_PAGES : natural := 4; -- number of pages in I cache |
I_CACHE_PAGE_SIZE : natural := 32; -- page size in I cache |
D_CACHE_PAGES : natural := 8; -- number of pages in D cache |
D_CACHE_PAGE_SIZE : natural := 1; -- page size in D cache |
BOOT_VECTOR : STD_LOGIC_VECTOR(31 downto 0) := x"00000000"; -- boot address |
IO_UC_BEGIN : STD_LOGIC_VECTOR(31 downto 0) := x"00000000"; -- io begin address |
IO_UC_END : STD_LOGIC_VECTOR(31 downto 0) := x"00000000" -- io end address |
); |
-- ############################################################################################### |
-- ## Global Interface ## |
48,9 → 50,9
-- ############################################################################################### |
port ( |
CORE_CLK_I : in STD_LOGIC; -- core clock input |
BUS_CLK_I : in STD_LOGIC; -- bus clock input |
RST_I : in STD_LOGIC; -- global reset input |
F_RST_O : out STD_LOGIC; -- force system reset |
IO_PORT_O : out STD_LOGIC_VECTOR(15 downto 0); -- direct output |
IO_PORT_I : in STD_LOGIC_VECTOR(15 downto 0); -- direct input |
|
-- ############################################################################################### |
-- ## Wishbone Interface ## |
58,15 → 60,15
|
WB_ADR_O : out STD_LOGIC_VECTOR(31 downto 0); -- address |
WB_CTI_O : out STD_LOGIC_VECTOR(02 downto 0); -- cycle type |
WB_TGC_O : out STD_LOGIC_VECTOR(05 downto 0); -- cycle tag |
WB_TGC_O : out STD_LOGIC_VECTOR(06 downto 0); -- cycle tag |
WB_SEL_O : out STD_LOGIC_VECTOR(03 downto 0); -- byte select |
WB_WE_O : out STD_LOGIC; -- write enable |
WB_WE_O : out STD_LOGIC; -- write enable |
WB_DATA_O : out STD_LOGIC_VECTOR(31 downto 0); -- data out |
WB_DATA_I : in STD_LOGIC_VECTOR(31 downto 0); -- data in |
WB_STB_O : out STD_LOGIC; -- valid transfer |
WB_CYC_O : out STD_LOGIC; -- valid cycle |
WB_ACK_I : in STD_LOGIC; -- acknowledge |
WB_HALT_I : in STD_LOGIC; -- halt request |
WB_STB_O : out STD_LOGIC; -- valid transfer |
WB_CYC_O : out STD_LOGIC; -- valid cycle |
WB_ACK_I : in STD_LOGIC; -- acknowledge |
WB_HALT_I : in STD_LOGIC; -- halt request |
|
-- ############################################################################################### |
-- ## Interrupt Lines ## |
92,11 → 94,10
return 0; |
end function log2; |
|
-- special processor lines -- |
-- Special processor lines -- |
signal ST_HALT : STD_LOGIC; |
signal ST_MODE : STD_LOGIC_VECTOR(04 downto 0); |
signal C_WTHRU : STD_LOGIC; |
signal C_BGWB : STD_LOGIC; |
signal C_BUS_CYCC : STD_LOGIC_VECTOR(15 downto 0); |
|
-- STORM D-Cache Interface -- |
109,6 → 110,8
signal ST_DC_CLEAR : STD_LOGIC; |
signal ST_DC_FLUSH : STD_LOGIC; |
signal ST_DC_HIT : STD_LOGIC; |
signal ST_DC_FRESH : STD_LOGIC; |
signal ST_DC_CIO : STD_LOGIC; |
|
-- Bus Unit D-Cache Interface -- |
signal BS_DC_CS : STD_LOGIC; |
115,14 → 118,13
signal BS_DC_ADR : STD_LOGIC_VECTOR(31 downto 0); |
signal BS_DC_DATA_I : STD_LOGIC_VECTOR(31 downto 0); |
signal BS_DC_DATA_O : STD_LOGIC_VECTOR(31 downto 0); |
signal BS_DC_DQ : STD_LOGIC_VECTOR(01 downto 0); |
signal BS_DC_WE : STD_LOGIC; |
signal BS_DC_UPDATE : STD_LOGIC; |
signal BS_DC_DIRTY : STD_LOGIC; |
signal BS_DC_MISS : STD_LOGIC; |
signal BS_DC_PG_SEL : STD_LOGIC_VECTOR((log2(D_CACHE_PAGES))-1 downto 0); |
signal BS_DC_DRT_SEL : STD_LOGIC; |
signal BS_DC_BSA_SEL : STD_LOGIC_VECTOR(31 downto 0); |
signal BS_DC_DRT_ACK : STD_LOGIC; |
signal BS_DC_MSS_ACK : STD_LOGIC; |
signal BS_DC_IO_ACC : STD_LOGIC; |
|
-- STORM I-Cache Interface -- |
signal ST_IC_REQ : STD_LOGIC; |
130,16 → 132,15
signal ST_IC_RD_DTA : STD_LOGIC_VECTOR(31 downto 0); |
signal ST_IC_CLEAR : STD_LOGIC; |
signal ST_IC_HIT : STD_LOGIC; |
signal ST_IC_FRESH : STD_LOGIC; |
|
-- Bus Unit I-Cache Interface -- |
signal BS_IC_CS : STD_LOGIC; |
signal BS_IC_ADR : STD_LOGIC_VECTOR(31 downto 0); |
signal BS_IC_DATA_I : STD_LOGIC_VECTOR(31 downto 0); |
signal BS_IC_DQ : STD_LOGIC_VECTOR(01 downto 0); |
signal BS_IC_WE : STD_LOGIC; |
signal BS_IC_UPDATE : STD_LOGIC; |
signal BS_IC_MISS : STD_LOGIC; |
signal BS_IC_PG_SEL : STD_LOGIC_VECTOR((log2(I_CACHE_PAGES))-1 downto 0); |
signal BS_IC_MSS_ACK : STD_LOGIC; |
|
-- Abort Signals -- |
signal D_ABORT : STD_LOGIC; |
156,7 → 157,6
port map ( |
-- Global Control -- |
RES => RST_I, -- global reset input (high active) |
F_RST => F_RST_O, -- force system reset |
CLK => CORE_CLK_I, -- global clock input |
|
-- Special Control -- |
175,6 → 175,8
D_CACHE_FLUSH => ST_DC_FLUSH, -- flush d-cache |
D_CACHE_MISS => BS_DC_MISS, -- d-cache miss |
D_CACHE_HIT => ST_DC_HIT, -- d-cache hit |
D_CACHE_FRESH => ST_DC_FRESH, -- refresh d-cache |
D_CACHE_CIO => ST_DC_CIO, -- en cached IO |
|
-- Instruction Cache Interface -- |
I_CACHE_REQ => ST_IC_REQ, -- memory access in next cycle |
184,11 → 186,13
I_CACHE_CLEAR => ST_IC_CLEAR, -- clear i-cache |
I_CACHE_MISS => BS_IC_MISS, -- i-cache miss |
I_CACHE_HIT => ST_IC_HIT, -- i-cache hit |
I_CACHE_FRESH => ST_IC_FRESH, -- refresh i-cache |
|
-- General Control Lines -- |
C_BUS_CYCC_O => C_BUS_CYCC, -- max bus cycle length |
C_WTHRU_O => C_WTHRU, -- cache write through |
C_BGWB_O => C_BGWB, -- background write-back |
IO_PORT_OUT => IO_PORT_O, -- direct output |
IO_PORT_IN => IO_PORT_I, -- direct input |
|
-- Interrupt Request Lines -- |
IRQ => IRQ_I, -- interrupt request |
204,13 → 208,11
CACHE_PAGES => I_CACHE_PAGES, |
LOG2_CACHE_PAGES => log2(I_CACHE_PAGES), |
PAGE_SIZE => I_CACHE_PAGE_SIZE, |
LOG2_PAGE_SIZE => log2(I_CACHE_PAGE_SIZE), |
READ_ONLY => TRUE |
LOG2_PAGE_SIZE => log2(I_CACHE_PAGE_SIZE) |
) |
port map ( |
-- Global Control -- |
CORE_CLK_I => CORE_CLK_I, -- core clock, all triggering on rising edge |
BUS_CLK_I => BUS_CLK_I, -- bus clock, all triggering on rising edge |
RST_I => RST_I, -- global reset, high active, sync |
HALT_I => ST_HALT, -- global storm halt signal |
|
227,14 → 229,14
B_ADR_I => BS_IC_ADR, -- address input |
B_DATA_I => BS_IC_DATA_I, -- data input |
B_DATA_O => open, -- data output |
B_DQ_I => BS_IC_DQ, -- data quantity |
B_WE_I => BS_IC_WE, -- write enable |
B_PG_SEL_I => BS_IC_PG_SEL, -- bus unit page select |
B_DRT_SEL_O => open, -- dirty bit of selected page |
B_BSA_O => open, -- base adr of selected page |
B_DRT_ACK_I => '1', -- dirty acknowledged |
B_MSS_ACK_I => BS_IC_MSS_ACK, -- miss acknowledged |
B_IO_ACC_I => '0', -- IO access |
|
-- Cache Control -- |
C_UPDATE_I => BS_IC_UPDATE, -- bus unit takes control |
C_FRESH_I => ST_IC_FRESH, -- refresh accessed page |
C_FLUSH_I => '0', -- flush cache |
C_CLEAR_I => ST_IC_CLEAR, -- clear cache |
C_MISS_O => BS_IC_MISS, -- cache miss access |
242,7 → 244,6
C_DIRTY_O => open, -- cache modified |
C_WTHRU_I => '0' -- write through |
); |
BS_IC_PG_SEL <= (others => '0'); -- dummy signal |
|
|
|
253,13 → 254,11
CACHE_PAGES => D_CACHE_PAGES, |
LOG2_CACHE_PAGES => log2(D_CACHE_PAGES), |
PAGE_SIZE => D_CACHE_PAGE_SIZE, |
LOG2_PAGE_SIZE => log2(D_CACHE_PAGE_SIZE), |
READ_ONLY => FALSE |
LOG2_PAGE_SIZE => log2(D_CACHE_PAGE_SIZE) |
) |
port map ( |
-- Global Control -- |
CORE_CLK_I => CORE_CLK_I, -- core clock, all triggering on rising edge |
BUS_CLK_I => BUS_CLK_I, -- bus clock, all triggering on rising edge |
RST_I => RST_I, -- global reset, high active, sync |
HALT_I => ST_HALT, -- global storm halt signal |
|
276,14 → 275,14
B_ADR_I => BS_DC_ADR, -- address input |
B_DATA_I => BS_DC_DATA_I, -- data input |
B_DATA_O => BS_DC_DATA_O, -- data output |
B_DQ_I => BS_DC_DQ, -- data quantity |
B_WE_I => BS_DC_WE, -- write enable |
B_PG_SEL_I => BS_DC_PG_SEL, -- bus unit page select |
B_DRT_SEL_O => BS_DC_DRT_SEL, -- dirty bit of selected page |
B_BSA_O => BS_DC_BSA_SEL, -- base adr of selected page |
B_DRT_ACK_I => BS_DC_DRT_ACK, -- dirty acknowledged |
B_MSS_ACK_I => BS_DC_MSS_ACK, -- miss acknowledged |
B_IO_ACC_I => BS_DC_IO_ACC, -- IO access |
|
-- Cache Control -- |
C_UPDATE_I => BS_DC_UPDATE, -- bus unit takes control |
C_FRESH_I => ST_DC_FRESH, -- refresh accessed page |
C_FLUSH_I => ST_DC_FLUSH, -- flush cache |
C_CLEAR_I => ST_DC_CLEAR, -- clear cache |
C_MISS_O => BS_DC_MISS, -- cache miss access |
306,12 → 305,13
D_CACHE_PAGES => D_CACHE_PAGES, -- number of pages in D cache |
LOG2_D_CACHE_PAGES => log2(D_CACHE_PAGES), -- log2 of page count |
D_CACHE_PAGE_SIZE => D_CACHE_PAGE_SIZE, -- page size in D cache |
LOG2_D_CACHE_PAGE_SIZE => log2(D_CACHE_PAGE_SIZE) -- log2 of page size |
LOG2_D_CACHE_PAGE_SIZE => log2(D_CACHE_PAGE_SIZE), -- log2 of page size |
IO_UC_BEGIN => IO_UC_BEGIN, -- begin of uncachable IO area |
IO_UC_END => IO_UC_END -- end of uncachable IO area |
) |
port map ( |
-- Global Control -- |
CORE_CLK_I => CORE_CLK_I, -- core clock signal, rising edge |
BUS_CLK_I => BUS_CLK_I, -- bus clock signal, rising edge |
RST_I => RST_I, -- reset signal, sync, active high |
FREEZE_STORM_O => ST_HALT, -- freeze processor |
STORM_MODE_I => ST_MODE, -- current processor mode |
318,32 → 318,33
D_ABORT_O => D_ABORT, -- bus error during data transfer |
I_ABORT_O => I_ABORT, -- bus error during instruction transfer |
C_BUS_CYCC_I => C_BUS_CYCC, -- max bus cycle length |
C_BGWB_I => C_BGWB, -- background write-back |
CACHED_IO_I => ST_DC_CIO, -- enable cached IO |
|
-- Data Cache Interface -- |
DC_CS_O => BS_DC_CS, -- chip select |
DC_P_ADR_I => ST_DC_ADR, -- processor address |
DC_P_CS_I => ST_DC_REQ, -- processor cache request |
DC_P_WE_I => ST_DC_RW, -- processor write enable |
DC_ADR_O => BS_DC_ADR, -- cache address |
DC_DATA_O => BS_DC_DATA_I, -- data outut |
DC_DATA_I => BS_DC_DATA_O, -- data input |
DC_DQ_O => BS_DC_DQ, -- data quantity |
DC_WE_O => BS_DC_WE, -- write enable |
DC_UPDATE_O => BS_DC_UPDATE, -- bus unit takes control |
DC_MISS_I => BS_DC_MISS, -- cache miss access |
DC_DIRTY_I => BS_DC_DIRTY, -- cache modified |
DC_PG_SEL_O => BS_DC_PG_SEL, -- bus unit page selector |
DC_DRT_SEL_I => BS_DC_DRT_SEL, -- dirty bit of selected page |
DC_BSA_I => BS_DC_BSA_SEL, -- base address of selected page |
DC_DRT_ACK_O => BS_DC_DRT_ACK, -- dirty acknowledged |
DC_MSS_ACK_O => BS_DC_MSS_ACK, -- miss acknowledged |
DC_IO_ACC_O => BS_DC_IO_ACC, -- IO access |
|
-- Instruction Cache Interface -- |
IC_CS_O => BS_IC_CS, -- chip select |
IC_P_ADR_I => ST_IC_ADR, -- processor address |
IC_P_CS_I => ST_IC_REQ, -- processor cache request |
IC_ADR_O => BS_IC_ADR, -- cache address |
IC_DATA_O => BS_IC_DATA_I, -- data output |
IC_DQ_O => BS_IC_DQ, -- data quantity |
IC_WE_O => BS_IC_WE, -- write enable |
IC_UPDATE_O => BS_IC_UPDATE, -- bus unit takes control |
IC_MISS_I => BS_IC_MISS, -- cache miss access |
IC_MSS_ACK_O => BS_IC_MSS_ACK, -- miss acknowledged |
|
-- Wishbone Bus -- |
WB_ADR_O => WB_ADR_O, -- address |
/storm_core/rtl/BUS_UNIT.vhd
9,7 → 9,7
-- # Note: I-Cache is read-only for the processor and # |
-- # write-only for the bus unit. # |
-- # ************************************************** # |
-- # Last modified: 23.01.2012 # |
-- # Last modified: 15.02.2012 # |
-- ###################################################### |
|
library IEEE; |
25,14 → 25,16
-- ## Cache Configuration ## |
-- ################################################################################################################ |
|
I_CACHE_PAGES : natural; -- number of pages in I cache |
LOG2_I_CACHE_PAGES : natural; -- log2 of page count |
I_CACHE_PAGE_SIZE : natural; -- page size in I cache |
LOG2_I_CACHE_PAGE_SIZE : natural; -- log2 of page size |
D_CACHE_PAGES : natural; -- number of pages in D cache |
LOG2_D_CACHE_PAGES : natural; -- log2 of page count |
D_CACHE_PAGE_SIZE : natural; -- page size in D cache |
LOG2_D_CACHE_PAGE_SIZE : natural -- log2 of page size |
I_CACHE_PAGES : natural; -- number of pages in I cache |
LOG2_I_CACHE_PAGES : natural; -- log2 of page count |
I_CACHE_PAGE_SIZE : natural; -- page size in I cache |
LOG2_I_CACHE_PAGE_SIZE : natural; -- log2 of page size |
D_CACHE_PAGES : natural; -- number of pages in D cache |
LOG2_D_CACHE_PAGES : natural; -- log2 of page count |
D_CACHE_PAGE_SIZE : natural; -- page size in D cache |
LOG2_D_CACHE_PAGE_SIZE : natural; -- log2 of page size |
IO_UC_BEGIN : STD_LOGIC_VECTOR(31 downto 0); -- begin of uncachable IO area |
IO_UC_END : STD_LOGIC_VECTOR(31 downto 0) -- end of uncachable IO area |
); |
port ( |
-- ################################################################################################################ |
40,7 → 42,6
-- ################################################################################################################ |
|
CORE_CLK_I : in STD_LOGIC; -- core clock signal, rising edge |
BUS_CLK_I : in STD_LOGIC; -- bus clock signal, rising edge |
RST_I : in STD_LOGIC; -- reset signal, sync, active high |
FREEZE_STORM_O : out STD_LOGIC; -- freeze processor |
STORM_MODE_I : in STD_LOGIC_VECTOR(04 downto 0); -- current processor mode |
47,7 → 48,7
D_ABORT_O : out STD_LOGIC; -- bus error during data transfer |
I_ABORT_O : out STD_LOGIC; -- bus error during instruction transfer |
C_BUS_CYCC_I : in STD_LOGIC_VECTOR(15 downto 0); -- max bus cycle length |
C_BGWB_I : in STD_LOGIC; -- background write-back |
CACHED_IO_I : in STD_LOGIC; -- enable cached IO |
|
-- ################################################################################################################ |
-- ## STORM Data Cache Interface ## |
55,17 → 56,18
|
DC_CS_O : out STD_LOGIC; -- chip select |
DC_P_ADR_I : in STD_LOGIC_VECTOR(31 downto 0); -- processor address |
DC_P_CS_I : in STD_LOGIC; -- processor cache request |
DC_P_WE_I : in STD_LOGIC; -- processor write enable |
DC_ADR_O : out STD_LOGIC_VECTOR(31 downto 0); -- cache address |
DC_DATA_O : out STD_LOGIC_VECTOR(31 downto 0); -- data output |
DC_DATA_I : in STD_LOGIC_VECTOR(31 downto 0); -- data input |
DC_DQ_O : out STD_LOGIC_VECTOR(01 downto 0); -- data quantity |
DC_WE_O : out STD_LOGIC; -- write enable |
DC_UPDATE_O : out STD_LOGIC; -- bus unit takes control |
DC_MISS_I : in STD_LOGIC; -- cache miss access |
DC_DIRTY_I : in STD_LOGIC; -- cache modified |
DC_PG_SEL_O : out STD_LOGIC_VECTOR(LOG2_D_CACHE_PAGES-1 downto 0); |
DC_DRT_SEL_I : in STD_LOGIC; -- dirty bit of selected page |
DC_BSA_I : in STD_LOGIC_VECTOR(31 downto 0); -- base address of selected page |
DC_DRT_ACK_O : out STD_LOGIC; -- dirty acknowledged |
DC_MSS_ACK_O : out STD_LOGIC; -- miss acknowledged |
DC_IO_ACC_O : out STD_LOGIC; -- IO access |
|
-- ################################################################################################################ |
-- ## STORM Instruction Cache Interface ## |
73,12 → 75,12
|
IC_CS_O : out STD_LOGIC; -- chip select |
IC_P_ADR_I : in STD_LOGIC_VECTOR(31 downto 0); -- processor address |
IC_P_CS_I : in STD_LOGIC; -- processor cache request |
IC_ADR_O : out STD_LOGIC_VECTOR(31 downto 0); -- cache address |
IC_DATA_O : out STD_LOGIC_VECTOR(31 downto 0); -- data outut |
IC_DQ_O : out STD_LOGIC_VECTOR(01 downto 0); -- data quantity |
IC_WE_O : out STD_LOGIC; -- write enable |
IC_UPDATE_O : out STD_LOGIC; -- bus unit takes control |
IC_MISS_I : in STD_LOGIC; -- cache miss access |
IC_MSS_ACK_O : out STD_LOGIC; -- miss acknowledged |
|
-- ################################################################################################################ |
-- ## Wishbone Bus ## |
88,7 → 90,7
WB_CTI_O : out STD_LOGIC_VECTOR(02 downto 0); -- cycle type |
WB_DATA_O : out STD_LOGIC_VECTOR(31 downto 0); -- data |
WB_SEL_O : out STD_LOGIC_VECTOR(03 downto 0); -- byte select |
WB_TGC_O : out STD_LOGIC_VECTOR(05 downto 0); -- cycle tag |
WB_TGC_O : out STD_LOGIC_VECTOR(06 downto 0); -- cycle tag |
WB_WE_O : out STD_LOGIC; -- read/write |
WB_CYC_O : out STD_LOGIC; -- cycle |
WB_STB_O : out STD_LOGIC; -- strobe |
110,27 → 112,31
constant WB_BST_END_CYC : STD_LOGIC_VECTOR(2 downto 0) := "111"; -- burst end |
|
-- Arbiter FSM -- |
type ARB_STATE_TYPE is (IDLE, ASSIGN_D_PAGE, UPLOAD_D_PAGE, DOWNLOAD_I_PAGE, DOWNLOAD_D_PAGE, END_TRANSFER); |
type ARB_STATE_TYPE is (IDLE, UPLOAD_D_PAGE, IO_REQUEST, DOWNLOAD_I_PAGE, DOWNLOAD_D_PAGE, END_TRANSFER); |
signal ARB_STATE, ARB_STATE_NXT : ARB_STATE_TYPE; |
|
-- Address Buffer -- |
signal IC_ADR_BUF, IC_ADR_BUF_NXT : STD_LOGIC_VECTOR(31 downto 0); |
signal DC_ADR_BUF, DC_ADR_BUF_NXT : STD_LOGIC_VECTOR(31 downto 0); |
signal WB_ADR_BUF, WB_ADR_BUF_NXT : STD_LOGIC_VECTOR(31 downto 0); |
signal BASE_BUF, BASE_BUF_NXT : STD_LOGIC_VECTOR(31 downto 0); |
signal PAGE_SEL, PAGE_SEL_NXT : STD_LOGIC_VECTOR(LOG2_D_CACHE_PAGES-1 downto 0); |
signal IC_ADR_BUF, IC_ADR_BUF_NXT : STD_LOGIC_VECTOR(31 downto 0); |
signal DC_ADR_BUF, DC_ADR_BUF_NXT : STD_LOGIC_VECTOR(31 downto 0); |
signal WB_ADR_BUF, WB_ADR_BUF_NXT : STD_LOGIC_VECTOR(31 downto 0); |
signal DC_P_ADR_BUF, IC_P_ADR_BUF : STD_LOGIC_VECTOR(31 downto 0); |
signal BASE_BUF, BASE_BUF_NXT : STD_LOGIC_VECTOR(31 downto 0); |
|
-- Wishbone Syncs -- |
signal WB_DATA_BUF : STD_LOGIC_VECTOR(31 downto 0); |
signal WB_ACK_BUF : STD_LOGIC; |
signal VA_CYC_BUF, VA_CYC_BUF_NXT : STD_LOGIC; |
signal WB_DATA_BUF : STD_LOGIC_VECTOR(31 downto 0); |
signal WB_ACK_BUF : STD_LOGIC; |
signal VA_CYC_BUF, VA_CYC_BUF_NXT : STD_LOGIC; |
signal WE_FLAG, WE_FLAG_NXT : STD_LOGIC; |
|
-- Access System -- |
signal IO_ACCESS : STD_LOGIC; |
|
-- Local Signals -- |
signal FREEZE_FLAG, FREEZE_FLAG_NXT : STD_LOGIC; -- freeze flag |
signal FREEZE_DIS, FREEZE_DIS_NXT : STD_LOGIC; -- freeze disable |
signal FREEZE_FLAG, FREEZE_FLAG_NXT : STD_LOGIC; -- freeze flag |
signal FREEZE_DIS, FREEZE_DIS_NXT : STD_LOGIC; -- freeze disable |
|
-- Timeout System -- |
signal TIMEOUT_CNT, TIMEOUT_CNT_NXT : STD_LOGIC_VECTOR(15 downto 0); |
signal TIMEOUT_CNT, TIMEOUT_CNT_NXT : STD_LOGIC_VECTOR(15 downto 0); |
|
begin |
|
159,55 → 165,59
--- D-Cache --- |
DC_DATA_O <= WB_DATA_BUF; |
DC_ADR_O <= DC_ADR_BUF; |
DC_DQ_O <= DQ_WORD; -- update cache entry = word |
DC_PG_SEL_O <= PAGE_SEL; -- bus unit page select |
|
--- I-Cache --- |
IC_DATA_O <= WB_DATA_BUF; |
IC_ADR_O <= IC_ADR_BUF; |
IC_DQ_O <= DQ_WORD; -- update cache entry = word |
IC_WE_O <= '1'; -- processor cannot change i-cache, no readback necessary |
|
--- Wishbone Bus --- |
WB_SEL_O <= "1111"; -- cache entry = word |
WB_ADR_O <= WB_ADR_BUF; |
WB_DATA_O <= DC_DATA_I; |
WB_DATA_O <= x"00000000" when (ARB_STATE = IDLE) else DC_DATA_I; |
WB_WE_O <= WE_FLAG; |
|
--- IO Access --- |
IO_ACCESS <= '1' when (DC_P_ADR_I >= IO_UC_BEGIN) and (DC_P_ADR_I <= IO_UC_END) and (CACHED_IO_I = '0') else '0'; |
DC_IO_ACC_O <= IO_ACCESS; |
|
|
|
-- Arbiter State Machine (Sync) --------------------------------------------------------------------------- |
-- ----------------------------------------------------------------------------------------------------------- |
ARBITER_SYNC: process(BUS_CLK_I) |
ARBITER_SYNC: process(CORE_CLK_I) |
begin |
if rising_edge(BUS_CLK_I) then |
if rising_edge(CORE_CLK_I) then |
if (RST_I = '1') then |
ARB_STATE <= IDLE; |
TIMEOUT_CNT <= (others => '0'); |
WB_DATA_BUF <= (others => '0'); |
WB_ACK_BUF <= '0'; |
VA_CYC_BUF <= '0'; |
--WB_DATA_O <= (others => '0'); |
IC_ADR_BUF <= (others => '0'); |
DC_ADR_BUF <= (others => '0'); |
WB_ADR_BUF <= (others => '0'); |
BASE_BUF <= (others => '0'); |
PAGE_SEL <= (others => '0'); |
ARB_STATE <= IDLE; |
TIMEOUT_CNT <= (others => '0'); |
WB_DATA_BUF <= (others => '0'); |
WB_ACK_BUF <= '0'; |
WE_FLAG <= '0'; |
VA_CYC_BUF <= '0'; |
IC_ADR_BUF <= (others => '0'); |
DC_ADR_BUF <= (others => '0'); |
WB_ADR_BUF <= (others => '0'); |
BASE_BUF <= (others => '0'); |
DC_P_ADR_BUF <= (others => '0'); |
IC_P_ADR_BUF <= (others => '0'); |
else |
-- Arbiter CTRL -- |
ARB_STATE <= ARB_STATE_NXT; |
TIMEOUT_CNT <= TIMEOUT_CNT_NXT; |
ARB_STATE <= ARB_STATE_NXT; |
TIMEOUT_CNT <= TIMEOUT_CNT_NXT; |
DC_P_ADR_BUF <= DC_P_ADR_I; |
IC_P_ADR_BUF <= IC_P_ADR_I; |
WE_FLAG <= WE_FLAG_NXT; |
if (WB_HALT_I = '0') then |
-- Wishbone Sync -- |
WB_DATA_BUF <= WB_DATA_I; |
WB_ACK_BUF <= WB_ACK_I; |
VA_CYC_BUF <= VA_CYC_BUF_NXT; |
--WB_DATA_O <= DC_DATA_I; |
-- Address Buffer -- |
IC_ADR_BUF <= IC_ADR_BUF_NXT; |
DC_ADR_BUF <= DC_ADR_BUF_NXT; |
WB_ADR_BUF <= WB_ADR_BUF_NXT; |
BASE_BUF <= BASE_BUF_NXT; |
PAGE_SEL <= PAGE_SEL_NXT; |
end if; |
end if; |
end if; |
217,18 → 227,17
|
-- Arbiter State Machine (Async) -------------------------------------------------------------------------- |
-- ----------------------------------------------------------------------------------------------------------- |
ARBITER_ASYNC: process(ARB_STATE, STORM_MODE_I, FREEZE_FLAG, BASE_BUF, PAGE_SEL, TIMEOUT_CNT, |
DC_ADR_BUF, DC_P_ADR_I, DC_DIRTY_I, DC_MISS_I, DC_DRT_SEL_I, DC_BSA_I, |
IC_ADR_BUF, IC_P_ADR_I, IC_MISS_I, |
WB_ADR_BUF, WB_ACK_BUF, VA_CYC_BUF, C_BUS_CYCC_I, C_BGWB_I) |
variable IF_BASE_ADR_V : STD_LOGIC_VECTOR(31 downto 0); |
variable DF_BASE_ADR_V : STD_LOGIC_VECTOR(31 downto 0); |
ARBITER_ASYNC: process(ARB_STATE, STORM_MODE_I, FREEZE_FLAG, BASE_BUF, TIMEOUT_CNT, IO_ACCESS, WE_FLAG, |
DC_ADR_BUF, DC_P_ADR_BUF, DC_P_ADR_I, DC_DIRTY_I, DC_MISS_I, DC_BSA_I, DC_P_WE_I, DC_P_CS_I, |
IC_ADR_BUF, IC_P_ADR_BUF, IC_MISS_I, |
WB_ADR_BUF, WB_ACK_BUF, VA_CYC_BUF, C_BUS_CYCC_I) |
variable IF_BASE_ADR_V, DF_BASE_ADR_V : STD_LOGIC_VECTOR(31 downto 0); |
begin |
--- Base Address Word Alignment --- |
IF_BASE_ADR_V := (others => '0'); |
IF_BASE_ADR_V(31 downto LOG2_I_CACHE_PAGE_SIZE+2) := IC_P_ADR_I(31 downto LOG2_I_CACHE_PAGE_SIZE+2); |
IF_BASE_ADR_V(31 downto LOG2_I_CACHE_PAGE_SIZE+2) := IC_P_ADR_BUF(31 downto LOG2_I_CACHE_PAGE_SIZE+2); |
DF_BASE_ADR_V := (others => '0'); |
DF_BASE_ADR_V(31 downto LOG2_D_CACHE_PAGE_SIZE+2) := DC_P_ADR_I(31 downto LOG2_D_CACHE_PAGE_SIZE+2); |
DF_BASE_ADR_V(31 downto LOG2_D_CACHE_PAGE_SIZE+2) := DC_P_ADR_BUF(31 downto LOG2_D_CACHE_PAGE_SIZE+2); |
|
--- Arbiter Defaults --- |
ARB_STATE_NXT <= ARB_STATE; |
239,26 → 248,27
FREEZE_FLAG_NXT <= FREEZE_FLAG; |
FREEZE_DIS_NXT <= '0'; |
BASE_BUF_NXT <= BASE_BUF; |
PAGE_SEL_NXT <= PAGE_SEL; |
VA_CYC_BUF_NXT <= '0'; |
TIMEOUT_CNT_NXT <= (others => '0'); |
WE_FLAG_NXT <= WE_FLAG; |
|
--- Wishbone Bus Defaults --- |
WB_CTI_O <= WB_CLASSIC_CYC; |
WB_TGC_O <= '0' & STORM_MODE_I; |
WB_WE_O <= '0'; |
WB_CYC_O <= '0'; |
WB_STB_O <= '0'; |
WB_CTI_O <= WB_CLASSIC_CYC; |
WB_TGC_O <= "00" & STORM_MODE_I; |
WB_CYC_O <= '0'; |
WB_STB_O <= '0'; |
|
--- D-Cache Interface Defaults --- |
DC_CS_O <= '0'; |
DC_WE_O <= '0'; |
DC_UPDATE_O <= '0'; |
D_ABORT_O <= '0'; |
|
DC_CS_O <= '0'; |
DC_WE_O <= '0'; |
D_ABORT_O <= '0'; |
DC_DRT_ACK_O <= '0'; |
DC_MSS_ACK_O <= '0'; |
|
--- I-Cache Interface Defaults --- |
IC_CS_O <= '0'; |
IC_UPDATE_O <= '0'; |
I_ABORT_O <= '0'; |
IC_CS_O <= '0'; |
I_ABORT_O <= '0'; |
IC_MSS_ACK_O <= '0'; |
|
--- State Machine --- |
case (ARB_STATE) is |
267,35 → 277,45
------------------------------------------------------------------------------- |
IC_ADR_BUF_NXT <= IF_BASE_ADR_V; |
DC_ADR_BUF_NXT <= DF_BASE_ADR_V; |
TIMEOUT_CNT_NXT <= (others => '0'); |
if (IC_MISS_I = '1') then -- i-cache miss -> reload cache page |
if (IO_ACCESS = '1') and (DC_P_CS_I = '1') then -- IO access |
ARB_STATE_NXT <= IO_REQUEST; |
FREEZE_FLAG_NXT <= '1'; |
WB_ADR_BUF_NXT <= DC_P_ADR_I; |
WE_FLAG_NXT <= DC_P_WE_I; |
elsif (IC_MISS_I = '1') then -- i-cache miss -> reload cache page |
ARB_STATE_NXT <= DOWNLOAD_I_PAGE; |
FREEZE_FLAG_NXT <= '1'; |
WB_ADR_BUF_NXT <= IF_BASE_ADR_V; |
BASE_BUF_NXT <= IF_BASE_ADR_V; |
WE_FLAG_NXT <= '0'; -- bus read |
elsif (DC_MISS_I = '1') then -- d-cache miss -> reload cache page |
ARB_STATE_NXT <= DOWNLOAD_D_PAGE; |
FREEZE_FLAG_NXT <= '1'; |
WB_ADR_BUF_NXT <= DF_BASE_ADR_V; |
BASE_BUF_NXT <= DF_BASE_ADR_V; |
WE_FLAG_NXT <= '0'; -- bus read |
elsif (DC_DIRTY_I = '1') then -- d-cache modification -> copy page to main memory |
ARB_STATE_NXT <= ASSIGN_D_PAGE; |
DC_ADR_BUF_NXT <= DC_BSA_I; |
WB_ADR_BUF_NXT <= DC_BSA_I; |
BASE_BUF_NXT <= DC_BSA_I; |
ARB_STATE_NXT <= UPLOAD_D_PAGE; |
WE_FLAG_NXT <= '1'; -- bus write |
FREEZE_FLAG_NXT <= '1'; |
PAGE_SEL_NXT <= (others => '0'); |
end if; |
|
when DOWNLOAD_I_PAGE => -- get new i-cache page |
------------------------------------------------------------------------------- |
WB_TGC_O(5) <= '1'; -- indicate instruction transfer |
WB_CTI_O <= WB_INC_BST_CYC; |
WB_CYC_O <= '1'; -- valid cycle |
WB_STB_O <= '1'; -- valid transfer |
IC_UPDATE_O <= '1'; -- i-cache update |
WB_TGC_O(5) <= '1'; -- indicate instruction transfer |
WB_TGC_O(6) <= '0'; -- mem access |
WB_CTI_O <= WB_INC_BST_CYC; |
WB_CYC_O <= '1'; -- valid cycle |
WB_STB_O <= '1'; -- valid transfer |
TIMEOUT_CNT_NXT <= Std_Logic_Vector(unsigned(TIMEOUT_CNT) + 1); |
if (IC_ADR_BUF >= Std_Logic_Vector(unsigned(BASE_BUF) + I_CACHE_PAGE_SIZE*4)) and |
(WB_ACK_BUF = '1') then -- cycle complete? |
WB_CTI_O <= WB_BST_END_CYC; |
ARB_STATE_NXT <= END_TRANSFER; |
IC_MSS_ACK_O <= '1'; -- ack miss! |
elsif (WB_ADR_BUF /= Std_Logic_Vector(unsigned(BASE_BUF) - 4 + I_CACHE_PAGE_SIZE*4)) then |
WB_ADR_BUF_NXT <= Std_Logic_Vector(unsigned(WB_ADR_BUF) + 4); -- inc counter |
end if; |
307,6 → 327,7
if (TIMEOUT_CNT >= C_BUS_CYCC_I) then |
WB_CTI_O <= WB_BST_END_CYC; |
ARB_STATE_NXT <= END_TRANSFER; |
IC_MSS_ACK_O <= '1'; -- ack miss! |
I_ABORT_O <= '1'; |
FREEZE_DIS_NXT <= '1'; |
end if; |
313,17 → 334,18
|
when DOWNLOAD_D_PAGE => -- get new d-cache page |
------------------------------------------------------------------------------- |
WB_TGC_O(5) <= '0'; -- indicate data transfer |
WB_CTI_O <= WB_INC_BST_CYC; |
WB_CYC_O <= '1'; -- valid cycle |
WB_STB_O <= '1'; -- valid transfer |
DC_UPDATE_O <= '1'; -- d-cache update |
DC_WE_O <= '1'; -- cache write access |
WB_TGC_O(5) <= '0'; -- indicate data transfer |
WB_TGC_O(6) <= '0'; -- mem access |
WB_CTI_O <= WB_INC_BST_CYC; |
WB_CYC_O <= '1'; -- valid cycle |
WB_STB_O <= '1'; -- valid transfer |
DC_WE_O <= '1'; -- cache write access |
TIMEOUT_CNT_NXT <= Std_Logic_Vector(unsigned(TIMEOUT_CNT) + 1); |
if (DC_ADR_BUF >= Std_Logic_Vector(unsigned(BASE_BUF) + D_CACHE_PAGE_SIZE*4)) and |
(WB_ACK_BUF = '1') then -- cycle complete? |
WB_CTI_O <= WB_BST_END_CYC; |
ARB_STATE_NXT <= END_TRANSFER; |
DC_MSS_ACK_O <= '1'; -- ack miss! |
elsif (WB_ADR_BUF /= Std_Logic_Vector(unsigned(BASE_BUF) - 4 + D_CACHE_PAGE_SIZE*4)) then |
WB_ADR_BUF_NXT <= Std_Logic_Vector(unsigned(WB_ADR_BUF) + 4); -- inc counter |
end if; |
335,46 → 357,62
if (TIMEOUT_CNT >= C_BUS_CYCC_I) then |
WB_CTI_O <= WB_BST_END_CYC; |
ARB_STATE_NXT <= END_TRANSFER; |
DC_MSS_ACK_O <= '1'; -- ack miss! |
D_ABORT_O <= '1'; |
FREEZE_DIS_NXT <= '1'; |
end if; |
|
when ASSIGN_D_PAGE => -- find dirty page in cache and get base address |
when IO_REQUEST => -- read/write IO location (single 32-bit word) |
------------------------------------------------------------------------------- |
if (DC_DRT_SEL_I = '1') then |
FREEZE_FLAG_NXT <= '1'; |
DC_ADR_BUF_NXT <= DC_BSA_I; |
WB_ADR_BUF_NXT <= DC_BSA_I; |
BASE_BUF_NXT <= DC_BSA_I; |
ARB_STATE_NXT <= UPLOAD_D_PAGE; |
else |
PAGE_SEL_NXT <= Std_Logic_Vector(unsigned(PAGE_SEL) + 1); -- analyse next page |
WB_TGC_O(5) <= '0'; -- indicate data transfer |
WB_TGC_O(6) <= '1'; -- io access |
WB_CTI_O <= WB_CON_BST_CYC; |
WB_CYC_O <= '1'; -- valid cycle |
WB_STB_O <= '1'; -- valid transfer |
DC_WE_O <= '1'; -- dummy cache write access |
DC_ADR_BUF_NXT <= WB_ADR_BUF; |
TIMEOUT_CNT_NXT <= Std_Logic_Vector(unsigned(TIMEOUT_CNT) + 1); |
if (WB_ACK_BUF = '1') then -- cycle complete? |
WB_CTI_O <= WB_BST_END_CYC; |
ARB_STATE_NXT <= END_TRANSFER; |
DC_DRT_ACK_O <= '1'; -- ack of pseudo dirty signal |
DC_MSS_ACK_O <= '1'; -- ack of pseudo miss signal |
end if; |
if (TIMEOUT_CNT >= C_BUS_CYCC_I) then |
WB_CTI_O <= WB_BST_END_CYC; |
ARB_STATE_NXT <= END_TRANSFER; |
DC_DRT_ACK_O <= '1'; -- ack of pseudo dirty signal |
DC_MSS_ACK_O <= '1'; -- ack of pseudo miss signal |
D_ABORT_O <= '1'; |
FREEZE_DIS_NXT <= '1'; |
end if; |
|
when UPLOAD_D_PAGE => -- copy d-cache page to main memory |
------------------------------------------------------------------------------- |
WB_TGC_O(5) <= '0'; -- indicate data transfer |
WB_TGC_O(6) <= '0'; -- mem access |
WB_CTI_O <= WB_INC_BST_CYC; |
WB_CYC_O <= VA_CYC_BUF; -- valid cycle, delayed one cycle |
WB_STB_O <= VA_CYC_BUF; -- valid transfer, delayed one cycle |
WB_WE_O <= '1'; -- wishbone write access |
DC_UPDATE_O <= '1'; -- d-cache update |
DC_CS_O <= '1'; -- enable data read back |
DC_WE_O <= '0'; -- cache read access |
TIMEOUT_CNT_NXT <= Std_Logic_Vector(unsigned(TIMEOUT_CNT) + 1); |
if (DC_ADR_BUF >= Std_Logic_Vector(unsigned(BASE_BUF) + D_CACHE_PAGE_SIZE*4)) and |
(WB_ACK_BUF = '1') then -- cycle complete? |
WB_CTI_O <= WB_BST_END_CYC; |
ARB_STATE_NXT <= END_TRANSFER; |
FREEZE_FLAG_NXT <= '1'; |
else |
WB_ADR_BUF_NXT <= DC_ADR_BUF; |
DC_ADR_BUF_NXT <= Std_Logic_Vector(unsigned(DC_ADR_BUF) + 4); -- inc counter |
VA_CYC_BUF_NXT <= '1'; |
WB_ADR_BUF_NXT <= DC_ADR_BUF; |
VA_CYC_BUF_NXT <= '1'; |
if (WB_ADR_BUF = Std_Logic_Vector(unsigned(BASE_BUF) + (D_CACHE_PAGE_SIZE-1)*4)) then |
if (WB_ACK_BUF = '1') then -- cycle complete? |
WB_CTI_O <= WB_BST_END_CYC; |
ARB_STATE_NXT <= END_TRANSFER; |
DC_DRT_ACK_O <= '1'; -- ack of dirty signal |
VA_CYC_BUF_NXT <= '0'; |
end if; |
end if; |
if (DC_ADR_BUF /= Std_Logic_Vector(unsigned(BASE_BUF) + (D_CACHE_PAGE_SIZE-1)*4)) then |
DC_ADR_BUF_NXT <= Std_Logic_Vector(unsigned(DC_ADR_BUF) + 4); -- inc pointer |
end if; |
if (TIMEOUT_CNT >= C_BUS_CYCC_I) then |
WB_CTI_O <= WB_BST_END_CYC; |
ARB_STATE_NXT <= END_TRANSFER; |
DC_DRT_ACK_O <= '1'; -- ack dirty signal |
D_ABORT_O <= '1'; |
FREEZE_DIS_NXT <= '1'; |
end if; |
381,11 → 419,11
|
when END_TRANSFER => -- terminate cycle |
------------------------------------------------------------------------------- |
TIMEOUT_CNT_NXT <= (others => '0'); |
if (DC_DIRTY_I = '1') then -- another dirty page in cache |
ARB_STATE_NXT <= ASSIGN_D_PAGE; |
ARB_STATE_NXT <= UPLOAD_D_PAGE; |
else -- finish transfer |
FREEZE_FLAG_NXT <= '0'; |
FREEZE_DIS_NXT <= '0'; |
ARB_STATE_NXT <= IDLE; |
end if; |
|
/storm_core/rtl/CORE.vhd
21,7 → 21,7
-- # | -> stnolting@googlemail.com # |
-- # | -> stnolting@web.de # |
-- # *************************************************************************************************** # |
-- # Last modified: 10.01.2012 # |
-- # Last modified: 08.02.2012 # |
-- ####################################################################################################### |
|
library IEEE; |
44,7 → 44,6
-- ############################################################################################### |
|
RES : in STD_LOGIC; -- global reset input (high active) |
F_RST : out STD_LOGIC; -- force system reset |
CLK : in STD_LOGIC; -- global clock input |
|
-- ############################################################################################### |
69,6 → 68,8
D_CACHE_FLUSH : out STD_LOGIC; -- flush d-cache |
D_CACHE_MISS : in STD_LOGIC; -- d-cache miss |
D_CACHE_HIT : in STD_LOGIC; -- d-cache hit |
D_CACHE_FRESH : out STD_LOGIC; -- refresh d-cache |
D_CACHE_CIO : out STD_LOGIC; -- enable cached IO |
|
-- ############################################################################################### |
-- ## Instruction Cache Interface ## |
81,6 → 82,7
I_CACHE_CLEAR : out STD_LOGIC; -- clear i-cache |
I_CACHE_MISS : in STD_LOGIC; -- i-cache miss |
I_CACHE_HIT : in STD_LOGIC; -- i-cache hit |
I_CACHE_FRESH : out STD_LOGIC; -- refresh i-cache |
|
-- ############################################################################################### |
-- ## General Control Lines ## |
88,7 → 90,8
|
C_BUS_CYCC_O : out STD_LOGIC_VECTOR(15 downto 0); -- max bus cycle length |
C_WTHRU_O : out STD_LOGIC; -- write through |
C_BGWB_O : out STD_LOGIC; -- background write-back |
IO_PORT_OUT : out STD_LOGIC_VECTOR(15 downto 0); -- direct output |
IO_PORT_IN : in STD_LOGIC_VECTOR(15 downto 0); -- direct input |
|
-- ############################################################################################### |
-- ## Interrupt Interface ## |
155,7 → 158,6
signal MCR_STOP_IF : STD_LOGIC; -- stop instruction fetch |
signal PIPE_EMPTY : STD_LOGIC; -- pipeline is empty |
signal D_MEM_MODE : STD_LOGIC_VECTOR(04 downto 0); -- mode for data mem access |
signal MR_FREEZE : STD_LOGIC; -- freeze core until reset |
|
begin |
-- Global CLOCK, RESET and HALT Networks ----------------------------------------------------- |
162,7 → 164,7
-- ---------------------------------------------------------------------------------------------- |
gCLK <= CLK; |
gRES <= RES; |
G_HALT <= HALT or MR_FREEZE; -- maybe try clock gating?! |
G_HALT <= HALT; -- maybe try clock gating?! |
|
|
|
218,7 → 220,6
CLK_I => gCLK, -- global clock net |
G_HALT_I => G_HALT, -- global halt signal |
RST_I => gRES, -- global active high reset |
F_RST_O => F_RST, -- force system reset |
CTRL_I => EX1_CTRL, -- stage control |
HALT_I => PC_HALT, -- halt program counter |
PEND_XI_REQ_O => MCR_STOP_IF, -- pending ext. int request |
241,12 → 242,15
DC_CLEAR_O => D_CACHE_CLEAR, -- clear d-cache |
DC_HIT_I => D_CACHE_HIT, -- d-cache hit access |
DC_MISS_I => D_CACHE_MISS, -- d-cache miss acess |
DC_FRESH_O => D_CACHE_FRESH, -- d-cache auto-refresh |
IC_FRESH_O => I_CACHE_FRESH, -- i-cache auto-refresh |
IC_CLEAR_O => I_CACHE_CLEAR, -- clear i-cache |
IC_HIT_I => I_CACHE_HIT, -- i-cache hit access |
IC_MISS_I => I_CACHE_MISS, -- i-cache miss accessear i-cache |
C_WTHRU_O => C_WTHRU_O, -- write through |
C_BGWB_O => C_BGWB_O, -- background write-back |
SC_FREEZE_O => MR_FREEZE -- freeze core until reset |
CACHED_IO_O => D_CACHE_CIO, -- en cached IO |
IO_PORT_O => IO_PORT_OUT, -- direct output |
IO_PORT_I => IO_PORT_IN -- direct input |
); |
|
|
/storm_core/rtl/CORE_PKG.vhd
5,7 → 5,7
-- # This file contains all needed components and # |
-- # system parameters for the STORM Core processor. # |
-- # +-------------------------------------------------+ # |
-- # Last modified: 21.01.2012 # |
-- # Last modified: 15.02.2012 # |
-- ####################################################### |
|
library IEEE; |
167,65 → 167,74
constant CP_CSTAT : natural := 8; -- cache statistics register |
constant CP_TIME_THRES : natural := 9; -- Internal timer, threshold value |
constant CP_TIME_COUNT : natural := 10; -- Internal timer, counter |
constant CP_LFSR_POLY : natural := 12; -- Internal lfsr, polynomial |
constant CP_LFSR_DATA : natural := 13; -- Internal lfsr, shift register |
constant CP_LFSR_POLY : natural := 11; -- Internal lfsr, polynomial |
constant CP_LFSR_DATA : natural := 12; -- Internal lfsr, shift register |
constant CP_IO_PORT : natural := 13; -- Internal IO port |
|
-- INTERNAL IO PORT REGISTER -------------------------------------------------------------- |
-- ------------------------------------------------------------------------------------------- |
constant CP_IO_O_LSB : natural := 0; -- output LSB |
constant CP_IO_O_MSB : natural := 15; -- output MSB |
constant CP_IO_I_LSB : natural := 16; -- input LSB |
constant CP_IO_I_MSB : natural := 31; -- input MSB |
|
-- INTERNAL COPROCESSOR, SYSTEM CONTROL REGISTER 0 ---------------------------------------- |
-- ------------------------------------------------------------------------------------------- |
constant CSCR0_FDC : natural := 0; -- flush d-cache |
constant CSCR0_CDC : natural := 1; -- clear d-cache |
constant CSCR0_CIC : natural := 2; -- flush i-cache |
constant CSCR0_CWT : natural := 3; -- cache write-thru enable |
constant CSCR0_CBG : natural := 4; -- cache background write-back |
constant CSCR0_RST : natural := 5; -- force system reset |
constant CSCR0_FRZ : natural := 6; -- freeze processor until reset |
constant CSCR0_TEN : natural := 7; -- internal timer enable |
constant CSCR0_TIE : natural := 8; -- internal timer interrupt enable |
constant CSCR0_TIM : natural := 9; -- internal timer interrupt mode (0:IRQ/1:FIQ) |
constant CSCR0_LFSRE : natural := 10; -- internal LFSR enable |
constant CSCR0_LFSRM : natural := 11; -- internal LFSR update mode (0:auto/1:access) |
constant CSCR0_LFSRD : natural := 12; -- internal LFSR direction (0:right/1:left)) |
constant CSCR0_CWT : natural := 3; -- d-cache write-thru enable |
constant CSCR0_DAR : natural := 4; -- auto pre-refresh d-cache for new access |
constant CSCR0_IAR : natural := 5; -- auto pre-refresh i-cache for new access |
constant CSCR0_CIO : natural := 6; -- enable cached IO |
|
constant CSCR0_TEN : natural := 10; -- internal timer enable |
constant CSCR0_TIE : natural := 11; -- internal timer interrupt enable |
constant CSCR0_TIM : natural := 12; -- internal timer interrupt mode (0:IRQ/1:FIQ) |
constant CSCR0_LFSRE : natural := 13; -- internal LFSR enable |
constant CSCR0_LFSRM : natural := 14; -- internal LFSR update mode (0:auto/1:access) |
constant CSCR0_LFSRD : natural := 15; -- internal LFSR direction (0:right/1:left)) |
constant CSCR0_MBC_0 : natural := 16; -- max bus cycle length bit 0 |
constant CSCR0_MBC_15 : natural := 31; -- max bus cycle length bit 15 |
|
-- INTERRUPT VECTORS ---------------------------------------------------------------------- |
-- ------------------------------------------------------------------------------------------- |
constant RES_INT_VEC : STD_LOGIC_VECTOR(4 downto 0) := "00000"; -- hardware reset |
constant UND_INT_VEC : STD_LOGIC_VECTOR(4 downto 0) := "00100"; -- going to Undefined32_MODE |
constant SWI_INT_VEC : STD_LOGIC_VECTOR(4 downto 0) := "01000"; -- going to Supervisor32_MODE |
constant PRF_INT_VEC : STD_LOGIC_VECTOR(4 downto 0) := "01100"; -- going to Abort32_MODE |
constant DAT_INT_VEC : STD_LOGIC_VECTOR(4 downto 0) := "10000"; -- going to Abort32_MODE |
constant IRQ_INT_VEC : STD_LOGIC_VECTOR(4 downto 0) := "11000"; -- going to IRQ32_MODE |
constant FIQ_INT_VEC : STD_LOGIC_VECTOR(4 downto 0) := "11100"; -- going to FIQ32_MODE |
constant RES_INT_VEC : STD_LOGIC_VECTOR(4 downto 0) := "00000"; -- hardware reset |
constant UND_INT_VEC : STD_LOGIC_VECTOR(4 downto 0) := "00100"; -- going to Undefined32_MODE |
constant SWI_INT_VEC : STD_LOGIC_VECTOR(4 downto 0) := "01000"; -- going to Supervisor32_MODE |
constant PRF_INT_VEC : STD_LOGIC_VECTOR(4 downto 0) := "01100"; -- going to Abort32_MODE |
constant DAT_INT_VEC : STD_LOGIC_VECTOR(4 downto 0) := "10000"; -- going to Abort32_MODE |
constant IRQ_INT_VEC : STD_LOGIC_VECTOR(4 downto 0) := "11000"; -- going to IRQ32_MODE |
constant FIQ_INT_VEC : STD_LOGIC_VECTOR(4 downto 0) := "11100"; -- going to FIQ32_MODE |
|
-- PROCESSOR MODE CODES ------------------------------------------------------------------- |
-- ------------------------------------------------------------------------------------------- |
constant User32_MODE : STD_LOGIC_VECTOR(4 downto 0) := "10000"; |
constant FIQ32_MODE : STD_LOGIC_VECTOR(4 downto 0) := "10001"; |
constant IRQ32_MODE : STD_LOGIC_VECTOR(4 downto 0) := "10010"; |
constant Supervisor32_MODE : STD_LOGIC_VECTOR(4 downto 0) := "10011"; |
constant Abort32_MODE : STD_LOGIC_VECTOR(4 downto 0) := "10111"; |
constant Undefined32_MODE : STD_LOGIC_VECTOR(4 downto 0) := "11011"; |
constant System32_MODE : STD_LOGIC_VECTOR(4 downto 0) := "11111"; |
constant User32_MODE : STD_LOGIC_VECTOR(4 downto 0) := "10000"; |
constant FIQ32_MODE : STD_LOGIC_VECTOR(4 downto 0) := "10001"; |
constant IRQ32_MODE : STD_LOGIC_VECTOR(4 downto 0) := "10010"; |
constant Supervisor32_MODE: STD_LOGIC_VECTOR(4 downto 0) := "10011"; |
constant Abort32_MODE : STD_LOGIC_VECTOR(4 downto 0) := "10111"; |
constant Undefined32_MODE : STD_LOGIC_VECTOR(4 downto 0) := "11011"; |
constant System32_MODE : STD_LOGIC_VECTOR(4 downto 0) := "11111"; |
|
-- CONDITION OPCODES ---------------------------------------------------------------------- |
-- ------------------------------------------------------------------------------------------- |
constant COND_EQ : STD_LOGIC_VECTOR(3 downto 0) := "0000"; |
constant COND_NE : STD_LOGIC_VECTOR(3 downto 0) := "0001"; |
constant COND_CS : STD_LOGIC_VECTOR(3 downto 0) := "0010"; |
constant COND_CC : STD_LOGIC_VECTOR(3 downto 0) := "0011"; |
constant COND_MI : STD_LOGIC_VECTOR(3 downto 0) := "0100"; |
constant COND_PL : STD_LOGIC_VECTOR(3 downto 0) := "0101"; |
constant COND_VS : STD_LOGIC_VECTOR(3 downto 0) := "0110"; |
constant COND_VC : STD_LOGIC_VECTOR(3 downto 0) := "0111"; |
constant COND_HI : STD_LOGIC_VECTOR(3 downto 0) := "1000"; |
constant COND_LS : STD_LOGIC_VECTOR(3 downto 0) := "1001"; |
constant COND_GE : STD_LOGIC_VECTOR(3 downto 0) := "1010"; |
constant COND_LT : STD_LOGIC_VECTOR(3 downto 0) := "1011"; |
constant COND_GT : STD_LOGIC_VECTOR(3 downto 0) := "1100"; |
constant COND_LE : STD_LOGIC_VECTOR(3 downto 0) := "1101"; |
constant COND_AL : STD_LOGIC_VECTOR(3 downto 0) := "1110"; |
constant COND_NV : STD_LOGIC_VECTOR(3 downto 0) := "1111"; |
constant COND_EQ : STD_LOGIC_VECTOR(3 downto 0) := "0000"; |
constant COND_NE : STD_LOGIC_VECTOR(3 downto 0) := "0001"; |
constant COND_CS : STD_LOGIC_VECTOR(3 downto 0) := "0010"; |
constant COND_CC : STD_LOGIC_VECTOR(3 downto 0) := "0011"; |
constant COND_MI : STD_LOGIC_VECTOR(3 downto 0) := "0100"; |
constant COND_PL : STD_LOGIC_VECTOR(3 downto 0) := "0101"; |
constant COND_VS : STD_LOGIC_VECTOR(3 downto 0) := "0110"; |
constant COND_VC : STD_LOGIC_VECTOR(3 downto 0) := "0111"; |
constant COND_HI : STD_LOGIC_VECTOR(3 downto 0) := "1000"; |
constant COND_LS : STD_LOGIC_VECTOR(3 downto 0) := "1001"; |
constant COND_GE : STD_LOGIC_VECTOR(3 downto 0) := "1010"; |
constant COND_LT : STD_LOGIC_VECTOR(3 downto 0) := "1011"; |
constant COND_GT : STD_LOGIC_VECTOR(3 downto 0) := "1100"; |
constant COND_LE : STD_LOGIC_VECTOR(3 downto 0) := "1101"; |
constant COND_AL : STD_LOGIC_VECTOR(3 downto 0) := "1110"; |
constant COND_NV : STD_LOGIC_VECTOR(3 downto 0) := "1111"; |
|
-- COOL WORKING MUSIC --------------------------------------------------------------------- |
-- ------------------------------------------------------------------------------------------- |
255,6 → 264,8
-- Brad Paisley - Letter To Me |
-- Montgomery Gentry - Where I Come From |
-- Dixie Chicks - Ready To Run |
-- Eagle-Eye Cherry - Skull Tattoo |
-- Jake Owen - Barefoot Blue Jean Night |
|
-- INTERNAL MNEMONICS --------------------------------------------------------------------- |
-- ------------------------------------------------------------------------------------------- |
292,7 → 303,6
CLK_I : in STD_LOGIC; |
G_HALT_I : in STD_LOGIC; |
RST_I : in STD_LOGIC; |
F_RST_O : out STD_LOGIC; |
CTRL_I : in STD_LOGIC_VECTOR(CTRL_MSB downto 0); |
HALT_I : in STD_LOGIC; |
PEND_XI_REQ_O : out STD_LOGIC; |
315,12 → 325,15
DC_CLEAR_O : out STD_LOGIC; |
DC_HIT_I : in STD_LOGIC; |
DC_MISS_I : in STD_LOGIC; |
DC_FRESH_O : out STD_LOGIC; |
IC_FRESH_O : out STD_LOGIC; |
IC_CLEAR_O : out STD_LOGIC; |
IC_HIT_I : in STD_LOGIC; |
IC_MISS_I : in STD_LOGIC; |
C_WTHRU_O : out STD_LOGIC; |
C_BGWB_O : out STD_LOGIC; |
SC_FREEZE_O : out STD_LOGIC |
CACHED_IO_O : out STD_LOGIC; |
IO_PORT_O : out STD_LOGIC_VECTOR(15 downto 0); |
IO_PORT_I : in STD_LOGIC_VECTOR(15 downto 0) |
); |
end component; |
|
526,12 → 539,10
CACHE_PAGES : natural := 4; |
LOG2_CACHE_PAGES : natural := 2; |
PAGE_SIZE : natural := 64; -- #words |
LOG2_PAGE_SIZE : natural := 6; |
READ_ONLY : boolean := FALSE |
LOG2_PAGE_SIZE : natural := 6 |
); |
port ( |
CORE_CLK_I : in STD_LOGIC; |
BUS_CLK_I : in STD_LOGIC; |
RST_I : in STD_LOGIC; |
HALT_I : in STD_LOGIC; |
P_CS_I : in STD_LOGIC; |
544,12 → 555,12
B_ADR_I : in STD_LOGIC_VECTOR(31 downto 0); |
B_DATA_I : in STD_LOGIC_VECTOR(31 downto 0); |
B_DATA_O : out STD_LOGIC_VECTOR(31 downto 0); |
B_DQ_I : in STD_LOGIC_VECTOR(01 downto 0); |
B_WE_I : in STD_LOGIC; |
B_PG_SEL_I : in STD_LOGIC_VECTOR(LOG2_CACHE_PAGES-1 downto 0); |
B_DRT_SEL_O : out STD_LOGIC; |
B_BSA_O : out STD_LOGIC_VECTOR(31 downto 0); |
C_UPDATE_I : in STD_LOGIC; |
B_DRT_ACK_I : in STD_LOGIC; |
B_MSS_ACK_I : in STD_LOGIC; |
B_IO_ACC_I : in STD_LOGIC; |
C_FRESH_I : in STD_LOGIC; |
C_FLUSH_I : in STD_LOGIC; |
C_CLEAR_I : in STD_LOGIC; |
C_MISS_O : out STD_LOGIC; |
570,11 → 581,12
D_CACHE_PAGES : natural; |
LOG2_D_CACHE_PAGES : natural; |
D_CACHE_PAGE_SIZE : natural; |
LOG2_D_CACHE_PAGE_SIZE : natural |
LOG2_D_CACHE_PAGE_SIZE : natural; |
IO_UC_BEGIN : STD_LOGIC_VECTOR(31 downto 0); |
IO_UC_END : STD_LOGIC_VECTOR(31 downto 0) |
); |
port ( |
CORE_CLK_I : in STD_LOGIC; |
BUS_CLK_I : in STD_LOGIC; |
RST_I : in STD_LOGIC; |
FREEZE_STORM_O : out STD_LOGIC; |
STORM_MODE_I : in STD_LOGIC_VECTOR(04 downto 0); |
581,33 → 593,34
D_ABORT_O : out STD_LOGIC; |
I_ABORT_O : out STD_LOGIC; |
C_BUS_CYCC_I : in STD_LOGIC_VECTOR(15 downto 0); |
C_BGWB_I : in STD_LOGIC; |
CACHED_IO_I : in STD_LOGIC; |
DC_CS_O : out STD_LOGIC; |
DC_P_ADR_I : in STD_LOGIC_VECTOR(31 downto 0); |
DC_P_CS_I : in STD_LOGIC; |
DC_P_WE_I : in STD_LOGIC; |
DC_ADR_O : out STD_LOGIC_VECTOR(31 downto 0); |
DC_DATA_O : out STD_LOGIC_VECTOR(31 downto 0); |
DC_DATA_I : in STD_LOGIC_VECTOR(31 downto 0); |
DC_DQ_O : out STD_LOGIC_VECTOR(01 downto 0); |
DC_WE_O : out STD_LOGIC; |
DC_UPDATE_O : out STD_LOGIC; |
DC_MISS_I : in STD_LOGIC; |
DC_DIRTY_I : in STD_LOGIC; |
DC_PG_SEL_O : out STD_LOGIC_VECTOR(LOG2_D_CACHE_PAGES-1 downto 0); |
DC_DRT_SEL_I : in STD_LOGIC; |
DC_BSA_I : in STD_LOGIC_VECTOR(31 downto 0); |
DC_DRT_ACK_O : out STD_LOGIC; |
DC_MSS_ACK_O : out STD_LOGIC; |
DC_IO_ACC_O : out STD_LOGIC; |
IC_CS_O : out STD_LOGIC; |
IC_P_ADR_I : in STD_LOGIC_VECTOR(31 downto 0); |
IC_P_CS_I : in STD_LOGIC; |
IC_ADR_O : out STD_LOGIC_VECTOR(31 downto 0); |
IC_DATA_O : out STD_LOGIC_VECTOR(31 downto 0); |
IC_DQ_O : out STD_LOGIC_VECTOR(01 downto 0); |
IC_WE_O : out STD_LOGIC; |
IC_UPDATE_O : out STD_LOGIC; |
IC_MISS_I : in STD_LOGIC; |
IC_MSS_ACK_O : out STD_LOGIC; |
WB_ADR_O : out STD_LOGIC_VECTOR(31 downto 0); |
WB_CTI_O : out STD_LOGIC_VECTOR(02 downto 0); |
WB_DATA_O : out STD_LOGIC_VECTOR(31 downto 0); |
WB_SEL_O : out STD_LOGIC_VECTOR(03 downto 0); |
WB_TGC_O : out STD_LOGIC_VECTOR(05 downto 0); |
WB_TGC_O : out STD_LOGIC_VECTOR(06 downto 0); |
WB_WE_O : out STD_LOGIC; |
WB_CYC_O : out STD_LOGIC; |
WB_STB_O : out STD_LOGIC; |
625,7 → 638,6
); |
port ( |
RES : in STD_LOGIC; |
F_RST : out STD_LOGIC; |
CLK : in STD_LOGIC; |
HALT : in STD_LOGIC; |
MODE : out STD_LOGIC_VECTOR(04 downto 0); |
640,6 → 652,8
D_CACHE_FLUSH : out STD_LOGIC; |
D_CACHE_MISS : in STD_LOGIC; |
D_CACHE_HIT : in STD_LOGIC; |
D_CACHE_FRESH : out STD_LOGIC; |
D_CACHE_CIO : out STD_LOGIC; |
I_CACHE_REQ : out STD_LOGIC; |
I_CACHE_ADR : out STD_LOGIC_VECTOR(31 downto 0); |
I_CACHE_RD_DTA : in STD_LOGIC_VECTOR(31 downto 0); |
647,9 → 661,11
I_CACHE_CLEAR : out STD_LOGIC; |
I_CACHE_MISS : in STD_LOGIC; |
I_CACHE_HIT : in STD_LOGIC; |
I_CACHE_FRESH : out STD_LOGIC; |
C_BUS_CYCC_O : out STD_LOGIC_VECTOR(15 downto 0); |
C_WTHRU_O : out STD_LOGIC; |
C_BGWB_O : out STD_LOGIC; |
IO_PORT_OUT : out STD_LOGIC_VECTOR(15 downto 0); |
IO_PORT_IN : in STD_LOGIC_VECTOR(15 downto 0); |
IRQ : in STD_LOGIC; |
FIQ : in STD_LOGIC |
); |
/storm_core/rtl/FLOW_CTRL.vhd
3,7 → 3,7
-- # *************************************************** # |
-- # Operation Flow Control Unit # |
-- # *************************************************** # |
-- # Last modified: 25.01.2012 # |
-- # Last modified: 09.02.2012 # |
-- ####################################################### |
|
library IEEE; |
205,17 → 205,19
INSTR_REG <= NOP_CMD; |
INSTR_BUF <= NOP_CMD; |
INS_BUF_SEL <= '0'; |
elsif (WR_IR_EN = '1') and (G_HALT_I = '0') then |
INS_BUF_SEL <= INS_BUF_SEL_NXT; |
if (INS_BUF_SEL = '0') then |
INSTR_BUF <= INSTR_I; |
end if; |
if (IR_HALT = '0') then |
else |
if (WR_IR_EN = '1') and (G_HALT_I = '0') then |
INS_BUF_SEL <= INS_BUF_SEL_NXT; |
if (INS_BUF_SEL = '0') then |
INSTR_REG <= INSTR_I; |
else |
INSTR_REG <= INSTR_BUF; |
INSTR_BUF <= INSTR_I; |
end if; |
if (IR_HALT = '0') then |
if (INS_BUF_SEL = '0') then |
INSTR_REG <= INSTR_I; |
else |
INSTR_REG <= INSTR_BUF; |
end if; |
end if; |
end if; |
end if; |
end if; |
/storm_core/rtl/MC_SYS.vhd
1,9 → 1,9
-- ####################################################### |
-- # < STORM CORE PROCESSOR by Stephan Nolting > # |
-- # *************************************************** # |
-- # Machine Control Register System # |
-- # Machine Control System # |
-- # *************************************************** # |
-- # Last modified: 23.01.2012 # |
-- # Last modified: 15.02.2012 # |
-- ####################################################### |
|
library IEEE; |
27,7 → 27,6
CLK_I : in STD_LOGIC; -- global clock line |
G_HALT_I : in STD_LOGIC; -- global halt line |
RST_I : in STD_LOGIC; -- global reset line, high active |
F_RST_O : out STD_LOGIC; -- force system reset |
|
-- ############################################################################################### |
-- ## Global Control ## |
72,17 → 71,21
DC_CLEAR_O : out STD_LOGIC; -- clear d-cache |
DC_HIT_I : in STD_LOGIC; -- d-cache hit access |
DC_MISS_I : in STD_LOGIC; -- d-cache miss acess |
DC_FRESH_O : out STD_LOGIC; -- d-cache auto-refresh |
IC_FRESH_O : out STD_LOGIC; -- i-cache auto-refresh |
IC_CLEAR_O : out STD_LOGIC; -- clear i-cache |
IC_HIT_I : in STD_LOGIC; -- i-cache hit access |
IC_MISS_I : in STD_LOGIC; -- i-cache miss access |
C_WTHRU_O : out STD_LOGIC; -- write through |
C_BGWB_O : out STD_LOGIC; -- background write-back |
CACHED_IO_O : out STD_LOGIC; -- en cached IO |
|
-- ############################################################################################### |
-- ## System Control ## |
-- ############################################################################################### |
|
SC_FREEZE_O : out STD_LOGIC -- freeze processor until reset |
IO_PORT_O : out STD_LOGIC_VECTOR(15 downto 0); -- direct output |
IO_PORT_I : in STD_LOGIC_VECTOR(15 downto 0) -- direct input |
|
); |
end MC_SYS; |
|
142,15 → 145,15
begin |
if rising_edge(CLK_I) then |
if (RST_I = '1') then |
FIQ_TAKEN <= '0'; |
IRQ_TAKEN <= '0'; |
DAB_TAKEN <= '0'; |
IAB_TAKEN <= '0'; |
FIQ_TAKEN <= '0'; |
IRQ_TAKEN <= '0'; |
DAB_TAKEN <= '0'; |
IAB_TAKEN <= '0'; |
elsif (G_HALT_I = '0')then |
FIQ_TAKEN <= FIQ_TAKEN_NXT and (not FIQ_TAKEN); |
IRQ_TAKEN <= IRQ_TAKEN_NXT and (not IRQ_TAKEN); |
DAB_TAKEN <= DAB_TAKEN_NXT and (not DAB_TAKEN); |
IAB_TAKEN <= IAB_TAKEN_NXT and (not IAB_TAKEN); |
FIQ_TAKEN <= FIQ_TAKEN_NXT and (not FIQ_TAKEN); |
IRQ_TAKEN <= IRQ_TAKEN_NXT and (not IRQ_TAKEN); |
DAB_TAKEN <= DAB_TAKEN_NXT and (not DAB_TAKEN); |
IAB_TAKEN <= IAB_TAKEN_NXT and (not IAB_TAKEN); |
end if; |
end if; |
end process EXT_INT_SYNC_REG; |
274,32 → 277,42
FLAG_BUS(SREG_DAB_DIS) <= MCR_CMSR(SREG_DAB_DIS); -- keep current interrupt settings |
FLAG_BUS(SREG_IAB_DIS) <= MCR_CMSR(SREG_IAB_DIS); -- keep current interrupt settings |
|
-- interrupt hirarchie / priority list -- |
if (DAB_TAKEN = '1') then -- data fetch abort |
--- Priority 1: Data Fetch Abort --- |
if (DAB_TAKEN = '1') then |
INT_VEC <= DAT_INT_VEC; |
FLAG_BUS(SREG_MODE_4 downto SREG_MODE_0) <= Abort32_MODE; |
NEW_MODE <= Abort32_MODE; |
FLAG_BUS(SREG_DAB_DIS) <= '1'; -- disable DAB |
elsif (FIQ_TAKEN = '1') then -- fast interrupt request |
|
--- Priority 2: Fast Interrupt Request --- |
elsif (FIQ_TAKEN = '1') then |
INT_VEC <= FIQ_INT_VEC; |
FLAG_BUS(SREG_MODE_4 downto SREG_MODE_0) <= FIQ32_MODE; |
NEW_MODE <= FIQ32_MODE; |
FLAG_BUS(SREG_FIQ_DIS) <= '1'; -- disable FIQ |
elsif (IRQ_TAKEN = '1') then -- interrupt request |
|
--- Priority 3: Interrupt Request --- |
elsif (IRQ_TAKEN = '1') then |
INT_VEC <= IRQ_INT_VEC; |
FLAG_BUS(SREG_MODE_4 downto SREG_MODE_0) <= IRQ32_MODE; |
NEW_MODE <= IRQ32_MODE; |
FLAG_BUS(SREG_IRQ_DIS) <= '1'; -- disable IRQ |
elsif (IAB_TAKEN = '1') then -- instruction fetch abort |
|
--- Priority 4: Instruction Fetch Abort --- |
elsif (IAB_TAKEN = '1') then |
INT_VEC <= PRF_INT_VEC; |
FLAG_BUS(SREG_MODE_4 downto SREG_MODE_0) <= Abort32_MODE; |
NEW_MODE <= Abort32_MODE; |
FLAG_BUS(SREG_IAB_DIS) <= '1'; -- disable IAB |
elsif (UND_TAKEN = '1') then -- undefined instruction |
|
--- Priority 5: Undefined Instruction --- |
elsif (UND_TAKEN = '1') then |
INT_VEC <= UND_INT_VEC; |
FLAG_BUS(SREG_MODE_4 downto SREG_MODE_0) <= Undefined32_MODE; |
NEW_MODE <= Undefined32_MODE; |
elsif (SWI_TAKEN = '1') then -- software interrupt |
|
--- Priority 6: Software I nterrupt --- |
elsif (SWI_TAKEN = '1') then |
INT_VEC <= SWI_INT_VEC; |
FLAG_BUS(SREG_MODE_4 downto SREG_MODE_0) <= Supervisor32_MODE; |
NEW_MODE <= Supervisor32_MODE; |
342,13 → 355,13
if rising_edge(CLK_I) then |
if (RST_I = '1') then |
MCR_PC <= BOOT_VEC; -- start-up address |
MCR_CMSR <= x"000001FF"; -- INTs disabled and we're in SYSTEM32 mode |
SMSR_FIQ <= x"000001F0"; -- INTs disabled and return to USER32 mode |
SMSR_SVC <= x"000001F0"; -- INTs disabled and return to USER32 mode |
SMSR_ABT <= x"000001F0"; -- INTs disabled and return to USER32 mode |
SMSR_IRQ <= x"000001F0"; -- INTs disabled and return to USER32 mode |
SMSR_UND <= x"000001F0"; -- INTs disabled and return to USER32 mode |
SMSR_SYS <= x"000001F0"; -- INTs disabled and return to USER32 mode |
MCR_CMSR <= x"000003DF"; -- INTs disabled and we're in SYSTEM32 mode |
SMSR_FIQ <= x"000003D0"; -- INTs disabled and return to USER32 mode |
SMSR_SVC <= x"000003D0"; -- INTs disabled and return to USER32 mode |
SMSR_ABT <= x"000003D0"; -- INTs disabled and return to USER32 mode |
SMSR_IRQ <= x"000003D0"; -- INTs disabled and return to USER32 mode |
SMSR_UND <= x"000003D0"; -- INTs disabled and return to USER32 mode |
SMSR_SYS <= x"000003D0"; -- INTs disabled and return to USER32 mode |
elsif (G_HALT_I = '0') then |
|
|
402,44 → 415,6
|
|
---- SAVED MACHINE STATUS REGISTER ------------------------------------------------- |
-- if (CONT_EXE = '1') then -- context up change |
-- case (NEW_MODE) is |
-- when FIQ32_MODE => SMSR_FIQ <= MCR_CMSR; |
-- when Supervisor32_MODE => SMSR_SVC <= MCR_CMSR; |
-- when Abort32_MODE => SMSR_ABT <= MCR_CMSR; |
-- when IRQ32_MODE => SMSR_IRQ <= MCR_CMSR; |
-- when Undefined32_MODE => SMSR_UND <= MCR_CMSR; |
-- when System32_MODE => SMSR_SYS <= MCR_CMSR; |
-- when others => NULL; |
-- end case; |
-- elsif (CTRL_I(CTRL_EN) and mwr_smsr_v) = '1' then -- manual data write |
-- if (CTRL_I(CTRL_MREG_FA) = '1') then |
-- -- flag access only -- |
-- case (current_mode_v) is |
-- when FIQ32_MODE => SMSR_FIQ(31 downto 28) <= MCR_DATA_I(31 downto 28); |
-- when Supervisor32_MODE => SMSR_SVC(31 downto 28) <= MCR_DATA_I(31 downto 28); |
-- when Abort32_MODE => SMSR_ABT(31 downto 28) <= MCR_DATA_I(31 downto 28); |
-- when IRQ32_MODE => SMSR_IRQ(31 downto 28) <= MCR_DATA_I(31 downto 28); |
-- when Undefined32_MODE => SMSR_UND(31 downto 28) <= MCR_DATA_I(31 downto 28); |
-- when System32_MODE => SMSR_SYS(31 downto 28) <= MCR_DATA_I(31 downto 28); |
-- when others => NULL; |
-- end case; |
-- else |
-- -- full SMSR access -- |
-- case (current_mode_v) is |
-- when FIQ32_MODE => SMSR_FIQ <= MCR_DATA_I; |
-- when Supervisor32_MODE => SMSR_SVC <= MCR_DATA_I; |
-- when Abort32_MODE => SMSR_ABT <= MCR_DATA_I; |
-- when IRQ32_MODE => SMSR_IRQ <= MCR_DATA_I; |
-- when Undefined32_MODE => SMSR_UND <= MCR_DATA_I; |
-- when System32_MODE => SMSR_SYS <= MCR_DATA_I; |
-- when others => NULL; |
-- end case; |
-- end if; |
-- end if; |
|
|
---- SAVED MACHINE STATUS REGISTER ------------------------------------------------- |
smsr_acc_case_v := CONT_EXE & (CTRL_I(CTRL_EN) and mwr_smsr_v) & CTRL_I(CTRL_MREG_FA); |
case (smsr_acc_case_v) is |
-- Content up-change -- |
492,9 → 467,9
-- System Coprocessor Write Access ---------------------------------------------------------------- |
-- --------------------------------------------------------------------------------------------------- |
SYS_CP_ACC: process(CLK_I, CTRL_I, MCR_CMSR) |
variable is_priv_mode_v : std_logic; |
variable cr_r_acc_v, cr_w_acc_v : std_logic; |
variable cp_adr_v : integer range 0 to 15; |
variable is_priv_mode_v : std_logic; |
variable cr_r_acc_v, cr_w_acc_v : std_logic; |
variable cp_adr_v : integer range 0 to 15; |
begin |
-- Is Priviliged mode? -- |
is_priv_mode_v := '1'; |
517,10 → 492,10
if rising_edge(CLK_I) then |
if (RST_I = '1') then |
CP_REG_FILE <= (others => (others => '0')); -- clear all |
CP_REG_FILE(CP_ID_REG_0) <= x"07DC0116"; -- core update data |
CP_REG_FILE(CP_ID_REG_1) <= x"53744E6F"; -- My ID |
CP_REG_FILE(CP_ID_REG_2) <= x"34373838"; -- My ID ;) |
CP_REG_FILE(CP_SYS_CTRL_0) <= x"01000010"; -- system control register 0 |
CP_REG_FILE(CP_ID_REG_0) <= x"07DC020F"; -- core update date |
CP_REG_FILE(CP_ID_REG_1) <= x"53744E6F"; -- My ID |
CP_REG_FILE(CP_ID_REG_2) <= x"34373838"; -- My ID ;) |
CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_MBC_15 downto CSCR0_MBC_0) <= x"0100"; -- max cycle length |
else |
|
-- System Control Register 0 -------------------------------------------------- |
527,10 → 502,9
if (G_HALT_I = '0') and (cr_w_acc_v = '1') and (cp_adr_v = CP_SYS_CTRL_0) then |
CP_REG_FILE(CP_SYS_CTRL_0) <= MCR_DATA_I; |
else |
CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_FDC) <= '0'; |
CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_CDC) <= '0'; |
CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_CIC) <= '0'; |
CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_RST) <= '0'; |
CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_FDC) <= '0'; -- auto-reset flush d-cache |
CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_CDC) <= '0'; -- auto-reset clear d-cache |
CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_CIC) <= '0'; -- auto-reset clear i-cache |
end if; |
|
-- Cache Statistic Register --------------------------------------------------- |
570,7 → 544,7
elsif (CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_LFSRE) = '1') then |
if ((CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_LFSRM) = '1') and (cr_r_acc_v = '1')) or |
(CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_LFSRM) = '0') then |
if (CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_LFSRD) = '1') then -- right shift |
if (CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_LFSRD) = '0') then -- right shift |
CP_REG_FILE(CP_LFSR_DATA) <= LFSR_DN & CP_REG_FILE(CP_LFSR_DATA)(31 downto 1); |
else -- left shift |
CP_REG_FILE(CP_LFSR_DATA) <= CP_REG_FILE(CP_LFSR_DATA)(30 downto 0) & LFSR_DN; |
578,6 → 552,12
end if; |
end if; |
|
-- Internal IO Register ------------------------------------------- |
CP_REG_FILE(CP_IO_PORT)(CP_IO_I_MSB downto CP_IO_I_LSB) <= IO_PORT_I; |
if (G_HALT_I = '0') and (cr_w_acc_v = '1') and (cp_adr_v = CP_TIME_COUNT) then |
CP_REG_FILE(CP_IO_PORT)(CP_IO_O_MSB downto CP_IO_O_LSB) <= MCR_DATA_I(CP_IO_O_MSB downto CP_IO_O_LSB); |
end if; |
|
end if; |
end if; |
end process SYS_CP_ACC; |
585,12 → 565,13
--- System Control Processor Output --- |
DC_FLUSH_O <= CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_FDC); |
DC_CLEAR_O <= CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_CDC); |
DC_FRESH_O <= CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_DAR); |
CACHED_IO_O <= CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_CIO); |
IC_FRESH_O <= CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_IAR); |
IC_CLEAR_O <= CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_CIC); |
C_WTHRU_O <= CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_CWT); |
C_BGWB_O <= CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_CBG); |
F_RST_O <= CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_RST); |
SC_FREEZE_O <= CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_FRZ); |
BUS_CYCC_O <= CP_REG_FILE(CP_SYS_CTRL_0)(CSCR0_MBC_15 downto CSCR0_MBC_0); |
IO_PORT_O <= CP_REG_FILE(CP_IO_PORT)(CP_IO_O_MSB downto CP_IO_O_LSB); |
|
--- Internal Timer Interrupt --- |
INT_TIMER_IRQ: process(CLK_I) |
/storm_core/rtl/OPCODE_DECODER.vhd
18,11 → 18,11
-- ############################################################################################### |
|
entity OPCODE_DECODER is |
Port ( |
OPCODE_DATA_I : in STD_LOGIC_VECTOR(31 downto 0); |
OPCODE_CTRL_I : in STD_LOGIC_VECTOR(15 downto 0); |
OPCODE_CTRL_O : out STD_LOGIC_VECTOR(CTRL_MSB downto 0); |
OPCODE_MISC_O : out STD_LOGIC_VECTOR(99 downto 0) |
port ( |
OPCODE_DATA_I : in STD_LOGIC_VECTOR(31 downto 0); |
OPCODE_CTRL_I : in STD_LOGIC_VECTOR(15 downto 0); |
OPCODE_CTRL_O : out STD_LOGIC_VECTOR(CTRL_MSB downto 0); |
OPCODE_MISC_O : out STD_LOGIC_VECTOR(99 downto 0) |
); |
end OPCODE_DECODER; |
|
56,8 → 56,7
OPCODE_MISC_O(44 downto 33) <= OP_ADR_OUT; |
OPCODE_MISC_O(47 downto 45) <= REG_SEL; |
OPCODE_MISC_O(79 downto 48) <= IMM_OUT; |
OPCODE_MISC_O(81 downto 80) <= (others => '0'); |
OPCODE_MISC_O(86 downto 82) <= (others => '0'); |
OPCODE_MISC_O(86 downto 80) <= (others => '0'); |
OPCODE_MISC_O(91 downto 87) <= NEXT_DUAL_OP; |
OPCODE_MISC_O(99 downto 93) <= (others => '0'); -- unused |
|
201,7 → 200,7
|
when "010" => -- store, pre indexing, no write back |
---------------------------------------------------------------------------------- |
DEC_CTRL(CTRL_RD_3 downto CTRL_RD_0) <= "0000"; -- R_DEST wayne |
DEC_CTRL(CTRL_RD_3 downto CTRL_RD_0) <= INSTR_REG(19 downto 16); -- R_DEST <WAYNE> |
DEC_CTRL(CTRL_MEM_ACC) <= '1'; -- MEM_ACCESS |
DEC_CTRL(CTRL_MEM_RW) <= '1'; -- MEM_WRITE |
DEC_CTRL(CTRL_WB_EN) <= '0'; -- WB EN |
467,7 → 466,7
|
when "010" => -- store, pre indexing, no write back |
---------------------------------------------------------------------------------- |
DEC_CTRL(CTRL_RD_3 downto CTRL_RD_0) <= "0000"; -- R_DEST |
DEC_CTRL(CTRL_RD_3 downto CTRL_RD_0) <= INSTR_REG(19 downto 16); -- R_DEST <WAYNE> |
DEC_CTRL(CTRL_MEM_ACC) <= '1'; -- MEM_ACCESS |
DEC_CTRL(CTRL_MEM_RW) <= '1'; -- MEM_WRITE |
DEC_CTRL(CTRL_WB_EN) <= '0'; -- WB EN |
531,7 → 530,6
|
else -- Block Data Transfer |
---------------------------------------------------------------------------------- |
DEC_CTRL(CTRL_UND) <= INSTR_REG(22); -- undefined instruction when S-bit set |
OP_ADR_OUT(OP_A_ADR_3 downto OP_A_ADR_0) <= INSTR_REG(19 downto 16); -- BASE |
REG_SEL(OP_A_IS_REG) <= '1'; -- BASE is always a register |
IMM_OUT(31 downto 0) <= x"00000004"; -- offset immediate |
/storm_core/doc/STORM CORE datasheet.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/storm_core/sim/STORM_core_TB.vhd
3,7 → 3,7
-- # *************************************************** # |
-- # STORM Core / STORM SoC Testbench # |
-- # *************************************************** # |
-- # Last modified: 31.01.2012 # |
-- # Last modified: 16.02.2012 # |
-- ####################################################### |
|
library IEEE; |
15,15 → 15,23
|
architecture Structure of STORM_core_TB is |
|
-- Memory Map --------------------------------------------------------------------- |
-- ----------------------------------------------------------------------------------- |
constant INT_MEM_BASE_C : STD_LOGIC_VECTOR(31 downto 0) := x"00000000"; |
constant INT_MEM_SIZE_C : natural := 1024; -- bytes |
constant GP_IO_BASE_C : STD_LOGIC_VECTOR(31 downto 0) := x"FFFFE020"; |
constant GP_IO_SIZE_C : natural := 8; -- bytes |
|
|
-- Architecture Constants --------------------------------------------------------- |
-- ----------------------------------------------------------------------------------- |
constant INT_MEM_BASE_C : STD_LOGIC_VECTOR(31 downto 0) := x"00000000"; |
constant INT_MEM_SIZE_C : natural := 2048; -- bytes |
constant BOOT_VECTOR_C : STD_LOGIC_VECTOR(31 downto 0) := INT_MEM_BASE_C; |
constant I_CACHE_PAGES_C : natural := 8; -- number of pages in I cache |
constant I_CACHE_PAGE_SIZE_C : natural := 64; -- page size in I cache |
constant D_CACHE_PAGES_C : natural := 8; -- number of pages in D cache |
constant D_CACHE_PAGE_SIZE_C : natural := 1; -- page size in D cache |
constant IO_BEGIN_C : STD_LOGIC_VECTOR(31 downto 0) := x"FFFFE020"; -- first addr of IO area |
constant IO_END_C : STD_LOGIC_VECTOR(31 downto 0) := x"FFFFE024"; -- last addr of IO area |
constant I_CACHE_PAGES_C : natural := 4; -- number of pages in I cache |
constant I_CACHE_PAGE_SIZE_C : natural := 32; -- page size in I cache |
constant D_CACHE_PAGES_C : natural := 4; -- number of pages in D cache |
constant D_CACHE_PAGE_SIZE_C : natural := 2; -- page size in D cache |
|
|
-- Global Signals ----------------------------------------------------------------- |
32,9 → 40,7
-- Global Clock & Reset -- |
signal EXT_RST : STD_LOGIC; |
signal MAIN_RST : STD_LOGIC; |
signal SYS_RST : STD_LOGIC; |
signal CORE_CLK : STD_LOGIC := '0'; |
signal BUS_CLK : STD_LOGIC := '0'; |
signal MAIN_CLK : STD_LOGIC := '0'; |
signal STORM_IRQ : STD_LOGIC; |
signal STORM_FIQ : STD_LOGIC; |
|
41,7 → 47,7
-- Wishbone Core Bus -- |
signal CORE_WB_ADR_O : STD_LOGIC_VECTOR(31 downto 0); -- address |
signal CORE_WB_CTI_O : STD_LOGIC_VECTOR(02 downto 0); -- cycle type |
signal CORE_WB_TGC_O : STD_LOGIC_VECTOR(05 downto 0); -- cycle tag |
signal CORE_WB_TGC_O : STD_LOGIC_VECTOR(06 downto 0); -- cycle tag |
signal CORE_WB_SEL_O : STD_LOGIC_VECTOR(03 downto 0); -- byte select |
signal CORE_WB_WE_O : STD_LOGIC; -- write enable |
signal CORE_WB_DATA_O : STD_LOGIC_VECTOR(31 downto 0); -- data out |
56,12 → 62,20
-- ----------------------------------------------------------------------------------- |
|
-- Internal Working Memory -- |
signal INT_MEM_DATA_O : STD_LOGIC_VECTOR(31 downto 0); |
signal INT_MEM_STB_I : STD_LOGIC; |
signal INT_MEM_ACK_O : STD_LOGIC; |
signal INT_MEM_HALT_O : STD_LOGIC; |
signal INT_MEM_DATA_O : STD_LOGIC_VECTOR(31 downto 0); |
signal INT_MEM_STB_I : STD_LOGIC; |
signal INT_MEM_ACK_O : STD_LOGIC; |
signal INT_MEM_HALT_O : STD_LOGIC; |
|
-- General Purpose IO Controller -- |
signal GP_IO_CTRL_DATA_O : STD_LOGIC_VECTOR(31 downto 0); |
signal GP_IO_CTRL_STB_I : STD_LOGIC; |
signal GP_IO_CTRL_ACK_O : STD_LOGIC; |
signal GP_IO_CTRL_HALT_O : STD_LOGIC; |
signal GP_IO_OUT_PORT : STD_LOGIC_VECTOR(31 downto 0); |
signal GP_IO_IN_PORT : STD_LOGIC_VECTOR(31 downto 0); |
|
|
-- Logarithm duales --------------------------------------------------------------- |
-- ----------------------------------------------------------------------------------- |
function log2(temp : natural) return natural is |
83,19 → 97,21
I_CACHE_PAGE_SIZE : natural := 32; -- page size in I cache |
D_CACHE_PAGES : natural := 8; -- number of pages in D cache |
D_CACHE_PAGE_SIZE : natural := 4; -- page size in D cache |
BOOT_VECTOR : STD_LOGIC_VECTOR(31 downto 0) := x"00000000" -- boot address |
BOOT_VECTOR : STD_LOGIC_VECTOR(31 downto 0); -- boot address |
IO_UC_BEGIN : STD_LOGIC_VECTOR(31 downto 0); -- begin of uncachable IO area |
IO_UC_END : STD_LOGIC_VECTOR(31 downto 0) -- end of uncachable IO area |
); |
port ( |
-- Global Control -- |
CORE_CLK_I : in STD_LOGIC; -- core clock input |
BUS_CLK_I : in STD_LOGIC; -- bus clock input |
RST_I : in STD_LOGIC; -- global reset input |
F_RST_O : out STD_LOGIC; -- force system reset |
IO_PORT_O : out STD_LOGIC_VECTOR(15 downto 0); -- direct output |
IO_PORT_I : in STD_LOGIC_VECTOR(15 downto 0); -- direct input |
|
-- Wishbone Bus -- |
WB_ADR_O : out STD_LOGIC_VECTOR(31 downto 0); -- address |
WB_CTI_O : out STD_LOGIC_VECTOR(02 downto 0); -- cycle type |
WB_TGC_O : out STD_LOGIC_VECTOR(05 downto 0); -- cycle tag |
WB_TGC_O : out STD_LOGIC_VECTOR(06 downto 0); -- cycle tag |
WB_SEL_O : out STD_LOGIC_VECTOR(03 downto 0); -- byte select |
WB_WE_O : out STD_LOGIC; -- write enable |
WB_DATA_O : out STD_LOGIC_VECTOR(31 downto 0); -- data out |
124,7 → 140,7
WB_CLK_I : in STD_LOGIC; -- memory master clock |
WB_RST_I : in STD_LOGIC; -- high active sync reset |
WB_CTI_I : in STD_LOGIC_VECTOR(02 downto 0); -- cycle indentifier |
WB_TGC_I : in STD_LOGIC_VECTOR(05 downto 0); -- cycle tag |
WB_TGC_I : in STD_LOGIC_VECTOR(06 downto 0); -- cycle tag |
WB_ADR_I : in STD_LOGIC_VECTOR(LOG2_MEM_SIZE-1 downto 0); -- adr in |
WB_DATA_I : in STD_LOGIC_VECTOR(31 downto 0); -- write data |
WB_DATA_O : out STD_LOGIC_VECTOR(31 downto 0); -- read data |
137,6 → 153,33
end component; |
|
|
-- General Purpose IO Controller -------------------------------------------------- |
-- ----------------------------------------------------------------------------------- |
component GP_IO_CTRL |
port ( |
-- Wishbone Bus -- |
WB_CLK_I : in STD_LOGIC; -- memory master clock |
WB_RST_I : in STD_LOGIC; -- high active sync reset |
WB_CTI_I : in STD_LOGIC_VECTOR(02 downto 0); -- cycle indentifier |
WB_TGC_I : in STD_LOGIC_VECTOR(06 downto 0); -- cycle tag |
WB_ADR_I : in STD_LOGIC; -- adr in |
WB_DATA_I : in STD_LOGIC_VECTOR(31 downto 0); -- write data |
WB_DATA_O : out STD_LOGIC_VECTOR(31 downto 0); -- read data |
WB_SEL_I : in STD_LOGIC_VECTOR(03 downto 0); -- data quantity |
WB_WE_I : in STD_LOGIC; -- write enable |
WB_STB_I : in STD_LOGIC; -- valid cycle |
WB_ACK_O : out STD_LOGIC; -- acknowledge |
WB_HALT_O : out STD_LOGIC; -- throttle master |
|
-- IO Port -- |
GP_IO_O : out STD_LOGIC_VECTOR(31 downto 00); |
GP_IO_I : in STD_LOGIC_VECTOR(31 downto 00); |
|
-- Input Change INT -- |
IO_IRQ_O : out STD_LOGIC |
); |
end component; |
|
begin |
|
-- ################################################################################################################################# |
147,12 → 190,11
-- -------------------------------------------------------------------------------------------------------- |
|
-- Clock Generator -- |
CORE_CLK <= not CORE_CLK after 20 ns; -- 50MHz |
BUS_CLK <= not BUS_CLK after 40 ns; -- 25MHz |
MAIN_CLK <= not MAIN_CLK after 20 ns; -- 50MHz |
|
-- Reset System -- |
EXT_RST <= '1', '0' after 400 ns; |
MAIN_RST <= EXT_RST or SYS_RST; |
MAIN_RST <= EXT_RST; |
|
-- Interrupt Generator -- |
STORM_IRQ <= '0', '1' after 2000 ns, '0' after 2020 ns; |
168,14 → 210,16
I_CACHE_PAGE_SIZE => I_CACHE_PAGE_SIZE_C, -- page size in I cache |
D_CACHE_PAGES => D_CACHE_PAGES_C, -- number of pages in D cache |
D_CACHE_PAGE_SIZE => D_CACHE_PAGE_SIZE_C, -- page size in D cache |
BOOT_VECTOR => BOOT_VECTOR_C -- startup boot address |
BOOT_VECTOR => BOOT_VECTOR_C, -- startup boot address |
IO_UC_BEGIN => IO_BEGIN_C, -- begin of uncachable IO area |
IO_UC_END => IO_END_C -- end of uncachable IO area |
) |
port map ( |
-- Global Control -- |
CORE_CLK_I => CORE_CLK, -- core clock input |
BUS_CLK_I => BUS_CLK, -- bus clock input |
CORE_CLK_I => MAIN_CLK, -- core clock input |
RST_I => MAIN_RST, -- global reset input |
F_RST_O => SYS_RST, -- force system reset |
IO_PORT_O => open, -- direct output |
IO_PORT_I => x"0000", -- direct input |
|
-- Wishbone Bus -- |
WB_ADR_O => CORE_WB_ADR_O, -- address |
204,33 → 248,45
-- Read-Back Data Selector ----------------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
CORE_WB_DATA_I <= |
INT_MEM_DATA_O when (CORE_WB_ADR_O(31 downto log2(INT_MEM_SIZE_C)) = INT_MEM_BASE_C(31 downto log2(INT_MEM_SIZE_C))) else |
-- DUMMY0_DATA_O when (CORE_WB_ADR_O(31 downto log2(DUMMY0_SIZE_C)) = DUMMY0_BASE_C( 31 downto log2(DUMMY0_SIZE_C))) else |
-- DUMMY1_DATA_O when (CORE_WB_ADR_O(31 downto log2(DUMMY1_SIZE_C)) = DUMMY1_BASE_C( 31 downto log2(DUMMY1_SIZE_C))) else |
INT_MEM_DATA_O when (CORE_WB_ADR_O(31 downto log2(INT_MEM_SIZE_C)) = INT_MEM_BASE_C(31 downto log2(INT_MEM_SIZE_C))) else |
GP_IO_CTRL_DATA_O when (CORE_WB_ADR_O(31 downto log2(GP_IO_SIZE_C)) = GP_IO_BASE_C( 31 downto log2(GP_IO_SIZE_C))) else |
-- DUMMY0_DATA_O when (CORE_WB_ADR_O(31 downto log2(DUMMY0_SIZE_C)) = DUMMY0_BASE_C( 31 downto log2(DUMMY0_SIZE_C))) else |
-- DUMMY1_DATA_O when (CORE_WB_ADR_O(31 downto log2(DUMMY1_SIZE_C)) = DUMMY1_BASE_C( 31 downto log2(DUMMY1_SIZE_C))) else |
x"00000000"; |
|
-- Use this style of data read-back terminal for pipelined Wishbone systems. |
-- You have to ensure, that all not selected IO devices set their data output to 0. |
-- CORE_WB_DATA_I <= INT_MEM_DATA_O or |
-- GP_IO_CTRL_DATA_O or |
-- DUMMY0_DATA_O or |
-- DUMMY1_DATA_O or |
-- x"00000000"; |
|
|
-- Acknowledge Terminal -------------------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
CORE_WB_ACK_I <= INT_MEM_ACK_O or |
-- DUMMY0_ACK_O or |
-- DUMMY1_ACK_O or |
CORE_WB_ACK_I <= INT_MEM_ACK_O or |
GP_IO_CTRL_ACK_O or |
-- DUMMY0_ACK_O or |
-- DUMMY1_ACK_O or |
'0'; |
|
|
-- Halt Terminal --------------------------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
CORE_WB_HALT_I <= INT_MEM_HALT_O or |
-- DUMMY0_HALT_O or |
-- DUMMY1_HALT_O or |
CORE_WB_HALT_I <= INT_MEM_HALT_O or |
GP_IO_CTRL_HALT_O or |
-- DUMMY0_HALT_O or |
-- DUMMY1_HALT_O or |
'0'; |
|
|
-- Valid Transfer Signal Terminal ---------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
INT_MEM_STB_I <= CORE_WB_STB_O when (CORE_WB_ADR_O(31 downto log2(INT_MEM_SIZE_C)) = INT_MEM_BASE_C(31 downto log2(INT_MEM_SIZE_C))) else '0'; |
-- DUMMY0_STB_I <= CORE_WB_STB_O when (CORE_WB_ADR_O(31 downto log2(DUMMY0_SIZE_C)) = DUMMY0_BASE_C( 31 downto log2(DUMMY0_SIZE_C))) else '0'; |
-- DUMMY1_STB_I <= CORE_WB_STB_O when (CORE_WB_ADR_O(31 downto log2(DUMMY1_SIZE_C)) = DUMMY1_BASE_C( 31 downto log2(DUMMY1_SIZE_C))) else '0'; |
INT_MEM_STB_I <= CORE_WB_STB_O when (CORE_WB_ADR_O(31 downto log2(INT_MEM_SIZE_C)) = INT_MEM_BASE_C(31 downto log2(INT_MEM_SIZE_C))) else '0'; |
GP_IO_CTRL_STB_I <= CORE_WB_STB_O when (CORE_WB_ADR_O(31 downto log2(GP_IO_SIZE_C)) = GP_IO_BASE_C( 31 downto log2(GP_IO_SIZE_C))) else '0'; |
-- DUMMY0_STB_I <= CORE_WB_STB_O when (CORE_WB_ADR_O(31 downto log2(DUMMY0_SIZE_C)) = DUMMY0_BASE_C( 31 downto log2(DUMMY0_SIZE_C))) else '0'; |
-- DUMMY1_STB_I <= CORE_WB_STB_O when (CORE_WB_ADR_O(31 downto log2(DUMMY1_SIZE_C)) = DUMMY1_BASE_C( 31 downto log2(DUMMY1_SIZE_C))) else '0'; |
|
|
|
246,7 → 302,7
LOG2_MEM_SIZE => log2(INT_MEM_SIZE_C/4) -- log2 memory size in 32-bit cells |
) |
port map( |
WB_CLK_I => BUS_CLK, |
WB_CLK_I => MAIN_CLK, |
WB_RST_I => MAIN_RST, |
WB_CTI_I => CORE_WB_CTI_O, |
WB_TGC_I => CORE_WB_TGC_O, |
261,4 → 317,34
); |
|
|
|
-- General Purpose IO ---------------------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
IO_CONTROLLER: GP_IO_CTRL |
port map ( |
-- Wishbone Bus -- |
WB_CLK_I => MAIN_CLK, |
WB_RST_I => MAIN_RST, |
WB_CTI_I => CORE_WB_CTI_O, |
WB_TGC_I => CORE_WB_TGC_O, |
WB_ADR_I => CORE_WB_ADR_O(2), |
WB_DATA_I => CORE_WB_DATA_O, |
WB_DATA_O => GP_IO_CTRL_DATA_O, |
WB_SEL_I => CORE_WB_SEL_O, |
WB_WE_I => CORE_WB_WE_O, |
WB_STB_I => GP_IO_CTRL_STB_I, |
WB_ACK_O => GP_IO_CTRL_ACK_O, |
WB_HALT_O => GP_IO_CTRL_HALT_O, |
|
-- IO Port -- |
GP_IO_O => GP_IO_OUT_PORT, |
GP_IO_I => GP_IO_IN_PORT, |
|
-- Input Change INT -- |
IO_IRQ_O => open |
); |
|
-- Dummy input -- |
GP_IO_IN_PORT <= "00000000001100111100110000000000"; |
|
end Structure; |
/storm_core/sim/GP_IO_CTRL.vhd
0,0 → 1,148
-- ####################################################### |
-- # < STORM System on Chip by Stephan Nolting > # |
-- # *************************************************** # |
-- # General Purpose 32-bit IO Controller # |
-- # *************************************************** # |
-- # Last modified: 16.02.2012 # |
-- ####################################################### |
|
library IEEE; |
use IEEE.STD_LOGIC_1164.ALL; |
use IEEE.NUMERIC_STD.ALL; |
|
entity GP_IO_CTRL is |
port ( |
-- Wishbone Bus -- |
WB_CLK_I : in STD_LOGIC; -- memory master clock |
WB_RST_I : in STD_LOGIC; -- high active sync reset |
WB_CTI_I : in STD_LOGIC_VECTOR(02 downto 0); -- cycle indentifier |
WB_TGC_I : in STD_LOGIC_VECTOR(06 downto 0); -- cycle tag |
WB_ADR_I : in STD_LOGIC; -- adr in |
WB_DATA_I : in STD_LOGIC_VECTOR(31 downto 0); -- write data |
WB_DATA_O : out STD_LOGIC_VECTOR(31 downto 0); -- read data |
WB_SEL_I : in STD_LOGIC_VECTOR(03 downto 0); -- data quantity |
WB_WE_I : in STD_LOGIC; -- write enable |
WB_STB_I : in STD_LOGIC; -- valid cycle |
WB_ACK_O : out STD_LOGIC; -- acknowledge |
WB_HALT_O : out STD_LOGIC; -- throttle master |
|
-- IO Port -- |
GP_IO_O : out STD_LOGIC_VECTOR(31 downto 00); |
GP_IO_I : in STD_LOGIC_VECTOR(31 downto 00); |
|
-- Input Change INT -- |
IO_IRQ_O : out STD_LOGIC |
); |
end GP_IO_CTRL; |
|
architecture Structure of GP_IO_CTRL is |
|
-- Input / Output Sync Register -- |
signal IO_I_SYNC, IO_O_SYNC, IRQ_SYNC : STD_LOGIC_VECTOR(31 downto 0); |
|
-- internal Buffer -- |
signal WB_ACK_O_INT : STD_LOGIC; |
|
-- Memory Map (word boundary) |
-- ADR_I = 0 : Access to OUTPUT register |
-- ADR_I = 1 : Access to INPUT register |
|
begin |
|
-- Wishbone Input Interface ---------------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
WB_W_ACCESS: process(WB_CLK_I) |
begin |
if rising_edge(WB_CLK_I) then |
if (WB_RST_I = '1') then |
IO_O_SYNC <= (others => '0'); |
elsif (WB_STB_I = '1') and (WB_WE_I = '1') and (WB_ADR_I = '0') then -- valid write access |
for i in 0 to 3 loop |
if (WB_SEL_I(i) = '1') then |
IO_O_SYNC(8*i+7 downto 8*i) <= WB_DATA_I(8*i+7 downto 8*i); |
end if; |
end loop; |
end if; |
end if; |
end process WB_W_ACCESS; |
|
--- Out-Port --- |
GP_IO_O <= IO_O_SYNC; |
|
|
|
-- Wishbone Output Interface --------------------------------------------------------------------------- |
-- -------------------------------------------------------------------------------------------------------- |
WB_R_ACCESS: process(WB_CLK_I) |
begin |
if rising_edge(WB_CLK_I) then |
if (WB_RST_I = '1') then |
WB_DATA_O <= (others => '0'); |
WB_ACK_O_INT <= '0'; |
else |
--- Data Output --- |
if (WB_STB_I = '1') and (WB_WE_I = '0') then -- valid read request |
if (WB_ADR_I = '0') then |
WB_DATA_O <= IO_O_SYNC; |
else |
WB_DATA_O <= IO_I_SYNC; |
end if; |
else |
WB_DATA_O <= (others => '0'); |
end if; |
|
--- ACK Control --- |
if (WB_CTI_I = "000") or (WB_CTI_I = "111") then |
WB_ACK_O_INT <= WB_STB_I and (not WB_ACK_O_INT); |
else |
WB_ACK_O_INT <= WB_STB_I; -- data is valid one cycle later |
end if; |
end if; |
end if; |
end process WB_R_ACCESS; |
|
--- ACK Signal --- |
WB_ACK_O <= WB_ACK_O_INT; |
|
--- Throttle --- |
WB_HALT_O <= '0'; -- yeay, we're at full speed! |
|
|
|
-- Synchronize Input ------------------------------------------------- |
-- ---------------------------------------------------------------------- |
SYNC_INPUT: process(WB_CLK_I) |
begin |
if rising_edge(WB_CLK_I) then |
if (WB_RST_I = '1') then |
IO_I_SYNC <= (others => '0'); |
IRQ_SYNC <= (others => '0'); |
else |
IO_I_SYNC <= GP_IO_I; |
IRQ_SYNC <= IO_I_SYNC; |
end if; |
end if; |
end process SYNC_INPUT; |
|
|
|
-- Input Change IRQ -------------------------------------------------- |
-- ---------------------------------------------------------------------- |
INPUT_CHANGE_IRQ: process(WB_CLK_I) |
begin |
if rising_edge(WB_CLK_I) then |
if (WB_RST_I = '1') then |
IO_IRQ_O <= '0'; |
else |
if (IRQ_SYNC /= IO_I_SYNC) then |
IO_IRQ_O <= '1'; |
else |
IO_IRQ_O <= '0'; |
end if; |
end if; |
end if; |
end process INPUT_CHANGE_IRQ; |
|
|
|
end Structure; |
/storm_core/sim/MEMORY.vhd
3,7 → 3,7
-- # ************************************************** # |
-- # Internal Working Memory # |
-- # ************************************************** # |
-- # Version 3.0, 25.11.2011, PipeWB compatible # |
-- # Last modified: 16.02.2012 # |
-- ###################################################### |
|
library IEEE; |
23,7 → 23,7
WB_CLK_I : in STD_LOGIC; -- memory master clock |
WB_RST_I : in STD_LOGIC; -- high active sync reset |
WB_CTI_I : in STD_LOGIC_VECTOR(02 downto 0); -- cycle indentifier |
WB_TGC_I : in STD_LOGIC_VECTOR(05 downto 0); -- cycle tag |
WB_TGC_I : in STD_LOGIC_VECTOR(06 downto 0); -- cycle tag |
WB_ADR_I : in STD_LOGIC_VECTOR(LOG2_MEM_SIZE-1 downto 0); -- adr in |
WB_DATA_I : in STD_LOGIC_VECTOR(31 downto 0); -- write data |
WB_DATA_O : out STD_LOGIC_VECTOR(31 downto 0); -- read data |
52,9 → 52,104
----------------------------------------------------------------- |
constant RAM_IMAGE : RAM_IMAGE_TYPE := |
( |
-- ############################################ |
-- # PLACE YOUR PROGRAM HERE # |
-- ############################################ |
000000 => x"EA000012", |
000001 => x"E59FF014", |
000002 => x"E59FF014", |
000003 => x"E59FF014", |
000004 => x"E59FF014", |
000005 => x"E1A00000", |
000006 => x"E51FFFF0", |
000007 => x"E59FF010", |
000008 => x"00000038", |
000009 => x"0000003C", |
000010 => x"00000040", |
000011 => x"00000044", |
000012 => x"00000048", |
000013 => x"0000004C", |
000014 => x"EAFFFFFE", |
000015 => x"EAFFFFFE", |
000016 => x"EAFFFFFE", |
000017 => x"EAFFFFFE", |
000018 => x"EAFFFFFE", |
000019 => x"EAFFFFFE", |
000020 => x"E59F00C8", |
000021 => x"E10F1000", |
000022 => x"E3C1107F", |
000023 => x"E38110DB", |
000024 => x"E129F001", |
000025 => x"E1A0D000", |
000026 => x"E2400080", |
000027 => x"E10F1000", |
000028 => x"E3C1107F", |
000029 => x"E38110D7", |
000030 => x"E129F001", |
000031 => x"E1A0D000", |
000032 => x"E2400080", |
000033 => x"E10F1000", |
000034 => x"E3C1107F", |
000035 => x"E38110D1", |
000036 => x"E129F001", |
000037 => x"E1A0D000", |
000038 => x"E2400080", |
000039 => x"E10F1000", |
000040 => x"E3C1107F", |
000041 => x"E38110D2", |
000042 => x"E129F001", |
000043 => x"E1A0D000", |
000044 => x"E2400080", |
000045 => x"E10F1000", |
000046 => x"E3C1107F", |
000047 => x"E38110D3", |
000048 => x"E129F001", |
000049 => x"E1A0D000", |
000050 => x"E2400080", |
000051 => x"E10F1000", |
000052 => x"E3C1107F", |
000053 => x"E38110DF", |
000054 => x"E129F001", |
000055 => x"E1A0D000", |
000056 => x"E3A00000", |
000057 => x"E59F1038", |
000058 => x"E59F2038", |
000059 => x"E1510002", |
000060 => x"0A000001", |
000061 => x"34810004", |
000062 => x"3AFFFFFB", |
000063 => x"E3A00000", |
000064 => x"E1A01000", |
000065 => x"E1A02000", |
000066 => x"E1A0B000", |
000067 => x"E1A07000", |
000068 => x"E59FA014", |
000069 => x"E1A0E00F", |
000070 => x"E1A0F00A", |
000071 => x"EAFFFFFE", |
000072 => x"00000A00", |
000073 => x"00000184", |
000074 => x"00000184", |
000075 => x"00000130", |
000076 => x"E3E03A01", |
000077 => x"E3A02000", |
000078 => x"E52DE004", |
000079 => x"E5032FDF", |
000080 => x"E3A0E001", |
000081 => x"E5032FDF", |
000082 => x"E1A0100E", |
000083 => x"E1A0000E", |
000084 => x"E1A02000", |
000085 => x"EA000000", |
000086 => x"E3A0E001", |
000087 => x"E2820001", |
000088 => x"E08EC001", |
000089 => x"E5031FDF", |
000090 => x"E350001E", |
000091 => x"E3A01000", |
000092 => x"E1A02001", |
000093 => x"CAFFFFF7", |
000094 => x"E1A0100E", |
000095 => x"E1A0E00C", |
000096 => x"EAFFFFF2", |
others => x"F0013007" |
); |
----------------------------------------------------------------- |
|
109,6 → 204,8
WB_DATA_O(8*1+7 downto 8*1) <= MEM_FILE_LH(to_integer(unsigned(WB_ADR_I))); |
WB_DATA_O(8*2+7 downto 8*2) <= MEM_FILE_HL(to_integer(unsigned(WB_ADR_I))); |
WB_DATA_O(8*3+7 downto 8*3) <= MEM_FILE_HH(to_integer(unsigned(WB_ADR_I))); |
-- else |
-- WB_DATA_O <= (others => '0'); |
end if; |
|
--- ACK Control --- |
/storm_core/sim/Xilinx ISIM/storm_core_debug_wave.wcfg
12,7 → 12,7
</top_modules> |
</db_ref> |
</db_ref_list> |
<WVObjectSize size="43" /> |
<WVObjectSize size="53" /> |
<wvobject fp_name="divider7" type="divider"> |
<obj_property name="label">STORMcore globals</obj_property> |
<obj_property name="DisplayName">label</obj_property> |
36,10 → 36,6
<obj_property name="ElementShortName">rst_i</obj_property> |
<obj_property name="ObjectShortName">rst_i</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/f_rst_o" type="logic" db_ref_id="1"> |
<obj_property name="ElementShortName">f_rst_o</obj_property> |
<obj_property name="ObjectShortName">f_rst_o</obj_property> |
</wvobject> |
<wvobject fp_name="divider7" type="divider"> |
<obj_property name="label">STORMcore interrupt</obj_property> |
<obj_property name="DisplayName">label</obj_property> |
278,6 → 274,90
<obj_property name="UseCustomSignalColor">true</obj_property> |
<obj_property name="CustomSignalColor">#ffffff</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">cp_reg_file[15:0]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[15:0]</obj_property> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[15]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[15]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[15]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[14]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[14]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[14]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[13]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[13]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[13]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[12]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[12]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[12]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[11]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[11]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[11]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[10]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[10]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[10]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[9]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[9]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[9]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[8]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[8]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[8]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[7]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[7]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[7]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[6]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[6]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[6]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[5]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[5]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[5]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[4]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[4]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[4]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[3]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[3]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[3]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[2]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[2]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[2]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[1]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[1]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[1]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/PROCESSOR_CORE/Machine_Control_System/cp_reg_file[0]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[0]</obj_property> |
<obj_property name="ObjectShortName">cp_reg_file[0]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
</wvobject> |
<wvobject fp_name="divider7" type="divider"> |
<obj_property name="label">DATA CACHE</obj_property> |
<obj_property name="DisplayName">label</obj_property> |
285,25 → 365,63
<obj_property name="TextColor">230 230 230</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/cache_mem_ll" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">cache_mem_ll[0:7]</obj_property> |
<obj_property name="ObjectShortName">cache_mem_ll[0:7]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/arb_state" type="other" db_ref_id="1"> |
<obj_property name="ElementShortName">arb_state</obj_property> |
<obj_property name="ObjectShortName">arb_state</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/cache_mem_lh" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">cache_mem_lh[0:7]</obj_property> |
<obj_property name="ObjectShortName">cache_mem_lh[0:7]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/b_cs_i" type="logic" db_ref_id="1"> |
<obj_property name="ElementShortName">b_cs_i</obj_property> |
<obj_property name="ObjectShortName">b_cs_i</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/cache_mem_hl" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">cache_mem_hl[0:7]</obj_property> |
<obj_property name="ObjectShortName">cache_mem_hl[0:7]</obj_property> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/p_adr_i" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">p_adr_i[31:0]</obj_property> |
<obj_property name="ObjectShortName">p_adr_i[31:0]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/cache_mem_hh" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">cache_mem_hh[0:7]</obj_property> |
<obj_property name="ObjectShortName">cache_mem_hh[0:7]</obj_property> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/sim_mem" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">sim_mem[0:7]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[0:7]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/sim_mem[0]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[0]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[0]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/sim_mem[1]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[1]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[1]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/sim_mem[2]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[2]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[2]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/sim_mem[3]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[3]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[3]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/sim_mem[4]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[4]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[4]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/sim_mem[5]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[5]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[5]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/sim_mem[6]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[6]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[6]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/D_CACHE_INST/sim_mem[7]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[7]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[7]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
</wvobject> |
<wvobject fp_name="divider7" type="divider"> |
<obj_property name="label">INSTRUCTION CACHE</obj_property> |
312,26 → 430,655
<obj_property name="TextColor">230 230 230</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/cache_mem_ll" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">cache_mem_ll[0:511]</obj_property> |
<obj_property name="ObjectShortName">cache_mem_ll[0:511]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/arb_state" type="other" db_ref_id="1"> |
<obj_property name="ElementShortName">arb_state</obj_property> |
<obj_property name="ObjectShortName">arb_state</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/cache_mem_lh" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">cache_mem_lh[0:511]</obj_property> |
<obj_property name="ObjectShortName">cache_mem_lh[0:511]</obj_property> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">sim_mem[0:127]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[0:127]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[0]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[0]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[0]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[1]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[1]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[1]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[2]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[2]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[2]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[3]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[3]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[3]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[4]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[4]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[4]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[5]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[5]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[5]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[6]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[6]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[6]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[7]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[7]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[7]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[8]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[8]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[8]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[9]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[9]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[9]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[10]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[10]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[10]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[11]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[11]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[11]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[12]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[12]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[12]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[13]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[13]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[13]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[14]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[14]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[14]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[15]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[15]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[15]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[16]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[16]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[16]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[17]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[17]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[17]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[18]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[18]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[18]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[19]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[19]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[19]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[20]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[20]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[20]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[21]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[21]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[21]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[22]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[22]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[22]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[23]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[23]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[23]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[24]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[24]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[24]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[25]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[25]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[25]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[26]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[26]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[26]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[27]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[27]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[27]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[28]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[28]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[28]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[29]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[29]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[29]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[30]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[30]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[30]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[31]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[31]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[31]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[32]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[32]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[32]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[33]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[33]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[33]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[34]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[34]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[34]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[35]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[35]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[35]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[36]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[36]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[36]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[37]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[37]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[37]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[38]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[38]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[38]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[39]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[39]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[39]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[40]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[40]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[40]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[41]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[41]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[41]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[42]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[42]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[42]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[43]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[43]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[43]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[44]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[44]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[44]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[45]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[45]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[45]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[46]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[46]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[46]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[47]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[47]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[47]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[48]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[48]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[48]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[49]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[49]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[49]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[50]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[50]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[50]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[51]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[51]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[51]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[52]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[52]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[52]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[53]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[53]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[53]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[54]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[54]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[54]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[55]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[55]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[55]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[56]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[56]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[56]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[57]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[57]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[57]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[58]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[58]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[58]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[59]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[59]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[59]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[60]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[60]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[60]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[61]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[61]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[61]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[62]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[62]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[62]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[63]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[63]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[63]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[64]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[64]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[64]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[65]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[65]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[65]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[66]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[66]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[66]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[67]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[67]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[67]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[68]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[68]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[68]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[69]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[69]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[69]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[70]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[70]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[70]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[71]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[71]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[71]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[72]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[72]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[72]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[73]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[73]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[73]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[74]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[74]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[74]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[75]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[75]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[75]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[76]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[76]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[76]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[77]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[77]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[77]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[78]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[78]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[78]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[79]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[79]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[79]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[80]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[80]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[80]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[81]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[81]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[81]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[82]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[82]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[82]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[83]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[83]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[83]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[84]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[84]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[84]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[85]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[85]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[85]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[86]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[86]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[86]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[87]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[87]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[87]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[88]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[88]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[88]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[89]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[89]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[89]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[90]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[90]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[90]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[91]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[91]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[91]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[92]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[92]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[92]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[93]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[93]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[93]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[94]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[94]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[94]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[95]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[95]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[95]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[96]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[96]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[96]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[97]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[97]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[97]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[98]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[98]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[98]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[99]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[99]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[99]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[100]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[100]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[100]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[101]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[101]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[101]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[102]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[102]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[102]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[103]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[103]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[103]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[104]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[104]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[104]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[105]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[105]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[105]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[106]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[106]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[106]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[107]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[107]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[107]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[108]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[108]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[108]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[109]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[109]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[109]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[110]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[110]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[110]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[111]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[111]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[111]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[112]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[112]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[112]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[113]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[113]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[113]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[114]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[114]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[114]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[115]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[115]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[115]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[116]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[116]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[116]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[117]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[117]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[117]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[118]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[118]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[118]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[119]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[119]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[119]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[120]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[120]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[120]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[121]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[121]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[121]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[122]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[122]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[122]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[123]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[123]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[123]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[124]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[124]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[124]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[125]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[125]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[125]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[126]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[126]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[126]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/sim_mem[127]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[127]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[127]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/cache_mem_hl" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">cache_mem_hl[0:511]</obj_property> |
<obj_property name="ObjectShortName">cache_mem_hl[0:511]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/I_CACHE_INST/cache_mem_hh" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">cache_mem_hh[0:511]</obj_property> |
<obj_property name="ObjectShortName">cache_mem_hh[0:511]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="divider7" type="divider"> |
<obj_property name="label">BUS UNIT</obj_property> |
<obj_property name="DisplayName">label</obj_property> |
339,10 → 1086,31
<obj_property name="TextColor">230 230 230</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/BUS_UNIT_INST/timeout_cnt" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">timeout_cnt[15:0]</obj_property> |
<obj_property name="ObjectShortName">timeout_cnt[15:0]</obj_property> |
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/BUS_UNIT_INST/arb_state" type="other" db_ref_id="1"> |
<obj_property name="ElementShortName">arb_state</obj_property> |
<obj_property name="ObjectShortName">arb_state</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/BUS_UNIT_INST/io_access" type="logic" db_ref_id="1"> |
<obj_property name="ElementShortName">io_access</obj_property> |
<obj_property name="ObjectShortName">io_access</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/BUS_UNIT_INST/dc_miss_i" type="logic" db_ref_id="1"> |
<obj_property name="ElementShortName">dc_miss_i</obj_property> |
<obj_property name="ObjectShortName">dc_miss_i</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/BUS_UNIT_INST/dc_dirty_i" type="logic" db_ref_id="1"> |
<obj_property name="ElementShortName">dc_dirty_i</obj_property> |
<obj_property name="ObjectShortName">dc_dirty_i</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/STORM_TOP_INST/BUS_UNIT_INST/freeze_storm_o" type="logic" db_ref_id="1"> |
<obj_property name="ElementShortName">freeze_storm_o</obj_property> |
<obj_property name="ObjectShortName">freeze_storm_o</obj_property> |
</wvobject> |
<wvobject fp_name="divider7" type="divider"> |
<obj_property name="label">WISHBONE BUS</obj_property> |
<obj_property name="DisplayName">label</obj_property> |
388,8 → 1156,1322
<obj_property name="TextColor">230 230 230</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/wb_stb_i" type="logic" db_ref_id="1"> |
<obj_property name="ElementShortName">wb_stb_i</obj_property> |
<obj_property name="ObjectShortName">wb_stb_i</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/wb_ack_o" type="logic" db_ref_id="1"> |
<obj_property name="ElementShortName">wb_ack_o</obj_property> |
<obj_property name="ObjectShortName">wb_ack_o</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">sim_mem[0:511]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[0:511]</obj_property> |
<obj_property name="ElementShortName">sim_mem[0:255]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[0:255]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[0]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[0]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[0]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[1]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[1]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[1]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[2]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[2]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[2]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[3]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[3]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[3]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[4]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[4]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[4]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[5]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[5]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[5]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[6]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[6]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[6]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[7]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[7]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[7]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[8]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[8]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[8]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[9]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[9]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[9]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[10]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[10]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[10]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[11]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[11]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[11]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[12]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[12]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[12]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[13]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[13]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[13]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[14]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[14]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[14]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[15]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[15]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[15]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[16]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[16]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[16]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[17]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[17]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[17]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[18]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[18]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[18]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[19]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[19]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[19]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[20]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[20]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[20]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[21]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[21]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[21]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[22]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[22]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[22]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[23]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[23]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[23]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[24]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[24]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[24]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[25]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[25]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[25]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[26]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[26]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[26]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[27]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[27]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[27]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[28]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[28]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[28]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[29]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[29]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[29]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[30]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[30]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[30]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[31]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[31]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[31]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[32]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[32]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[32]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[33]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[33]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[33]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[34]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[34]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[34]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[35]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[35]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[35]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[36]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[36]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[36]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[37]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[37]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[37]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[38]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[38]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[38]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[39]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[39]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[39]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[40]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[40]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[40]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[41]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[41]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[41]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[42]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[42]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[42]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[43]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[43]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[43]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[44]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[44]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[44]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[45]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[45]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[45]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[46]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[46]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[46]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[47]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[47]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[47]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[48]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[48]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[48]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[49]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[49]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[49]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[50]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[50]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[50]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[51]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[51]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[51]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[52]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[52]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[52]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[53]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[53]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[53]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[54]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[54]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[54]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[55]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[55]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[55]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[56]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[56]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[56]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[57]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[57]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[57]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[58]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[58]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[58]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[59]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[59]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[59]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[60]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[60]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[60]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[61]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[61]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[61]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[62]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[62]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[62]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[63]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[63]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[63]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[64]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[64]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[64]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[65]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[65]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[65]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[66]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[66]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[66]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[67]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[67]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[67]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[68]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[68]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[68]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[69]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[69]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[69]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[70]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[70]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[70]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[71]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[71]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[71]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[72]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[72]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[72]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[73]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[73]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[73]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[74]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[74]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[74]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[75]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[75]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[75]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[76]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[76]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[76]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[77]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[77]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[77]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[78]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[78]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[78]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[79]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[79]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[79]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[80]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[80]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[80]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[81]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[81]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[81]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[82]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[82]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[82]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[83]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[83]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[83]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[84]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[84]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[84]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[85]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[85]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[85]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[86]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[86]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[86]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[87]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[87]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[87]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[88]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[88]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[88]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[89]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[89]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[89]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[90]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[90]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[90]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[91]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[91]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[91]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[92]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[92]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[92]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[93]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[93]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[93]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[94]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[94]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[94]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[95]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[95]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[95]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[96]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[96]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[96]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[97]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[97]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[97]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[98]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[98]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[98]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[99]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[99]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[99]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[100]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[100]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[100]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[101]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[101]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[101]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[102]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[102]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[102]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[103]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[103]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[103]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[104]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[104]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[104]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[105]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[105]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[105]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[106]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[106]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[106]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[107]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[107]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[107]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[108]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[108]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[108]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[109]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[109]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[109]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[110]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[110]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[110]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[111]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[111]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[111]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[112]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[112]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[112]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[113]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[113]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[113]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[114]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[114]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[114]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[115]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[115]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[115]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[116]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[116]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[116]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[117]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[117]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[117]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[118]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[118]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[118]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[119]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[119]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[119]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[120]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[120]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[120]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[121]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[121]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[121]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[122]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[122]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[122]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[123]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[123]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[123]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[124]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[124]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[124]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[125]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[125]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[125]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[126]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[126]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[126]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[127]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[127]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[127]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[128]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[128]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[128]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[129]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[129]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[129]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[130]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[130]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[130]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[131]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[131]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[131]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[132]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[132]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[132]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[133]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[133]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[133]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[134]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[134]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[134]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[135]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[135]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[135]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[136]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[136]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[136]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[137]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[137]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[137]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[138]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[138]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[138]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[139]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[139]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[139]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[140]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[140]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[140]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[141]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[141]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[141]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[142]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[142]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[142]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[143]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[143]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[143]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[144]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[144]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[144]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[145]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[145]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[145]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[146]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[146]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[146]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[147]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[147]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[147]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[148]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[148]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[148]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[149]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[149]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[149]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[150]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[150]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[150]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[151]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[151]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[151]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[152]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[152]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[152]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[153]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[153]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[153]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[154]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[154]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[154]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[155]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[155]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[155]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[156]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[156]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[156]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[157]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[157]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[157]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[158]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[158]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[158]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[159]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[159]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[159]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[160]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[160]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[160]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[161]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[161]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[161]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[162]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[162]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[162]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[163]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[163]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[163]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[164]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[164]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[164]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[165]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[165]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[165]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[166]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[166]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[166]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[167]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[167]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[167]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[168]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[168]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[168]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[169]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[169]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[169]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[170]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[170]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[170]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[171]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[171]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[171]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[172]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[172]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[172]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[173]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[173]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[173]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[174]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[174]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[174]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[175]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[175]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[175]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[176]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[176]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[176]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[177]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[177]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[177]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[178]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[178]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[178]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[179]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[179]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[179]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[180]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[180]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[180]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[181]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[181]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[181]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[182]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[182]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[182]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[183]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[183]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[183]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[184]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[184]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[184]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[185]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[185]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[185]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[186]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[186]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[186]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[187]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[187]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[187]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[188]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[188]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[188]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[189]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[189]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[189]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[190]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[190]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[190]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[191]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[191]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[191]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[192]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[192]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[192]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[193]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[193]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[193]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[194]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[194]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[194]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[195]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[195]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[195]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[196]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[196]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[196]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[197]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[197]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[197]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[198]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[198]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[198]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[199]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[199]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[199]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[200]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[200]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[200]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[201]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[201]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[201]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[202]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[202]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[202]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[203]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[203]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[203]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[204]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[204]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[204]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[205]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[205]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[205]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[206]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[206]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[206]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[207]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[207]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[207]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[208]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[208]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[208]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[209]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[209]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[209]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[210]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[210]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[210]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[211]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[211]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[211]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[212]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[212]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[212]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[213]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[213]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[213]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[214]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[214]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[214]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[215]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[215]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[215]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[216]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[216]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[216]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[217]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[217]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[217]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[218]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[218]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[218]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[219]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[219]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[219]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[220]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[220]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[220]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[221]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[221]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[221]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[222]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[222]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[222]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[223]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[223]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[223]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[224]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[224]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[224]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[225]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[225]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[225]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[226]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[226]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[226]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[227]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[227]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[227]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[228]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[228]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[228]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[229]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[229]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[229]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[230]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[230]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[230]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[231]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[231]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[231]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[232]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[232]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[232]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[233]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[233]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[233]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[234]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[234]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[234]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[235]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[235]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[235]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[236]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[236]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[236]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[237]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[237]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[237]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[238]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[238]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[238]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[239]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[239]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[239]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[240]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[240]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[240]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[241]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[241]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[241]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[242]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[242]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[242]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[243]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[243]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[243]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[244]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[244]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[244]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[245]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[245]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[245]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[246]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[246]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[246]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[247]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[247]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[247]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[248]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[248]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[248]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[249]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[249]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[249]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[250]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[250]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[250]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[251]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[251]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[251]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[252]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[252]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[252]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[253]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[253]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[253]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[254]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[254]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[254]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/INTERNAL_MEMORY/sim_mem[255]" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">[255]</obj_property> |
<obj_property name="ObjectShortName">sim_mem[255]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
</wvobject> |
<wvobject fp_name="divider7" type="divider"> |
<obj_property name="label">IO Controller</obj_property> |
<obj_property name="DisplayName">label</obj_property> |
<obj_property name="BkColor">#3e3e3e</obj_property> |
<obj_property name="TextColor">230 230 230</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/IO_CONTROLLER/wb_stb_i" type="logic" db_ref_id="1"> |
<obj_property name="ElementShortName">wb_stb_i</obj_property> |
<obj_property name="ObjectShortName">wb_stb_i</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/IO_CONTROLLER/wb_ack_o" type="logic" db_ref_id="1"> |
<obj_property name="ElementShortName">wb_ack_o</obj_property> |
<obj_property name="ObjectShortName">wb_ack_o</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/IO_CONTROLLER/io_o_sync" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">io_o_sync[31:0]</obj_property> |
<obj_property name="ObjectShortName">io_o_sync[31:0]</obj_property> |
<obj_property name="Radix">HEXRADIX</obj_property> |
</wvobject> |
<wvobject fp_name="/storm_core_tb/IO_CONTROLLER/io_o_sync" type="array" db_ref_id="1"> |
<obj_property name="ElementShortName">io_o_sync[31:0]</obj_property> |
<obj_property name="ObjectShortName">io_o_sync[31:0]</obj_property> |
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property> |
</wvobject> |
</wave_config> |
/storm_core/software/C/build/storm_startup_code.S
129,10 → 129,12
ldr r1,=_etext // -> ROM data start |
ldr r2,=_data // -> data start |
ldr r3,=_edata // -> end of data |
1: cmp r2,r3 // check if data to move |
x01: cmp r2,r3 // check if data to move |
beq y01 |
ldrlo r0,[r1],#4 // copy it |
strlo r0,[r2],#4 |
blo 1b // loop until done |
blo x01 // loop until done |
y01: |
#endif |
// Clear .bss |
// ---------- |
139,14 → 141,14
mov r0,#0 // get a zero |
ldr r1,=__bss_start // -> bss start |
ldr r2,=__bss_end__ // -> bss end |
2: cmp r1,r2 // check if data to clear |
beq leer |
x02: cmp r1,r2 // check if data to clear |
beq y02 |
strlo r0,[r1],#4 // clear 4 bytes |
blo 2b // loop until done |
|
blo x02 // loop until done |
y02: |
// Call main program: main(0) |
// -------------------------- |
leer: mov r0,#0 // no arguments (argc = 0) |
mov r0,#0 // no arguments (argc = 0) |
mov r1,r0 |
mov r2,r0 |
mov fp,r0 // null frame pointer |
/storm_core/software/C/storm_core.h
5,10 → 5,12
// storm_core.h - STORM Core internal definitions |
// |
// Created by Stephan Nolting (stnolting@googlemail.com) |
// Last modified 22. Jan. 2012 |
// http://www.opencores.com/project,storm_core |
// Last modified 15. Feb. 2012 |
//////////////////////////////////////////////////////////////////////////////// |
|
/* Internal System Coprocessor Register Set */ |
#define SYS_CP 15 // system coprocessor # |
#define ID_REG_0 0 // ID register 0 |
#define ID_REG_1 1 // ID register 1 |
#define ID_REG_2 2 // ID register 2 |
22,21 → 24,24
#define TIME_COUNT 10 // Internal timer, counter |
#define LFSR_POLY 11 // Internal LFSR, polynomial |
#define LFSR_DATA 12 // Internal LFSR, shift register |
#define SYS_IO 13 // System IO ports |
|
/* CP_SYS_CTRL_0 */ |
#define FDC 0 // flush d-cache |
#define CDC 1 // clear d-cache |
#define CIC 2 // flush i-cache |
#define CWT 3 // cache write-thru enable |
#define RST 5 // force system reset |
#define FRZ 6 // freeze processor until reset |
#define TEN 7 // internal timer enable |
#define TIE 8 // internal timer interrupt enable |
#define TIM 9 // internal timer interrupt mode (0:IRQ/1:FIQ) |
#define LFSRE 10 // LFSR enable |
#define LFSRM 11 // LFSR update on 0:clock/1:access |
#define LFSRD 12 // LFSR shift direction (0:R/1:L) |
#define MBC_0 16 // max bus cycle length bit 0 |
#define MBC_15 31 // max bus cycle length bit 15 |
#define DC_FLUSH 0 // flush d-cache |
#define DC_CLEAR 1 // clear d-cache |
#define IC_CLEAR 2 // flush i-cache |
#define DC_WTHRU 3 // cache write-thru enable |
#define DC_AUTOPR 4 // auto pre-reload d-cache page |
#define IC_AUTOPR 5 // auto pre-reload i-cache page |
#define TIME_EN 10 // enable internal timer |
#define TIME_INT 11 // int timer interrupt enable |
#define TIME_M 12 // int timer interrupt mode |
#define LFSR_EN 13 // enable lfsr |
#define LFSR_M 14 // lfsr update mode |
#define LFSR_D 15 // lfsr shift direction |
#define MBC_0 16 // max bus cycle length bit 0 |
#define MBC_LSB 16 |
#define MBC_15 31 // max bus cycle length bit 15 |
#define MBC_MSB 31 |
|
#endif // storm_core_h |
/storm_core/software/C/main.c
1,39 → 1,38
#include "storm_core.h" |
|
//GPIO_OUT is a port-expander connected to the wishbone bus |
#define REG32 (volatile unsigned int*) |
#define GPIO_OUT (*(REG32 (0xFFFFE028))) |
/*---------------------------------------- |
STORM Core Demo SoC Program |
by Stephan Nolting |
|
This program outputs the first 30 |
Fibonacci numbers on the IO.O port. |
----------------------------------------*/ |
|
// simple delay function |
static void delay(void) |
{ |
static int i; |
#define REG32 (volatile unsigned int*) |
|
for (i=0; i<200001; i++) |
{ |
asm volatile ("NOP"); |
} |
} |
/* ---- IO Device Locations ---- */ |
#define GPIO_OUT (*(REG32 (0xFFFFFE020))) |
#define GPIO_IN (*(REG32 (0xFFFFFE024))) |
|
|
// main program |
int main(void) |
{ |
int i; |
int test_array[14] = {1,2,4,8,16,32,64,128,64,32,16,8,4,2}; |
int i, num_a, num_b, tmp; |
|
GPIO_OUT = 0; |
GPIO_OUT = 0; // clear output |
|
while(1) |
{ |
for(i=0; i<14; i++) |
{ |
delay(); |
GPIO_OUT = test_array[i]; |
num_a = 0; |
num_b = 1; |
|
for(i=0; i<31; i++) |
{ |
GPIO_OUT = num_a; |
tmp = num_a + num_b; |
num_a = num_b; |
num_b = tmp; |
} |
} |
|
return 0; |
} |
|