De testbench om te testen of de ALU werkt kan hier gedownload worden. Deze testbench is, zoals je misschien al vermoedde, gegenereerd. Voor de verbetering van de opdracht wordt een soortgelijke testbench gebruikt.
--------------------------------------------------------------------------------
-- KU Leuven - ESAT/COSIC - Emerging technologies, Systems & Security
--------------------------------------------------------------------------------
-- Module Name: alu_tb - Behavioural
-- Project Name: Testbench for alu
-- Description:
--
-- Revision Date Author Comments
-- v0.1 20240312 VlJo Initial version
--
--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-- use IEEE.NUMERIC_STD.ALL;
entity alu_tb is
generic(
WIDTH : natural := 16
);
end entity alu_tb;
architecture Behavioural of alu_tb is
component alu is
generic(
WIDTH : natural := 16
);
port(
X : IN STD_LOGIC_VECTOR(WIDTH-1 downto 0);
Y : IN STD_LOGIC_VECTOR(WIDTH-1 downto 0);
Z : OUT STD_LOGIC_VECTOR(WIDTH-1 downto 0);
zx : IN STD_LOGIC;
zy : IN STD_LOGIC;
nx : IN STD_LOGIC;
ny : IN STD_LOGIC;
f : IN STD_LOGIC;
no : IN STD_LOGIC;
zr : OUT STD_LOGIC;
ng : OUT STD_LOGIC
);
end component alu;
signal X : STD_LOGIC_VECTOR(WIDTH-1 downto 0);
signal Y : STD_LOGIC_VECTOR(WIDTH-1 downto 0);
signal Z : STD_LOGIC_VECTOR(WIDTH-1 downto 0);
signal zx : STD_LOGIC;
signal zy : STD_LOGIC;
signal nx : STD_LOGIC;
signal ny : STD_LOGIC;
signal f : STD_LOGIC;
signal no : STD_LOGIC;
signal zr : STD_LOGIC;
signal ng : STD_LOGIC;
begin
-------------------------------------------------------------------------------
-- STIMULI
-------------------------------------------------------------------------------
PSTIM: process
variable v_correct_z : natural;
variable v_incorrect_z : natural;
variable v_correct_zr : natural;
variable v_incorrect_zr : natural;
variable v_correct_ng : natural;
variable v_incorrect_ng : natural;
begin
X <= x"0000";
Y <= x"0000";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 10 ns;
-- generate addition
X <= x"381c";
Y <= x"4a1b";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"c7e3") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"329a";
Y <= x"ae51";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"cd65") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2173";
Y <= x"6773";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"ba00") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d463";
Y <= x"f724";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6c3f";
Y <= x"f1bd";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"f1bd") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c3f8";
Y <= x"2876";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"647e") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7470";
Y <= x"9d25";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2036";
Y <= x"45df";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2037") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"90b6";
Y <= x"0e82";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"0e83") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8a6f";
Y <= x"da4f";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1e25";
Y <= x"fae8";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"1e25") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7112";
Y <= x"296e";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"9a80") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b575";
Y <= x"07cb";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"f834") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f58d";
Y <= x"047c";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"f58d") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"17f4";
Y <= x"ddcc";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"f5c0") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4ea4";
Y <= x"651d";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"b15c") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3d93";
Y <= x"53fc";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c26d") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"737c";
Y <= x"6d71";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"928f") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"464d";
Y <= x"db58";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f036";
Y <= x"78f8";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"f037") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8c13";
Y <= x"2038";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b10e";
Y <= x"741e";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"b10e") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6f4c";
Y <= x"b33c";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"2288") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"096a";
Y <= x"cd82";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"327d") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d38d";
Y <= x"8bb1";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"47dc") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0706";
Y <= x"9a4c";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"428e";
Y <= x"eb92";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f35e";
Y <= x"ba46";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ada4") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3177";
Y <= x"1d89";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"1d88") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ec4f";
Y <= x"12dc";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"12dd") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8336";
Y <= x"a0a1";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"5f5e") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d1a1";
Y <= x"f8dd";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"64eb";
Y <= x"13fd";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4ee6";
Y <= x"9c36";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e2d2";
Y <= x"9175";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"e2d3") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"18ba";
Y <= x"c7b6";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"aefc") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a374";
Y <= x"8ea5";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"8ea6") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a460";
Y <= x"45da";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"45da") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2936";
Y <= x"c895";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"e9b7") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"015c";
Y <= x"1210";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"edf0") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9bf7";
Y <= x"c099";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"9bf6") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0abb";
Y <= x"de8c";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"debf") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c351";
Y <= x"aa8f";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"aa8f") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4348";
Y <= x"221f";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"0208") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4fbe";
Y <= x"92b1";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"92b1") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e416";
Y <= x"ce23";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"c402") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"dae5";
Y <= x"a0a3";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f807";
Y <= x"3920";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"3920") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e3fd";
Y <= x"a55c";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"e3fe") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"44c0";
Y <= x"62a9";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"1de9") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6393";
Y <= x"9b79";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4525";
Y <= x"2b41";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"6f65") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d753";
Y <= x"55c6";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8e40";
Y <= x"147b";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"0440") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9fd1";
Y <= x"51aa";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"ae56") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"bcfe";
Y <= x"3730";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c8d0") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3c94";
Y <= x"86ea";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c1d4";
Y <= x"5fc4";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"dfd4") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e99b";
Y <= x"db31";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"e99b") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"dff6";
Y <= x"20ff";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"00f5") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"96ba";
Y <= x"cfcf";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"96bb") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cf9c";
Y <= x"d4c6";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9ef2";
Y <= x"b376";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"9ef2") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0ef8";
Y <= x"2d3d";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8e28";
Y <= x"9d61";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"71d8") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e297";
Y <= x"6165";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"6005") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6727";
Y <= x"9182";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"da0e";
Y <= x"0b02";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7128";
Y <= x"a5ee";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"2128") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"aa44";
Y <= x"cd7e";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"dcc6") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e1b6";
Y <= x"c1b5";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"c1b4") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7513";
Y <= x"fdca";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7749") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"728b";
Y <= x"e3d8";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"e3d8") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e071";
Y <= x"73cd";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0045";
Y <= x"6e39";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"6df4") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a919";
Y <= x"3f65";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"a918") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9e2c";
Y <= x"3e88";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"9e2c") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d8b1";
Y <= x"28c9";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"afe8") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"abfb";
Y <= x"0a06";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0a05") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"aa9c";
Y <= x"1a93";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"1a92") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8c09";
Y <= x"8fa9";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"8c09") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d570";
Y <= x"d19d";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"03d3") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5ff6";
Y <= x"a205";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"5dfa") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4e66";
Y <= x"662a";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"b19a") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"147d";
Y <= x"6b48";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"147d") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"88da";
Y <= x"9ab7";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"88d9") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2ca5";
Y <= x"7193";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"aa5c";
Y <= x"d686";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"fede") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d6b9";
Y <= x"b3fe";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"b3fd") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f549";
Y <= x"9cfa";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"0ab6") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ff91";
Y <= x"355c";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"355b") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a1bd";
Y <= x"ec00";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"a000") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b2eb";
Y <= x"886c";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"4d15") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b6b5";
Y <= x"476f";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"f7ff") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2ff1";
Y <= x"2c9e";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"999c";
Y <= x"f39b";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"999b") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2c09";
Y <= x"a82c";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"2c09") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1bf7";
Y <= x"3748";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c8b8") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ae31";
Y <= x"740c";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"05b3";
Y <= x"8af0";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"8af0") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6be0";
Y <= x"815c";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"aca8";
Y <= x"65a3";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"9a5c") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2b1c";
Y <= x"cbc4";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"a0a8") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9460";
Y <= x"576b";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"6b9f") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cb57";
Y <= x"f1f0";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"34a8") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d8a7";
Y <= x"762b";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c7ff";
Y <= x"7a7a";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c800") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6bce";
Y <= x"44c3";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"44c3") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3ae3";
Y <= x"ad82";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"8d61") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cc3d";
Y <= x"daeb";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"33c3") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e0bc";
Y <= x"8046";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"8045") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"79b3";
Y <= x"47e6";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"7ff7") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9ec5";
Y <= x"a0a9";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"a0a8") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fae6";
Y <= x"94e2";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"6b1e") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b5b9";
Y <= x"a97e";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"bdff") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9151";
Y <= x"a526";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e478";
Y <= x"214a";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"214a") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"40cc";
Y <= x"fce8";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"fce8") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9432";
Y <= x"7f72";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"af16";
Y <= x"b20f";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"fd07") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2ac2";
Y <= x"330d";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"d53e") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3a14";
Y <= x"89f5";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d073";
Y <= x"6395";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"9322") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5ee6";
Y <= x"ef1f";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"4e06") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d98e";
Y <= x"347a";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d98d") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"44d9";
Y <= x"6b1f";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2646") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"08f4";
Y <= x"6b0f";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"9de5") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"14cd";
Y <= x"0ee5";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"0ee6") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1fa2";
Y <= x"fc17";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"1c02") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a858";
Y <= x"74ba";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"8b45") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7357";
Y <= x"f0de";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7ec0";
Y <= x"8a12";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9849";
Y <= x"ab29";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4d89";
Y <= x"4ae8";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"fd5f") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6824";
Y <= x"d4bc";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d4bb") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1a18";
Y <= x"eb7e";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"0a18") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2f4a";
Y <= x"0382";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"d438") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7577";
Y <= x"512f";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"96fa";
Y <= x"c033";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"96f9") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5871";
Y <= x"178b";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ec1e";
Y <= x"6a33";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"6a33") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"eac7";
Y <= x"8958";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"ebdf") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fac6";
Y <= x"8d45";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"927f") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f943";
Y <= x"eccc";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"eccd") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2875";
Y <= x"c913";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"e977") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4ff9";
Y <= x"2b69";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"4ff8") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1e7c";
Y <= x"0c86";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0c85") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a181";
Y <= x"eb44";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"a181") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5e7b";
Y <= x"d052";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"a184") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b6a9";
Y <= x"ac05";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"aac8";
Y <= x"b20d";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"5537") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4000";
Y <= x"8984";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cb5c";
Y <= x"fafd";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"d05f") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8b60";
Y <= x"dd8b";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"522b") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b092";
Y <= x"f91e";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"4f6e") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f69b";
Y <= x"1e03";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"1603") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e0e1";
Y <= x"4242";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"e0e2") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"92a5";
Y <= x"3ff0";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d295") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"71ab";
Y <= x"3d2e";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"71ac") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e317";
Y <= x"6732";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7be5") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f49a";
Y <= x"635d";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"f7df") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"12ab";
Y <= x"aa5d";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"aa5c") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"022e";
Y <= x"7e74";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"022e") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"90c9";
Y <= x"7a05";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"6f36") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c144";
Y <= x"0ad2";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"f52d") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a3f8";
Y <= x"37d3";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c82d") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a41a";
Y <= x"f720";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5647";
Y <= x"2296";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"33b1") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e089";
Y <= x"59ce";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"86bb") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9267";
Y <= x"85ed";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ae30";
Y <= x"4219";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e3c9";
Y <= x"1c00";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9081";
Y <= x"d55c";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"44db") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"02f6";
Y <= x"f97f";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"fd09") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c626";
Y <= x"8032";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"ba0c") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"28d0";
Y <= x"43f2";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"28d0") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9434";
Y <= x"8d40";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"8d40") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"16f8";
Y <= x"c460";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"d6f8") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2892";
Y <= x"4a2f";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"d76d") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6124";
Y <= x"acb6";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"9edb") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f741";
Y <= x"c713";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"f740") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"30b3";
Y <= x"94b7";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"30b4") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a262";
Y <= x"10e9";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"ef16") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9cc6";
Y <= x"3ab2";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"88b2";
Y <= x"c0a4";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c80e") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5fb3";
Y <= x"c613";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"5fb4") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"73b7";
Y <= x"edf7";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"1209") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7313";
Y <= x"631c";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"8ced") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"eb4a";
Y <= x"1da3";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4b8f";
Y <= x"80cd";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"80ce") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5404";
Y <= x"1c1d";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"7021") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f4d7";
Y <= x"e245";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d71c") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d14c";
Y <= x"0c8a";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"2eb3") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7b22";
Y <= x"72b2";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"8d4d") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a944";
Y <= x"dd41";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"dd42") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1e3e";
Y <= x"760e";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"1e3e") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d060";
Y <= x"14c7";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a601";
Y <= x"9cd8";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f26c";
Y <= x"b2d8";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0d94") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1310";
Y <= x"b836";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"1310") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6103";
Y <= x"9f4f";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"9efd") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3941";
Y <= x"32ee";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"3940") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"aa59";
Y <= x"7ca7";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2db2") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"24b6";
Y <= x"2fb1";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ea42";
Y <= x"ebf6";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"1409") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3738";
Y <= x"9345";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"3738") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b396";
Y <= x"48ca";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"b396") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"51bd";
Y <= x"202c";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"51bc") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"97c8";
Y <= x"47d0";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"47cf") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ab91";
Y <= x"4629";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"462a") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"28e4";
Y <= x"0942";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"28e4") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3a08";
Y <= x"e2cf";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"1cd7") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8289";
Y <= x"ccc7";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"4f50") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ed5c";
Y <= x"b002";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"fd5e") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"810a";
Y <= x"dca2";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"235e") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8f53";
Y <= x"28e1";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7407";
Y <= x"bb6e";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"8bf8") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"76be";
Y <= x"5217";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"24a7") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"523a";
Y <= x"dff9";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"3233") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"560b";
Y <= x"9f22";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d355";
Y <= x"41a3";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"dfd9";
Y <= x"1d31";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"fd0a") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"feed";
Y <= x"1491";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"ea5c") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9395";
Y <= x"f3dd";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cae6";
Y <= x"064e";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"cae6") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f6ba";
Y <= x"329a";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c420") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8434";
Y <= x"229d";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"8434") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b712";
Y <= x"c6ae";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"b711") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b29f";
Y <= x"53fc";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"129c") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2d74";
Y <= x"99de";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"99df") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2700";
Y <= x"5083";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b83b";
Y <= x"b83c";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"47c4") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"be5f";
Y <= x"aa61";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"aa61") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3a46";
Y <= x"f91f";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f156";
Y <= x"396f";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"f155") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ccf4";
Y <= x"3262";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"330b") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b4cf";
Y <= x"74a3";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"8b5c") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3c1d";
Y <= x"50f0";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"3c1e") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cef8";
Y <= x"7788";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"8877") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"71ae";
Y <= x"2843";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"8e51") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3d43";
Y <= x"af52";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ec95") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e55e";
Y <= x"ddc5";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"c544") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4333";
Y <= x"c668";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"bccc") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a5ef";
Y <= x"321a";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"a5f0") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"14ad";
Y <= x"5976";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"14ac") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0f58";
Y <= x"7d3f";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0f59") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c351";
Y <= x"856a";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"7a95") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"dcc4";
Y <= x"6dc6";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e7bd";
Y <= x"49ca";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"1842") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e782";
Y <= x"f419";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"28da";
Y <= x"9815";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"d725") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b056";
Y <= x"cd61";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"fd77") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"dd0a";
Y <= x"2c10";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"2c11") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9323";
Y <= x"93f5";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"bdc8";
Y <= x"ff0a";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9ef5";
Y <= x"85db";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"7a24") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"92a0";
Y <= x"c382";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"c382") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4efa";
Y <= x"137b";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"4efb") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b893";
Y <= x"0bcb";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"b893") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7b3b";
Y <= x"3085";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"84c5") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c54b";
Y <= x"77d9";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"3ab4") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b253";
Y <= x"543c";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"b253") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d17b";
Y <= x"05af";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e6a4";
Y <= x"cdca";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"3235") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"49e9";
Y <= x"86ae";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d097") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3856";
Y <= x"caeb";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"3856") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5428";
Y <= x"a687";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e2e0";
Y <= x"880f";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"1d20") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6249";
Y <= x"7bfa";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"de43") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"afdc";
Y <= x"c3ba";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"effe") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"60f9";
Y <= x"473c";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"67fd") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8bd3";
Y <= x"a61e";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"8bd4") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1c5b";
Y <= x"e5d3";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"3688") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3212";
Y <= x"9301";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"3212") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4615";
Y <= x"cc51";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"1266") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e36c";
Y <= x"23ac";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"bfc0") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a95b";
Y <= x"2696";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"82c5") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b355";
Y <= x"efd4";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c381") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f260";
Y <= x"33a9";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7e6b";
Y <= x"e268";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7e6c") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f73f";
Y <= x"8aca";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"80b8";
Y <= x"462e";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"462d") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"14e7";
Y <= x"e65b";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f86a";
Y <= x"208e";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"18f8") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f063";
Y <= x"90b5";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"6f4b") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c4a2";
Y <= x"23fc";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"dc03") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b493";
Y <= x"d7b8";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"b492") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e3fb";
Y <= x"c906";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"e3fb") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5153";
Y <= x"bf1a";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"ff5b") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f3dd";
Y <= x"d0f3";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"f3dc") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3313";
Y <= x"8159";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"b46c") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"344c";
Y <= x"bc62";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"344c") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5817";
Y <= x"e6b3";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"e6b3") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7971";
Y <= x"f5a7";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7c36") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"04ac";
Y <= x"e751";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"18af") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"be09";
Y <= x"51b2";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"6c57") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"db7e";
Y <= x"ad1f";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2e5f") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0c33";
Y <= x"a8f9";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b4e8";
Y <= x"624e";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e30b";
Y <= x"98a5";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"fbaf") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2b12";
Y <= x"3c17";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"d4ed") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"bda5";
Y <= x"d69b";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"bda6") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f2c0";
Y <= x"005e";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"ffa2") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1873";
Y <= x"01fe";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"1873") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2da9";
Y <= x"ff9f";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"0060") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6426";
Y <= x"efe9";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"9bd9") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2602";
Y <= x"39be";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c642") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fad4";
Y <= x"f351";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"f87d") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4473";
Y <= x"174e";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"0442") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8c9f";
Y <= x"2bb4";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"d44c") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ea73";
Y <= x"63df";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"9c21") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5fd2";
Y <= x"af23";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0ef5") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5640";
Y <= x"9cc0";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"a9c0") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f868";
Y <= x"5173";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"49db") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f462";
Y <= x"d38c";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"c7ee") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6233";
Y <= x"545f";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"4013") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cfd5";
Y <= x"5366";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3306";
Y <= x"112a";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"112a") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8e33";
Y <= x"f59d";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"ffbf") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f015";
Y <= x"2ca1";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"f016") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fde8";
Y <= x"28ad";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"d53b") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8980";
Y <= x"c7ef";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"8980") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3138";
Y <= x"dbe7";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"3137") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"84a6";
Y <= x"d57a";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"da89";
Y <= x"8767";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7899") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b58c";
Y <= x"6606";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"4a74") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6c65";
Y <= x"9677";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"939a") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"aa9c";
Y <= x"586e";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"add2") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"bcf9";
Y <= x"b2a3";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"4307") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"45c1";
Y <= x"f879";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"f87a") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a725";
Y <= x"fdbf";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"58da") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9894";
Y <= x"1378";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d2a4";
Y <= x"38ca";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0864";
Y <= x"84a5";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"7b5a") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5bf8";
Y <= x"f778";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"5370") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f1c9";
Y <= x"216e";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0e37") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9c73";
Y <= x"809c";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7f64") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9abc";
Y <= x"e360";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"7e1c") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a5fa";
Y <= x"dba6";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"a5fb") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1ce5";
Y <= x"a7b5";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"c49a") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"13c6";
Y <= x"81b8";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"81b7") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4cc1";
Y <= x"d624";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"29dc") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3e6c";
Y <= x"b04f";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c194") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f75d";
Y <= x"afe2";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"08a3") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c76f";
Y <= x"d129";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c770") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f635";
Y <= x"818d";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"818c") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a591";
Y <= x"3d06";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c2fa") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c3d6";
Y <= x"97fc";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"d426") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"095b";
Y <= x"10dc";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"ef24") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fb20";
Y <= x"78c9";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"fbe9") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7ac8";
Y <= x"ac23";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"2800") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8cbc";
Y <= x"ab63";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"549c") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2c62";
Y <= x"9791";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2c63") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fe6e";
Y <= x"2d7b";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"fe6e") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3d28";
Y <= x"efce";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fa57";
Y <= x"88c6";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"bb95";
Y <= x"341b";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"341b") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"03df";
Y <= x"2f4a";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"2fdf") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"abe4";
Y <= x"31cd";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"abe5") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"98f1";
Y <= x"8196";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"1a87") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e593";
Y <= x"7b4c";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"1a6d") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a7c0";
Y <= x"a8f7";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"a7c0") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1106";
Y <= x"c61c";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cf4e";
Y <= x"acd6";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8dd1";
Y <= x"70ac";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"70ab") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b519";
Y <= x"98dc";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"6724") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"43ab";
Y <= x"b249";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9c32";
Y <= x"c589";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"63ce") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"94fc";
Y <= x"ad6c";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5c11";
Y <= x"254e";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"7d5f") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4869";
Y <= x"c3c7";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"c3c6") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f67e";
Y <= x"bc31";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"bc30") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"bab6";
Y <= x"1823";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"1822") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d60f";
Y <= x"80b6";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"80b7") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"eb57";
Y <= x"1e7e";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"eb58") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cb5f";
Y <= x"32f9";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"34a1") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1487";
Y <= x"42e7";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1475";
Y <= x"b310";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"4cef") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0713";
Y <= x"6fb3";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"6fb3") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"71c0";
Y <= x"ec10";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"ec10") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5c60";
Y <= x"42ee";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"a39f") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a996";
Y <= x"8673";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ee1f";
Y <= x"5fc7";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"a038") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8384";
Y <= x"bf25";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"bf24") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b58f";
Y <= x"912d";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2462") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2df2";
Y <= x"af1d";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"af1d") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b50d";
Y <= x"e74e";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"4af2") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4598";
Y <= x"0d36";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0d35") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"93a9";
Y <= x"c6fb";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"6c56") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"37c0";
Y <= x"69b5";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c840") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9da8";
Y <= x"147b";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"76d3") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8de4";
Y <= x"0d64";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7f80") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"91e3";
Y <= x"4aad";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"b553") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3e0f";
Y <= x"7bbd";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"b9cc") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8344";
Y <= x"3437";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"cbc8") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"01d1";
Y <= x"1ab5";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"e54b") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e21c";
Y <= x"d24f";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2db1") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c3f3";
Y <= x"3314";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c3e1";
Y <= x"9ec2";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"dfe3") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d301";
Y <= x"82e9";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"2cfe") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5e60";
Y <= x"9f2a";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"5e61") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9d73";
Y <= x"9b03";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"628d") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5930";
Y <= x"e646";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"72ea") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"774a";
Y <= x"fd0c";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6267";
Y <= x"eaa5";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"4d0c") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0cb6";
Y <= x"2f50";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"dd66") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f6c9";
Y <= x"45cd";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"f6c8") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"807f";
Y <= x"02c1";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"fd3e") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4839";
Y <= x"4d7b";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0542") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9805";
Y <= x"12d3";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"12d2") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b171";
Y <= x"6ce6";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"931a") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f0ef";
Y <= x"0e40";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"f0ee") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f791";
Y <= x"3a84";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"086f") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e8d2";
Y <= x"ebbf";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"172d") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"56d1";
Y <= x"51fc";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"57fd") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0d41";
Y <= x"95fe";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"0540") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4850";
Y <= x"d82f";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"4850") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a6af";
Y <= x"bd4e";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"a6af") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3a81";
Y <= x"4159";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"f928") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4a8d";
Y <= x"d0e9";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"865c") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7283";
Y <= x"b715";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8cf6";
Y <= x"a6b1";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"a6b1") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"55ba";
Y <= x"d088";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"5088") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fab5";
Y <= x"be3b";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8382";
Y <= x"37cd";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3ddf";
Y <= x"f5c2";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c221") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2e94";
Y <= x"b925";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"b924") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ad7f";
Y <= x"233e";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"75bf") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3194";
Y <= x"99fa";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"6606") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c302";
Y <= x"1132";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"eece") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"db49";
Y <= x"ba26";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"ba26") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4045";
Y <= x"c4f5";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"3b0a") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"809a";
Y <= x"359f";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"809a") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7ca4";
Y <= x"abf3";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"28a0") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"02be";
Y <= x"4362";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"228a";
Y <= x"3916";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"2002") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c2df";
Y <= x"0fbe";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c2e0") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a127";
Y <= x"9b41";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"5ed8") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2496";
Y <= x"d31d";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"5179") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"26c6";
Y <= x"1cb3";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"3ef7") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"58c5";
Y <= x"4991";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"a73b") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"88ed";
Y <= x"7654";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"1299") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d753";
Y <= x"7263";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"7264") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0d0a";
Y <= x"b055";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"bd5f") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6135";
Y <= x"9460";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"6135") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"52fe";
Y <= x"6b86";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"ad02") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"78dd";
Y <= x"39eb";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"8722") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"badf";
Y <= x"d8a4";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"1dc5") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9a59";
Y <= x"e196";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"e197") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4a9a";
Y <= x"43bc";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8336";
Y <= x"18f6";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6fd7";
Y <= x"dfe2";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"4fb9") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f854";
Y <= x"b7a9";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"b7a8") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8fae";
Y <= x"a1b7";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2009";
Y <= x"c348";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"c349") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ed60";
Y <= x"9aad";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"12a0") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b2da";
Y <= x"8af3";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"b2db") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0567";
Y <= x"c509";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"c509") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9ab0";
Y <= x"aed5";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"aed6") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a9cc";
Y <= x"1222";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"aabf";
Y <= x"1551";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"1550") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7474";
Y <= x"e6a3";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"e6a3") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0112";
Y <= x"440e";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ae7e";
Y <= x"35f1";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"8773") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"07d0";
Y <= x"9bd9";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"f830") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f56a";
Y <= x"829f";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"f569") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"475d";
Y <= x"6ab7";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"235a") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f4f6";
Y <= x"99e3";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"0b09") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fccb";
Y <= x"f722";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"0334") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"23c1";
Y <= x"5d2c";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"68e5";
Y <= x"8a1b";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6ee8";
Y <= x"5131";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"67c4";
Y <= x"d4d0";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2b30") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c5d2";
Y <= x"ecaa";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"ecaa") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d56d";
Y <= x"063b";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"063c") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a91f";
Y <= x"7162";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"7163") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7b76";
Y <= x"d03a";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"848a") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d480";
Y <= x"f504";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d47f") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"191b";
Y <= x"7121";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"a7fa") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"dae3";
Y <= x"7d19";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8342";
Y <= x"a3f8";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8070";
Y <= x"39b7";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ff64";
Y <= x"33a5";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"3309") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3610";
Y <= x"0111";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"34ff") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ecf9";
Y <= x"9976";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"866f") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6b21";
Y <= x"aa62";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"eb63") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"579a";
Y <= x"063a";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"579a") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"36d0";
Y <= x"7809";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ff97";
Y <= x"0d18";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"ff9f") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b691";
Y <= x"612d";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"9ed2") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"73f5";
Y <= x"7ac8";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"7ac8") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d4d4";
Y <= x"01a0";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0ffc";
Y <= x"4d9b";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7a2a";
Y <= x"7c1f";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"7e3f") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6dfe";
Y <= x"1bd2";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"add4") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d373";
Y <= x"a679";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"d306") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9592";
Y <= x"b5e5";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"b5e4") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c0dc";
Y <= x"3c0a";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"c0db") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c79e";
Y <= x"405a";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9cca";
Y <= x"951b";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"07af") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8338";
Y <= x"731f";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"8339") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4839";
Y <= x"4675";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"fe3c") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e5c8";
Y <= x"bf70";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"bf70") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d4cb";
Y <= x"7fbf";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4b97";
Y <= x"db55";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"4b98") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5349";
Y <= x"cf6e";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"3092") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f9fc";
Y <= x"e3e2";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8ded";
Y <= x"2b22";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"0920") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e1ca";
Y <= x"4c99";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"4c98") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cc99";
Y <= x"a088";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"5f78") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a8b8";
Y <= x"79f9";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"a8b9") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e7ac";
Y <= x"6420";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"9bdf") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"841e";
Y <= x"1688";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"841f") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ed03";
Y <= x"ce87";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b112";
Y <= x"2a51";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"d5af") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3b37";
Y <= x"1987";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"3b37") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6590";
Y <= x"4a04";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"658f") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7f0b";
Y <= x"5ad8";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d9e3") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c439";
Y <= x"d312";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c43a") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a878";
Y <= x"2c60";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"ac78") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e293";
Y <= x"9eb2";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"e293") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ff2d";
Y <= x"d149";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"d109") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d333";
Y <= x"865c";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d332") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3605";
Y <= x"cdca";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"3604") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f01b";
Y <= x"632e";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"5349") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fd84";
Y <= x"8c58";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"fd83") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1677";
Y <= x"5dc2";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"41da";
Y <= x"3855";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8d0a";
Y <= x"8af7";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"72f5") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"672d";
Y <= x"97a7";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"97a6") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8778";
Y <= x"2255";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8b2b";
Y <= x"3c88";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"c7b3") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"82a2";
Y <= x"7905";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"7d5d") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c362";
Y <= x"a70b";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"1c57") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7029";
Y <= x"0e28";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"702a") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c7dc";
Y <= x"9bba";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"3824") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"980f";
Y <= x"af0c";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"50f3") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6715";
Y <= x"d56b";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f78b";
Y <= x"c0e1";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"c081") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"028c";
Y <= x"8587";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"8586") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2b9c";
Y <= x"baa8";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"4557") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"73d5";
Y <= x"40d8";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"bf27") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9437";
Y <= x"28f3";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"9436") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2fea";
Y <= x"24e7";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"24e8") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"bb1d";
Y <= x"9318";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"9319") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f898";
Y <= x"ea2a";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fb3a";
Y <= x"22a2";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"22a3") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7e95";
Y <= x"d518";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"ff9d") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3f80";
Y <= x"6d73";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"3f80") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"aac1";
Y <= x"3b0b";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"aac2") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7fd7";
Y <= x"d63f";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7fd8") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ef59";
Y <= x"79c3";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8a22";
Y <= x"4413";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"bbec") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0fef";
Y <= x"1cda";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"1fff") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"89b1";
Y <= x"236f";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"2370") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8de2";
Y <= x"9729";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"8de1") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f6fc";
Y <= x"33de";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"f6fc") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e17f";
Y <= x"e17e";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"e17f") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b8af";
Y <= x"d81f";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"e090") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d24a";
Y <= x"a1bd";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"d24a") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"65d2";
Y <= x"3ce3";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"28ef") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2142";
Y <= x"9c50";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2143") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4877";
Y <= x"9e58";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"9e59") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"37a9";
Y <= x"ae23";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"2621") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"61b9";
Y <= x"053a";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"a381") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d4b0";
Y <= x"4a19";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d4af") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2adf";
Y <= x"bf5c";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"d520") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a891";
Y <= x"f23e";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"b653") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c6cc";
Y <= x"1b2a";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"0208") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"aa26";
Y <= x"c42b";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"c42b") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7d59";
Y <= x"6c7d";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"e9d6") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9b6f";
Y <= x"5c13";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"6490") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f1ef";
Y <= x"77dd";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0074";
Y <= x"fe4c";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0075") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"abaf";
Y <= x"7204";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"8dfb") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0686";
Y <= x"411c";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3a7d";
Y <= x"ff7b";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"3a79") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"262e";
Y <= x"44d2";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"bb2e") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"215b";
Y <= x"e8a8";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0a03") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8453";
Y <= x"b707";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"8403") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"68e9";
Y <= x"6cb7";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"9717") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1b27";
Y <= x"801f";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"1b27") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cc75";
Y <= x"14c0";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"14c1") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1cf8";
Y <= x"8eab";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"8eac") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1d07";
Y <= x"18b3";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"1db7") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"27fe";
Y <= x"d39f";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"27ff") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2d4e";
Y <= x"c373";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"2d4e") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4149";
Y <= x"1f7b";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"1f7b") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2aec";
Y <= x"2745";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2aed") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8d48";
Y <= x"4120";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"4120") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"93d3";
Y <= x"c9bc";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"8190") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d0af";
Y <= x"432f";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"d0b0") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c473";
Y <= x"4c34";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"3b8c") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2291";
Y <= x"2dff";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"2091") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e1f3";
Y <= x"7b09";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"e1f4") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"58a1";
Y <= x"4a74";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"b58b") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c461";
Y <= x"f7c6";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"0839") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"590a";
Y <= x"66bf";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"400a") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a64f";
Y <= x"0716";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"60c7") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9518";
Y <= x"3d63";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"6ae7") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"81b9";
Y <= x"fee9";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"fee9") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a909";
Y <= x"7cbc";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"7cbc") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"72a0";
Y <= x"2ebd";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"d143") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e936";
Y <= x"ce00";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"ce01") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a005";
Y <= x"99e7";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"a005") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0db5";
Y <= x"6a01";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"6a01") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3f61";
Y <= x"ad3c";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d820";
Y <= x"8c3e";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"8c3e") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5fb3";
Y <= x"e3ac";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"435f") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c9f0";
Y <= x"9081";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"6f7e") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"431e";
Y <= x"6b54";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5b2a";
Y <= x"04d6";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"a4d5") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"864d";
Y <= x"5490";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"d6dd") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1047";
Y <= x"68d9";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"1046") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6767";
Y <= x"6edf";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d646") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ca34";
Y <= x"a8fd";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"a8fc") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5a60";
Y <= x"c47e";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"5a5f") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7128";
Y <= x"76f9";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"76fa") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e543";
Y <= x"86d6";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"499d";
Y <= x"6acf";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"6ace") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"588c";
Y <= x"73ea";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"73e9") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2be7";
Y <= x"a92c";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7d45") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7d6e";
Y <= x"13f1";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"9683") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d416";
Y <= x"4518";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"bae8") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8ac0";
Y <= x"bc64";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"bc63") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"25d8";
Y <= x"b522";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"b521") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"dda0";
Y <= x"e42b";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"068b") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2a1e";
Y <= x"e6de";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"bcc0") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7e5f";
Y <= x"3148";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"ceb7") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e652";
Y <= x"718f";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"74c3") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b242";
Y <= x"2e93";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"83af") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f619";
Y <= x"4bbc";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"f618") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d131";
Y <= x"4ebe";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2ecf") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9745";
Y <= x"342c";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e641";
Y <= x"0fba";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"46bc";
Y <= x"39f5";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4e4d";
Y <= x"50a4";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0257") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4092";
Y <= x"cad0";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e36f";
Y <= x"f2c2";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"e36e") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"eddf";
Y <= x"e25e";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0b81") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3ac8";
Y <= x"961b";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c538") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9419";
Y <= x"5748";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"1408") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d6db";
Y <= x"7ff4";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"a919") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fee0";
Y <= x"632d";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"ffed") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6a46";
Y <= x"32e4";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"32e5") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7527";
Y <= x"42a4";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"3283") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0cd4";
Y <= x"7bfd";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"7bfd") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d5dd";
Y <= x"8732";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"dd61";
Y <= x"896c";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"229e") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"abb2";
Y <= x"a2c1";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"a2c0") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3dd3";
Y <= x"7fbf";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"8040") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1ff8";
Y <= x"e966";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"1ff9") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c3b7";
Y <= x"67ba";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"2b71") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fb31";
Y <= x"cd4b";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2de6") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"383c";
Y <= x"0247";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0246") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"606e";
Y <= x"fead";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"606d") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"76f0";
Y <= x"9528";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"9529") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1c98";
Y <= x"2fa3";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"2fa3") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e493";
Y <= x"106a";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"f4fb") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6bf6";
Y <= x"cd54";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"6bf6") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c77d";
Y <= x"53d2";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"ac2e") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2cb6";
Y <= x"6007";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8054";
Y <= x"979a";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7fac") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"28cd";
Y <= x"b3a6";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d654";
Y <= x"37f9";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"37f8") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f228";
Y <= x"570a";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"4932") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4511";
Y <= x"d532";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"6fdf") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d561";
Y <= x"89f9";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"2a9e") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4bf2";
Y <= x"362d";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"362c") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f2a8";
Y <= x"4286";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"bd79") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3587";
Y <= x"1dcc";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"e234") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"bd1a";
Y <= x"a721";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"643b") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"72e5";
Y <= x"3043";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"8d1b") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1cf6";
Y <= x"ba87";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"ba87") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a0fb";
Y <= x"db97";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"5f04") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e7a8";
Y <= x"e40a";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"94b0";
Y <= x"77a1";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0c51") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8556";
Y <= x"aee0";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"aff6") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e20b";
Y <= x"e5a6";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2c11";
Y <= x"972d";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"6b1c") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8300";
Y <= x"6183";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"8300") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e3f5";
Y <= x"f196";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"144a";
Y <= x"2a19";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2139";
Y <= x"e367";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"e367") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6b75";
Y <= x"5f1a";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ca8f") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"10ac";
Y <= x"4112";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"beed") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6b8d";
Y <= x"f16a";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"9473") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ac8c";
Y <= x"6f32";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"6f32") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1c31";
Y <= x"b0ad";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"04ee";
Y <= x"b27c";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"b27c") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1834";
Y <= x"b138";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"b138") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0e39";
Y <= x"c3ad";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1d4e";
Y <= x"76eb";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"e2b2") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9ec9";
Y <= x"d24d";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d24c") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cba9";
Y <= x"4577";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"cfff") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fdc4";
Y <= x"4a1d";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2726";
Y <= x"7bc3";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"a2e9") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ca06";
Y <= x"e341";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"e341") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8f89";
Y <= x"9a13";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"9a12") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"466f";
Y <= x"6831";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"aea0") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"984a";
Y <= x"2f9c";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"68ae") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c6f1";
Y <= x"16cf";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"16cf") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f312";
Y <= x"e707";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"f717") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cc2e";
Y <= x"c1bd";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b21a";
Y <= x"5dd9";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"b21a") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5b25";
Y <= x"5746";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"fc21") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8d24";
Y <= x"9cec";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"9ced") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5de2";
Y <= x"a5f6";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"4814") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9185";
Y <= x"f04e";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"241e";
Y <= x"8f95";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"8f95") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4ca5";
Y <= x"e8f0";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"3595") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"bddf";
Y <= x"0f6f";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"4220") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ad97";
Y <= x"9996";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"def6";
Y <= x"81c1";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"a2cb") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d2a4";
Y <= x"5b10";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"19e1";
Y <= x"b751";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"48af") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"eb9e";
Y <= x"ff9a";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"1462") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a3ee";
Y <= x"5521";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"5520") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"dc41";
Y <= x"7aef";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0fad";
Y <= x"3d7c";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0fae") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5235";
Y <= x"79eb";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"79eb") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f4fa";
Y <= x"f44f";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"0bb0") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"66b0";
Y <= x"25fd";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"25fc") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6594";
Y <= x"5848";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"5848") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"422d";
Y <= x"828e";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"c2af") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8add";
Y <= x"5b27";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7523") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"40c4";
Y <= x"4b25";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"4b25") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e922";
Y <= x"122e";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"e923") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ded9";
Y <= x"971e";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"ded9") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4d2e";
Y <= x"1d00";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"1d00") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4b75";
Y <= x"6385";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"b48a") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d32e";
Y <= x"77bf";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"081e";
Y <= x"2790";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"2fae") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e744";
Y <= x"cda3";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"cda3") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"139a";
Y <= x"474a";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f161";
Y <= x"bbf7";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"0e9e") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5bb9";
Y <= x"de07";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7db2") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9506";
Y <= x"82c7";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"9505") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4541";
Y <= x"8092";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8a3b";
Y <= x"c7ce";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"3831") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3063";
Y <= x"a7f5";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"cf9c") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"815d";
Y <= x"2081";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"2081") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1eb7";
Y <= x"6a79";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"1eb6") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a79c";
Y <= x"495e";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"5864") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d63e";
Y <= x"eb5b";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4133";
Y <= x"8770";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"19eb";
Y <= x"5ba5";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"5ba4") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d04f";
Y <= x"a32d";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"a32c") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c298";
Y <= x"7784";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"7785") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8358";
Y <= x"98b4";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"1c0c") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d76e";
Y <= x"252d";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3a9c";
Y <= x"ae57";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"51a9") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e004";
Y <= x"eca0";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"e000") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8cde";
Y <= x"a6d2";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"55c3";
Y <= x"c0e8";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"aa3d") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c1f5";
Y <= x"07b5";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"c9aa") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"85e3";
Y <= x"5fec";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"da09") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e00d";
Y <= x"594b";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6cd9";
Y <= x"0a81";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"0881") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0d08";
Y <= x"8ffe";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"8ffe") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5366";
Y <= x"b1e6";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"4e1a") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cbbd";
Y <= x"6cc8";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"a10b") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4a02";
Y <= x"08b3";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"beb1") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"89e6";
Y <= x"5d7c";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"a283") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d514";
Y <= x"20dd";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d513") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2525";
Y <= x"d3e0";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2c20") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4593";
Y <= x"0765";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"0765") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"eb8b";
Y <= x"2f0d";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"bc7e") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f259";
Y <= x"092a";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"0da6") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8607";
Y <= x"869e";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"869f") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"dfeb";
Y <= x"eff0";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"efef") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"78fa";
Y <= x"ce53";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0756";
Y <= x"621c";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"9de4") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6de8";
Y <= x"bfd4";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"2dc0") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7483";
Y <= x"7f8d";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"f4f6") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f04f";
Y <= x"1ef0";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2ea1") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e90e";
Y <= x"f070";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"e90e") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e919";
Y <= x"fec1";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"564f";
Y <= x"3ceb";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"5650") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f82b";
Y <= x"2c4a";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"f82a") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7742";
Y <= x"dbee";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7743") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"bc64";
Y <= x"0603";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ed73";
Y <= x"12dd";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ed72") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"59c0";
Y <= x"620a";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"a640") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f58e";
Y <= x"b192";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"b193") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5688";
Y <= x"7045";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"5689") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0dc9";
Y <= x"02fd";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"0dc9") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5d4a";
Y <= x"16d6";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"5d4b") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4f41";
Y <= x"49e3";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"067d";
Y <= x"86e1";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"8d5e") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c490";
Y <= x"5f7c";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"3b6f") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8482";
Y <= x"0fc5";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"f03b") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e105";
Y <= x"36c6";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"1efa") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"39d5";
Y <= x"144d";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"020d";
Y <= x"75a1";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7394") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b309";
Y <= x"c086";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"3f7a") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8a3c";
Y <= x"5989";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1fd5";
Y <= x"a5fa";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"e02a") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"562d";
Y <= x"7344";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"7343") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b58b";
Y <= x"5214";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"5214") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"55ab";
Y <= x"a85a";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"ad51") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7cce";
Y <= x"bda3";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2f81";
Y <= x"d3e6";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"2c19") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"29ac";
Y <= x"e173";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0b1f") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8a47";
Y <= x"eebc";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"75b8") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0be0";
Y <= x"b3d0";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0be1") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3b80";
Y <= x"6e77";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"7ff7") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0403";
Y <= x"d926";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"fbfd") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ab08";
Y <= x"0bd8";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"ab08") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ef0c";
Y <= x"81f1";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"ef0c") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a7e7";
Y <= x"e07f";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"a7e7") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3707";
Y <= x"2c96";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"c8f9") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"acfd";
Y <= x"3f38";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"acfc") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6914";
Y <= x"e1d7";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"6114") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0eba";
Y <= x"d5a2";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d5a1") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b73d";
Y <= x"0ff3";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"0731") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a3cf";
Y <= x"25d9";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"dbcb";
Y <= x"c1d5";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"c1c1") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9ae4";
Y <= x"7b2b";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"84d4") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e7dd";
Y <= x"6ccf";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"e7de") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4519";
Y <= x"fd3e";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"451a") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cfd9";
Y <= x"8a16";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"ba3d") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"bdaa";
Y <= x"6b06";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"ffae") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"063d";
Y <= x"6cf5";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"6cf5") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0df6";
Y <= x"4004";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b587";
Y <= x"97ed";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a497";
Y <= x"73e4";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"5b69") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3315";
Y <= x"1be7";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"1be6") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2f2a";
Y <= x"650b";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"9af4") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3c6c";
Y <= x"65bf";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0bb7";
Y <= x"6dc1";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"6ff7") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"446e";
Y <= x"3144";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"3144") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a6f8";
Y <= x"8f72";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"5907") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"bacd";
Y <= x"43dc";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"76f1") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fdcf";
Y <= x"6d46";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"6d46") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0600";
Y <= x"c152";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"44ae") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e39d";
Y <= x"8897";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"1c63") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"217e";
Y <= x"dc64";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"dc63") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6449";
Y <= x"3521";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"d0d8") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b3cf";
Y <= x"2b60";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7791") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"afc7";
Y <= x"7c96";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5a5a";
Y <= x"65b7";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"9a48") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c8ec";
Y <= x"7dd6";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"3713") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ce2e";
Y <= x"476a";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ef2c";
Y <= x"fc33";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"fc33") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"555f";
Y <= x"ada0";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"02ff") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"bf58";
Y <= x"ba8e";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ba8d") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d61a";
Y <= x"ef15";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a80b";
Y <= x"277f";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"2780") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"048e";
Y <= x"879e";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"8310") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6b18";
Y <= x"039c";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"0318") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"60d3";
Y <= x"8583";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0b60";
Y <= x"f4e5";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0b61") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4670";
Y <= x"72f9";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"cf4c";
Y <= x"c994";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"fa48") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8f6a";
Y <= x"6235";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"9dca") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4d09";
Y <= x"63e4";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"9c1c") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d8e4";
Y <= x"976f";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"9770") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e400";
Y <= x"ec95";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"136a") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"36f5";
Y <= x"a20f";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"c90a") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9f8e";
Y <= x"a30f";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b776";
Y <= x"4c35";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0603";
Y <= x"9b81";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"9b82") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e4ac";
Y <= x"1302";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"f7ae") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ba3b";
Y <= x"44e2";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"bb1e") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8d37";
Y <= x"34b3";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"c1ea") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f0bf";
Y <= x"b2b2";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"4d4d") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2dcf";
Y <= x"aebc";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ac39";
Y <= x"14f8";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"ac39") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2618";
Y <= x"acd9";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a800";
Y <= x"d506";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"2af9") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d9b4";
Y <= x"bd3d";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"fdbd") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4301";
Y <= x"73b4";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"b6b5") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"947e";
Y <= x"211f";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"947d") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"bf25";
Y <= x"b36a";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"f445") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4b68";
Y <= x"bd63";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"429c") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1326";
Y <= x"068f";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0c97") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1a1b";
Y <= x"51e4";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"6bff") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"20b7";
Y <= x"d369";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"4d4e") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ee07";
Y <= x"955c";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"ee08") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"468c";
Y <= x"3128";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"ea9c") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"50f8";
Y <= x"e284";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"4080") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5c20";
Y <= x"c245";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"c246") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a47c";
Y <= x"0438";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"5fbc") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9664";
Y <= x"72fa";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"1260") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"eab2";
Y <= x"1610";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"d4a2") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8be6";
Y <= x"c53e";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"8be7") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f59d";
Y <= x"1fd2";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"f59e") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"da6b";
Y <= x"da2d";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"25fe";
Y <= x"2148";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"04b6") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d064";
Y <= x"8fcf";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"8044") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"febc";
Y <= x"5e64";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"5e64") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d615";
Y <= x"1ee9";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"e116") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"86d8";
Y <= x"b28d";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"b28e") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"864b";
Y <= x"1f80";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"864a") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"53ab";
Y <= x"1784";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"53aa") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"313d";
Y <= x"98fa";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"313c") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6c7d";
Y <= x"ae21";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"51de") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"22fe";
Y <= x"072c";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"072d") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9687";
Y <= x"edb1";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"edb1") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"dff0";
Y <= x"608b";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"dff0") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d82c";
Y <= x"eab0";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"eaaf") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d4e3";
Y <= x"aa64";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"fee7") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"824a";
Y <= x"63c2";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1931";
Y <= x"ecc1";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"133e") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4eed";
Y <= x"1916";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"b113") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fef7";
Y <= x"667f";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"feff") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ec42";
Y <= x"d927";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"26d9") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"aecc";
Y <= x"d5c7";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2a39") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"217e";
Y <= x"f7e2";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"d664") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"4ab9";
Y <= x"7152";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e598";
Y <= x"9eab";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"9eab") then
report "Error in outcome (y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"12c0";
Y <= x"5c93";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"81b5";
Y <= x"13fc";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"95b1") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7acc";
Y <= x"5edd";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d9a9") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"69a6";
Y <= x"a430";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"a431") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5e63";
Y <= x"c287";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"5e64") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0464";
Y <= x"d92a";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"d92b") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"13b7";
Y <= x"bfa7";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"13b6") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b960";
Y <= x"cd82";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"1422") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b472";
Y <= x"ac3b";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"b473") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a24e";
Y <= x"6db2";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"5db2") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"940e";
Y <= x"1c52";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"8844") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"edb2";
Y <= x"994b";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"994a") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a6f7";
Y <= x"ea19";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"bcde") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d2b0";
Y <= x"ca2e";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"35d1") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2c03";
Y <= x"99e4";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"c5e7") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"876a";
Y <= x"67f9";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"67fa") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b1fa";
Y <= x"e8c5";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"e8c4") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"1e9d";
Y <= x"27a8";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"d857") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a87d";
Y <= x"2f81";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d7fe") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8ff1";
Y <= x"ab99";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"8b91") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"38ba";
Y <= x"646d";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"9d27") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c48a";
Y <= x"0e4b";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0e4a") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"13b1";
Y <= x"bc86";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"437a") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e125";
Y <= x"e131";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"e135") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e21f";
Y <= x"9a91";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"b872") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7f24";
Y <= x"b574";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"4a8c") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3eb8";
Y <= x"7680";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c857";
Y <= x"1dd3";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"e62a") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"90f2";
Y <= x"10ea";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"90f2") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"c1b9";
Y <= x"11a1";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"df59";
Y <= x"048d";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2534") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d1d2";
Y <= x"081e";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b953";
Y <= x"1f68";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"83dd";
Y <= x"6c55";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"83dd") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0bac";
Y <= x"3267";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"cd99") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7cde";
Y <= x"04ff";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"7cff") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"249a";
Y <= x"0770";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"f890") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d0c9";
Y <= x"4763";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"b89c") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0b7d";
Y <= x"c1e8";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"f483") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8f67";
Y <= x"59ea";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5530";
Y <= x"eb35";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"14ca") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f542";
Y <= x"d244";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d243") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7228";
Y <= x"a580";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"934c";
Y <= x"599d";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ece9") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"f602";
Y <= x"a19e";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"09fe") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6dcc";
Y <= x"fa1a";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"ffde") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8bd6";
Y <= x"16e6";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"9ff6") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7a2a";
Y <= x"a3ba";
zx <= '0';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7a2b") then
report "Error in outcome (inc x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (inc x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"be88";
Y <= x"50b6";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"af49") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"21f6";
Y <= x"8aed";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"8aec") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"87f2";
Y <= x"0568";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0567") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"548d";
Y <= x"b40e";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"089b") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fe9d";
Y <= x"b1c7";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"4cd6") then
report "Error in outcome (sub x-y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub x-y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub x-y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0bcb";
Y <= x"80a2";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d483";
Y <= x"7a2c";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2b7d") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"9a74";
Y <= x"c0f8";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2684") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"bae6";
Y <= x"576d";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"0001") then
report "Error in outcome (one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"dbe5";
Y <= x"d5ea";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
wait for 1 ns;
if (Z /= x"d5eb") then
report "Error in outcome (inc y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (inc y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (inc y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8554";
Y <= x"e139";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"1ec6") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e494";
Y <= x"f923";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"8009";
Y <= x"bdd8";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"83f2";
Y <= x"2267";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"dd99") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b3fa";
Y <= x"fb43";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"4c06") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"df0f";
Y <= x"0df7";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"df0e") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"db2d";
Y <= x"03d7";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"df04") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ee1d";
Y <= x"0192";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ee1c") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7fe1";
Y <= x"3a8a";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"801f") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5110";
Y <= x"ce21";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"7d11") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"ff18";
Y <= x"9781";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"687f") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"e0e3";
Y <= x"8cff";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"1f1d") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"7c53";
Y <= x"69d5";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"962a") then
report "Error in outcome (not y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"6b6c";
Y <= x"14ff";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"eb01") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"aa46";
Y <= x"67b1";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"67b0") then
report "Error in outcome (dec y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (dec y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"fde0";
Y <= x"0cd9";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"0cc0") then
report "Error in outcome (and)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (and)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (and)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"43f1";
Y <= x"0145";
zx <= '1';
zy <= '1';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"0000") then
report "Error in outcome (zero)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '1') then
report "Error in zero flag (zero)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (zero)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a2ed";
Y <= x"9763";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"a2ed") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0060";
Y <= x"96cb";
zx <= '1';
zy <= '0';
nx <= '1';
ny <= '0';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"6935") then
report "Error in outcome (minus y)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus y)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (minus y)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"d11e";
Y <= x"e072";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"d11d") then
report "Error in outcome (dec x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (dec x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (dec x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"0892";
Y <= x"5cd9";
zx <= '1';
zy <= '1';
nx <= '1';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"ffff") then
report "Error in outcome (minus one)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minus one)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minus one)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a311";
Y <= x"08b6";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"abb7") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3eb2";
Y <= x"d076";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"c14d") then
report "Error in outcome (not x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (not x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (not x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"95c3";
Y <= x"bd69";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"95c3") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"a527";
Y <= x"d15b";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"2c34") then
report "Error in outcome (sub y-x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (sub y-x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (sub y-x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2f9b";
Y <= x"74ae";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '0';
no <= '0';
wait for 1 ns;
if (Z /= x"2f9b") then
report "Error in outcome (x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"2939";
Y <= x"0aab";
zx <= '0';
zy <= '0';
nx <= '0';
ny <= '0';
f <= '1';
no <= '0';
wait for 1 ns;
if (Z /= x"33e4") then
report "Error in outcome (add)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (add)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (add)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"5589";
Y <= x"914c";
zx <= '0';
zy <= '1';
nx <= '0';
ny <= '1';
f <= '1';
no <= '1';
wait for 1 ns;
if (Z /= x"aa77") then
report "Error in outcome (minux x)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (minux x)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (minux x)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"b045";
Y <= x"2edd";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"bedd") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '1') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
X <= x"3001";
Y <= x"1bfa";
zx <= '0';
zy <= '0';
nx <= '1';
ny <= '1';
f <= '0';
no <= '1';
wait for 1 ns;
if (Z /= x"3bfb") then
report "Error in outcome (or)" severity note;
v_incorrect_z := v_incorrect_z + 1;
else
v_correct_z := v_correct_z + 1;
end if;
if (zr /= '0') then
report "Error in zero flag (or)" severity note;
v_incorrect_zr := v_incorrect_zr + 1;
else
v_correct_zr := v_correct_zr + 1;
end if;
if (ng /= '0') then
report "Error in negative flag (or)" severity note;
v_incorrect_ng := v_incorrect_ng + 1;
else
v_correct_ng := v_correct_ng + 1;
end if;
wait for 1 ns;
report "Simulation done (correct / incorrect): ";
report " outcome: " & integer'image(v_correct_z) & "/" & integer'image(v_incorrect_z);
report " zero flag: " & integer'image(v_correct_zr) & "/" & integer'image(v_incorrect_zr);
report " negative flag: " & integer'image(v_correct_ng) & "/" & integer'image(v_incorrect_ng);
wait;
end process;
-------------------------------------------------------------------------------
-- DUT
-------------------------------------------------------------------------------
DUT: component alu generic map (WIDTH => WIDTH) port map(
X => X,
Y => Y,
Z => Z,
zx => zx,
zy => zy,
nx => nx,
ny => ny,
f => f,
no => no,
zr => zr,
ng => ng
);
end Behavioural;