port(
--System input pins
- sys_res : in std_logic;
+ sys_res_unsync : in std_logic;
sys_clk : in std_logic;
-- result : out gp_register_t;
-- reg_wr_data : out gp_register_t
architecture behav of core_top is
+ constant SYNC_STAGES : integer := 2;
+ constant RESET_VALUE : std_logic := '0';
+
signal jump_result : instruction_addr_t;
signal jump_result_pin : instruction_addr_t;
signal prediction_result_pin : instruction_addr_t;
signal gpm_in_pin : extmod_rec;
signal gpm_out_pin : gp_register_t;
signal nop_pin : std_logic;
+
+ signal sys_res : std_logic;
signal vers, vers_nxt : exec2wb_rec;
+ signal sync : std_logic_vector(1 to SYNC_STAGES);
begin
fetch_st : fetch_stage
vers.dmem_write_en <= '0';
vers.hword <= '0';
vers.byte_s <= '0';
+ sync <= (others => '0');
elsif rising_edge(sys_clk) then
vers <= vers_nxt;
+
+ sync(1) <= sys_res_unsync xor RESET_VALUE;
+ for i in 2 to SYNC_STAGES loop
+ sync(i) <= sync(i - 1);
+ end loop;
+
end if;
end process;
+sys_res <= sync(SYNC_STAGES);
--init : process(all)