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

✨ QuickCell: An Algorithm for Automatic Standard Cell Design #481

Open
wants to merge 357 commits into
base: main
Choose a base branch
from

Conversation

Drewniok
Copy link
Collaborator

Description

This PR adds QuickCell, an algorithm for automatic standard cell design for SiDB logic that uses dedicated search space pruning techniques.

Checklist:

  • The pull request only contains commits that are related to it.
  • I have added appropriate tests and documentation.
  • I have added a changelog entry.
  • I have created/adjusted the Python bindings for any new or updated functionality.
  • I have made sure that all CI jobs on GitHub pass.
  • The pull request introduces no new warnings and follows the project's style guidelines.

@Drewniok Drewniok self-assigned this Jul 22, 2024
@Drewniok Drewniok added the enhancement New feature or request label Jul 22, 2024
@Drewniok Drewniok changed the title ✨ Quickcell: An Algorithm for Automatic Standard Cell Design ✨ QuickCell: An Algorithm for Automatic Standard Cell Design Jul 22, 2024
Copy link

codecov bot commented Jul 22, 2024

Codecov Report

Attention: Patch coverage is 98.74670% with 19 lines in your changes missing coverage. Please review.

Project coverage is 98.18%. Comparing base (2957b0c) to head (307fd37).

Files with missing lines Patch % Lines
...on/algorithms/simulation/sidb/detect_bdl_wires.hpp 91.93% 10 Missing ⚠️
...n/algorithms/physical_design/design_sidb_gates.hpp 98.88% 3 Missing ⚠️
...tion/algorithms/simulation/sidb/is_operational.hpp 97.70% 2 Missing ⚠️
test/algorithms/iter/bdl_input_iterator.cpp 94.87% 2 Missing ⚠️
.../algorithms/simulation/sidb/operational_domain.cpp 93.75% 2 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff            @@
##             main     #481     +/-   ##
=========================================
  Coverage   98.17%   98.18%             
=========================================
  Files         224      226      +2     
  Lines       31600    32730   +1130     
  Branches     1575     1670     +95     
=========================================
+ Hits        31023    32135   +1112     
- Misses        577      595     +18     
Files with missing lines Coverage Δ
...ude/fiction/algorithms/iter/bdl_input_iterator.hpp 100.00% <100.00%> (ø)
...lgorithms/simulation/sidb/critical_temperature.hpp 97.32% <100.00%> (+0.02%) ⬆️
...on/algorithms/simulation/sidb/detect_bdl_pairs.hpp 100.00% <100.00%> (ø)
...simulation/sidb/displacement_robustness_domain.hpp 97.53% <100.00%> (ø)
...algorithms/simulation/sidb/energy_distribution.hpp 100.00% <ø> (ø)
...lation/sidb/exhaustive_ground_state_simulation.hpp 94.44% <ø> (ø)
.../algorithms/simulation/sidb/operational_domain.hpp 94.32% <100.00%> (-0.38%) ⬇️
.../fiction/algorithms/simulation/sidb/quickexact.hpp 100.00% <ø> (+1.21%) ⬆️
...de/fiction/algorithms/simulation/sidb/quicksim.hpp 98.61% <ø> (ø)
...s/simulation/sidb/random_sidb_layout_generator.hpp 95.74% <100.00%> (+0.18%) ⬆️
... and 29 more

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2957b0c...307fd37. Read the comment docs.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clang-tidy made some suggestions

There were too many comments to post at once. Showing the first 25 out of 74. Check the log or trigger a new build to see more.

@marcelwa
Copy link
Collaborator

marcelwa commented Sep 5, 2024

@Drewniok can you please mark all conversations as resolved that are not applicable or are actually resolved?

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clang-tidy made some suggestions

There were too many comments to post at once. Showing the first 25 out of 74. Check the log or trigger a new build to see more.

Drewniok and others added 10 commits September 8, 2024 16:54
# Conflicts:
#	bindings/pyfiction/include/pyfiction/algorithms/iter/bdl_input_iterator.hpp
#	bindings/pyfiction/include/pyfiction/algorithms/simulation/sidb/critical_temperature.hpp
#	bindings/pyfiction/include/pyfiction/algorithms/simulation/sidb/is_operational.hpp
#	bindings/pyfiction/include/pyfiction/pybind11_mkdoc_docstrings.hpp
#	bindings/pyfiction/test/algorithms/simulation/sidb/test_displacement_robustness_domain.py
#	include/fiction/algorithms/iter/bdl_input_iterator.hpp
#	include/fiction/algorithms/simulation/sidb/critical_temperature.hpp
#	include/fiction/algorithms/simulation/sidb/is_operational.hpp
#	include/fiction/technology/is_sidb_gate_design_impossible.hpp
#	test/algorithms/simulation/sidb/displacement_robustness_domain.cpp
#	test/utils/blueprints/layout_blueprints.hpp
Signed-off-by: GitHub Actions <[email protected]>
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clang-tidy made some suggestions

