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;
|