v0.5.0
Fiction is a way to challenge the status quo and to push the boundaries of conventional thinking. — unknown
👀 What's Changed
This latest version of fiction constitutes a whole year of our research efforts, which we condensed into this open-source platform for the FCN community to build upon. Following last year's rework, we have greatly extended fiction's header-only library with new algorithms and data structures.
Thanks to @Drewniok's efforts and @samuelngsh's support, we have introduced the capability to physically simulate SiDB layouts both heuristically and exhaustively for the first time in fiction. In addition, we have integrated the SiDB Bestagon gate library to obtain cell-level SiDB layouts from placed and routed gate-level descriptions, and improved the interoperability with SiQAD by enabling the parsing of SQD files.
Moreover, we have added a comprehensive path-finding and routing library that supports well-established algorithms from the literature, including A*, JPS, and Yen's algorithm, as well as our own multi-path routing algorithm, color routing. Among these new additions are also a graph coloring engine and a generic function optimizer based on simulated annealing that are useful in many design automation contexts.
Furthermore, we have added support for the molecular FCN simulator SCERPA (many thanks to Giuliana Beretta!), the CFE clocking scheme, parallel STL algorithms, performance improvements across many core data structures, an expanded CI setup, and much more.
Full CHANGELOG: v0.4.0...v0.5.0
Many thanks to all contributors!
✨ Features and Enhancements
- ✨ Added a generic function optimizer based on Simulated Annealing @marcelwa (#148)
- ⚡ Search space reduction in SiDB simulation @Drewniok (#150)
- 🎨 added a new function
get_chargeless_potential_between_sidbs
@Drewniok (#138) - ✨ Release Drafter to automatically maintain a Draft Release @Drewniok (#139)
- 📝 Added GitHub templates @marcelwa (#133)
- 👷 Updates to the CI platform @marcelwa (#132)
- ✨ Added conversion functions for layouts of different coordinate types @Drewniok (#125)
- ✨ Added multi-threading support for QuickSim @Drewniok (#128)
- 📝 Revised the README badges @marcelwa (#127)
- ✨ Added a Verilog writer to the CLI @marcelwa (#115)
- ✨ Added a framework for accurate and efficient simulation of SiDB logic @Drewniok (#105)
- ✨ Added a framework to represent and handle SiDB defects @marcelwa (#103)
- ✨ Multi-Path Signal Routing @marcelwa (#83)
- 📝 Improvements to the README and documentation @marcelwa (#77)
- 👷 Added a ClangFormat linter workflow @marcelwa (#75)
- 👷 Run CI only when necessary @marcelwa (#73)
- 👷 Added a workaround for empty review messages in the clang-tidy-review workflow @marcelwa (#70)
- 🎨 Set up a consistent
clang-tidy
workflow together with a designated CI code review process @marcelwa (#64) - 👷 Activate experiments in CIs to ensure they're building @marcelwa (#63)
- 👷 Enable
ccache
for GitHub Action runners @marcelwa (#60) - 🎨 Switched
static constexpr
forinline constexpr
at file-scope @marcelwa (#59) - 👷 Z3 setup action @marcelwa (#58)
- 🎨 Layout technology traits @marcelwa (#53)
- 👷 Enabled automatic linking with TBB when compiling with GCC to enable parallel STL algorithms @marcelwa (#57)
- ✨ QLL writer for mQCA (MagCAD & SCERPA) @marcelwa (#49)
- ✨ Added the CFE clocking scheme @marcelwa (#44)
- ♻️ Refactored the CMake build system @marcelwa (#42)
- ⚗️ Added experimental data of the Bestagon paper @marcelwa (#33)
- ✨ Added the SiDB Bestagon gate library @marcelwa (#32)
⚡️ Performance
- ⚡ Utilize
std::string_view
instead ofstd::string
in many places to improve performance @marcelwa (#153) - ⚡ Search space reduction in SiDB simulation @Drewniok (#150)
- ✨ Added multi-threading support for QuickSim @Drewniok (#128)
- ⚡ Improved performance by switching to
phmap
in more places @marcelwa (#118)
🐛 Bug Fixes
- ✅ Made the DOT drawer tests independent of the version number @marcelwa (#170)
- 📝 Fixed some inconcistencies in the RTD documentation @marcelwa (#167)
- 🐛 Removed excess template parameter
typename T
@simon1hofmann (#162) - 🚨 Fixed error message from multiple IPO Checks @lsschmid (#157)
- 🚨 Fixes for linker errors and CMake name collisions @marcelwa (#154)
- 🚨 Fixed warnings and notes brought up by CodeQL @marcelwa (#151)
- 📝 Fixed namespace in SiQAD utility function documentation @marcelwa (#152)
- 📝 Updated notes on the installation process to the documentation @marcelwa (#149)
- 🐛 Prevent manually declared layout obstructions to be cleared by the application of Yen's Algorithm @marcelwa (#143)
- 🎨 added a new function
get_chargeless_potential_between_sidbs
@Drewniok (#138) - 🎨 CI inconsistency fixes @marcelwa (#142)
- 👷 Changed CI name @marcelwa (#141)
- 🩹 Renamed functions to more appropriately reflect their role @Drewniok (#135)
- 🐛 Fixed accessing non-existing variables in
potential_between_sidbs
@marcelwa (#134) - 🎨 doxygenfunction of quicksim was under the wrong header @Drewniok (#129)
- 🐛
std::rand
replaced bystd::mt19937_64
@Drewniok (#124) - 🎨 Small inconsistency fix @marcelwa (#123)
- 🐛 Fixed a bug in crossing considerations of
obstruction_layout
s @marcelwa (#122) - 🐛 Added additional checks for
is_obstructed_connection
to ensure proper handling of crossing cases @marcelwa (#117) - 🐛 Updated the routing utils to fix a bug in crossing wire detection @marcelwa (#116)
- 🎨 Fixed a few inconsistencies @marcelwa (#114)
- 🔥 Removed unnecessary Catch2 CMake call @marcelwa (#112)
- 🐛 Fixed a bug in
color_routing
@marcelwa (#113) - 🐛 Fixed several I/O issues @marcelwa (#111)
- 🐛 Fixed duplicate crossing cells in the iNML technology @marcelwa (#110)
- 🐛 Fixed a bug in the
clear_tile
function that lost track of PI and PO count @marcelwa (#104) - 👽 Updated the QLL layout writer regarding recent changes in the mQCA format @marcelwa (#102)
- 🐛 Fixed a bug in SAT-based graph coloring (this time for real) @marcelwa (#101)
- 🐛 Fixed a bug in SAT-based graph coloring @marcelwa (#100)
- 🐛 Fix number regex @marcelwa (#88)
- 💚 Switched to single-threaded CI build due to memory issues on the runners @marcelwa (#86)
- ⚡ Made distance functions
constexpr
@marcelwa (#85) - 💚 Fixed GitHub Actions' wildcard paths resolves @marcelwa (#81)
- 💚 Added fixes for MSVC 2022's
C2760
andC3878
by utilizing type specifiers instead of types for casting and variable declaration @marcelwa (#82) - 👷 Added a workaround for empty review messages in the clang-tidy-review workflow @marcelwa (#70)
- 👷 Split the clang-tidy review workflow into two separate ones @marcelwa (#69)
- 🐛 Fixed a bug with layout DOT drawers and a small inconsistency in the tests @marcelwa (#66)
- 👷 Activate experiments in CIs to ensure they're building @marcelwa (#63)
- 💚 Added a macOS CI workaround to fix an issue with XCode 14.0 @marcelwa (#61)
- 🚚 Renamed the ESP clocking scheme to ESR @marcelwa (#51)
- 💚 Upgraded toolset to v143 for Visual Studio 2022 CI builds @marcelwa (#50)
- 🔧 Updated the Dockerfile @marcelwa (#48)
- 🐛 include
cell_ports
infcn_gate_library.hpp
@Drewniok (#43) - 🚨 Make sure the Bestagon experiment is not compiled if Z3 is not found @marcelwa (#36)
- 🐛 Fixed a compilation bug that could occur by including the same header multiple times @marcelwa (#34)
📝 Documentation
- 📝 Update the CHANGELOG to include the latest changes @marcelwa (#169)
- 📝 Fixed some inconcistencies in the RTD documentation @marcelwa (#167)
- 📝 Fixed namespace in SiQAD utility function documentation @marcelwa (#152)
- 📝 Updated notes on the installation process to the documentation @marcelwa (#149)
- 📝 Updated the list of implemented design automation algorithms @marcelwa (#144)
- ✨ Release Drafter to automatically maintain a Draft Release @Drewniok (#139)
- 📝 Added GitHub templates @marcelwa (#133)
- 🎨 doxygenfunction of quicksim was under the wrong header @Drewniok (#129)
- 📝 Revised the README badges @marcelwa (#127)
- 📝 Added RST documentation for the SiDB simulation framework @marcelwa (#109)
- 📝 Updated documentation @marcelwa (#87)
- 📝 Improvements to the README and documentation @marcelwa (#77)
- 📝 Added CodeQL, Docker, and Clang-Tidy badges to the README @marcelwa (#65)
- 📝 Bestagon bibliography @marcelwa (#56)
✅ Testing
- ✅ Made the DOT drawer tests independent of the version number @marcelwa (#170)
- 🎨 Restructured
sidb_charge_state
and added tests @marcelwa (#168) - ✅ Added unit tests for ExGS and QuickSim @Drewniok (#136)
- 🩹 Renamed functions to more appropriately reflect their role @Drewniok (#135)
- ✅ Added tests for STL utils @marcelwa (#119)
👷 CI
- 👷 Updated compilers on GitHub Actions to match latest runner versions @marcelwa (#166)
- ⬆️ Bump ZedThree/clang-tidy-review from 0.10.1 to 0.12.1 @dependabot (#161)
- ⬆️ Bump finnp/create-file-action from 1.0.0 to 2.0.0 @dependabot (#160)
- 🎨 CI inconsistency fixes @marcelwa (#142)
- ✨ Release Drafter to automatically maintain a Draft Release @Drewniok (#139)
- 👷 Changed CI name @marcelwa (#141)
- 👷 Updates to the CI platform @marcelwa (#132)
- 💚 Switched to single-threaded CI build due to memory issues on the runners @marcelwa (#86)
- 💚 Fixed GitHub Actions' wildcard paths resolves @marcelwa (#81)
- 👷 Further build and CI exclusions @marcelwa (#78)
- 👷 Added a ClangFormat linter workflow @marcelwa (#75)
- 👷 Run CI only when necessary @marcelwa (#73)
- ⬆️ Bump ZedThree/clang-tidy-review from 0.10.0 to 0.10.1 @dependabot (#68)
- 👷 Added a workaround for empty review messages in the clang-tidy-review workflow @marcelwa (#70)
- 👷 Split the clang-tidy review workflow into two separate ones @marcelwa (#69)
- 🎨 Set up a consistent
clang-tidy
workflow together with a designated CI code review process @marcelwa (#64) - 👷 Activate experiments in CIs to ensure they're building @marcelwa (#63)
- 💚 Added a macOS CI workaround to fix an issue with XCode 14.0 @marcelwa (#61)
- 👷 Enable
ccache
for GitHub Action runners @marcelwa (#60) - 👷 Z3 setup action @marcelwa (#58)
- 👷 Docker Image CI @marcelwa (#55)
- 👷 Remove ubuntu-18.04 from CI because it is now deprecated @marcelwa (#52)
- 💚 Upgraded toolset to v143 for Visual Studio 2022 CI builds @marcelwa (#50)
- 👷 Updated OS and tools in the Coverage CI workflow @marcelwa (#47)
- 👷 Set up CodeQL as a scheduled action @marcelwa (#37)
- 👷 Updated GitHub Action CI Runners and Dependencies @marcelwa (#45)
- Bump actions/setup-python from 2 to 4 @dependabot (#41)
- Bump actions/cache from 2 to 3 @dependabot (#39)
- Bump actions/checkout from 2 to 3 @dependabot (#40)
⬆️ Dependencies
39 changes
- ⬆️ Bump libs/mockturtle from
4dbb1f5
tof2f9030
@dependabot (#164) - ⬆️ Bump libs/parallel-hashmap from
55725db
to7883cb6
@dependabot (#165) - ⬆️ Bump ZedThree/clang-tidy-review from 0.10.1 to 0.12.1 @dependabot (#161)
- ⬆️ Bump libs/Catch2 from
6783411
to1f881ab
@dependabot (#158) - ⬆️ Bump finnp/create-file-action from 1.0.0 to 2.0.0 @dependabot (#160)
- ⬆️ Bump libs/Catch2 from
3220ae6
to6783411
@dependabot (#147) - ⬆️ Bump libs/parallel-hashmap from
87ece91
to55725db
@dependabot (#146) - ⬆️ Bump libs/Catch2 from
69f35a5
to3220ae6
@dependabot (#137) - ⬆️ Bump libs/Catch2 from
9ff3cde
to69f35a5
@dependabot (#131) - ⬆️ Bump libs/Catch2 from
e8ba329
to9ff3cde
@dependabot (#130) - ⬆️ Bump libs/Catch2 from
76cdaa3
toe8ba329
@dependabot (#126) - ⬆️ Bump libs/Catch2 from
42d9d45
to76cdaa3
@dependabot (#121) - ⬆️ Bump libs/Catch2 from
c837cb4
to42d9d45
@dependabot (#108) - ⬆️ Bump libs/mockturtle from
08b284f
to4dbb1f5
@dependabot (#107) - ⬆️ Bump libs/tinyxml2 from
e45d9d1
toe059560
@dependabot (#106) - ⬆️ Bump libs/Catch2 from
2d3c971
toc837cb4
@dependabot (#99) - ⬆️ Bump libs/mockturtle from
5e95eb4
to08b284f
@dependabot (#98) - ⬆️ Bump libs/Catch2 from
aa8da50
to2d3c971
@dependabot (#97) - ⬆️ Bump libs/parallel-hashmap from
c36739b
to87ece91
@dependabot (#96) - ⬆️ Bump libs/mockturtle from
7a0f512
to5e95eb4
@dependabot (#95) - ⬆️ Bump libs/Catch2 from
d59572f
toaa8da50
@dependabot (#94) - ⬆️ Bump libs/Catch2 from
04382af
tod59572f
@dependabot (#93) - ⬆️ Bump libs/Catch2 from
0c62167
to04382af
@dependabot (#92) - ⬆️ Bump libs/Catch2 from
78bb4fd
to0c62167
@dependabot (#91) - ⬆️ Bump libs/Catch2 from
e3fc97d
to78bb4fd
@dependabot (#90) - ⬆️ Bump libs/Catch2 from
2d7be1f
toe3fc97d
@dependabot (#89) - ⬆️ Bump libs/mockturtle from
39fd19c
to7a0f512
@dependabot (#79) - ✅ Moved to the upstream version of Catch2 v3 @marcelwa (#76)
- ⬆️ Bump libs/mockturtle from
1670606
to39fd19c
@dependabot (#67) - ⬆️ Bump ZedThree/clang-tidy-review from 0.10.0 to 0.10.1 @dependabot (#68)
- 👷 Split the clang-tidy review workflow into two separate ones @marcelwa (#69)
- ⬆️ Bump libs/mockturtle from
84c2656
to1670606
@dependabot (#54) - 👷 Updated OS and tools in the Coverage CI workflow @marcelwa (#47)
- Bump libs/mockturtle from
04f6a5f
to84c2656
@dependabot (#46) - 👷 Updated GitHub Action CI Runners and Dependencies @marcelwa (#45)
- Bump actions/setup-python from 2 to 4 @dependabot (#41)
- Bump actions/cache from 2 to 3 @dependabot (#39)
- Bump actions/checkout from 2 to 3 @dependabot (#40)
- Library update @marcelwa (#31)