Crate libreda_pnr
source ·Expand description
ASIC place-and-route framework.
This crate contains interface definitions for place-and-route related algorithms.
The core idea of the framework is to enable independent development of place & route engines which then can easily be plugged together.
Overview
Incomplete overview:
place
- interfaces for placement engines and representations of placement problemsrebuffer
- interface for buffer insertion enginesroute
- interfaces for routing enginestiming_analysis
- interfaces for static timing-analysis (STA) enginesutil
- useful functions which don’t yet have their own category
Implementations
Implementations of place and route algorithms are not included in this crate. Some can be found in the following list:
Placement and legalizaton
- electron-placer (written in Rust)
- Coloquinte (C bindings, statically linked)
Routing
- TritonRoute (subprocess called by passing LEF/DEF files)
- mycelium (written in Rust)
Re-exports
pub use libreda_db;
Modules
- The
prelude
helps to import most commonly used modules. - A
Design
structure collects information necessary for the place and route steps. This includes the netlist and layout, properties of cell instances, etc. BetweenDesign
structures and place & route engines lies an abstraction layer made by traits such asPlacementProblem
. - Interface definitions for legalization engines (also known as detail placement).
- Metrics and statistics for evaluating placement & routing quality.
- Interface definitions for placement related algorithms.
- Shortcut to most things defined in this crate.
- Trait definitions for re-buffering of high-fanout nets. This includes clock-tree and buffer-tree generators.
- Interface definitions for routing related algorithms.
- Generate test data.
- Interfaces for timing analysis engines.
- Collection of utility functions.