1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use crate::{ast::Verilog, block::Block, logic::Logic, probe::Probe, timing::TimingInfo};
pub struct TopWrap<U: Block> {
pub uut: U,
}
impl<U: Block> TopWrap<U> {
pub fn new(uut: U) -> Self {
Self { uut }
}
}
impl<U: Block> Logic for TopWrap<U> {
fn update(&mut self) {}
}
impl<U: Block> Block for TopWrap<U> {
fn connect_all(&mut self) {
self.connect();
self.uut.connect_all();
}
fn update_all(&mut self) {
self.update();
self.uut.update_all();
}
fn has_changed(&self) -> bool {
self.uut.has_changed()
}
fn accept(&self, name: &str, probe: &mut dyn Probe) {
probe.visit_start_scope(name, self);
self.uut.accept("uut", probe);
probe.visit_end_scope(name, self);
}
}