sig
exception Error of string
type scope
type cell
type port
type cell_info =
Input of string * int
| Output of string * int
| Name of string * int
| Dangle
| Const of string
| Buf of int
| Not of int
| And of int
| Xor of int
| Or of int
| Concat of int * int
| Select of int * int
| Eq of int
| Lt of int
| Add of int
| Sub of int
| Mul of int
| Mux of int
| Ff of int
| Ffc of int
| Bbox of string * int * int * int list
type item = Scope of Fnf_core.scope | Cell of Fnf_core.cell
val create_root_scope : string -> Fnf_core.scope
val create_sub_scope : Fnf_core.scope -> string -> string -> Fnf_core.scope
val parent_of_scope : Fnf_core.scope -> Fnf_core.scope
val root_of_scope : Fnf_core.scope -> Fnf_core.scope
val items_of_scope : Fnf_core.scope -> Fnf_core.item list
val all_cells : Fnf_core.scope -> Fnf_core.cell list
val module_name_of_scope : Fnf_core.scope -> string
val instance_name_of_scope : Fnf_core.scope -> string
val scope_of_cell : Fnf_core.cell -> Fnf_core.scope
val path_of_scope : Fnf_core.scope -> string list
val path_of_cell : Fnf_core.cell -> string list
val info_of_cell : Fnf_core.cell -> Fnf_core.cell_info
val name_of_cell : Fnf_core.cell -> string
val width_of_cell : Fnf_core.cell -> int
val width_of_port : Fnf_core.port -> int
val arity_of_cell : Fnf_core.cell -> int
val is_port_dangling : Fnf_core.port -> bool
val is_cell_producer : Fnf_core.cell -> bool
val id_of_cell : Fnf_core.cell -> int
val cell_of_port : Fnf_core.port -> Fnf_core.cell
val ports_of_cell : Fnf_core.cell -> Fnf_core.port list
val port_of_cell : Fnf_core.cell -> int -> Fnf_core.port
val connect : Fnf_core.cell -> Fnf_core.port -> unit
val reconnect : Fnf_core.cell -> Fnf_core.port -> unit
val consumers_of_cell : Fnf_core.cell -> Fnf_core.port list
val producer_of_port : Fnf_core.port -> Fnf_core.cell
val dangle : Fnf_core.scope -> Fnf_core.cell
val create_input : Fnf_core.scope -> string -> int -> Fnf_core.cell
val create_output :
Fnf_core.scope -> string -> int -> Fnf_core.cell * Fnf_core.port
val create_name :
Fnf_core.scope -> string -> int -> Fnf_core.cell * Fnf_core.port
val create_const : Fnf_core.scope -> string -> Fnf_core.cell
val create_buf : Fnf_core.scope -> int -> Fnf_core.cell * Fnf_core.port
val create_not : Fnf_core.scope -> int -> Fnf_core.cell * Fnf_core.port
val create_and :
Fnf_core.scope -> int -> Fnf_core.cell * Fnf_core.port * Fnf_core.port
val create_xor :
Fnf_core.scope -> int -> Fnf_core.cell * Fnf_core.port * Fnf_core.port
val create_or :
Fnf_core.scope -> int -> Fnf_core.cell * Fnf_core.port * Fnf_core.port
val create_concat :
Fnf_core.scope ->
int -> int -> Fnf_core.cell * Fnf_core.port * Fnf_core.port
val create_select :
Fnf_core.scope -> int -> int -> Fnf_core.cell * Fnf_core.port
val create_eq :
Fnf_core.scope -> int -> Fnf_core.cell * Fnf_core.port * Fnf_core.port
val create_lt :
Fnf_core.scope -> int -> Fnf_core.cell * Fnf_core.port * Fnf_core.port
val create_add :
Fnf_core.scope -> int -> Fnf_core.cell * Fnf_core.port * Fnf_core.port
val create_sub :
Fnf_core.scope -> int -> Fnf_core.cell * Fnf_core.port * Fnf_core.port
val create_mul :
Fnf_core.scope -> int -> Fnf_core.cell * Fnf_core.port * Fnf_core.port
val create_mux :
Fnf_core.scope ->
int -> Fnf_core.cell * Fnf_core.port * Fnf_core.port * Fnf_core.port
val create_ff :
Fnf_core.scope -> int -> Fnf_core.cell * Fnf_core.port * Fnf_core.port
val create_ffc :
Fnf_core.scope ->
int -> Fnf_core.cell * Fnf_core.port * Fnf_core.port * Fnf_core.port
val create_bbox :
Fnf_core.scope ->
string -> int -> int -> int list -> Fnf_core.cell * Fnf_core.port
end