2.9 KiB
HAMMER VLSI flow
This is the starting point for a vlsi flow from this repository.
This flow will not work without the necessary CAD and technology plugins for HAMMER.
If you are a UCB-affiliate, you may be able to acquire access to the tool & tech plugins.
Initial Setup Instructions (For all technologies)
Run the init-vlsi.sh script to pull correct versions of hammer, hammer-TOOL_VENDOR-plugins, and the hammer-TECH_NAME-plugins. Note the technologies asap7 and saed32 are already included and will not submodule a tech plugin.
./scripts/init-vlsi.sh TECH_NAME
An example of tool environment configuration for BWRC affiliates is given in bwrc-env.yml. Replace as necessary for your environment.
Example design
Building the design
In this example, you will be running a SHA-3 accelerator with a dummy hard macro through the VLSI flow in the ASAP7 process. To elaborate the Sha3RocketConfig (Rocketchip w/ the accelerator) and set up all prerequisites for the build system:
export MACROCOMPILER_MODE=' --mode synflops'
export CONFIG=Sha3RocketConfig
make buildfile
Note that because the ASAP7 process does not yet have a memory compiler, synflops are elaborated instead.
Using HAMMER
HAMMER's configuration is driven by a JSON/YAML format. For HAMMER, JSON and YAML files are equivalent - you can use either one since HAMMER will convert them to the same representation for itself.
We start by pulling the HAMMER environment into the shell:
export HAMMER_HOME=$PWD/hammer
source $HAMMER_HOME/sourceme.sh
The configuration for the example design is contained in example.yml and the entry script with hooks is contained in example-vlsi. You may go through Hammer's readme to learn about the supported configuration options and how to write hooks.
In order to install the process, download (and optionally extract) the ASAP7 PDK tarball. Then, edit the key vlsi.technology.asap7.tarball_dir if you want Hammer to extract for you or vlsi.technology.asap7.install_dir if you have already extracted it.
To synthesize the just the SHA-3 accelerator with the hard macro we have to change the physical top module (this step is not necessary if you are pushing the entire Rocket-chip through the VLSI flow):
export TOP=Sha3AccelwBB
rm build/inputs.yml
Then, to run synthesis:
make syn
The outputs are written to a log file with a timestamp and the post-synthesis results are in build/syn-rundir.
Raw QoR data is available at build/syn-rundir/reports, and work is planned to extract this information in a more programmatic manner.
To run place and route:
make par
If successful, the resulting chip can be opened via ./build/par-rundir/generated-scripts/open_chip.
To run DRC and view violations:
make drc
./build/drc-rundir/generated-scripts/view-drc
To run LVS and view violations:
make lvs
./build/lvs-rundir/generated-scripts/view-lvs