Class Function
arithmetic +: -: *: *+ negate
logical &: ^: ~: |:
comparison ==: <>: <: >: <=: >=: <+ >+ <=+ >=+
constants const zero one ones
mux mux mux2
bits bit select .[:] concat @: msb lsb
misc width wire -- <== inst
sequential reg pipeline memory ram_rbw ram_wbr

Example


let fir_filter coefs enable x = 
  let f d coef =
    let q = reg r_sync enable d in
    q, q *+ coef
  in
  let g (d,list) coef = 
    let q, m = f d coef in
    q, m::list
  in
  let _, m = List.fold_left g (x, []) coefs in
  tree 2 (reduce (+:)) m

  let f d coef = 
    let q = reg r_sync enable d in
    q, q *+ coef

  let g (d,list) coef = 
    let q, m = f d coef in
    q, m::list
  in
  let _, m = List.fold_left g (x, []) coefs in

  tree 2 (reduce (+:)) m