"Compiling from Haste to CDFG: a front end for an asynchronous circuit synthesis system" (PDF).
Вычисление факториала на языке Haste выглядит следующим образом:
Эта функция превращается в такую асинхронную схему:

Дальнейшее преобразование в Верилог и синтез делаются элементарно.
Вычисление факториала на языке Haste выглядит следующим образом:
int = type [0..2^32-1] &
fact : main proc (in?chan int & out!chan int).
begin x,y :var int ff
|
forever do
in ? x
; y := 1
; do x > 1 then
y := y * x
; x := x - 1
od
; out ! y
od
endЭта функция превращается в такую асинхронную схему:

Дальнейшее преобразование в Верилог и синтез делаются элементарно.
