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"]
|
[submodule "generators/block-inclusivecache-sifive"]
|
||||||
path = generators/sifive-cache
|
path = generators/sifive-cache
|
||||||
url = https://github.com/chipsalliance/rocket-chip-inclusive-cache.git
|
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"]
|
[submodule "tools/dsptools"]
|
||||||
path = tools/dsptools
|
path = tools/dsptools
|
||||||
url = https://github.com/ucb-bar/dsptools.git
|
url = https://github.com/ucb-bar/dsptools.git
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ dependencies:
|
|||||||
- mypy-boto3-ec2==1.21.9
|
- mypy-boto3-ec2==1.21.9
|
||||||
- sure==2.0.0
|
- sure==2.0.0
|
||||||
- pylddwrap==1.2.1
|
- pylddwrap==1.2.1
|
||||||
|
- hammer-vlsi
|
||||||
|
|
||||||
# doc requirements
|
# doc requirements
|
||||||
- sphinx
|
- 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
|
fi
|
||||||
|
|
||||||
# Initialize HAMMER tech plugin
|
# Initialize HAMMER tech plugin
|
||||||
|
# And add tech plugin to conda dependencies
|
||||||
if [[ $1 != *asap7* ]] && [[ $1 != *sky130* ]]; then
|
if [[ $1 != *asap7* ]] && [[ $1 != *sky130* ]]; then
|
||||||
git submodule update --init --recursive vlsi/hammer-$1-plugin
|
git submodule update --init --recursive vlsi/hammer-$1-plugin
|
||||||
|
echo ' '- -e ../vlsi/hammer-$1-plugin >> conda-reqs/vlsi.yaml
|
||||||
fi
|
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
|
sim_name ?= vcs # needed for GenerateSimFiles, but is unused
|
||||||
tech_name ?= asap7
|
tech_name ?= asap7
|
||||||
tech_dir ?= $(if $(filter $(tech_name),sky130 asap7 nangate45),\
|
tech_dir ?= $(if $(filter $(tech_name),sky130 asap7 nangate45),\
|
||||||
$(vlsi_dir)/hammer/src/hammer-vlsi/technology/$(tech_name), \
|
$(vlsi_dir)/hammer/hammer/technology/$(tech_name), \
|
||||||
$(vlsi_dir)/hammer-$(tech_name)-plugin/$(tech_name))
|
$(vlsi_dir)/hammer-$(tech_name)-plugin/hammer/technology/$(tech_name))
|
||||||
SMEMS_COMP ?= $(tech_dir)/sram-compiler.json
|
SMEMS_COMP ?= $(tech_dir)/sram-compiler.json
|
||||||
SMEMS_CACHE ?= $(tech_dir)/sram-cache.json
|
SMEMS_CACHE ?= $(tech_dir)/sram-cache.json
|
||||||
SMEMS_HAMMER ?= $(build_dir)/$(long_name).mems.hammer.json
|
SMEMS_HAMMER ?= $(build_dir)/$(long_name).mems.hammer.json
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Technology Setup
|
# Technology Setup
|
||||||
# Technology used is ASAP7
|
# Technology used is ASAP7
|
||||||
vlsi.core.technology: asap7
|
vlsi.core.technology: "hammer.technology.asap7"
|
||||||
# Specify dir with ASAP7 Calibre deck tarball
|
# Specify dir with ASAP7 Calibre deck tarball
|
||||||
technology.asap7.tarball_dir: "/path/to/asap7"
|
technology.asap7.tarball_dir: "/path/to/asap7"
|
||||||
# Specify PDK and std cell install directories
|
# Specify PDK and std cell install directories
|
||||||
@@ -94,7 +94,4 @@ vlsi.inputs.pin.assignments: [
|
|||||||
]
|
]
|
||||||
|
|
||||||
# SRAM Compiler compiler options
|
# SRAM Compiler compiler options
|
||||||
vlsi.core.sram_generator_tool: "sram_compiler"
|
vlsi.core.sram_generator_tool: "hammer.technology.asap7.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"
|
|
||||||
|
|||||||
@@ -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.
|
# Tool options. Replace with your tool plugin of choice.
|
||||||
# Yosys options
|
# Yosys
|
||||||
vlsi.core.synthesis_tool: "yosys"
|
vlsi.core.synthesis_tool: "hammer.synthesis.yosys"
|
||||||
vlsi.core.synthesis_tool_path: ["hammer/src/hammer-vlsi/synthesis"]
|
# OpenROAD
|
||||||
vlsi.core.synthesis_tool_path_meta: "append"
|
vlsi.core.par_tool: "hammer.par.openroad"
|
||||||
# Innovus options
|
# Magic
|
||||||
vlsi.core.par_tool: "openroad"
|
vlsi.core.drc_tool: "hammer.drc.magic"
|
||||||
vlsi.core.par_tool_path: ["hammer/src/hammer-vlsi/par"]
|
# Netgen
|
||||||
vlsi.core.par_tool_path_meta: "append"
|
vlsi.core.lvs_tool: "hammer.lvs.netgen"
|
||||||
# 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"]
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Technology Setup
|
# Technology Setup
|
||||||
# Technology used is Sky130
|
# Technology used is Sky130
|
||||||
vlsi.core.technology: sky130
|
vlsi.core.technology: "hammer.technology.sky130"
|
||||||
|
|
||||||
vlsi.core.max_threads: 12
|
vlsi.core.max_threads: 12
|
||||||
|
|
||||||
@@ -71,7 +71,4 @@ vlsi.inputs.pin.assignments: [
|
|||||||
]
|
]
|
||||||
|
|
||||||
# SRAM Compiler compiler options
|
# SRAM Compiler compiler options
|
||||||
vlsi.core.sram_generator_tool: "sram_compiler"
|
vlsi.core.sram_generator_tool: "hammer.technology.sky130.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"
|
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
# Technology Setup
|
# Technology Setup
|
||||||
vlsi.core.technology: <tech_name>
|
vlsi.core.technology: "hammer.technology.<tech_name>"
|
||||||
vlsi.core.technology_path: ["hammer-<tech_name>-plugin"]
|
|
||||||
vlsi.core.technology_path_meta: append
|
|
||||||
|
|
||||||
# technology files installation directory
|
# technology files installation directory
|
||||||
technology.<tech_name>.install_dir: "</path/to/technology/pdk/>"
|
technology.<tech_name>.install_dir: "</path/to/technology/pdk/>"
|
||||||
|
|||||||
@@ -1,36 +1,25 @@
|
|||||||
# SRAM Compiler compiler options
|
# SRAM Compiler compiler options
|
||||||
vlsi.core.sram_generator_tool: "sram_compiler"
|
vlsi.core.sram_generator_tool: "hammer.technology.<tech_name>.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.
|
# Tool options. Replace with your tool plugin of choice.
|
||||||
# Genus options
|
# Genus options
|
||||||
vlsi.core.synthesis_tool: "genus"
|
vlsi.core.synthesis_tool: "hammer.synthesis.genus"
|
||||||
vlsi.core.synthesis_tool_path: ["hammer-cadence-plugins/synthesis"]
|
synthesis.genus.version: "211"
|
||||||
vlsi.core.synthesis_tool_path_meta: "append"
|
|
||||||
synthesis.genus.version: "1813"
|
|
||||||
# Innovus options
|
# Innovus options
|
||||||
vlsi.core.par_tool: "innovus"
|
vlsi.core.par_tool: "hammer.par.innovus"
|
||||||
vlsi.core.par_tool_path: ["hammer-cadence-plugins/par"]
|
par.innovus.version: "211"
|
||||||
vlsi.core.par_tool_path_meta: "append"
|
|
||||||
par.innovus.version: "191_ISR3"
|
|
||||||
par.innovus.design_flow_effort: "standard"
|
par.innovus.design_flow_effort: "standard"
|
||||||
par.inputs.gds_merge: true
|
par.inputs.gds_merge: true
|
||||||
# Calibre options
|
# Calibre options
|
||||||
vlsi.core.drc_tool: "calibre"
|
vlsi.core.drc_tool: "hammer.drc.calibre"
|
||||||
vlsi.core.drc_tool_path: ["hammer-mentor-plugins/drc"]
|
drc.calibre.version: "2022.2_24.16"
|
||||||
drc.calibre.version: "2017.3_38.30"
|
vlsi.core.lvs_tool: "hammer.lvs.calibre"
|
||||||
vlsi.core.lvs_tool: "calibre"
|
lvs.calibre.version: "2022.2_24.16"
|
||||||
vlsi.core.lvs_tool_path: ["hammer-mentor-plugins/lvs"]
|
|
||||||
lvs.calibre.version: "2017.3_38.30"
|
|
||||||
# VCS options
|
# VCS options
|
||||||
vlsi.core.sim_tool: "vcs"
|
vlsi.core.sim_tool: "hammer.sim.vcs"
|
||||||
vlsi.core.sim_tool_path: ["hammer-synopsys-plugins/sim"]
|
sim.vcs.version: "T-2022.06-SP2"
|
||||||
sim.vcs.version: "P-2019.06-SP2-5"
|
|
||||||
# Voltus options
|
# Voltus options
|
||||||
vlsi.core.power_tool: "voltus"
|
vlsi.core.power_tool: "hammer.power.voltus"
|
||||||
vlsi.core.power_tool_path: ["hammer-cadence-plugins/power"]
|
|
||||||
vlsi.core.power_tool_path_meta: "append"
|
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
|
# 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 os
|
||||||
|
|
||||||
import hammer_vlsi
|
from hammer.vlsi import CLIDriver, HammerTool, HammerToolHookAction
|
||||||
from hammer_vlsi import CLIDriver, HammerToolHookAction
|
|
||||||
|
|
||||||
from typing import Dict, Callable, Optional, List
|
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":
|
if x.get_setting("vlsi.core.technology") == "asap7":
|
||||||
x.append('''
|
x.append('''
|
||||||
# TODO
|
# TODO
|
||||||
@@ -18,7 +17,7 @@ def example_place_tap_cells(x: hammer_vlsi.HammerTool) -> bool:
|
|||||||
''')
|
''')
|
||||||
return True
|
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":
|
if x.get_setting("vlsi.core.technology") == "asap7":
|
||||||
x.append('''
|
x.append('''
|
||||||
# TODO
|
# TODO
|
||||||
@@ -26,7 +25,7 @@ def example_add_fillers(x: hammer_vlsi.HammerTool) -> bool:
|
|||||||
''')
|
''')
|
||||||
return True
|
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":
|
if x.get_setting("vlsi.core.technology") == "asap7":
|
||||||
x.append('''
|
x.append('''
|
||||||
# TODO
|
# TODO
|
||||||
@@ -43,16 +42,16 @@ class ExampleDriver(CLIDriver):
|
|||||||
|
|
||||||
# make_pre_insertion_hook will execute the custom hook before the specified step
|
# make_pre_insertion_hook will execute the custom hook before the specified step
|
||||||
# SYNTAX: make_pre_insertion_hook("EXISTING_STEP", INSERTED_HOOK)
|
# 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
|
# 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
|
# 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
|
# 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
|
# 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 os
|
||||||
|
|
||||||
import hammer_vlsi
|
from hammer.vlsi import CLIDriver, HammerTool, HammerToolHookAction
|
||||||
from hammer_vlsi import CLIDriver, HammerToolHookAction
|
|
||||||
|
|
||||||
from typing import Dict, Callable, Optional, List
|
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":
|
if x.get_setting("vlsi.core.technology") == "sky130":
|
||||||
x.append('''
|
x.append('''
|
||||||
# TODO
|
# TODO
|
||||||
@@ -19,7 +18,7 @@ def example_place_tap_cells(x: hammer_vlsi.HammerTool) -> bool:
|
|||||||
''')
|
''')
|
||||||
return True
|
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":
|
if x.get_setting("vlsi.core.technology") == "sky130":
|
||||||
x.append('''
|
x.append('''
|
||||||
# TODO
|
# TODO
|
||||||
@@ -27,7 +26,7 @@ def example_add_fillers(x: hammer_vlsi.HammerTool) -> bool:
|
|||||||
''')
|
''')
|
||||||
return True
|
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":
|
if x.get_setting("vlsi.core.technology") == "sky130":
|
||||||
x.append('''
|
x.append('''
|
||||||
# TODO
|
# TODO
|
||||||
@@ -45,16 +44,16 @@ class ExampleDriver(CLIDriver):
|
|||||||
|
|
||||||
# make_pre_insertion_hook will execute the custom hook before the specified step
|
# make_pre_insertion_hook will execute the custom hook before the specified step
|
||||||
# SYNTAX: make_pre_insertion_hook("EXISTING_STEP", INSERTED_HOOK)
|
# 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
|
# 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
|
# 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
|
# 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
|
# 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
|
tech_name ?= sky130
|
||||||
CONFIG ?= TinyRocketConfig
|
CONFIG ?= TinyRocketConfig
|
||||||
TOOLS_CONF ?= example-tools.yml
|
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
|
DESIGN_CONF ?= example-designs/sky130-commercial.yml
|
||||||
EXTRA_CONFS ?= $(if $(filter $(VLSI_TOP),Rocket), example-designs/sky130-rocket.yml, )
|
EXTRA_CONFS ?= $(if $(filter $(VLSI_TOP),Rocket), example-designs/sky130-rocket.yml, )
|
||||||
INPUT_CONFS ?= $(TOOLS_CONF) $(TECH_CONF) $(DESIGN_CONF) $(EXTRA_CONFS)
|
INPUT_CONFS ?= $(TOOLS_CONF) $(TECH_CONF) $(DESIGN_CONF) $(EXTRA_CONFS)
|
||||||
|
|||||||
Reference in New Issue
Block a user