diff options
author | 2025-05-02 15:53:18 +0300 | |
---|---|---|
committer | 2025-05-02 15:53:18 +0300 | |
commit | 5b659dcb8805829964e4b4226a18081a2423bb11 (patch) | |
tree | 26b186f5a6a729952e2e1f274fdb8eb22b6aeaef /src | |
parent | fix: no panic if gate has no chip (diff) | |
download | logic-rust-5b659dcb8805829964e4b4226a18081a2423bb11.tar.gz logic-rust-5b659dcb8805829964e4b4226a18081a2423bb11.tar.bz2 logic-rust-5b659dcb8805829964e4b4226a18081a2423bb11.tar.lz logic-rust-5b659dcb8805829964e4b4226a18081a2423bb11.tar.xz logic-rust-5b659dcb8805829964e4b4226a18081a2423bb11.tar.zst logic-rust-5b659dcb8805829964e4b4226a18081a2423bb11.zip |
feat: use larger gates if specific is not found
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs index cb8c5f1..f6dea25 100644 --- a/src/main.rs +++ b/src/main.rs @@ -529,8 +529,16 @@ fn pick_chip_by_logic<'input>( if let Some(chip) = series.logic_to_chip.get(&(gate, inputs)) { Some(*chip) } else { - // todo!() - None + // Returning first larger by size + // NOTE: this is not the optimal solution, but for my case it is the best (delay is lowest + // possible) + let larger_gate = series + .logic_to_chip + .keys() + .filter(|&&(g, i)| g == gate && i > inputs) + .sorted() + .next(); + larger_gate.map(|conf| series.logic_to_chip[conf]) } } |