До сих пор мои рассуждения про асинхронную логику носили несколько теоретический характер, но наконец я дозрел до реального примера. Попробуем соорудить схему для вычисления наибольшего общего делителя двух целых чисел. Ограничимся размером в 8 бит, до есть диапазон от 0 до 255. Исходный текст на воображаемом асинхронном диалекте языка Verilog мог бы выглядеть так:

Результат компиляции на языке SystemVerilog получается следующий:( Код и временные диаграммы )
module gcd (
sync slave activate,
input master [7:0] a,
input master [7:0] b,
output master [7:0] c
);
logic [7:0] x, y;
while (activate) begin
fork
x <= a;
y <= b;
join
while select
x > y:
x -= y;
y > x:
y -= x;
endselect
c <= x;
end
endmodule
Исходный текст преобразуется компилятором в схему, составленную из элементарных асинхронных примитивов:
Результат компиляции на языке SystemVerilog получается следующий:( Код и временные диаграммы )