summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLibravatar Mora Unie Youer <[email protected]>2025-05-02 15:53:18 +0300
committerLibravatar Mora Unie Youer <[email protected]>2025-05-02 15:53:18 +0300
commit5b659dcb8805829964e4b4226a18081a2423bb11 (patch)
tree26b186f5a6a729952e2e1f274fdb8eb22b6aeaef /src
parentfix: no panic if gate has no chip (diff)
downloadlogic-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.rs12
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])
}
}