1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
// Copyright (c) 2020-2021 Thomas Kramer.
// SPDX-FileCopyrightText: 2022 Thomas Kramer <code@tkramer.ch>
//
// SPDX-License-Identifier: AGPL-3.0-or-later
//! 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 problems
//! * [`rebuffer`] - interface for buffer insertion engines
//! * [`route`] - interfaces for routing engines
//! * [`timing_analysis`] - interfaces for static timing-analysis (STA) engines
//! * [`util`] - 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](https://codeberg.org/LibrEDA/electron-placer) (written in Rust)
//! * [Coloquinte](https://codeberg.org/tok/libreda-coloquinte-placer) (C bindings, statically linked)
//!
//! ## Routing
//! * [TritonRoute](https://codeberg.org/LibrEDA/libreda-triton-route) (subprocess called by passing LEF/DEF files)
//! * [mycelium](https://codeberg.org/LibrEDA/mycelium-router) (written in Rust)
#![deny(missing_docs)]
/// Re-exports.
pub use libreda_db;
pub use libreda_db::prelude as db;
pub mod design;
pub mod legalize;
pub mod metrics;
pub mod place;
pub mod rebuffer;
pub mod route;
mod test_data;
pub mod timing_analysis;
pub mod util;
/// Shortcut to most things defined in this crate.
pub mod prelude {
pub use crate::design::*;
pub use crate::legalize::*;
pub use crate::metrics::*;
pub use crate::place::*;
pub use crate::rebuffer::*;
pub use crate::route::prelude::*;
pub use crate::timing_analysis::*;
pub use crate::util::*;
}