[package]
edition = "2024"
rust-version = "1.98.0"
name = "celox"
version = "0.4.1"
authors = ["tignear"]
build = false
publish = ["crates-io"]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Celox HDL Simulator"
readme = "README.md"
license = "MIT OR Apache-2.0"
repository = "https://github.com/celox-sim/celox"
resolver = "2"
[features]
arm64-codegen = [
"host-runtime",
"dep:celox-backend-arm64",
]
default = ["host-runtime"]
host-runtime = [
"dep:celox-backend-cranelift",
"dep:celox-backend-x86",
"dep:celox-macros",
"dep:wasmtime",
"dep:veryl-component-sys",
"dep:libloading",
"rand/thread_rng",
"celox-sir-opt/timing",
]
systemverilog = ["dep:celox-frontend-sv"]
x86_64-codegen = [
"host-runtime",
"dep:celox-backend-x86",
"celox-backend-x86/cross-codegen",
]
[lib]
name = "celox"
path = "src/lib.rs"
[[example]]
name = "dump_linear_sec_ir"
path = "examples/dump_linear_sec_ir.rs"
[[example]]
name = "frontend_binary"
path = "examples/frontend_binary.rs"
required-features = ["host-runtime"]
[[example]]
name = "pass_benchmark"
path = "examples/pass_benchmark.rs"
[[example]]
name = "profile_sorter"
path = "examples/profile_sorter.rs"
[[example]]
name = "transform"
path = "examples/transform.rs"
[[test]]
name = "advanced_interface"
path = "tests/advanced_interface.rs"
[[test]]
name = "array_literal"
path = "tests/array_literal.rs"
[[test]]
name = "basic"
path = "tests/basic.rs"
[[test]]
name = "bitslice_param_repro"
path = "tests/bitslice_param_repro.rs"
[[test]]
name = "bram_corruption"
path = "tests/bram_corruption.rs"
[[test]]
name = "cascade_race"
path = "tests/cascade_race.rs"
[[test]]
name = "case_switch"
path = "tests/case_switch.rs"
[[test]]
name = "comb_observer"
path = "tests/comb_observer.rs"
[[test]]
name = "compare_matrix"
path = "tests/compare_matrix.rs"
[[test]]
name = "component_method"
path = "tests/component_method.rs"
[[test]]
name = "concat_operators"
path = "tests/concat_operators.rs"
[[test]]
name = "concatenation"
path = "tests/concatenation.rs"
[[test]]
name = "context_width"
path = "tests/context_width.rs"
[[test]]
name = "cost_directed_mux"
path = "tests/cost_directed_mux.rs"
[[test]]
name = "counter"
path = "tests/counter.rs"
[[test]]
name = "cross_validate"
path = "tests/cross_validate.rs"
[[test]]
name = "data_access"
path = "tests/data_access.rs"
[[test]]
name = "default_backend"
path = "tests/default_backend.rs"
[[test]]
name = "duplicate_varpath"
path = "tests/duplicate_varpath.rs"
[[test]]
name = "enum_type"
path = "tests/enum_type.rs"
[[test]]
name = "error_detection"
path = "tests/error_detection.rs"
[[test]]
name = "error_readability"
path = "tests/error_readability.rs"
[[test]]
name = "expression_semantics"
path = "tests/expression_semantics.rs"
[[test]]
name = "false_loop"
path = "tests/false_loop.rs"
[[test]]
name = "ff_comb_clock"
path = "tests/ff_comb_clock.rs"
[[test]]
name = "fifo_issue5"
path = "tests/fifo_issue5.rs"
[[test]]
name = "flip_flop"
path = "tests/flip_flop.rs"
[[test]]
name = "for_loop_unroll"
path = "tests/for_loop_unroll.rs"
[[test]]
name = "four_state"
path = "tests/four_state.rs"
[[test]]
name = "four_state_expression_semantics"
path = "tests/four_state_expression_semantics.rs"
[[test]]
name = "frontend_sdk"
path = "tests/frontend_sdk.rs"
[[test]]
name = "fuzz_cross_validate"
path = "tests/fuzz_cross_validate.rs"
[[test]]
name = "hierarchy"
path = "tests/hierarchy.rs"
[[test]]
name = "initial_readmem"
path = "tests/initial_readmem.rs"
[[test]]
name = "injected_component"
path = "tests/injected_component.rs"
[[test]]
name = "interface"
path = "tests/interface.rs"
[[test]]
name = "issue3_repro"
path = "tests/issue3_repro.rs"
[[test]]
name = "linear_sec"
path = "tests/linear_sec.rs"
[[test]]
name = "linear_sorter"
path = "tests/linear_sorter.rs"
[[test]]
name = "linear_sorter_pull"
path = "tests/linear_sorter_pull.rs"
[[test]]
name = "linear_sorter_pull_mre"
path = "tests/linear_sorter_pull_mre.rs"
[[test]]
name = "loop_idiom"
path = "tests/loop_idiom.rs"
[[test]]
name = "macro_test"
path = "tests/macro_test.rs"
[[test]]
name = "multi_clock"
path = "tests/multi_clock.rs"
[[test]]
name = "mutable_for_bound"
path = "tests/mutable_for_bound.rs"
[[test]]
name = "native_boundary_hardening"
path = "tests/native_boundary_hardening.rs"
[[test]]
name = "native_exec"
path = "tests/native_exec.rs"
[[test]]
name = "native_mir"
path = "tests/native_mir.rs"
[[test]]
name = "native_shift_boundaries"
path = "tests/native_shift_boundaries.rs"
[[test]]
name = "native_testbench"
path = "tests/native_testbench.rs"
[[test]]
name = "nba_cross_block"
path = "tests/nba_cross_block.rs"
[[test]]
name = "nba_cross_block_empty"
path = "tests/nba_cross_block_empty.rs"
[[test]]
name = "nba_dynamic_array"
path = "tests/nba_dynamic_array.rs"
[[test]]
name = "nested_write_perf"
path = "tests/nested_write_perf.rs"
[[test]]
name = "operators"
path = "tests/operators.rs"
[[test]]
name = "optimizer_scaling"
path = "tests/optimizer_scaling.rs"
[[test]]
name = "packed_scatter_store"
path = "tests/packed_scatter_store.rs"
[[test]]
name = "param_override"
path = "tests/param_override.rs"
[[test]]
name = "parameterized_ops"
path = "tests/parameterized_ops.rs"
[[test]]
name = "proto_package"
path = "tests/proto_package.rs"
[[test]]
name = "recovered_unrolled_fold"
path = "tests/recovered_unrolled_fold.rs"
[[test]]
name = "reset_edge_cases"
path = "tests/reset_edge_cases.rs"
[[test]]
name = "self_determination"
path = "tests/self_determination.rs"
[[test]]
name = "shared_jit_cache"
path = "tests/shared_jit_cache.rs"
[[test]]
name = "shift_bug_test"
path = "tests/shift_bug_test.rs"
[[test]]
name = "shift_signedness"
path = "tests/shift_signedness.rs"
[[test]]
name = "signed_divrem"
path = "tests/signed_divrem.rs"
[[test]]
name = "simulation_limits"
path = "tests/simulation_limits.rs"
[[test]]
name = "simulation_step"
path = "tests/simulation_step.rs"
[[test]]
name = "simulator_api"
path = "tests/simulator_api.rs"
[[test]]
name = "sorter_tree_perf"
path = "tests/sorter_tree_perf.rs"
[[test]]
name = "state_cast_semantics"
path = "tests/state_cast_semantics.rs"
[[test]]
name = "std_binary_codec"
path = "tests/std_binary_codec.rs"
[[test]]
name = "std_delay"
path = "tests/std_delay.rs"
[[test]]
name = "std_edge_detector"
path = "tests/std_edge_detector.rs"
[[test]]
name = "std_fifo"
path = "tests/std_fifo.rs"
[[test]]
name = "std_gray_codec"
path = "tests/std_gray_codec.rs"
[[test]]
name = "std_lfsr"
path = "tests/std_lfsr.rs"
[[test]]
name = "std_mux"
path = "tests/std_mux.rs"
[[test]]
name = "std_onehot"
path = "tests/std_onehot.rs"
[[test]]
name = "std_ram"
path = "tests/std_ram.rs"
[[test]]
name = "struct_constructor"
path = "tests/struct_constructor.rs"
[[test]]
name = "sv_unpacked_array"
path = "tests/sv_unpacked_array.rs"
[[test]]
name = "synth_dynamic_loop"
path = "tests/synth_dynamic_loop.rs"
[[test]]
name = "system_function"
path = "tests/system_function.rs"
[[test]]
name = "systemverilog"
path = "tests/systemverilog.rs"
required-features = ["systemverilog"]
[[test]]
name = "test_unimplemented_paths"
path = "tests/test_unimplemented_paths.rs"
[[test]]
name = "trace"
path = "tests/trace.rs"
[[test]]
name = "trace_analyzer_ir"
path = "tests/trace_analyzer_ir.rs"
[[test]]
name = "true_loop"
path = "tests/true_loop.rs"
[[test]]
name = "vcd"
path = "tests/vcd.rs"
[[test]]
name = "vip_registry"
path = "tests/vip_registry.rs"
[[test]]
name = "wasm_backend"
path = "tests/wasm_backend.rs"
[[test]]
name = "wasm_regression"
path = "tests/wasm_regression.rs"
[[test]]
name = "wide_context_width"
path = "tests/wide_context_width.rs"
[[test]]
name = "wide_data"
path = "tests/wide_data.rs"
[[test]]
name = "wide_operators"
path = "tests/wide_operators.rs"
[[test]]
name = "wide_shift_mem"
path = "tests/wide_shift_mem.rs"
[[bench]]
name = "compilation"
path = "benches/compilation.rs"
bench = false
harness = false
[[bench]]
name = "overhead"
path = "benches/overhead.rs"
harness = false
[[bench]]
name = "simulation"
path = "benches/simulation.rs"
harness = false
[dependencies.bit-set]
version = "0.11"
[dependencies.celox-analysis]
version = "=0.4.1"
[dependencies.celox-backend-arm64]
version = "=0.4.1"
optional = true
[dependencies.celox-backend-cranelift]
version = "=0.4.1"
optional = true
[dependencies.celox-backend-wasm]
version = "=0.4.1"
[dependencies.celox-design]
version = "=0.4.1"
[dependencies.celox-frontend-core]
version = "=0.4.1"
[dependencies.celox-frontend-sdk]
version = "=0.4.1"
[dependencies.celox-frontend-sv]
version = "=0.4.1"
optional = true
[dependencies.celox-frontend-veryl]
version = "=0.4.1"
[dependencies.celox-macros]
version = "=0.4.1"
optional = true
[dependencies.celox-runtime]
version = "=0.4.1"
[dependencies.celox-sir]
version = "=0.4.1"
[dependencies.celox-sir-opt]
version = "=0.4.1"
default-features = false
[dependencies.celox-slt]
version = "=0.4.1"
[dependencies.celox-state-layout]
version = "=0.4.1"
[dependencies.celox-testbench]
version = "=0.4.1"
[dependencies.clap]
version = "4.5.60"
features = ["derive"]
[dependencies.fxhash]
version = "0.2.1"
[dependencies.itertools]
version = "0.15.0"
[dependencies.libloading]
version = "0.9"
optional = true
[dependencies.miette]
version = "7.6"
[dependencies.num-bigint]
version = "0.5"
[dependencies.num-traits]
version = "0.2.19"
[dependencies.postcard]
version = "1.1"
features = ["alloc"]
[dependencies.rand]
version = "0.10"
default-features = false
[dependencies.rand_pcg]
version = "0.10"
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.thiserror]
version = "2.0"
[dependencies.toml]
version = "1.0.3"
[dependencies.tracing]
version = "0.1"
[dependencies.veryl-analyzer]
version = "0.20.3"
[dependencies.veryl-component-sys]
version = "0.1.1"
optional = true
[dependencies.veryl-metadata]
version = "0.20.3"
[dependencies.veryl-parser]
version = "0.20.3"
default-features = false
[dependencies.veryl-path]
version = "0.20.3"
[dependencies.wasmtime]
version = "48"
optional = true
[dev-dependencies.codspeed-criterion-compat]
version = "5.0.1"
[dev-dependencies.criterion]
version = "0.8"
[dev-dependencies.insta]
version = "1.46"
[dev-dependencies.proptest]
version = "1.10"
[dev-dependencies.tempfile]
version = "3.26"
[dev-dependencies.test-case]
version = "3"
[dev-dependencies.veryl-emitter]
version = "0.20.3"
[dev-dependencies.veryl-simulator]
version = "0.20.3"
[dev-dependencies.veryl-std]
version = "0.20.3"
[target.'cfg(any(target_arch = "x86_64", target_arch = "aarch64"))'.dependencies.celox-backend-x86]
version = "=0.4.1"
optional = true
[target.'cfg(target_arch = "aarch64")'.dependencies.celox-backend-arm64]
version = "=0.4.1"
[target.'cfg(target_arch = "x86_64")'.dependencies.celox-sir-opt]
version = "=0.4.1"
features = ["wide-native-memory"]
default-features = false
[lints.clippy]
collapsible_if = "allow"
disallowed_macros = "deny"
disallowed_methods = "deny"
disallowed_types = "deny"
too_many_arguments = "allow"
type_complexity = "allow"
[lints.clippy.all]
level = "deny"
priority = -1
[lints.rust]
warnings = "deny"