Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🎨 Improved usability of the on-the-fly SiDB gate library #634

Open
wants to merge 88 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 81 commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
9477cf8
:memo: Update pyfiction docstrings
actions-user Dec 12, 2024
35fed45
Merge branch 'cda-tum:main' into main
Drewniok Dec 26, 2024
bc905b7
Merge branch 'cda-tum:main' into main
Drewniok Jan 2, 2025
f188a69
Merge branch 'cda-tum:main' into main
Drewniok Jan 7, 2025
65ec0a5
Merge branch 'cda-tum:main' into main
Drewniok Jan 8, 2025
24c2421
Merge branch 'cda-tum:main' into main
Drewniok Jan 9, 2025
4113659
:memo: Update pyfiction docstrings
actions-user Jan 9, 2025
72e08f4
Merge branch 'cda-tum:main' into main
Drewniok Jan 11, 2025
dfb71fb
Merge branch 'cda-tum:main' into main
Drewniok Jan 12, 2025
d5c5ff5
Merge branch 'cda-tum:main' into main
Drewniok Jan 13, 2025
9d45592
Merge branch 'cda-tum:main' into main
Drewniok Jan 13, 2025
dfaf039
Merge branch 'cda-tum:main' into main
Drewniok Jan 14, 2025
09c654e
:art: small changes.
Drewniok Jan 14, 2025
da5bc9d
:sparkles: add function to count charged and uncharged defects.
Drewniok Jan 15, 2025
fc096de
:white_check_mark: add test files for apply gate library.
Drewniok Jan 15, 2025
ca3f957
:construction_worker: add TEST_PATH to cmake.
Drewniok Jan 15, 2025
6c4f457
:art: small changes.
Drewniok Jan 15, 2025
bc58c7d
:art: restructure code to make the on-the-fly circuit design more acc…
Drewniok Jan 15, 2025
50fc4cc
:white_check_mark: add test for the apply gate library function.
Drewniok Jan 15, 2025
593bb30
:sparkles: add function to detect defects.
Drewniok Jan 15, 2025
6dd2c89
:art: several smaller fixes and changes.
Drewniok Jan 15, 2025
0d54041
:art: small fix.
Drewniok Jan 15, 2025
be59657
:memo: Update pyfiction docstrings
actions-user Jan 15, 2025
af15694
Merge branch 'cda-tum:main' into main
Drewniok Jan 15, 2025
83f354d
Merge branch 'main' into make_on_the_fly_more_accessible
Drewniok Jan 15, 2025
9b44258
:memo: Update pyfiction docstrings
actions-user Jan 15, 2025
54c0d00
:art: solve merge issue.
Drewniok Jan 15, 2025
3daff0b
Merge remote-tracking branch 'origin/make_on_the_fly_more_accessible'…
Drewniok Jan 15, 2025
7889a43
:memo: Update pyfiction docstrings
actions-user Jan 15, 2025
49ebab6
:art: solve merge issue.
Drewniok Jan 15, 2025
e516acd
:art: solve merge issue.
Drewniok Jan 15, 2025
952a0a5
Merge remote-tracking branch 'origin/make_on_the_fly_more_accessible'…
Drewniok Jan 15, 2025
762a0ff
:art: solve merge issue.
Drewniok Jan 15, 2025
29c480a
:memo: Update pyfiction docstrings
actions-user Jan 15, 2025
4444544
:art: small fix.
Drewniok Jan 18, 2025
78b5962
:alembic: update experiment after renaming.
Drewniok Jan 18, 2025
74dfaab
Merge branch 'cda-tum:main' into main
Drewniok Jan 19, 2025
5598bce
Merge branch 'cda-tum:main' into main
Drewniok Jan 23, 2025
7a1cde8
Merge branch 'cda-tum:main' into main
Drewniok Jan 24, 2025
ecb1fbb
Merge branch 'cda-tum:main' into main
Drewniok Jan 25, 2025
8c6bd0a
Merge branch 'cda-tum:main' into main
Drewniok Jan 28, 2025
7e83ea4
:white_check_mark: add test files.
Drewniok Jan 28, 2025
884e1bb
:art: implement Marcel's feedback.
Drewniok Jan 28, 2025
c669c9a
Merge branch 'main' into make_on_the_fly_more_accessible
Drewniok Jan 28, 2025
afd8ee6
:memo: Update pyfiction docstrings
actions-user Jan 28, 2025
fd2e3eb
:memo: update docu.
Drewniok Jan 28, 2025
3a78118
:art: Slight revamp of the CMake test configuration
marcelwa Jan 28, 2025
2c83095
Merge remote-tracking branch 'origin/make_on_the_fly_more_accessible'…
marcelwa Jan 28, 2025
308da48
:bug: fix typo.
Drewniok Jan 28, 2025
5004cc8
:white_check_mark: update test.
Drewniok Jan 28, 2025
e1b3bed
:white_check_mark: update test.
Drewniok Jan 28, 2025
581e18d
:white_check_mark: add test files.
Drewniok Jan 29, 2025
d1b9fb3
:art: restructuring.
Drewniok Jan 29, 2025
f94f5ab
:memo: Update pyfiction docstrings
actions-user Jan 29, 2025
1c5e90e
:art: small fix.
Drewniok Jan 29, 2025
a8736b8
:art: small fix.
Drewniok Jan 29, 2025
fc8e96d
Merge branch 'cda-tum:main' into main
Drewniok Jan 30, 2025
b2231cc
Merge branch 'main' into make_on_the_fly_more_accessible
Drewniok Jan 30, 2025
e50b86f
:art: small fix.
Drewniok Jan 30, 2025
43dccab
:art: revert changes.
Drewniok Jan 30, 2025
f13556f
:art: try to fix windows CI.
Drewniok Jan 30, 2025
a4ec5fd
:art: small fixes.
Drewniok Jan 30, 2025
affdf46
:memo: Update pyfiction docstrings
actions-user Jan 30, 2025
d99ce1e
:green_heart: try to fix windows CI.
Drewniok Jan 30, 2025
7016d22
:green_heart: try to fix windows CI.
Drewniok Jan 31, 2025
9f1d8a1
Merge branch 'cda-tum:main' into main
Drewniok Jan 31, 2025
3a89613
Merge branch 'main' into make_on_the_fly_more_accessible
Drewniok Jan 31, 2025
82485b8
:green_heart: try to fix windows CI.
Drewniok Jan 31, 2025
943391d
:green_heart: try to fix windows CI.
Drewniok Jan 31, 2025
5073c49
:green_heart: update docu.
Drewniok Jan 31, 2025
71d4430
:green_heart: fix windows CI.
Drewniok Jan 31, 2025
df35a98
:memo: small fix.
Drewniok Jan 31, 2025
9bd5238
Merge branch 'main' into make_on_the_fly_more_accessible
Drewniok Feb 3, 2025
4003bc4
Merge branch 'main' into make_on_the_fly_more_accessible
Drewniok Feb 4, 2025
efcf859
:children_crossing: structure test files in folders.
Drewniok Feb 5, 2025
8e4670d
:art: implement Marcel's feedback.
Drewniok Feb 6, 2025
244101a
:art: implement Marcel's feedback.
Drewniok Feb 6, 2025
4ef728a
:memo: Update pyfiction docstrings
actions-user Feb 6, 2025
28c5311
:art: fix typo.
Drewniok Feb 6, 2025
7ef7b78
:art: small fix.
Drewniok Feb 6, 2025
2ea3faf
:memo: Update pyfiction docstrings
actions-user Feb 6, 2025
0379d50
:art: revert test line.
Drewniok Feb 6, 2025
14b393e
Merge branch 'main' into make_on_the_fly_more_accessible
Drewniok Feb 13, 2025
c5438a1
:memo: adjust readme.
Drewniok Feb 14, 2025
39d528a
Merge branch 'main' into make_on_the_fly_more_accessible
Drewniok Feb 14, 2025
6b05f22
Merge branch 'main' into make_on_the_fly_more_accessible
Drewniok Feb 16, 2025
73ffff3
:art: implement Marcel's feedback.
Drewniok Feb 18, 2025
511f11a
Merge branch 'main' into make_on_the_fly_more_accessible
Drewniok Feb 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ inline void design_sidb_gates(pybind11::module& m)
/**
* Design approach selector type.
*/
pybind11::enum_<typename fiction::design_sidb_gates_params<fiction::offset::ucoord_t>::design_sidb_gates_mode>(
py::enum_<typename fiction::design_sidb_gates_params<fiction::offset::ucoord_t>::design_sidb_gates_mode>(
m, "design_sidb_gates_mode", DOC(fiction_design_sidb_gates_params_design_sidb_gates_mode))
.value("QUICKCELL",
fiction::design_sidb_gates_params<fiction::offset::ucoord_t>::design_sidb_gates_mode::QUICKCELL,
Expand All @@ -72,9 +72,9 @@ inline void design_sidb_gates(pybind11::module& m)
DOC(fiction_design_sidb_gates_params_design_mode))
.def_readwrite("canvas", &fiction::design_sidb_gates_params<fiction::offset::ucoord_t>::canvas,
DOC(fiction_design_sidb_gates_params_canvas))
.def_readwrite("number_of_sidbs",
&fiction::design_sidb_gates_params<fiction::offset::ucoord_t>::number_of_sidbs,
DOC(fiction_design_sidb_gates_params_number_of_sidbs));
.def_readwrite("number_of_canvas_sidbs",
&fiction::design_sidb_gates_params<fiction::offset::ucoord_t>::number_of_canvas_sidbs,
DOC(fiction_design_sidb_gates_params_number_of_canvas_sidbs));

detail::design_sidb_gates<py_sidb_100_lattice>(m);
detail::design_sidb_gates<py_sidb_111_lattice>(m);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ void calculate_energy_and_state_type(pybind11::module& m)
inline void calculate_energy_and_state_type(pybind11::module& m)
{
// NOTE be careful with the order of the following calls! Python will resolve the first matching overload!

detail::calculate_energy_and_state_type<py_sidb_100_lattice>(m);
detail::calculate_energy_and_state_type<py_sidb_111_lattice>(m);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ template <typename Lyt>
void sidb_simulation_result(pybind11::module& m, const std::string& lattice = "")
{
namespace py = pybind11;
namespace py = pybind11;

py::class_<fiction::sidb_simulation_result<Lyt>>(m, fmt::format("sidb_simulation_result{}", lattice).c_str(),
DOC(fiction_sidb_simulation_result))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,13 @@ void fcn_technology_cell_level_layout(pybind11::module& m)
.def("is_pi", &py_cartesian_technology_cell_layout::is_pi, py::arg("c"), DOC(fiction_cell_level_layout_is_pi))
.def("is_po", &py_cartesian_technology_cell_layout::is_po, py::arg("c"), DOC(fiction_cell_level_layout_is_po))

.def("get_cell_type", &py_cartesian_technology_cell_layout::get_cell_type, py::arg("c"),
DOC(fiction_cell_level_layout_get_cell_type))
.def("get_cells_by_type", &py_cartesian_technology_cell_layout::get_cells_by_type, py::arg("type"),
DOC(fiction_cell_level_layout_get_cells_by_type))
.def("num_cells_of_given_type", &py_cartesian_technology_cell_layout::num_cells_of_given_type, py::arg("type"),
DOC(fiction_cell_level_layout_num_cells_of_given_type))

.def("cells",
[](const py_cartesian_technology_cell_layout& lyt)
{
Expand Down
263 changes: 184 additions & 79 deletions bindings/mnt/pyfiction/include/pyfiction/pybind11_mkdoc_docstrings.hpp

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ template <typename Lyt>
void charge_distribution_surface_layout(pybind11::module& m, const std::string& lattice = "")
{
namespace py = pybind11;
namespace py = pybind11;

using py_cds = py_charge_distribution_surface_layout<Lyt>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ template <typename LatticeOrientation>
void sidb_lattice_cell_level_layout(pybind11::module& m)
{
namespace py = pybind11;
namespace py = pybind11;

// fetch technology name
auto orientation = std::string{fiction::sidb_lattice_name<LatticeOrientation>};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ def test_siqad_and_gate_skeleton_100(self):
params.operational_params.simulation_parameters.mu_minus = -0.28
params.design_mode = design_sidb_gates_mode.AUTOMATIC_EXHAUSTIVE_GATE_DESIGNER
params.canvas = [(4, 8), (14, 11)]
params.number_of_sidbs = 1
params.number_of_canvas_sidbs = 1
params.operational_params.sim_engine = sidb_simulation_engine.QUICKEXACT

self.assertEqual(params.operational_params.simulation_parameters.mu_minus, -0.28)
self.assertEqual(params.number_of_sidbs, 1)
self.assertEqual(params.number_of_canvas_sidbs, 1)
self.assertEqual(params.canvas[0], (4, 8, 0))
self.assertEqual(params.canvas[1], (14, 11))

Expand Down Expand Up @@ -86,12 +86,12 @@ def test_nor_gate_111(self):
params.operational_params.simulation_parameters.mu_minus = -0.32
params.design_mode = design_sidb_gates_mode.AUTOMATIC_EXHAUSTIVE_GATE_DESIGNER
params.canvas = [(10, 22), (14, 34)]
params.number_of_sidbs = 3
params.number_of_canvas_sidbs = 3
params.operational_params.sim_engine = sidb_simulation_engine.QUICKEXACT
params.operational_params.op_condition = operational_condition.REJECT_KINKS

self.assertEqual(params.operational_params.simulation_parameters.mu_minus, -0.32)
self.assertEqual(params.number_of_sidbs, 3)
self.assertEqual(params.number_of_canvas_sidbs, 3)
self.assertEqual(params.canvas[0], (10, 22, 0))
self.assertEqual(params.canvas[1], (14, 34))

Expand Down Expand Up @@ -138,11 +138,11 @@ def test_nor_gate_111_quickcell(self):
params.design_mode = design_sidb_gates_mode.AUTOMATIC_EXHAUSTIVE_GATE_DESIGNER

params.canvas = [(10, 26), (14, 34)]
params.number_of_sidbs = 3
params.number_of_canvas_sidbs = 3
params.operational_params.sim_engine = sidb_simulation_engine.QUICKEXACT

self.assertEqual(params.operational_params.simulation_parameters.mu_minus, -0.32)
self.assertEqual(params.number_of_sidbs, 3)
self.assertEqual(params.number_of_canvas_sidbs, 3)
self.assertEqual(params.canvas[0], (10, 26, 0))
self.assertEqual(params.canvas[1], (14, 34))

Expand Down
3 changes: 3 additions & 0 deletions bindings/mnt/pyfiction/test/layouts/test_cell_level_layout.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ def test_cell_type_assignment(self):
layout.assign_cell_type((3, 2), qca_technology.cell_type.NORMAL)
layout.assign_cell_type((4, 2), qca_technology.cell_type.OUTPUT)

self.assertEqual(layout.get_cells_by_type(qca_technology.cell_type.OUTPUT), [(4, 2)])
self.assertEqual(layout.num_cells_of_given_type(qca_technology.cell_type.INPUT), 2)

self.assertFalse(layout.is_empty())

layout.assign_cell_name((0, 2), "a")
Expand Down
1 change: 1 addition & 0 deletions docs/algorithms/apply_gate_library.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ implementations for each gate present in the passed ``gate_level_layout``.

.. doxygenfunction:: fiction::apply_gate_library(const GateLyt& lyt)
.. doxygenfunction:: fiction::apply_parameterized_gate_library(const GateLyt& lyt, const Params& params)
.. doxygenfunction:: fiction::apply_parameterized_gate_library(const GateLyt& lyt, const Params& params, const std::optional<CellLyt>& cell_lyt = std::nullopt)

.. tab:: Python
.. autofunction:: mnt.pyfiction.apply_qca_one_library
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.. _on_the_fly_design:

SiDB Circuit Design Algorithm in the Presence of Atomic Defects
SiDB Circuit Design Algorithm on defectivein the Presence of Atomic Defects
---------------------------------------------------------------

This algorithm is designed to create SiDB circuits on a clocked surface, accommodating the presence of atomic defects.
Expand All @@ -24,10 +24,13 @@ This algorithm is designed to create SiDB circuits on a clocked surface, accommo
This iterative approach ensures that the designed SiDB circuits can effectively handle defects present on the surface.


**Header:** ``fiction/algorithms/physical_design/on_the_fly_circuit_design_on_defective_surface.hpp``
**Header:** ``fiction/algorithms/physical_design/on_the_fly_circuit_design.hpp``

.. doxygenstruct:: fiction::on_the_fly_circuit_design_params
.. doxygenstruct:: fiction::on_the_fly_sidb_circuit_design_on_defective_surface_params
:members:
.. doxygenstruct:: fiction::on_the_fly_circuit_design_stats
.. doxygenstruct:: fiction::on_the_fly_sidb_circuit_design_params
:members:
.. doxygenstruct:: fiction::on_the_fly_circuit_design_on_defective_surface_stats
:members:
.. doxygenfunction:: fiction::on_the_fly_circuit_design_on_defective_surface
.. doxygenfunction:: fiction::on_the_fly_sidb_circuit_design_on_defective_surface
.. doxygenfunction:: fiction::on_the_fly_sidb_circuit_design
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,8 @@ int main() // NOLINT
opdomain_exp.table();
}

opdomain_exp("Average", 0, 0, 0.0, 0, 0.0, mean_ratio_num_op_sketch_to_num_op_exact, 0.0);
opdomain_exp("Average", 0, 0, 0.0, 0, 0.0, mean_ratio_num_op_sketch_to_num_op_exact / truth_tables_and_names.size(),
0.0);

opdomain_exp.save();
opdomain_exp.table();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,11 @@

#include <fiction/algorithms/network_transformation/technology_mapping.hpp>
#include <fiction/algorithms/physical_design/design_sidb_gates.hpp>
#include <fiction/algorithms/physical_design/on_the_fly_circuit_design_on_defective_surface.hpp>
#include <fiction/algorithms/physical_design/on_the_fly_sidb_circuit_design.hpp>
#include <fiction/algorithms/simulation/sidb/sidb_simulation_engine.hpp>
#include <fiction/io/read_sidb_surface_defects.hpp>
#include <fiction/io/write_sqd_layout.hpp>
#include <fiction/layouts/bounding_box.hpp>
#include <fiction/technology/area.hpp>
#include <fiction/technology/cell_technologies.hpp>
#include <fiction/technology/sidb_defect_surface.hpp>
#include <fiction/technology/sidb_defects.hpp>
#include <fiction/traits.hpp>
Expand Down Expand Up @@ -53,7 +52,7 @@ int main() // NOLINT
// needs to be changed if a different skeleton is used.
design_gate_params.canvas = {{24, 17}, {34, 28}};

design_gate_params.number_of_sidbs = 3;
design_gate_params.number_of_canvas_sidbs = 3;
design_gate_params.operational_params.sim_engine = fiction::sidb_simulation_engine::QUICKEXACT;
design_gate_params.termination_cond =
fiction::design_sidb_gates_params<fiction::cell<cell_lyt>>::termination_condition::AFTER_FIRST_SOLUTION;
Expand All @@ -69,7 +68,7 @@ int main() // NOLINT

// read-in the initial defects. Physical parameters of the defects are not stored yet.
auto surface_lattice_initial = fiction::read_sidb_surface_defects<cell_lyt>(
"../../experiments/physical_design_with_on_the_fly_gate_design/1_percent_with_charged_surface.txt");
"../../experiments/physical_design_with_on_the_fly_gate_design/0.5_percent_with_charged_surface.txt");

// create an empty surface.
fiction::sidb_defect_surface<cell_lyt> surface_lattice{};
Expand Down Expand Up @@ -98,8 +97,8 @@ int main() // NOLINT

const auto lattice_tiling = gate_lyt{{11, 30}};

experiments::experiment<std::string, double, uint64_t, bool> sidb_circuits_with_defects{
"sidb_circuits_with_defects", "benchmark", "runtime", "number of aspect ratios", "equivalent"};
experiments::experiment<std::string, double, uint64_t, bool, uint64_t> sidb_circuits_with_defects{
"sidb_circuits_with_defects", "benchmark", "runtime", "number of aspect ratios", "equivalent", "#SiDBs"};

constexpr const uint64_t bench_select =
fiction_experiments::all & ~fiction_experiments::parity & ~fiction_experiments::two_bit_add_maj &
Expand All @@ -119,7 +118,7 @@ int main() // NOLINT
// compute depth
const mockturtle::depth_view depth_xag{xag};

const fiction::technology_mapping_params tech_map_params = fiction::all_2_input_functions();
const fiction::technology_mapping_params tech_map_params = fiction::all_standard_2_input_functions();

// parameters for cut rewriting
mockturtle::cut_rewriting_params cut_params{};
Expand All @@ -137,7 +136,8 @@ int main() // NOLINT
// perform technology mapping
const auto mapped_network = fiction::technology_mapping(cut_xag, tech_map_params);

fiction::on_the_fly_circuit_design_params<cell_lyt> params{};
fiction::on_the_fly_sidb_circuit_design_on_defective_surface_params<fiction::cell<cell_lyt>> params{};

params.exact_design_parameters.scheme = "ROW4";
params.exact_design_parameters.crossings = true;
params.exact_design_parameters.border_io = false;
Expand All @@ -146,35 +146,35 @@ int main() // NOLINT
params.exact_design_parameters.upper_bound_y = 30; // 12 x 31 tiles
params.exact_design_parameters.timeout = 3'600'000; // 1h in ms

params.sidb_on_the_fly_gate_library_parameters.defect_surface = surface_lattice;
params.sidb_on_the_fly_gate_library_parameters.design_gate_params = design_gate_params;

fiction::on_the_fly_circuit_design_stats<gate_lyt> st{};

const auto result =
fiction::on_the_fly_circuit_design_on_defective_surface<decltype(mapped_network), cell_lyt, gate_lyt>(
mapped_network, lattice_tiling, params, &st);
fiction::on_the_fly_circuit_design_on_defective_surface_stats<gate_lyt> st{};

// check equivalence
const auto miter = mockturtle::miter<mockturtle::klut_network>(mapped_network, st.gate_layout.value());
const auto eq = mockturtle::equivalence_checking(*miter);
assert(eq.has_value());
try
{
const auto result =
fiction::on_the_fly_sidb_circuit_design_on_defective_surface<decltype(mapped_network),
decltype(surface_lattice), gate_lyt>(
mapped_network, lattice_tiling, surface_lattice, params, &st);

// determine bounding box and exclude atomic defects
const auto bb = fiction::bounding_box_2d<cell_lyt>(static_cast<cell_lyt>(result));
write_sqd_layout(result, fmt::format("{}/{}.sqd", layouts_folder, benchmark));

// compute area
fiction::area_stats area_stats{};
fiction::area_params<fiction::sidb_technology> area_ps{};
fiction::area(bb, area_ps, &area_stats);
// check equivalence
const auto miter = mockturtle::miter<mockturtle::klut_network>(mapped_network, st.gate_layout.value());
const auto eq = mockturtle::equivalence_checking(*miter);
assert(eq.has_value());

sidb_circuits_with_defects(benchmark, mockturtle::to_seconds(st.time_total), st.exact_stats.num_aspect_ratios,
*eq);
sidb_circuits_with_defects.save();
sidb_circuits_with_defects.table();
sidb_circuits_with_defects(benchmark, mockturtle::to_seconds(st.time_total),
st.exact_stats.num_aspect_ratios, *eq, result.num_cells());

// write a SiQAD simulation file
// fiction::write_sqd_layout(result, fmt::format("{}/{}.sqd", layouts_folder, benchmark));
sidb_circuits_with_defects.save();
sidb_circuits_with_defects.table();
}
catch (...)
{
fmt::print("[e] Circuit design was unsuccessful\n");
continue;
}
}

return EXIT_SUCCESS;
Expand Down
6 changes: 3 additions & 3 deletions experiments/quickcell/quickcell_rectangular_gate_library.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,15 +108,15 @@ int main() // NOLINT
if (gate_name == "cx_2i_top_left_2o_down_right" || gate_name == "ha_2i_top_left_2o_down_right" ||
gate_name == "hourglass_2i_top_left_2o_down_right")
{
params.number_of_sidbs = num_canvas_sidbs_2_input_2_output;
params.canvas = {{17, 8, 0}, {27, 14, 0}};
params.number_of_canvas_sidbs = num_canvas_sidbs_2_input_2_output;
params.canvas = {{17, 8, 0}, {27, 14, 0}};
quickcell_design =
design_sidb_gates(rectangular_2i_top_left_2o_down_right, truth_table, params, &stats_quickcell);
}

else
{
params.number_of_sidbs = num_canvas_sidbs;
params.number_of_canvas_sidbs = num_canvas_sidbs;

if (gate_name == "fo2_1i_top_2o_left_right")
{
Expand Down
Loading