@ -18,7 +18,8 @@ entity WishBoneCheckerE is
--+ wishbone inputs
--+ wishbone inputs
WbSDat_i : in std_logic_vector ;
WbSDat_i : in std_logic_vector ;
WbSAck_i : in std_logic ;
WbSAck_i : in std_logic ;
WbSErr_i : in std_logic
WbSErr_i : in std_logic ;
WbRty_i : in std_logic
) ;
) ;
end entity WishBoneCheckerE ;
end entity WishBoneCheckerE ;
@ -33,10 +34,10 @@ begin
--
--
-- Wishbone protocol checks
-- Wishbone protocol checks
--
--
-- psl property initialize(boolean init_state) is
-- psl property initialize_interface (boolean init_state) is
-- always ({WbRst_i} |=> {init_state[+] && {WbRst_i[*]; not(WbRst_i)}});
-- 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))
-- psl RULE_3_00 : assert initialize_interface (not(WbMCyc_i) and not(WbMStb_i) and not(WbMWe_i))
-- report "Wishbone rule 3.00 violated";
-- report "Wishbone rule 3.00 violated";
--
--
-- psl property reset_signal is
-- psl property reset_signal is
@ -45,11 +46,48 @@ begin
-- psl RULE_3_05 : assert reset_signal
-- psl RULE_3_05 : assert reset_signal
-- report "Wishbone rule 3.05 violated";
-- 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";
-- psl property CYC_O_signal is
-- always {not(WbMStb_i); WbMStb_i} |-> {(WbMCyc_i and WbMStb_i)[+]; not(WbMStb_i)};
--
-- psl RULE_3_25 : assert CYC_O_signal
-- report "Wishbone rule 3.25 violated";
--
-- psl property slave_no_response is
-- always not(WbMCyc_i) -> not(WbSAck_i) and not(WbSErr_i);
--
-- psl property slave_response_to_master is
-- always {not(WbMStb_i); WbMStb_i} |->
-- {{(WbMStb_i and not(WbSAck_i))[*];
-- WbMStb_i and WbSAck_i;
-- not(WbMStb_i)} |
-- {(WbMStb_i and not(WbSErr_i))[*];
-- WbMStb_i and WbSErr_i;
-- not(WbMStb_i)} |
-- {(WbMStb_i and not(WbRty_i))[*];
-- WbMStb_i and WbRty_i;
-- not(WbMStb_i)}
-- };
--
-- psl RULE_3_30_0 : assert slave_no_response
-- report "Wishbone rule 3.30_0 violated";
--
-- psl RULE_3_30_1 : assert slave_response_to_master
-- report "Wishbone rule 3.30_0 violated";
--
-- psl property slave_response is
-- always {not(WbMStb_i); WbMCyc_i and WbMStb_i} |->
-- {not(WbSAck_i or WbSErr_i or WbRty_i)[*]; WbSAck_i or WbSErr_i or WbRty_i};
--
-- psl RULE_3_35 : assert slave_response
-- report "Wishbone rule 3.35 violated";
--
-- psl property response_signals is
-- never ((WbSErr_i and WbRty_i) or (WbSErr_i and WbSAck_i) or (WbSAck_i and WbRty_i));
--
-- psl RULE_3_45 : assert response_signals
-- report "Wishbone rule 3.45 violated";
--
-- -- psl property slave_negated_response is
end architecture check ;
end architecture check ;