#pragma once #include "fault.h" #include "lut.h" using ll = long long; namespace atpg_ls { class Simulator; class Circuit; class LUTCircuit { public: std::vector PIs; std::vector POs; std::vector luts; std::vector rtopo_luts; int** fault_detected; void print(); // local search void ls_update(std::vector &unsat); LUT* ls_pick(); void ls_flip(LUT *lut); void ls_main(); void ls_init(); void ls_random_sol(); void ls_gen_sol(Gate* target, int stuck_at); // checker double check(); Simulator *simulator; Circuit *C; int step; }; class Circuit { public: std::vector PIs; std::vector POs; std::vector gates; std::vector rtopo_gates; std::unordered_map name2gate; void parse_from_file(const char *filename); LUTCircuit* build_lut_circuit(); void init_topo_index(); void init_avg_dist(); }; }