diff --git a/place_and_route/build_defs.bzl b/place_and_route/build_defs.bzl index 027742f5..3ae69b64 100644 --- a/place_and_route/build_defs.bzl +++ b/place_and_route/build_defs.bzl @@ -109,6 +109,10 @@ place_and_route = rule( default = True, doc = "Enable/Disable improve_placement pass.", ), + "local_clock_tree_synthesis_execution": attr.bool( + default = False, + doc = "Whether to run clock tree synthesis on a remote executor. If the clock tree synthesis exceeds 15 minutes flip this setting.", + ), "local_detailed_routing_execution": attr.bool( default = False, doc = "Whether to run detailed routing on a remote executor. If the detailed routing exceeds 15 minutes flip this setting.", diff --git a/place_and_route/private/clock_tree_synthesis.bzl b/place_and_route/private/clock_tree_synthesis.bzl index 0997b987..70fb5a89 100644 --- a/place_and_route/private/clock_tree_synthesis.bzl +++ b/place_and_route/private/clock_tree_synthesis.bzl @@ -61,11 +61,16 @@ def clock_tree_synthesis(ctx, open_road_info): if open_road_configuration.check_placement: open_road_commands.append("check_placement") + execution_requirements = {} + if ctx.attr.local_clock_tree_synthesis_execution: + execution_requirements["no-remote-exec"] = "" + command_output = openroad_command( ctx, commands = open_road_commands, input_db = open_road_info.output_db, inputs = inputs, + execution_requirements = execution_requirements, step_name = "clock_tree_synthesis", )