Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Innovus routing layers not respected #793

Closed
5 of 8 tasks
ethanwu10 opened this issue Jun 15, 2023 · 1 comment · Fixed by #794
Closed
5 of 8 tasks

Innovus routing layers not respected #793

ethanwu10 opened this issue Jun 15, 2023 · 1 comment · Fixed by #794
Labels
bug Cadence Specific to a Cadence tool

Comments

@ethanwu10
Copy link
Contributor

Background work

Hammer version and plugin hashes

Release: (master)
Hash: 28a4824

Other Setup

Innovus 211

Current Behavior

Hammer Innovus tool sets keys for top/bottom routing layers before reading LEFs (including the tech LEF), which means the layers are not yet defined at the time of execution.

# Set the top and bottom global/detail routing layers.
layers = self.get_setting("vlsi.technology.routing_layers")
if layers is not None:
if self.version() >= self.version_number("201"):
verbose_append(f"set_db design_bottom_routing_layer {layers[0]}")
verbose_append(f"set_db design_top_routing_layer {layers[1]}")
else:
verbose_append(f"set_db route_early_global_bottom_layer {layers[0]}")
verbose_append(f"set_db route_early_global_top_layer {layers[1]}")
verbose_append(f"set_db route_design_bottom_layer {layers[0]}")
verbose_append(f"set_db route_design_top_layer {layers[1]}")
# Read LEF layouts.
lef_files = self.technology.read_libs([
hammer_tech.filters.lef_filter
], hammer_tech.HammerTechnologyUtils.to_plain_item)
if self.hierarchical_mode.is_nonleaf_hierarchical():
ilm_lefs = list(map(lambda ilm: ilm.lef, self.get_input_ilms()))
lef_files.extend(ilm_lefs)
verbose_append("read_physical -lef {{ {files} }}".format(
files=" ".join(lef_files)
))

This causes the set_db commands to error, resulting in the top and bottom layer settings getting ignored.

As a result, Sky130 has problems with routing since Innovus tries to route on a layer that it shouldn't (the bottom-most layer in the Sky130 tech-LEF is not a routing metal layer).

Expected Behavior

Routing layers should be set after the tech LEF is loaded (do we want to bother splitting LEF load into two phases, or just handle routing layers after all LEFs are loaded?)

Other Information

No response

@ethanwu10 ethanwu10 added bug Cadence Specific to a Cadence tool labels Jun 15, 2023
@harrisonliew
Copy link
Contributor

Thanks for catching this bug. Can you just move this section (lines 252-262) down to the bottom of this init_design step?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Cadence Specific to a Cadence tool
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants