#!/usr/bin/env python3 import hammer_vlsi from hammer_vlsi import CLIDriver from typing import Dict, Callable, Optional def example_place_tap_cells(x: hammer_vlsi.HammerTool) -> bool: x.append(''' # TODO ''') return True class ExampleDriver(CLIDriver): def action_map(self) -> Dict[str, Callable[[hammer_vlsi.HammerDriver, Callable[[str], None]], Optional[dict]]]: par_action = self.create_par_action(custom_hooks=[ hammer_vlsi.HammerTool.make_replacement_hook("place_tap_cells", example_place_tap_cells) ]) new_dict = dict(super().action_map()) new_dict.update({ "par": par_action }) return new_dict def par_action(self, driver: hammer_vlsi.HammerDriver, append_error_func: Callable[[str], None]) -> Optional[dict]: if not driver.load_par_tool(): return None success, par_output = driver.run_par(hook_actions=[ hammer_vlsi.HammerTool.make_replacement_hook("place_tap_cells", example_place_tap_cells) ]) return par_output if __name__ == '__main__': ExampleDriver().main()