#!/usr/bin/env -S uv run from pathlib import Path from kyupy import verilog from kyupy.techlib import SKY130 def path_for(circuit: str): import subprocess return Path(subprocess.check_output( ["nix", "build", "--print-out-paths", "--no-link", f"github:s-holst/benchmark-circuits#{circuit}" ], text=True, ).strip()) def verilog_nl_path_for(circuit: str): return next(path_for(circuit).glob("*/nl/*.nl.v")) def print_circuit_stats(circuit: str): print(circuit) c = verilog.load(verilog_nl_path_for(circuit), tlib=SKY130) c.resolve_tlib_cells(SKY130) for kind, count in sorted(c.stats.items()): print(f' {kind:10s} {count}') if __name__ == "__main__": print_circuit_stats("picorv32-sky130")