library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity WishBoneCheckerE is port ( --+ wishbone system if WbRst_i : in std_logic; WbClk_i : in std_logic; --+ wishbone outputs WbMCyc_i : in std_logic; WbMStb_i : in std_logic; WbMWe_i : in std_logic; WbMAdr_i : in std_logic_vector; WbMDat_i : in std_logic_vector; --+ wishbone inputs WbSDat_i : in std_logic_vector; WbSAck_i : in std_logic; WbSErr_i : in std_logic ); end entity WishBoneCheckerE; architecture check of WishBoneCheckerE is begin -- psl default clock is rising_edge(WbClk_i); -- -- Wishbone protocol checks -- -- psl property initialize(boolean init_state) is -- always ({WbRst_i} |=> {init_state[+] && {WbRst_i[*]; not(WbRst_i)}}); -- -- psl RULE_3_00 : assert initialize(not(WbMCyc_i) and not(WbMStb_i) and not(WbMWe_i)) -- report "Wishbone rule 3.00 violated"; -- -- psl property reset_signal is -- always {not(WbRst_i); WbRst_i} |=> {(WbRst_i and not(WbClk_i))[*]; WbRst_i and WbClk_i}; -- -- psl RULE_3_05 : assert reset_signal -- report "Wishbone rule 3.05 violated"; -- -- -- psl property master_cycle_signal(boolean master_strobe, master_cyc) is -- -- always {master_strobe} |-> {master_cyc[+] && {not(master_strobe)[->]:WbClk_i}}; -- -- -- -- psl RULE_3_25 : assert master_cycle_signal(WbMStb_i, WbMCyc_i) -- -- report "Wishbone rule 3.25 violated"; end architecture check;