raddr := unsigned(r.nia(BTC_ADDR_BITS + 1 downto 2)) +
to_unsigned(2, BTC_ADDR_BITS);
if advance_nia = '1' then
- btc_rd_data <= btc_memory(to_integer(raddr));
- btc_rd_valid <= btc_valids(to_integer(raddr));
+ if is_X(raddr) then
+ btc_rd_data <= (others => 'X');
+ btc_rd_valid <= 'X';
+ else
+ btc_rd_data <= btc_memory(to_integer(raddr));
+ btc_rd_valid <= btc_valids(to_integer(raddr));
+ end if;
end if;
if btc_wr = '1' then
+ assert not is_X(btc_wr_addr) report "Writing to unknown address" severity FAILURE;
btc_memory(to_integer(unsigned(btc_wr_addr))) <= btc_wr_data;
end if;
if inval_btc = '1' or rst = '1' then
btc_valids <= (others => '0');
elsif btc_wr = '1' then
+ assert not is_X(btc_wr_addr) report "Writing to unknown address" severity FAILURE;
btc_valids(to_integer(unsigned(btc_wr_addr))) <= '1';
end if;
end if;