module BUS (TYPES, CHANNELS) is ------------------------------------------------------------------------------- process BusReset [gUpDown: UpDownChannel, gBusReset: BusResetChannel] (net: Network) is gBusReset (bus_reset_start); BusReset2 [gUpDown, gBusReset] (net, 1) end process ------------------------------------------------------------------------------- process BusReset2 [gUpDown: UpDownChannel, gBusReset: BusResetChannel] (in var net: Network, in var j: Nat3) is if j == 0 then gBusReset (bus_reset_end, net); BusReset [gUpDown, gBusReset] (net) else alt gUpDown (j, power_change); net := flip (j, net) [] i end alt; j := j + 1; BusReset2 [gUpDown, gBusReset] (net, j) end if end process ------------------------------------------------------------------------------- process FlushBusReset [gBusReset: BusResetChannel] is loop alt gBusReset (bus_reset_start) [] gBusReset (bus_reset_end, ?any Network) end alt end loop end process ------------------------------------------------------------------------------- end module