diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 56616bcd43..0df148d71d 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -356,6 +356,7 @@ configuration file. - [ADDITIONAL_MEMORIES](#ADDITIONAL_MEMORIES) - [AUTO_MEMORIES_MACRO_PLACE](#AUTO_MEMORIES_MACRO_PLACE) - [AUTO_MEMORIES_REGFILES](#AUTO_MEMORIES_REGFILES) +- [BLOCKS](#BLOCKS) - [CACHED_REPORTS](#CACHED_REPORTS) - [CLKGATE_MAP_FILE](#CLKGATE_MAP_FILE) - [DFF_LIB_FILE](#DFF_LIB_FILE) @@ -669,7 +670,6 @@ configuration file. - [ADDITIONAL_LEFS](#ADDITIONAL_LEFS) - [ADDITIONAL_LIBS](#ADDITIONAL_LIBS) - [AUTO_MEMORIES](#AUTO_MEMORIES) -- [BLOCKS](#BLOCKS) - [CAP_MARGIN](#CAP_MARGIN) - [CDL_FILES](#CDL_FILES) - [CORNER](#CORNER) diff --git a/flow/scripts/synth_preamble.tcl b/flow/scripts/synth_preamble.tcl index 6550b0f5ae..f024281f80 100644 --- a/flow/scripts/synth_preamble.tcl +++ b/flow/scripts/synth_preamble.tcl @@ -302,6 +302,13 @@ if { [env_var_exists_and_non_empty DONT_USE_CELLS] } { lappend lib_dont_use_args -dont_use $cell } } +# Never map logic onto a hardened block. A block's timing model gives a +# constant output a function, and ABC would take the block for a gate. +if { [env_var_exists_and_non_empty BLOCKS] } { + foreach block $::env(BLOCKS) { + lappend lib_dont_use_args -dont_use $block + } +} # Technology mapping for cells set abc_args [list -script $abc_script \ diff --git a/flow/scripts/variables.json b/flow/scripts/variables.json index 0d5e4dedd5..8bebf70c48 100644 --- a/flow/scripts/variables.json +++ b/flow/scripts/variables.json @@ -94,7 +94,10 @@ ] }, "BLOCKS": { - "description": "Blocks used as hard macros in a hierarchical flow. Do note that you have to specify block-specific inputs file in the directory mentioned by Makefile.\n" + "description": "Blocks used as hard macros in a hierarchical flow. Do note that you have to specify block-specific inputs file in the directory mentioned by Makefile.\n", + "stages": [ + "synth" + ] }, "BUFFER_PORTS_ARGS": { "description": "Specify arguments to the buffer_ports call during placement. Only used if DONT_BUFFER_PORTS=0.\n", diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index cd680162d1..ac9d582494 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -1134,6 +1134,8 @@ BLOCKS: description: > Blocks used as hard macros in a hierarchical flow. Do note that you have to specify block-specific inputs file in the directory mentioned by Makefile. + stages: + - synth CDL_FILES: description: | Insert additional Circuit Description Language (`.cdl`) netlist files. diff --git a/tools/OpenROAD b/tools/OpenROAD index f131605002..82a809c749 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit f131605002c80444f79b18e95e0c7cb657ec024d +Subproject commit 82a809c74985ed61a7778eb48dc895c5335e462f