diff options
| author | 2025-05-02 15:53:18 +0300 | |
|---|---|---|
| committer | 2025-05-02 15:53:18 +0300 | |
| commit | 5b659dcb8805829964e4b4226a18081a2423bb11 (patch) | |
| tree | 26b186f5a6a729952e2e1f274fdb8eb22b6aeaef | |
| 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 '')
| -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])      }  } | 
