rust_formal_verification/models/and_inverter_graph/
aig_signal.rs

1// ************************************************************************************************
2// use
3// ************************************************************************************************
4
5// ************************************************************************************************
6// struct
7// ************************************************************************************************
8
9use super::aig_wire::AIGWire;
10
11#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
12pub struct AIGSignal {
13    signal_number: usize,
14}
15
16// ************************************************************************************************
17// impl
18// ************************************************************************************************
19
20impl AIGSignal {
21    pub fn new(signal_number: usize) -> Self {
22        Self { signal_number }
23    }
24
25    pub fn get_wire(&self, is_negated: bool) -> AIGWire {
26        if is_negated {
27            AIGWire::new((self.signal_number << 1) + 1)
28        } else {
29            AIGWire::new(self.signal_number << 1)
30        }
31    }
32}