[package]
name = "eqmap"
version = "0.9.6"
edition = "2024"
default-run = "eqmap_fpga"
license = "Apache-2.0"

categories = [
    "data-structures",
    "compilers",
    "science",
]

description = "EqMap: Technology Mapping w/ E-Graphs"
documentation = "https://cornell-zhang.github.io/eqmap/"
homepage = "https://cornell-zhang.github.io/eqmap/"
include = [
    "Cargo.toml",
    "clippy.toml",
    "LICENSE",
    "README.md",
    "src/**/*.rs",
    "rules/*.celllang",
]

keywords = [
    "data-structures",
    "eda",
    "netlist",
    "circuits",
    "hardware",
]

readme = "README.md"

repository = "https://github.com/cornell-zhang/eqmap"

[dependencies]
bitvec = "1.0.1"
clap = { version = "4.5.53", features = ["derive"] }
egg = "0.11.0"
indicatif = "0.18.3"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.145"
toml = "0.9.11"
thiserror = { version = "2.0.16" }
sv-parser = "0.13.4"
ctrlc = "3.5.1"
safety-net = { version = "0.7.0", features = ["graph"] }
safety-pass = { version = "0.4.1", features = ["id"] }
good_lp = { version = "1.14.2", optional = true }
nl-compiler = { version = "0.1.19" }
log = "0.4.29"
simplelog = "0.12.2"
rand = "0.10.1"

[lints.clippy]
manual_range_contains = "allow"

[features]
default = [ "dyn_decomp" ]
# We probably don't want the compiler to apply folding on LUTs.
# It is too expensive
# default = [ "dyn_decomp", "egraph_fold" ]
egraph_fold = []
exact_cbc = [ "egg/lp", "good_lp/coin_cbc" ]
exact_highs = [ "egg/lp", "good_lp/highs" ]
cut_analysis = []
dyn_decomp = [ "cut_analysis" ]
graph_dumps = []
