165 std::unique_ptr<Netlist> m_netlist;
170 std::unique_ptr<graph_algorithm::NetlistGraph> m_graph;
180 std::set<Gate*> m_in_reg;
185 std::set<Gate*> m_out_reg;
190 std::set<Gate*> m_state_logic;
195 std::set<Net*> m_state_inputs;
200 std::set<Net*> m_control_inputs;
205 std::set<Net*> m_other_inputs;
210 std::set<Net*> m_state_outputs;
215 std::map<Gate*, std::set<Gate*>> m_input_ffs_of_gate;
220 std::map<u32, std::set<Gate*>> m_longest_distance_to_gate;
A directed graph corresponding to a netlist.
A register candidate discovered by HAWKEYE.
A round candidate constructed from a previously discovered register candidate.
const std::set< Gate * > & get_state_logic() const
Get the candidate's combinational logic computing the next state.
const std::set< Net * > & get_other_inputs() const
Get the candidate's other inputs to the logic computing the next state.
const std::set< Net * > & get_control_inputs() const
Get the candidate's control inputs to the logic computing the next state.
u32 get_size() const
Get the size of the candidate, i.e., the width of its registers.
const std::map< Gate *, std::set< Gate * > > & get_input_ffs_of_gate() const
Get a map from each combinational gate of the round function to all the input flip-flops it depends o...
const std::set< Net * > & get_state_outputs() const
Get the candidate's state outputs from the logic computing the next state.
static Result< std::unique_ptr< RoundCandidate > > from_register_candidate(RegisterCandidate *candidate)
Compute a round candidate from a previously identified register candidate.
const std::map< u32, std::set< Gate * > > & get_longest_distance_to_gate() const
Get a map from an integer distance to all gates that are reachable within at most that distance when ...
const std::set< Gate * > & get_output_reg() const
Get the candidate's output register.
Netlist * get_netlist() const
Get the netlist of the round candidate. The netlist is a partial copy of the netlist of the register ...
RoundCandidate()=default
Default constructor for RoundCandidate.
~RoundCandidate()=default
Default destructor for RoundCandidate.
graph_algorithm::NetlistGraph * get_graph() const
Get the netlist graph of the round candidate.
const std::set< Gate * > & get_input_reg() const
Get the candidate's input register.
const std::set< Net * > & get_state_inputs() const
Get the candidate's state inputs to the logic computing the next state.
This file contains the class that holds a netlist graph.
This file contains the class that holds all information on a register candidate.