// ************************************************************************** // // // // 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 ComputerArchitecture.SystolicArrays.TransitiveClosure.KuLL87aSpiralSFG; macro N = 3; // ---------------------------------------------------------------- // Below is the definition of the behaviour of a single processing // element that is used in the array. // ---------------------------------------------------------------- module PE([N][N]bool ?a, nat{exp(2, N-1)} ?i,?j, event ?c_in,?r_in,?t_in,!c_out,!r_out,!t_out) { c_out = ((j==0) ? a[i][j] : c_in); r_out = ((i==0) ? a[i][j] : r_in); next(t_out) = a[i][j] | c_in & r_in; loop { pause; c_out = ((j==0) ? t_in : c_in); r_out = ((i==0) ? t_in : r_in); next(t_out) = t_in | c_in & r_in; } }