initial migration to new Hammer
This commit is contained in:
committed by
abejgonzalez
parent
a6921d15c6
commit
22fda3a6a7
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -28,9 +28,6 @@
|
||||
[submodule "generators/block-inclusivecache-sifive"]
|
||||
path = generators/sifive-cache
|
||||
url = https://github.com/chipsalliance/rocket-chip-inclusive-cache.git
|
||||
[submodule "vlsi/hammer"]
|
||||
path = vlsi/hammer
|
||||
url = https://github.com/ucb-bar/hammer.git
|
||||
[submodule "tools/dsptools"]
|
||||
path = tools/dsptools
|
||||
url = https://github.com/ucb-bar/dsptools.git
|
||||
|
||||
@@ -127,6 +127,7 @@ dependencies:
|
||||
- mypy-boto3-ec2==1.21.9
|
||||
- sure==2.0.0
|
||||
- pylddwrap==1.2.1
|
||||
- hammer-vlsi
|
||||
|
||||
# doc requirements
|
||||
- sphinx
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
13
conda-reqs/vlsi.yaml
Normal file
13
conda-reqs/vlsi.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
dependencies:
|
||||
# https://conda-forge.org/feedstock-outputs/
|
||||
# filterable list of all conda-forge packages
|
||||
# https://conda-forge.org/#contribute
|
||||
# instructions on adding a recipe
|
||||
# https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/pkg-specs.html#package-match-specifications
|
||||
# documentation on package_spec syntax for constraining versions
|
||||
|
||||
|
||||
- pip:
|
||||
- -e ../vlsi/hammer-cadence-plugins
|
||||
- -e ../vlsi/hammer-synopsys-plugins
|
||||
- -e ../vlsi/hammer-mentor-plugins
|
||||
@@ -13,6 +13,15 @@ if [[ $1 != *openroad* ]] && [[ $2 != *openroad* ]]; then
|
||||
fi
|
||||
|
||||
# Initialize HAMMER tech plugin
|
||||
# And add tech plugin to conda dependencies
|
||||
if [[ $1 != *asap7* ]] && [[ $1 != *sky130* ]]; then
|
||||
git submodule update --init --recursive vlsi/hammer-$1-plugin
|
||||
echo ' '- -e ../vlsi/hammer-$1-plugin >> conda-reqs/vlsi.yaml
|
||||
fi
|
||||
|
||||
# Update the conda-env with the plugins
|
||||
if [[ `basename $CONDA_PREFIX` != .conda-env ]]; then
|
||||
echo 'Activating Chipyard conda environment...'
|
||||
source env.sh
|
||||
fi
|
||||
conda env update -f conda-reqs/vlsi.yaml
|
||||
|
||||
@@ -21,8 +21,8 @@ include $(base_dir)/variables.mk
|
||||
sim_name ?= vcs # needed for GenerateSimFiles, but is unused
|
||||
tech_name ?= asap7
|
||||
tech_dir ?= $(if $(filter $(tech_name),sky130 asap7 nangate45),\
|
||||
$(vlsi_dir)/hammer/src/hammer-vlsi/technology/$(tech_name), \
|
||||
$(vlsi_dir)/hammer-$(tech_name)-plugin/$(tech_name))
|
||||
$(vlsi_dir)/hammer/hammer/technology/$(tech_name), \
|
||||
$(vlsi_dir)/hammer-$(tech_name)-plugin/hammer/technology/$(tech_name))
|
||||
SMEMS_COMP ?= $(tech_dir)/sram-compiler.json
|
||||
SMEMS_CACHE ?= $(tech_dir)/sram-cache.json
|
||||
SMEMS_HAMMER ?= $(build_dir)/$(long_name).mems.hammer.json
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Technology Setup
|
||||
# Technology used is ASAP7
|
||||
vlsi.core.technology: asap7
|
||||
vlsi.core.technology: "hammer.technology.asap7"
|
||||
# Specify dir with ASAP7 Calibre deck tarball
|
||||
technology.asap7.tarball_dir: "/path/to/asap7"
|
||||
# Specify PDK and std cell install directories
|
||||
@@ -94,7 +94,4 @@ vlsi.inputs.pin.assignments: [
|
||||
]
|
||||
|
||||
# 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/asap7"]
|
||||
vlsi.core.sram_generator_tool_path_meta: "append"
|
||||
vlsi.core.sram_generator_tool: "hammer.technology.asap7.sram_compiler"
|
||||
|
||||
@@ -1,22 +1,9 @@
|
||||
# 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: []
|
||||
vlsi.core.sram_generator_tool_path_meta: "append"
|
||||
|
||||
# Tool options. Replace with your tool plugin of choice.
|
||||
# Yosys options
|
||||
vlsi.core.synthesis_tool: "yosys"
|
||||
vlsi.core.synthesis_tool_path: ["hammer/src/hammer-vlsi/synthesis"]
|
||||
vlsi.core.synthesis_tool_path_meta: "append"
|
||||
# Innovus options
|
||||
vlsi.core.par_tool: "openroad"
|
||||
vlsi.core.par_tool_path: ["hammer/src/hammer-vlsi/par"]
|
||||
vlsi.core.par_tool_path_meta: "append"
|
||||
# Magic options
|
||||
vlsi.core.drc_tool: "magic"
|
||||
vlsi.core.drc_tool_path: ["hammer/src/hammer-vlsi/drc"]
|
||||
drc.magic.magic_bin: "magic"
|
||||
# Netgen options
|
||||
vlsi.core.lvs_tool: "netgen"
|
||||
vlsi.core.lvs_tool_path: ["hammer/src/hammer-vlsi/lvs"]
|
||||
# Yosys
|
||||
vlsi.core.synthesis_tool: "hammer.synthesis.yosys"
|
||||
# OpenROAD
|
||||
vlsi.core.par_tool: "hammer.par.openroad"
|
||||
# Magic
|
||||
vlsi.core.drc_tool: "hammer.drc.magic"
|
||||
# Netgen
|
||||
vlsi.core.lvs_tool: "hammer.lvs.netgen"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Technology Setup
|
||||
# Technology used is Sky130
|
||||
vlsi.core.technology: sky130
|
||||
vlsi.core.technology: "hammer.technology.sky130"
|
||||
|
||||
vlsi.core.max_threads: 12
|
||||
|
||||
@@ -71,7 +71,4 @@ vlsi.inputs.pin.assignments: [
|
||||
]
|
||||
|
||||
# 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/sky130"]
|
||||
vlsi.core.sram_generator_tool_path_meta: "append"
|
||||
vlsi.core.sram_generator_tool: "hammer.technology.sky130.sram_compiler"
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
# Technology Setup
|
||||
vlsi.core.technology: <tech_name>
|
||||
vlsi.core.technology_path: ["hammer-<tech_name>-plugin"]
|
||||
vlsi.core.technology_path_meta: append
|
||||
vlsi.core.technology: "hammer.technology.<tech_name>"
|
||||
|
||||
# technology files installation directory
|
||||
technology.<tech_name>.install_dir: "</path/to/technology/pdk/>"
|
||||
|
||||
@@ -1,36 +1,25 @@
|
||||
# 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: []
|
||||
vlsi.core.sram_generator_tool_path_meta: "append"
|
||||
vlsi.core.sram_generator_tool: "hammer.technology.<tech_name>.sram_compiler"
|
||||
|
||||
# Tool options. Replace with your tool plugin of choice.
|
||||
# Genus options
|
||||
vlsi.core.synthesis_tool: "genus"
|
||||
vlsi.core.synthesis_tool_path: ["hammer-cadence-plugins/synthesis"]
|
||||
vlsi.core.synthesis_tool_path_meta: "append"
|
||||
synthesis.genus.version: "1813"
|
||||
vlsi.core.synthesis_tool: "hammer.synthesis.genus"
|
||||
synthesis.genus.version: "211"
|
||||
# Innovus options
|
||||
vlsi.core.par_tool: "innovus"
|
||||
vlsi.core.par_tool_path: ["hammer-cadence-plugins/par"]
|
||||
vlsi.core.par_tool_path_meta: "append"
|
||||
par.innovus.version: "191_ISR3"
|
||||
vlsi.core.par_tool: "hammer.par.innovus"
|
||||
par.innovus.version: "211"
|
||||
par.innovus.design_flow_effort: "standard"
|
||||
par.inputs.gds_merge: true
|
||||
# Calibre options
|
||||
vlsi.core.drc_tool: "calibre"
|
||||
vlsi.core.drc_tool_path: ["hammer-mentor-plugins/drc"]
|
||||
drc.calibre.version: "2017.3_38.30"
|
||||
vlsi.core.lvs_tool: "calibre"
|
||||
vlsi.core.lvs_tool_path: ["hammer-mentor-plugins/lvs"]
|
||||
lvs.calibre.version: "2017.3_38.30"
|
||||
vlsi.core.drc_tool: "hammer.drc.calibre"
|
||||
drc.calibre.version: "2022.2_24.16"
|
||||
vlsi.core.lvs_tool: "hammer.lvs.calibre"
|
||||
lvs.calibre.version: "2022.2_24.16"
|
||||
# VCS options
|
||||
vlsi.core.sim_tool: "vcs"
|
||||
vlsi.core.sim_tool_path: ["hammer-synopsys-plugins/sim"]
|
||||
sim.vcs.version: "P-2019.06-SP2-5"
|
||||
vlsi.core.sim_tool: "hammer.sim.vcs"
|
||||
sim.vcs.version: "T-2022.06-SP2"
|
||||
# Voltus options
|
||||
vlsi.core.power_tool: "voltus"
|
||||
vlsi.core.power_tool_path: ["hammer-cadence-plugins/power"]
|
||||
vlsi.core.power_tool: "hammer.power.voltus"
|
||||
vlsi.core.power_tool_path_meta: "append"
|
||||
power.voltus.version: "191_ISR3"
|
||||
power.voltus.version: "211_ISR3"
|
||||
# NOTE (about VCS+Voltus versions): if using FSDB, the VCS version should be approx 2 years older than the Voltus version for compatibility
|
||||
|
||||
@@ -5,12 +5,11 @@
|
||||
|
||||
import os
|
||||
|
||||
import hammer_vlsi
|
||||
from hammer_vlsi import CLIDriver, HammerToolHookAction
|
||||
from hammer.vlsi import CLIDriver, HammerTool, HammerToolHookAction
|
||||
|
||||
from typing import Dict, Callable, Optional, List
|
||||
|
||||
def example_place_tap_cells(x: hammer_vlsi.HammerTool) -> bool:
|
||||
def example_place_tap_cells(x: HammerTool) -> bool:
|
||||
if x.get_setting("vlsi.core.technology") == "asap7":
|
||||
x.append('''
|
||||
# TODO
|
||||
@@ -18,7 +17,7 @@ def example_place_tap_cells(x: hammer_vlsi.HammerTool) -> bool:
|
||||
''')
|
||||
return True
|
||||
|
||||
def example_add_fillers(x: hammer_vlsi.HammerTool) -> bool:
|
||||
def example_add_fillers(x: HammerTool) -> bool:
|
||||
if x.get_setting("vlsi.core.technology") == "asap7":
|
||||
x.append('''
|
||||
# TODO
|
||||
@@ -26,7 +25,7 @@ def example_add_fillers(x: hammer_vlsi.HammerTool) -> bool:
|
||||
''')
|
||||
return True
|
||||
|
||||
def example_tool_settings(x: hammer_vlsi.HammerTool) -> bool:
|
||||
def example_tool_settings(x: HammerTool) -> bool:
|
||||
if x.get_setting("vlsi.core.technology") == "asap7":
|
||||
x.append('''
|
||||
# TODO
|
||||
@@ -43,16 +42,16 @@ class ExampleDriver(CLIDriver):
|
||||
|
||||
# make_pre_insertion_hook will execute the custom hook before the specified step
|
||||
# SYNTAX: make_pre_insertion_hook("EXISTING_STEP", INSERTED_HOOK)
|
||||
# hammer_vlsi.HammerTool.make_pre_insertion_hook("route_design", example_add_fillers),
|
||||
# HammerTool.make_pre_insertion_hook("route_design", example_add_fillers),
|
||||
|
||||
# make_post_insertion_hook will execute the custom hook after the specified step
|
||||
# hammer_vlsi.HammerTool.make_post_insertion_hook("init_design", example_tool_settings),
|
||||
# HammerTool.make_post_insertion_hook("init_design", example_tool_settings),
|
||||
|
||||
# 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),
|
||||
# HammerTool.make_replacement_hook("place_tap_cells", example_place_tap_cells),
|
||||
|
||||
# make_removal_hook will remove the specified step from the flow
|
||||
hammer_vlsi.HammerTool.make_removal_hook("place_bumps"),
|
||||
HammerTool.make_removal_hook("place_bumps"),
|
||||
|
||||
# The target step in any of the above calls may be a default step or another one of your custom hooks
|
||||
]
|
||||
|
||||
@@ -4,14 +4,13 @@
|
||||
|
||||
import os
|
||||
|
||||
import hammer_vlsi
|
||||
from hammer_vlsi import CLIDriver, HammerToolHookAction
|
||||
from hammer.vlsi import CLIDriver, HammerTool, HammerToolHookAction
|
||||
|
||||
from typing import Dict, Callable, Optional, List
|
||||
|
||||
from technology.sky130 import SKY130Tech
|
||||
from hammer.technology.sky130 import SKY130Tech
|
||||
|
||||
def example_place_tap_cells(x: hammer_vlsi.HammerTool) -> bool:
|
||||
def example_place_tap_cells(x: HammerTool) -> bool:
|
||||
if x.get_setting("vlsi.core.technology") == "sky130":
|
||||
x.append('''
|
||||
# TODO
|
||||
@@ -19,7 +18,7 @@ def example_place_tap_cells(x: hammer_vlsi.HammerTool) -> bool:
|
||||
''')
|
||||
return True
|
||||
|
||||
def example_add_fillers(x: hammer_vlsi.HammerTool) -> bool:
|
||||
def example_add_fillers(x: HammerTool) -> bool:
|
||||
if x.get_setting("vlsi.core.technology") == "sky130":
|
||||
x.append('''
|
||||
# TODO
|
||||
@@ -27,7 +26,7 @@ def example_add_fillers(x: hammer_vlsi.HammerTool) -> bool:
|
||||
''')
|
||||
return True
|
||||
|
||||
def example_tool_settings(x: hammer_vlsi.HammerTool) -> bool:
|
||||
def example_tool_settings(x: HammerTool) -> bool:
|
||||
if x.get_setting("vlsi.core.technology") == "sky130":
|
||||
x.append('''
|
||||
# TODO
|
||||
@@ -45,16 +44,16 @@ class ExampleDriver(CLIDriver):
|
||||
|
||||
# make_pre_insertion_hook will execute the custom hook before the specified step
|
||||
# SYNTAX: make_pre_insertion_hook("EXISTING_STEP", INSERTED_HOOK)
|
||||
# hammer_vlsi.HammerTool.make_pre_insertion_hook("route_design", example_add_fillers),
|
||||
# HammerTool.make_pre_insertion_hook("route_design", example_add_fillers),
|
||||
|
||||
# make_post_insertion_hook will execute the custom hook after the specified step
|
||||
# hammer_vlsi.HammerTool.make_post_insertion_hook("init_design", example_tool_settings),
|
||||
# HammerTool.make_post_insertion_hook("init_design", example_tool_settings),
|
||||
|
||||
# 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),
|
||||
# HammerTool.make_replacement_hook("place_tap_cells", example_place_tap_cells),
|
||||
|
||||
# make_removal_hook will remove the specified step from the flow
|
||||
hammer_vlsi.HammerTool.make_removal_hook("place_bumps"),
|
||||
HammerTool.make_removal_hook("place_bumps"),
|
||||
|
||||
# The target step in any of the above calls may be a default step or another one of your custom hooks
|
||||
]
|
||||
|
||||
Submodule vlsi/hammer deleted from 41105f964f
Submodule vlsi/hammer-cadence-plugins updated: 80f0e276cf...a33e4716f0
Submodule vlsi/hammer-mentor-plugins updated: 67f57f1200...eca060af45
Submodule vlsi/hammer-synopsys-plugins updated: 7f9ae30eb4...be9088128d
@@ -17,7 +17,7 @@ ifeq ($(tutorial),sky130-commercial)
|
||||
tech_name ?= sky130
|
||||
CONFIG ?= TinyRocketConfig
|
||||
TOOLS_CONF ?= example-tools.yml
|
||||
TECH_CONF ?= example-sky130.yml
|
||||
TECH_CONF ?= hammer/e2e/pdks/sky130-bwrc.yml
|
||||
DESIGN_CONF ?= example-designs/sky130-commercial.yml
|
||||
EXTRA_CONFS ?= $(if $(filter $(VLSI_TOP),Rocket), example-designs/sky130-rocket.yml, )
|
||||
INPUT_CONFS ?= $(TOOLS_CONF) $(TECH_CONF) $(DESIGN_CONF) $(EXTRA_CONFS)
|
||||
|
||||
Reference in New Issue
Block a user