assert(res=vres)report"[error] resultat of sum. vres = "&integer'image(to_integer(unsigned(vres)))&" versus res = "&integer'image(to_integer(unsigned(res)))
severityerror;
assert(bit_to_integer(n)=bit_to_integer(vtemp(31)))report"[error] negative. n = "&integer'image(bit_to_integer(n))&" versus vn = "&integer'image(bit_to_integer(vtemp(31)))
severityerror;
assert(bit_to_integer(cout)=bit_to_integer(vtemp(32)))report"[error] in carry out. cout = "&integer'image(bit_to_integer(cout))&" versus vcout = "&integer'image(bit_to_integer(vtemp(32)))
severityerror;
assert(bit_to_integer(z)=bit_to_integer(vz))report"[error] z flag. z = "&integer'image(bit_to_integer(z))&" versus vz = "&integer'image(bit_to_integer(vz))
severityerror;
endloopla;
report"[test_01] finished";
cin<='0';
waitfor1ns;
report"[test_02] addition of (7fff ffff) + (7fff ffff)";
op1<=x"7fffffff";--(+)2147483647
op2<=x"7fffffff";--(+)2147483647
waitfor1ns;
assert(res=x"fffffffe")report"[error] res = "&integer'image(to_integer(unsigned(res)))severityerror;
assert(bit_to_integer(v)=1)report"[error] v = "&integer'image(bit_to_integer(v))severityerror;
report"[test_04] finished";
-- AND
waitfor1ns;
report"[test_05] and of 32 random numbers in a range between (0 to 536870911)";
cmd<="01";
waitfor1ns;
lb:forvbin0to31loop
uniform(seed1,seed2,x);
y:=integer(floor(x*536870911.0));
op1<=std_logic_vector(to_unsigned(y,op1'length));
uniform(seed1,seed2,x);
y:=integer(floor(x*536870911.0));
op2<=std_logic_vector(to_unsigned(y,op2'length));
waitfor1ns;
vtemp:=(("0"&op1)and("0"&op2));
vres:=vtemp(31downto0);
vcarry_out:=vtemp(32);
ifvres=x"0"then
vz:='1';
else
vz:='0';
endif;
waitfor1ns;
assert(res=vres)report"[error] or vres = "&integer'image(to_integer(unsigned(vres)))&" versus res = "&integer'image(to_integer(unsigned(res)))
severityerror;
assert(bit_to_integer(n)=bit_to_integer(vtemp(31)))report"[error] negative. n = "&integer'image(bit_to_integer(n))&" versus vn = "&integer'image(bit_to_integer(vtemp(32)))
severityerror;
assert(bit_to_integer(cout)=bit_to_integer(vtemp(32)))report"[error] carry out. cout = "&integer'image(bit_to_integer(cout))&" versus vcout = "&integer'image(bit_to_integer(vtemp(32)))
severityerror;
assert(bit_to_integer(z)=bit_to_integer(vz))report"[error] z flag. z = "&integer'image(bit_to_integer(z))&" versus vz = "&integer'image(bit_to_integer(vz))
severityerror;
endlooplb;
report"[test_05] finished";
-- OR
waitfor1ns;
report"[test_06] or of 32 random numbers in a range between (0 to 536870911)";
cmd<="10";
waitfor1ns;
lc:forvcin0to31loop
-- calcul the first random number
uniform(seed1,seed2,x);
y:=integer(floor(x*536870911.0));
-- assign the random number to op1
op1<=std_logic_vector(to_unsigned(y,op1'length));
-- calcul the second random number
uniform(seed1,seed2,x);
y:=integer(floor(x*536870911.0));
-- assign the random number to op2
op2<=std_logic_vector(to_unsigned(y,op2'length));
waitfor1ns;
vtemp:=(("0"&op1)or("0"&op2));
vres:=vtemp(31downto0);
vcarry_out:=vtemp(32);
ifvres=x"0"then
vz:='1';
else
vz:='0';
endif;
waitfor1ns;
assert(res=vres)report"[error] or vres = "&integer'image(to_integer(unsigned(vres)))&" res = "&integer'image(to_integer(unsigned(res)))
severityerror;
assert(bit_to_integer(n)=bit_to_integer(vtemp(31)))report"[error] negative. n = "&integer'image(bit_to_integer(n))&" versus vn = "&integer'image(bit_to_integer(vtemp(32)))
severityerror;
assert(bit_to_integer(cout)=bit_to_integer(vtemp(32)))report"[error] carry out. cout = "&integer'image(bit_to_integer(cout))&" versus cout = "&integer'image(bit_to_integer(vtemp(32)))
severityerror;
assert(bit_to_integer(z)=bit_to_integer(vz))report"[error] z flag. z = "&integer'image(bit_to_integer(z))&" versus vz = "&integer'image(bit_to_integer(vz))
severityerror;
endlooplc;
report"[test_06] finished";
-- XOR
waitfor1ns;
report"[test_07] xor of 32 random numbers in a range between (0 to 536870911)";
assert(res=vres)report"[error] xor. vres = "&integer'image(to_integer(unsigned(vres)))&" versus res = "&integer'image(to_integer(unsigned(res)))
severityerror;
assert(bit_to_integer(n)=bit_to_integer(vtemp(31)))report"[error] negative. n = "&integer'image(bit_to_integer(n))&" versus vn = "&integer'image(bit_to_integer(vtemp(32)))
severityerror;
assert(bit_to_integer(cout)=bit_to_integer(vtemp(32)))report"[error] carry out. cout = "&integer'image(bit_to_integer(cout))&" versus vcout = "&integer'image(bit_to_integer(vtemp(32)))
severityerror;
assert(bit_to_integer(z)=bit_to_integer(vz))report"[error] z flag. z = "&integer'image(bit_to_integer(z))&" versus vz = "&integer'image(bit_to_integer(vz))