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 rewrite;
18mod target;
19
20mod isomorphic;
21mod smt;
22
23pub use logic::{Trit, Const};
24pub use value::{Net, ControlNet, Value};
25pub use param::ParamValue;
26pub use io::{IoNet, IoValue};
27pub use cell::{
28    Cell, MatchCell, AssignCell, FlipFlop, IoBuffer, Memory, MemoryWritePort, MemoryReadPort, MemoryReadFlipFlop,
29    MemoryPortRelation, TargetCell, Instance,
30};
31pub use metadata::{MetaStringRef, MetaItem, MetaItemRef, SourcePosition};
32pub use design::{Design, CellRef, WithMetadataGuard};
33pub use parse::{parse, ParseError};
34pub use target::{
35    Target, TargetParamKind, TargetParam, TargetInput, TargetOutput, TargetIo, TargetCellPurity, TargetPrototype,
36    TargetCellImportError, TargetImportError, register_target, create_target,
37};
38pub use rewrite::{Rewriter, RewriteNetSource, RewriteRuleset, RewriteResult};
39
40pub use isomorphic::{isomorphic, NotIsomorphic};
41pub use smt::{SmtEngine, SmtResponse};
42#[cfg(feature = "easy-smt")]
43pub use smt::easy_smt::EasySmtEngine;