sig
  type producer
  type system
  val width_of_producer : Cf_fnf.producer -> int
  val new_root_system : unit -> Cf_fnf.system
  val new_sub_system :
    Cf_fnf.system ->
    string -> string -> Loc.loc list -> Loc.loc -> Cf_fnf.system
  val set_clock_domain : Cf_fnf.system -> string -> (string -> unit) -> unit
  val add_sub_enable :
    Cf_fnf.system -> Cf_fnf.producer -> (string -> unit) -> unit
  val add_sub_reset :
    Cf_fnf.system -> Cf_fnf.producer -> (string -> unit) -> unit
  val new_input : Cf_fnf.system -> string -> int -> Cf_fnf.producer
  val new_output : Cf_fnf.system -> string -> Cf_fnf.producer -> unit
  val new_const : Cf_fnf.system -> string -> Cf_fnf.producer
  val new_buf : Cf_fnf.system -> Cf_fnf.producer -> Cf_fnf.producer
  val new_not : Cf_fnf.system -> Cf_fnf.producer -> Cf_fnf.producer
  val new_and :
    Cf_fnf.system -> Cf_fnf.producer -> Cf_fnf.producer -> Cf_fnf.producer
  val new_or :
    Cf_fnf.system -> Cf_fnf.producer -> Cf_fnf.producer -> Cf_fnf.producer
  val new_xor :
    Cf_fnf.system -> Cf_fnf.producer -> Cf_fnf.producer -> Cf_fnf.producer
  val new_concat :
    Cf_fnf.system -> Cf_fnf.producer -> Cf_fnf.producer -> Cf_fnf.producer
  val new_select : Cf_fnf.system -> Cf_fnf.producer -> int -> Cf_fnf.producer
  val new_equ :
    Cf_fnf.system -> Cf_fnf.producer -> Cf_fnf.producer -> Cf_fnf.producer
  val new_lt :
    Cf_fnf.system -> Cf_fnf.producer -> Cf_fnf.producer -> Cf_fnf.producer
  val new_add :
    Cf_fnf.system -> Cf_fnf.producer -> Cf_fnf.producer -> Cf_fnf.producer
  val new_sub :
    Cf_fnf.system -> Cf_fnf.producer -> Cf_fnf.producer -> Cf_fnf.producer
  val new_mul :
    Cf_fnf.system -> Cf_fnf.producer -> Cf_fnf.producer -> Cf_fnf.producer
  val new_mux :
    Cf_fnf.system ->
    Cf_fnf.producer -> Cf_fnf.producer -> Cf_fnf.producer -> Cf_fnf.producer
  val new_state : Cf_fnf.system -> int -> Cf_fnf.producer
  val new_reg : Cf_fnf.system -> Cf_fnf.producer -> Cf_fnf.producer -> unit
  val new_bbox :
    Cf_fnf.system ->
    string -> int list -> Cf_fnf.producer -> Cf_fnf.producer -> unit
  val output_fnf : Pervasives.out_channel -> unit
end