Hammer is a physical design framework that wraps around vendor specific technologies and tools to provide a single API to create ASICs. Hammer allows for reusability in ASIC design while still providing the designers leeway to make their own modifications.
Introduction to Hammer
Hammer (Highly Agile Masks Made Effortlessly from RTL) is a framework for building physical design generators for digital VLSI flows. It is an evolving set of APIs that enable reuse in an effort to speed up VLSI flows, which have traditionally been entirely rebuilt for different projects, technologies, and tools.
Hammer is able to generate scripts and collateral for a growing range of CAD tools while remaining technology-agnostic using a well-defined set of common APIs. Tool- and technology-specific concerns live inside plugins, implement APIs, and provide a set of working default configurations.
The vision of Hammer is to reduce the cycle time on VLSI designs, enabling rapid RTL design space exploration and allowing a designer to investigate the impact of various parameters like timing constraints and floorplans without needing to worry about low-level details.
For high-level details about Hammer’s design principles and capabilities, please refer to our DAC 2022 paper entitled Hammer: A Modular and Reusable Physical Design Flow Tool. We kindly request that this paper be cited in any publications where Hammer was used.
- 1. Hammer Basics
- 1.1. Hammer Overview
- 1.2. Hammer Setup
- 1.3. Migration Guide
- 2. Hammer Technology Plugins
- 2.1. Hammer Technologies
- 2.2. Hammer Tech JSON
- 2.3. Hammer Tech defaults.yml
- 2.4. Sky130 Technology Library
- 2.5. ASAP7 Technology Library
- 2.6. Nangate45 Technology Library
- 3. Hammer Tool Plugins
- 3.1. Hammer CAD Tools
- 3.2. Setting up a Hammer CAD Tool Plugin
- 3.3. OpenROAD Place-and-Route Tool Plugin
- 4. Hammer Flow Steps
- 4.1. Hammer Actions
- 4.2. Synthesis
- 4.3. Place-and-Route
- 4.4. DRC
- 4.5. LVS
- 4.6. Simulation
- 4.7. Power
- 4.8. Formal Verification
- 4.9. Static Timing Analysis
- 5. Hammer Use
- 5.1. Hammer IR and Meta Variables
- 5.2. Hammer APIs
- 5.3. Flow Control
- 5.4. Extending Hammer with Hooks
- 5.5. Hammer Buildfile
- 5.6. Hierarchical Hammer Flow
- 6. Hammer Examples