Crate liberty_db

Source
Expand description

This crate implement liberty data structre in Rust.

Demo:

use liberty_db::{DefaultCtx, Library, MutSetExt, PinId};
use std::{
  fs::File,
  io::{BufWriter, Write},
};
static TEMPLATE: &str = r#"
library(demo) {
  time_unit : "1ps";
  voltage_unit : "10mV";
  current_unit : "1uA";
  operating_conditions ( typical ) {
      process : 1;
      voltage : 1.1;
  }
  lu_table_template(delay_template_4x5) {
    variable_1 : total_output_net_capacitance;
    variable_2 : input_net_transition;
    index_1 ("1000.0, 1001.0, 1002.0, 1003.0");
    index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
  }
  cell (DFF) {
    pin (D) {}
    pin (CK) {}
    pin (Q) {}
  }
}"#;
let mut library = Library::<DefaultCtx>::parse_lib(TEMPLATE, None).unwrap();
// modify library
library.cell.get_mut("DFF").map(|cell_dff| {
  cell_dff
    .pin
    .get_mut(&PinId::from("CK"))
    .map(|pin_ck| pin_ck.clock = Some(true))
});
// print library
println!("{library}");
// write library
let out_file = File::create("demo.lib").unwrap();
let mut writer = BufWriter::new(out_file);
write!(&mut writer, "{}", library).unwrap();

Re-exports§

pub use cell::Cell;
pub use internal_power::InternalPower;
pub use library::Library;
pub use pin::Pin;
pub use pin::PinId;
pub use timing::Timing;
pub use ast::Group;
pub use biodivine_lib_bdd;

Modules§

ast
liberty data structre ast
ccsn
CCSN relative attributes
cell
cell group structure.
common
Common items/miscs.
expression
Boolean Expression, SDF Expression, and so on.
internal_power
internal_power group structure.
library
Library group structure, top level of liberty format.
pin
pin group structure.
table
table group structure.
timing
timing group structure. Timing module implement. Demonstrating HTML tables.
units
The unit system

Macros§

impl_py_enum

Structs§

DefaultCtx
Default context config, you can specify other context for cell & library according your requirements.

Traits§

Ctx
IntoEnumIterator
This trait designates that an Enum can be iterated over. It can be auto generated using the EnumIter derive macro.
Item
MutSetExt
Extend HashSet/IndexSet with get_mut/iter_mut