// ************************************************************************** // // // // eses eses // // eses eses // // eses eseses esesese eses Embedded Systems Group // // ese ese ese ese ese // // ese eseseses eseseses ese Department of Computer Science // // eses eses ese eses // // eses eseses eseseses eses University of Kaiserslautern // // eses eses // // // // ************************************************************************** // package latex.QuartzLRM.Experiments.Arithmetic; import examples.Algorithms.Arithmetic.HardwareCircuits.*; macro M = 5; // number of digits used for x macro N = 3; // number of digits used for y module TestCircuitNatMulCRACRA([M]bool ?x,[N]bool ?y,[M+N]bool p) { loop { NatMulCRACRA(x,y,p); pause; } } drivenby { do { next(x[0]) = !x[0]; for(i=1..M-1) next(x[i]) = ((forall(j=0..i-1) x[j]) ? not x[i] : x[i]); next(y[0]) = ((forall(j=0..M-1) x[j]) ? not y[0] : y[0]); for(i=1..N-1) next(y[i]) = (((forall(j=0..M-1) x[j]) & (forall(j=0..i-1) y[j])) ? not y[i] : y[i]); pause; } while(!(forall(i=0..M-1) !x[i] & forall(j=0..N-1) !y[j])); }