ACK - An Asynchronous Design Framework

High Level Specification - HOP



Module gcd
  Event    start?? : bit;
  Channel  a?, b?, gout! : array [7:0] of bit;
  Variable x,y : array [7:0] of bit;
behavior
 
  <GCD> <= start?? -> <INPUT>
 
  <INPUT> <= a?x, b?y -> <WHILE>
 
  <WHILE> <= if ((x == 0) and (y == 0)) -> gout!x -> <INPUT> 
             else -> <PROCESS>
 
  PART
           
  <PROCESS> <= if (x >= y) -> x := x - y -> <PROCESS>
               else        -> y := y - x -> <WHILE>
 
endbehavior

Greatest Common Divisor