Skip to content

Latest commit

 

History

History
51 lines (36 loc) · 2.03 KB

README.md

File metadata and controls

51 lines (36 loc) · 2.03 KB

hammer-vlsi

This is hammer-vlsi, the portion of HAMMER which abstracts synthesis + place-and-route in a tool and technology-agnostic fashion, for modular use in higher level tools.

Setup and Environment

System requirements:

  • Python 3.6+ recommended (minimum Python 3.3+)

    • For Python 3.4 and lower, the typing module must be installed. (python3 -m pip install typing)
    • For Python 3.4, the enum34 package must be installed. (python3 -m pip install enum34)
  • python3 in the $PATH

  • hammer-shell in the $PATH

  • hammer_config, python-jsonschema-objects, hammer-tech, hammer-vlsi in $PYTHONPATH

  • HAMMER_PYYAML_PATH set to pyyaml/lib3 or pyyaml in $PYTHONPATH

  • HAMMER_HOME set to hammer repo root

  • HAMMER_VLSI path set to $HAMMER_HOME/src/hammer-vlsi

See sourceme.sh for an example of in-tree use of hammer/hammer-vlsi.

Environment Check

To quickly test that our environment is set up for Hammer, we can try running the unit tests. Run the following using bash after cloning the Hammer repo:

git submodule update --init --recursive
export HAMMER_HOME=$PWD
source sourceme.sh
cd src/test
./unittests.sh
echo $?

If the last line above returns 0, then the environment is set up and ready to go.

Tool Library

hammer-vlsi imports libraries as Python modules. For example, if dc was a tool, it would be either 1) a folder named "dc" with init.py which follows the given format; 2) a file named dc.py which follows the given format.

The module should contain an class object named 'tool', since hammer-vlsi will do import dc.tool, for example, and use it to create an instance of the tool. tool should be a class object of an appropriate subclass of HammerTool (e.g. HammerSynthesisTool).

Technology Library

Currently technologies should have its own folder along with a corresponding .tech.json file. For example, "saed32" would have a "saed32.tech.json" file inside of the "saed32" folder.