37 lines
1.1 KiB
Python
Executable File
37 lines
1.1 KiB
Python
Executable File
#!/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()
|