prjunnamed_netlist/cell/
io_buffer.rs1use crate::{ControlNet, IoValue, Net, Value};
2
3#[derive(Debug, Clone, PartialEq, Eq, Hash)]
4pub struct IoBuffer {
5 pub io: IoValue,
6 pub output: Value,
7 pub enable: ControlNet,
8}
9
10impl IoBuffer {
11 pub fn output_len(&self) -> usize {
12 self.io.len()
13 }
14
15 pub fn slice(&self, range: impl std::ops::RangeBounds<usize> + Clone) -> IoBuffer {
16 IoBuffer { io: self.io.slice(range.clone()), output: self.output.slice(range.clone()), enable: self.enable }
17 }
18
19 pub fn visit(&self, mut f: impl FnMut(Net)) {
20 self.output.visit(&mut f);
21 self.enable.visit(&mut f);
22 }
23
24 pub fn visit_mut(&mut self, mut f: impl FnMut(&mut Net)) {
25 self.output.visit_mut(&mut f);
26 self.enable.visit_mut(&mut f);
27 }
28}