prjunnamed_generic/
iobuf_insert.rs

1use 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}