#!/usr/bin/env python3
import os

import hammer_vlsi
from hammer_vlsi import CLIDriver, HammerToolHookAction

from typing import Dict, Callable, Optional, List

def example_place_tap_cells(x: hammer_vlsi.HammerTool) -> bool:
    x.append("")
    return True

def example_add_fillers(x: hammer_vlsi.HammerTool) -> bool:
    x.append("")
    return True

class ExampleDriver(CLIDriver):
    def get_extra_par_hooks(self) -> List[HammerToolHookAction]:
        extra_hooks = [
            # make_pre_insertion_hook will execute the custom hook before the specified step
            hammer_vlsi.HammerTool.make_pre_insertion_hook("route_design", example_add_fillers),

            # make_replacement_hook will replace the specified step with a custom hook
            hammer_vlsi.HammerTool.make_replacement_hook("place_tap_cells", example_place_tap_cells),
        ]
        return extra_hooks 

if __name__ == '__main__':
    ExampleDriver().main()
