42 namespace netlist_utils
77 [[deprecated(
"Will be removed in a future version, use Netlist::copy instead.")]]
CORE_API std::unique_ptr<Netlist>
copy_netlist(
const Netlist* nl);
96 [[deprecated(
"Will be removed in a future version, use SubgraphNetlistDecorator::copy_subgraph_netlist instead.")]]
CORE_API std::unique_ptr<Netlist>
113 [[deprecated(
"Will be removed in a future version, use NetlistTraversalDecorator::get_next_matching_gates_until_depth instead.")]]
CORE_API std::vector<Gate*>
114 get_next_gates(
const Gate* gate,
bool get_successors,
int depth = 0,
const std::function<
bool(
const Gate*)>& filter =
nullptr);
130 [[deprecated(
"Will be removed in a future version, use NetlistTraversalDecorator::get_next_matching_gates_until_depth instead.")]]
CORE_API std::vector<Gate*>
131 get_next_gates(
const Net*
net,
bool get_successors,
int depth = 0,
const std::function<
bool(
const Gate*)>& filter =
nullptr);
147 [[deprecated(
"Will be removed in a future version, use NetlistTraversalDecorator::get_next_sequential_gates instead.")]]
CORE_API std::vector<Gate*>
160 [[deprecated(
"Will be removed in a future version, use NetlistTraversalDecorator::get_next_sequential_gates instead.")]]
CORE_API std::vector<Gate*>
176 [[deprecated(
"Will be removed in a future version, use NetlistTraversalDecorator::get_next_sequential_gates instead.")]]
CORE_API std::vector<Gate*>
188 [[deprecated(
"Will be removed in a future version, use NetlistTraversalDecorator::get_next_sequential_gates instead.")]]
CORE_API std::vector<Gate*>
205 CORE_API std::vector<Gate*>
get_path(
const Gate* gate,
bool get_successors, std::set<GateTypeProperty> stop_properties, std::unordered_map<
u32, std::vector<Gate*>>& cache);
217 CORE_API std::vector<Gate*>
get_path(
const Gate* gate,
bool get_successors, std::set<GateTypeProperty> stop_properties);
232 CORE_API std::vector<Gate*>
get_path(
const Net*
net,
bool get_successors, std::set<GateTypeProperty> stop_properties, std::unordered_map<
u32, std::vector<Gate*>>& cache);
243 CORE_API std::vector<Gate*>
get_path(
const Net*
net,
bool get_successors, std::set<GateTypeProperty> stop_properties);
264 bool analyze_inputs =
false);
314 const std::vector<const GatePin*>& input_pins = {},
315 const std::vector<const GatePin*>& output_pins = {},
316 const std::function<bool(
const Gate*)>& filter =
nullptr);
333 const std::vector<GateType*>& chain_types,
334 const std::map<
GateType*, std::vector<const GatePin*>>& input_pins,
335 const std::map<
GateType*, std::vector<const GatePin*>>& output_pins,
336 const std::function<
bool(
const Gate*)>& filter =
nullptr);
Result< u32 > remove_unused_lut_endpoints(Netlist *netlist)
std::vector< Gate * > get_path(const Gate *gate, bool get_successors, std::set< GateTypeProperty > stop_properties, std::unordered_map< u32, std::vector< Gate * >> &cache)
Result< std::vector< Gate * > > get_gate_chain(Gate *start_gate, const std::vector< const GatePin * > &input_pins={}, const std::vector< const GatePin * > &output_pins={}, const std::function< bool(const Gate *)> &filter=nullptr)
std::vector< Gate * > get_next_gates(const Gate *gate, bool get_successors, int depth=0, const std::function< bool(const Gate *)> &filter=nullptr)
Result< BooleanFunction > get_subgraph_function(const Net *net, const std::vector< const Gate * > &subgraph_gates, std::map< std::pair< u32, const GatePin * >, BooleanFunction > &cache)
Result< u32 > remove_buffers(Netlist *netlist, bool analyze_inputs=false)
Result< std::vector< Gate * > > get_complex_gate_chain(Gate *start_gate, const std::vector< GateType * > &chain_types, const std::map< GateType *, std::vector< const GatePin * >> &input_pins, const std::map< GateType *, std::vector< const GatePin * >> &output_pins, const std::function< bool(const Gate *)> &filter=nullptr)
std::unique_ptr< Netlist > copy_netlist(const Netlist *nl)
std::vector< Gate * > get_next_sequential_gates(const Gate *gate, bool get_successors, std::unordered_map< u32, std::vector< Gate * >> &cache)
std::vector< Gate * > get_shortest_path(Gate *start_gate, Gate *end_gate, bool search_both_directions=false)
Result< std::monostate > replace_gate(Gate *gate, GateType *target_type, std::map< GatePin *, GatePin * > pin_map)
std::vector< Net * > get_nets_at_pins(Gate *gate, std::vector< GatePin * > pins)
std::vector< Net * > get_common_inputs(const std::vector< Gate * > &gates, u32 threshold=0)
std::pair< std::map< u32, Gate * >, std::vector< std::vector< int > > > get_ff_dependency_matrix(const Netlist *nl)
std::unique_ptr< Netlist > get_partial_netlist(const Netlist *nl, const std::vector< const Gate * > &subgraph_gates)
std::vector< PinInformation > pins