Skip to main content

combine_stdcell/
combine_stdcell.rs

1use reda_gds::GdsLibrary;
2
3fn main_result() -> Result<(), Box<dyn std::error::Error>> {
4    let mut lib = GdsLibrary::load_file("./data/leafcell/bitcell.gds")?;
5    let sense_amp = GdsLibrary::load_file("./data/leafcell/sense_amp.gds")?;
6    let write_driver = GdsLibrary::load_file("./data/leafcell/write_driver.gds")?;
7    let column_tri_gate = GdsLibrary::load_file("./data/leafcell/column_tri_gate.gds")?;
8    let precharge = GdsLibrary::load_file("./data/leafcell/precharge.gds")?;
9
10    println!("{}", lib.meters_per_dbunit);
11    println!("{}", precharge.meters_per_dbunit);
12    println!("{}", sense_amp.meters_per_dbunit);
13    println!("{}", column_tri_gate.meters_per_dbunit);
14    println!("{}", write_driver.meters_per_dbunit);
15
16    lib.structures.insert("precharge".into(), precharge.structures.iter().nth(0).unwrap().1.clone());
17    lib.structures.insert("sense_amp".into(), sense_amp.structures.iter().nth(0).unwrap().1.clone());
18    lib.structures.insert("tri_gate".into(), column_tri_gate.structures.iter().nth(0).unwrap().1.clone());
19    lib.structures.insert("write_driver".into(), write_driver.structures.iter().nth(0).unwrap().1.clone());
20
21    println!("{}", lib.structures.len());
22
23    lib.save_gds_file("./data/leafcell/leafcell.gds")?;
24
25    let lib = GdsLibrary::load_file("./data/leafcell/leafcell.gds")?;
26    println!("{}", lib.structures.len());
27    println!("{}", lib.meters_per_dbunit);
28
29    Ok(())
30}
31
32fn main() {
33    if let Err(e) = main_result() {
34        eprintln!("{}", e);
35    }
36}