%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Copyright: 2010 Integrated Sytems Laboratory, ETH Zurich
%% http://www.iis.ee.ethz.ch/~sha3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;
clc;
rnd = 0;
nmax = 2;
N = 1;
disp(['Start generating ' num2str(N) ' messages for SIMD-256'])
stm = fopen(['SIMD256_stimuli.asc'], 'w', 'native');
exp = fopen(['SIMD256_expresp.asc'], 'w', 'native');
% RESET Cycles
fprintf(stm, '%X %X %X %0128X\n', [0 0 0 0]);
fprintf(stm, '%X %X %X %0128X\n', [0 0 0 0]);
fprintf(stm, '%X %X %X %0128X\n', [1 0 0 0]);
fprintf(stm, '%X %X %X %0128X\n', [1 0 0 0]);
%%%%% START SIMULATION %%%%%
% RANDOM INPUT -------------------------------------------------------------
for j=1:N,
if rnd == 0,
n = nmax+1;
else
n = ceil(nmax*rand(1))+1;
end
Mi = round(255*rand(n,64));
% Mi = round(255*zeros(n,64));
% Mi(2,1)=2;
% power sim
n = 10;
Mi = round(255*ones(10,64));
H = SIMD_hash(Mi);
for i=1:n-1,
M = zeros(1,16);
for k=1:16
M(k) = Mi(i,(k-1)*4 + 4)*2^24 + Mi(i,(k-1)*4 + 3)*2^16 + Mi(i,(k-1)*4 + 2)*2^8 + Mi(i,(k-1)*4 + 1)*2^0;
end
fprintf(stm, '%X %X %X %08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X\n', 1, 1, 0, M);
for ii=1:35,
fprintf(stm, '%X %X %X %0128X\n', [1 0 0 0]);
end
end
M = zeros(1,16);
for k=1:16
M(k) = Mi(end,(k-1)*4 + 4)*2^24 + Mi(end,(k-1)*4 + 3)*2^16 + Mi(end,(k-1)*4 + 2)*2^8 + Mi(end,(k-1)*4 + 1)*2^0;
end
fprintf(stm, '%X %X %X %08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X\n', 1, 1, 1, M);
for ii=1:35,
fprintf(stm, '%X %X %X %0128X\n', [1 0 1 0]);
end
fprintf(exp, '%08X%08X%08X%08X%08X%08X%08X%08X\n', H);
for ii=1:40,
fprintf(stm, '%X %X %X %0128X\n', [1 0 0 0]);
end
end
% END RANDOM INPUT -------------------------------------------------------------
fprintf(stm, '%X %X %X %0128X\n', [1 0 0 0]);
fprintf(stm, '%X %X %X %0128X\n', [1 0 0 0]);
fprintf(stm, '%X %X %X %0128X\n', [1 0 0 0]);
fprintf(stm, '%X %X %X %0128X\n', [1 0 0 0]);
fclose(stm);
fclose(exp);
disp('End generation')