prjunnamed_netlist/
lib.rs

1//! This library provides the in-memory form of the Project Unnamed IR.
2//!
3//! A [`Design`] is represented as a sea of [`Cell`]s identified by a contiguous range of indices,
4//! connected by [`Net`]s and [`Value`]s that refer back to cells by their index. This representation
5//! is equally suited for bit-level and word-level netlists, including bit-level cells with multiple
6//! outputs.
7
8mod logic;
9mod value;
10mod param;
11mod io;
12mod cell;
13mod metadata;
14mod design;
15mod print;
16mod parse;
17mod target;
18
19mod isomorphic;
20mod smt;
21
22pub use logic::{Trit, Const};
23pub use value::{Net, ControlNet, Value};
24pub use param::ParamValue;
25pub use io::{IoNet, IoValue};
26pub use cell::{
27    Cell, MatchCell, AssignCell, FlipFlop, IoBuffer, Memory, MemoryWritePort, MemoryReadPort, MemoryReadFlipFlop,
28    MemoryPortRelation, TargetCell, Instance,
29};
30pub use metadata::{MetaStringRef, MetaItem, MetaItemRef, SourcePosition};
31pub use design::{Design, CellRef, WithMetadataGuard};
32pub use parse::{parse, ParseError};
33pub use target::{
34    Target, TargetParamKind, TargetParam, TargetInput, TargetOutput, TargetIo, TargetCellPurity, TargetPrototype,
35    TargetCellImportError, TargetImportError, register_target, create_target,
36};
37
38pub use isomorphic::{isomorphic, NotIsomorphic};
39pub use smt::{SmtEngine, SmtResponse};
40#[cfg(feature = "easy-smt")]
41pub use smt::easy_smt::EasySmtEngine;