prjunnamed_generic/
iobuf_insert.rs1use prjunnamed_netlist::{Design, Cell, IoBuffer, Value, Net, ControlNet};
2
3pub fn iobuf_insert(design: &mut Design) {
4 for cell in design.iter_cells() {
5 match &*cell.get() {
6 Cell::Input(name, width) => {
7 cell.replace(Cell::IoBuf(IoBuffer {
8 io: design.add_io(name, *width),
9 output: Value::undef(*width),
10 enable: ControlNet::Pos(Net::ZERO),
11 }));
12 }
13 Cell::Output(name, value) => {
14 design.add_iobuf(IoBuffer {
15 io: design.add_io(name, value.len()),
16 output: value.clone(),
17 enable: ControlNet::Pos(Net::ONE),
18 });
19 cell.unalive();
20 }
21 _ => (),
22 }
23 }
24 design.apply();
25}