From 5b659dcb8805829964e4b4226a18081a2423bb11 Mon Sep 17 00:00:00 2001
From: Mora Unie Youer <mora_unie_youer@riseup.net>
Date: Fri, 2 May 2025 15:53:18 +0300
Subject: feat: use larger gates if specific is not found

---
 src/main.rs | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

(limited to 'src/main.rs')

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])
     }
 }
 
-- 
cgit v1.2.3-70-g09d2