// ************************************************************************** // // // // 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 // // // // ************************************************************************** // macro NumBus = 4; // number of busses macro AW = 8; // address width macro DW = 8; // data width macro PL = 10; // length of program macro SrcBus(x) = x.0; macro TgtBus(x) = x.1; macro ValBus(x) = x.2; module BusConnect( event [NumBus](bv{AW} * bv{AW} * bv{DW}) bus, event bool !ev1,!ev2,!ev3,!ev4, event bv{DW} !x1,!x2,?x3,?x4, event nat ?a1,?a2,?a3,?a4) { loop { for(i=0.. NumBus-1) { if(bv2nat(TgtBus(bus[i]))==a1) { x1 = ValBus(bus[i]); emit(ev1); } if(bv2nat(TgtBus(bus[i]))==a2) { x2 = ValBus(bus[i]); emit(ev2); } if(bv2nat(SrcBus(bus[i]))==a3) { ValBus(bus[i]) = x3; emit(ev3); } if(bv2nat(SrcBus(bus[i]))==a4) { ValBus(bus[i]) = x4; emit(ev4); } } pause; } }