+++ /dev/null
-library ieee;
-use ieee.std_logic_1164.all;
-use ieee.std_logic_unsigned.all;
-use ieee.numeric_std.all;
-
-entity top is
- port (
- clk : in std_logic;
- rst : in std_logic;
- up : in std_logic;
- down : in std_logic;
- cnt : buffer std_logic_vector(7 downto 0)
- );
-end entity;
-
-architecture rtl of top is
-begin
- process (clk) begin
- if rising_edge(clk) then
- if rst = '1' then
- cnt <= std_logic_vector(to_unsigned(0, 8));
- elsif up = '1' then
- cnt <= cnt + std_logic_vector(to_unsigned(1, 8));
- elsif down = '1' then
- cnt <= cnt - std_logic_vector(to_unsigned(1, 8));
- end if;
- end if;
- end process;
-
- -- PSL default clock is (rising_edge(clk));
- -- PSL assume always ( down -> not up );
- -- PSL assert always ( up |=> (cnt = prev(cnt) + std_logic_vector(to_unsigned(1, 8))) ) abort rst = '1';
- -- PSL assert always ( down |=> (cnt = prev(cnt) - std_logic_vector(to_unsigned(1, 8))) ) abort rst = '1';
-end architecture;