-
Notifications
You must be signed in to change notification settings - Fork 653
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
OpenROAD complete backend with nangate45 #608
Changes from all commits
5acf583
2543044
c617c4d
74807d6
bfb09a6
774716a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,4 +3,5 @@ __pycache__ | |
hammer*.log | ||
build | ||
src/test/output-*.json | ||
generated-src | ||
generated-src | ||
output.json |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
#---------------------- | ||
# Technology Setup | ||
#---------------------- | ||
|
||
vlsi.core.technology: nangate45 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We might want to separate out the yaml into generic settings and tech specific settings, so we would have an: And it optionally includes the right pair based on |
||
|
||
# the nangate45.tech.json can't reference the $OPENROAD environment variable, | ||
# so we need to set the install dir here. | ||
# TODO: figure out how to remove this, or override it within OpenROADTool | ||
technology.nangate45.install_dir: "/k/work/OpenROAD-flow/tools/OpenROAD" | ||
|
||
vlsi.core.max_threads: 12 | ||
|
||
#---------------------- | ||
# General Hammer Inputs | ||
#---------------------- | ||
|
||
# Hammer will auto-generate a CPF for simple power designs; | ||
# see hammer/src/hammer-vlsi/defaults.yml for more info | ||
vlsi.inputs.power_spec_mode: "auto" | ||
vlsi.inputs.power_spec_type: "cpf" | ||
|
||
# Specify clock signals | ||
vlsi.inputs.clocks: [ | ||
{name: "clock", period: "5ns", uncertainty: "0.5ns"} | ||
] | ||
|
||
# Generate Make include to aid in flow | ||
vlsi.core.build_system: make | ||
|
||
#---------------------- | ||
# Placement Constraints | ||
#---------------------- | ||
|
||
# For nangate45, size should be multiple of (0.19,1.4) placement grid | ||
vlsi.inputs.placement_constraints: | ||
- path: "ChipTop" | ||
type: toplevel | ||
x: 0 | ||
y: 0 | ||
width: 3334.72 | ||
height: 3798.2 | ||
margins: | ||
left: 0 | ||
right: 0 | ||
top: 0 | ||
bottom: 0 | ||
|
||
# SRAM Compiler compiler options | ||
vlsi.core.sram_generator_tool: "sram_compiler" | ||
## You should specify a location for the SRAM generator in the tech plugin | ||
vlsi.core.sram_generator_tool_path: [ | ||
"hammer/src/hammer-vlsi/technology/nangate45"] | ||
vlsi.core.sram_generator_tool_path_meta: "append" | ||
|
||
#---------------------- | ||
# Tool options. Replace with your tool plugin of choice. | ||
#---------------------- | ||
|
||
# OpenROAD-yosys options | ||
vlsi.core.synthesis_tool: "yosys" | ||
vlsi.core.synthesis_tool_path: ["hammer/src/hammer-vlsi/synthesis/yosys"] | ||
vlsi.core.synthesis_tool_path_meta: "append" | ||
|
||
# OpenROAD-par options | ||
vlsi.core.par_tool: "openroad" | ||
vlsi.core.par_tool_path: ["hammer/src/hammer-vlsi/par"] | ||
vlsi.core.par_tool_path_meta: "append" | ||
|
||
# OpenROAD-drc options (no lvs) | ||
vlsi.core.drc_tool: "openroad" | ||
vlsi.core.drc_tool_path: ["hammer/src/hammer-vlsi/drc"] | ||
vlsi.core.drc_tool_path_meta: "append" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,8 @@ | ||
#!/usr/bin/env python3 | ||
# | ||
# NOTE: this ExampleDriver works for asap7 and nangate45. the custom hooks are | ||
# only used for asap7 though. | ||
|
||
import os | ||
|
||
import hammer_vlsi | ||
|
@@ -7,21 +11,24 @@ 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(''' | ||
if x.get_setting("vlsi.core.technology") == "asap7": | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There is a nicer way to do this now but this is ok for the time being. |
||
x.append(''' | ||
# TODO | ||
# Place custom TCL here | ||
''') | ||
return True | ||
|
||
def example_add_fillers(x: hammer_vlsi.HammerTool) -> bool: | ||
x.append(''' | ||
if x.get_setting("vlsi.core.technology") == "asap7": | ||
x.append(''' | ||
# TODO | ||
# Place custom TCL here | ||
''') | ||
return True | ||
|
||
def example_tool_settings(x: hammer_vlsi.HammerTool) -> bool: | ||
x.append(''' | ||
if x.get_setting("vlsi.core.technology") == "asap7": | ||
x.append(''' | ||
# TODO | ||
# Place custom TCL here | ||
set_db route_design_bottom_routing_layer 2 | ||
|
@@ -34,7 +41,8 @@ def scale_final_gds(x: hammer_vlsi.HammerTool) -> bool: | |
Scale the final GDS by a factor of 4 | ||
hammer/src/hammer-vlsi/technology/asap7/__init__.py implements scale_gds_script | ||
""" | ||
x.append(''' | ||
if x.get_setting("vlsi.core.technology") == "asap7": | ||
x.append(''' | ||
# Write script out to a temporary file and execute it | ||
set fp [open "{script_file}" "w"] | ||
puts -nonewline $fp "{script_text}" | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do these spaces line something up? It seems like they unalign these
?=
operators.