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§
Structs§
- Default
Ctx - Default context config, you can specify other context for cell & library according your requirements.
Traits§
- Ctx
- Into
Enum Iterator - This trait designates that an
Enum
can be iterated over. It can be auto generated using theEnumIter
derive macro. - Item
- MutSet
Ext - Extend
HashSet
/IndexSet
withget_mut
/iter_mut