There were too many comments to post at once. Showing the first 25 out of 57. Check the log or trigger a new build to see more.

experiments/quickcell/quickcell_3_input.cpp Show resolved Hide resolved
experiments/quickcell/quickcell_3_input.cpp Show resolved Hide resolved
* @tparam CellType Cell type.
*/
template <typename CellType>
struct bdl_wire
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: class 'bdl_wire' defines a copy constructor, a copy assignment operator, a move constructor and a move assignment operator but does not define a destructor [cppcoreguidelines-special-member-functions]

struct bdl_wire
       ^

include/fiction/technology/charge_distribution_surface.hpp Outdated Show resolved Hide resolved
include/fiction/technology/charge_distribution_surface.hpp Outdated Show resolved Hide resolved
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clang-tidy made some suggestions

There were too many comments to post at once. Showing the first 25 out of 57. Check the log or trigger a new build to see more.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clang-tidy made some suggestions

There were too many comments to post at once. Showing the first 25 out of 37. Check the log or trigger a new build to see more.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clang-tidy made some suggestions

#include <pybind11/stl.h>

#include <vector>

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: included header vector is not used directly [misc-include-cleaner]

Suggested change

* Destructor for bdl_wire.
*
*/
~bdl_wire() noexcept {}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: use '= default' to define a trivial destructor [hicpp-use-equals-default]

Suggested change
~bdl_wire() noexcept {}
~bdl_wire() noexcept = default;

#include <fiction/algorithms/iter/bdl_input_iterator.hpp>
#include <fiction/algorithms/simulation/sidb/detect_bdl_wires.hpp>
#include <fiction/layouts/coordinates.hpp>
#include <fiction/technology/cell_technologies.hpp>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: included header coordinates.hpp is not used directly [misc-include-cleaner]

Suggested change
#include <fiction/technology/cell_technologies.hpp>
#include <fiction/technology/cell_technologies.hpp>

@@ -25,12 +27,23 @@ TEST_CASE("SiQAD OR gate", "[is-operational]")

const sidb_100_cell_clk_lyt_siqad lat{layout_or_gate};

CHECK(is_operational(lat, std::vector<tt>{create_or_tt()},
is_operational_params{sidb_simulation_parameters{2, -0.30}})
CHECK(is_operational(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: no header providing "CHECK" is directly included [misc-include-cleaner]

    CHECK(is_operational(
    ^

#include <fiction/types.hpp>

#include <cstdint>

using namespace fiction;

TEST_CASE("Random cube::coord_t layout generation", "[generate-random-sidb-layout]")
TEST_CASE("Random cube::coord_t layout generation", "[random-sidb-layout-generator]")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: no header providing "TEST_CASE" is directly included [misc-include-cleaner]

test/algorithms/simulation/sidb/random_sidb_layout_generator.cpp:5:

+ #include "catch2/catch_test_macros.hpp"

@@ -53,7 +54,7 @@
}

TEMPLATE_TEST_CASE("integral_abs should compute the absolute value of a number of different integral types",
"[integral_abs]", int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t)
"[integral-abs]", int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: no header providing "int8_t" is directly included [misc-include-cleaner]

test/utils/math_utils.cpp:9:

- #include <string>
+ #include <cstdint>
+ #include <string>

@@ -53,7 +54,7 @@
}

TEMPLATE_TEST_CASE("integral_abs should compute the absolute value of a number of different integral types",
"[integral_abs]", int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t)
"[integral-abs]", int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: no header providing "uint16_t" is directly included [misc-include-cleaner]

                   "[integral-abs]", int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t)
                                                                                 ^

@@ -53,7 +54,7 @@
}

TEMPLATE_TEST_CASE("integral_abs should compute the absolute value of a number of different integral types",
"[integral_abs]", int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t)
"[integral-abs]", int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: no header providing "uint32_t" is directly included [misc-include-cleaner]

                   "[integral-abs]", int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t)
                                                                                           ^

@@ -53,7 +54,7 @@
}

TEMPLATE_TEST_CASE("integral_abs should compute the absolute value of a number of different integral types",
"[integral_abs]", int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t)
"[integral-abs]", int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: no header providing "uint64_t" is directly included [misc-include-cleaner]

                   "[integral-abs]", int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t)
                                                                                                     ^

@@ -53,7 +54,7 @@
}

TEMPLATE_TEST_CASE("integral_abs should compute the absolute value of a number of different integral types",
"[integral_abs]", int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t)
"[integral-abs]", int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: no header providing "uint8_t" is directly included [misc-include-cleaner]

                   "[integral-abs]", int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t)
                                                                        ^

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants