v0.6.0
When it comes to the past, everyone writes fiction. ― Stephen King
👀 What's Changed
We keep saying that but this latest release of fiction is again the biggest one yet 💪 It is packed with another year's worth of research and marks a milestone on our mission to bring you the best FCN framework in the world 🌍 Let's dive into v0.6.0 together.
Python Bindings
A long time in the making, finally official: Python bindings for fiction's C++ header-only library 🐍 You can now combine the flexibility of Python's ecosystem with the performance of C++ to explore the world of FCN for yourself. Since we publish pre-built wheels on PyPI, utilizing fiction in your project is merely a pip
call away:
pip install mnt.pyfiction
Many, many thanks to @Drewniok and @simon1hofmann who contributed greatly to the bindings! 🙏
SiDB Simulation
We doubled down on what we started: @Drewniok made sure that SiDB simulation in fiction has never been more powerful. This release includes his exhaustive ground-state simulation engine QuickExact, the fastest in the world! ⚡ It is also available as a plugin for SiQAD thanks to @samuelngsh's guidance.
Furthermore, for the first time ever, we feature temperature-aware and atomic defect-aware simulation, automatic exhaustive gate design, and efficient operational domain computation algorithms. Moreover, all these methods now work on the H-Si(100)-2x1 and H-Si(111)-1x1 lattice orientations. Many thanks to @samuelngsh for the ongoing collaboration!
Physical Design
Naturally, we kept pursuing our goal of closing the design gap between conventional VLSI and FCN. @simon1hofmann brings you his post-layout optimization and wiring reduction algorithms that greatly reduce the area and delay of FCN layouts. Furthermore, his hexagonalization enables the transfer of knowledge from the QCA domain to SiDB layouts 🤯 like our new SAT-based clock number assignment algorithm.
In an effort to bring the worlds of physics and design automation closer together, we enable atomic defect-aware physical design to evade material imperfections during placement and routing. Many thanks to @jeremiah-croshaw for the collaboration!
Miscellaneous
As always, we smashed bugs wherever we found them 🐛 we worked on usability, improved performance, updated all libraries to their latest versions, overhauled the documentation and build system, extended the CI setup, and reached 98%+ code coverage on CodeCov ☂️ Many more changes small and big hide in the full release notes. Check them out below. Thanks here go to @wlambooy and @hibenj who made their first contributions 🎉
Full CHANGELOG: v0.5.0...v0.6.0
Many thanks to all contributors!
✨ Features and Enhancements
- 🎨 Refactored the technology mapping interface @marcelwa (#278)
- ✨ Wiring reduction @simon1hofmann (#367)
- 🐍 Added Python bindings @marcelwa (#371)
- ✨ H-Si(111)-1x1 surface support @Drewniok (#380)
- ⚗️ Added the clock number assignment experiment scripts @marcelwa (#394)
- 🎨 Usability improvement by return type adjustments @marcelwa (#395)
- ✨ SAT-based clock number assignment @marcelwa (#381)
- ✅ Add more tests for 3-state simulation. @Drewniok (#374)
- ✨ Added an upper bound option for the total layout area to
exact
@marcelwa (#360) - ✨ Added 'Ripple' to the list of supported clocking schemes @marcelwa (#358)
- 📝 Added an SiDB simulation figure to the README @marcelwa (#359)
- ✨ Compile time flows and CLI simulation update @marcelwa (#349)
- 🪝 Set up pre-commit checks @marcelwa (#341)
- 🎨 Allow fiction coordinates for simulation and other functions. @Drewniok (#336)
- ✨ Benchmark for physical simulators. @Drewniok (#338)
- ✨ MIG inverter optimization and propagation @marcelwa (#248)
- ⚗️ Updated the atomic defect-aware SiDB physical design experiment in accordance with the final paper @marcelwa (#330)
- ✨Refactored the hexagonalization algorithm @simon1hofmann (#316)
- 🎨 support cds as input for all simulators @Drewniok (#310)
- ✨ Gate-level layout file reader and writer @simon1hofmann (#296)
- ✨ Support defects in the SiDB Gate Designer @Drewniok (#289)
- 🏗️ Overhauled and modernized the build system @marcelwa (#288)
- ✨ SiDB Gate Designer @Drewniok (#282)
- ✨ Post-Layout Optimization @simon1hofmann (#260)
- ✨ SiDB Operational Domain Computation @marcelwa (#255)
- ✨ New SiDB simulator
QuickExact
and simulation of atomic defects. @Drewniok (#203) - ✨ Enhanced pathfinding versatility @marcelwa (#279)
- ✨ Added function to generate random SiDB layouts and write simulation results to file. @Drewniok (#200)
- ✨ Support defects in SiQAD coordinates for layout reading and writing @Drewniok (#269)
- ✨ Support defects in print function. @Drewniok (#261)
- 🎨 Use unit library for sidb defects. @Drewniok (#254)
- ✨ Added additional distance functions and distance maps @marcelwa (#250)
- ✨ Added a library for data types of units used within the physical simulation algorithms @Drewniok (#236)
- ✨ Added a unified
print_layout
function @marcelwa (#240) - ✨ Add function to generate a random coordinate. @Drewniok (#233)
- ✨ Added a hexagonalization algorithm for mapping QCA layouts to SiDB ones @simon1hofmann (#198)
- ✨ SiQAD coordinate iteration @wlambooy (#223)
- ✨ Add ISCAS85 and EPFL benchmarks @simon1hofmann (#221)
- ✨ Enable charge layout printing @wlambooy (#219)
- ✨ Temperature-aware physical SiDB simulation @Drewniok (#120)
- ✨ Make ClangFormat aware of different line ending types and enforce
LF
@marcelwa (#177) - ✨ Added an SiDB simulation file writer @marcelwa (#176)
- ✨ Added a function to round a number to
n
decimal places @Drewniok (#189)
⚡️ Performance
- ⚡ Increased parallelism for building and testing in the Ubuntu and Windows workflows @marcelwa (#370)
- 🎨 Fix minor oversights by using
static constexpr
andnoexcept
@marcelwa (#306) - ⚡ Use
mold
instead ofld
for faster link times @marcelwa (#210)
🐛 Bug Fixes
- 🎨 Consistency fixes for
pyfiction
and the documentation @marcelwa (#427) - 🎨 Refactored the technology mapping interface @marcelwa (#278)
- 🐛 Fixed conversion of cube coordinate with negative y-value to SiQAD coordinate @Drewniok (#410)
- 🐛 Include x_min and y_min in OpDomain and check non-emptyness of vector before accessing element. @Drewniok (#407)
- 🎨 Usability improvement by return type adjustments @marcelwa (#395)
- 🐛 Fixed an inconsistency in SiDB layout printing @marcelwa (#396)
- 🐛 Fixed bug in three-state simulation and duplicate cds results for
QuickExact
. @Drewniok (#388) - 🐛 Add round-function to mitigate floating precision issues @Drewniok (#375)
- 🐛 Fixed hop energy calculation from neutral to positive SiDB @Drewniok (#364)
- 🐛 Fix floating-point errors. @Drewniok (#363)
- 🐛
read_sqd_layout
now updates the aspect ratio properly for SiQAD-coordinate based layouts @wlambooy (#355) - 🐛 Atomic defect can be updated or new one can be assigned at specific coordinate. @Drewniok (#354)
- 💚 Fix for MacOS CI @Drewniok (#353)
- 💚 Hotfix for the macOS CI @marcelwa (#352)
- 🐛 The critical temperature value will only be overwritten by the new value if the new value is lower. @Drewniok (#343)
- 🐛 Place inputs and outputs in the same order during hexagonalization @simon1hofmann (#342)
- ☂️ Added Codecov configuration file @marcelwa (#339)
- 📁 Case style of experiments folders corrected in fiction_experiments.hpp @hibenj (#337)
- 🐛 Algorithm name is written correctly to stats. @Drewniok (#335)
- 🐛 Correct y-direction boundary for Moore neighborhood @Drewniok (#331)
- 🎨 Fix urgent CodeQL warnings. @Drewniok (#329)
- ⚗️ Updated the atomic defect-aware SiDB physical design experiment in accordance with the final paper @marcelwa (#330)
- 🐛 The dependent cell is now linked correctly to the simulation base number in SiDB simulation @Drewniok (#326)
- 🐛 Fixed a bug that caused pre-mature termination of
sidb_surface_analysis
@marcelwa (#327) - 💚 Fix VSC builds @marcelwa (#320)
- 🐛 Fixed design-rule violation testing and equivalence checking on empty gate-level layouts @marcelwa (#309)
- 🎨 Fix minor oversights by using
static constexpr
andnoexcept
@marcelwa (#306) - 🔧 Updated the linguist attributes @marcelwa (#301)
- 🔧 Fix broken CodeQL Pipeline @simon1hofmann (#303)
- 👷 Fix Windows CI @marcelwa (#294)
- 🚨 Fix compiler warnings and more consistency @Drewniok (#283)
- 🐛 Fixed a
nullptr
dereference bug @marcelwa (#287) - 🐛 Fix documentation bug in physical constants @Drewniok (#270)
- 🐛 Fixed the bug that some physical parameters were not correctly passed to the simulators @Drewniok (#262)
- 🐛 2DDWave Distance Fix @marcelwa (#257)
- 🐛 Fix
equivalence_checking
onobstruction_layout
objects @marcelwa (#256) - 📝 Fixed remaining fragments from the move to
cda-tum
and adjusted the tracking of publications @marcelwa (#249) - 🐛 Missing physical validity check in quicksim for special cases @Drewniok (#241)
- 🐛 Bug fixes and improvements related to the coordinate system @wlambooy (#225)
- 🐛 Fixed wrong SiDB locations in a Bestagon tile's input wire @Drewniok (#224)
- 🐛 Fixed an issue with
charge_distribution_surface
not being recognized as acell_level_layout
@marcelwa (#222) - ✨ SiQAD coordinate iteration @wlambooy (#223)
- 🐛 Fixed port routing determination for unconnected gates in the Bestagon library @marcelwa (#212)
- 🐛 Wrong position of output wire @Drewniok (#211)
- 💚 Fixed the Docker CI by installing Z3 via
pip
@marcelwa (#208) - 🐛 Specify build OS in readthedocs @Drewniok (#205)
- 🎨 Ensured SiQAD compatibility of SiDB simulation result writer @Drewniok (#197)
- ✅ Ensured a reproducible SiDB order for test reproducibility @marcelwa (#194)
- 🎨 Changed the unit of the lambda-tf physical parameter from meter to nanometer @Drewniok (#188)
- redefinition of sidb_nm_position @Drewniok (#186)
📝 Documentation
- 🎨 Consistency fixes for
pyfiction
and the documentation @marcelwa (#427) - 📝 Update
QuickExact
reference. @Drewniok (#401) - 📝 Added missing RST documentation @marcelwa (#382)
- 📝 Added latest paper references to the documentation @marcelwa (#372)
- 📝 Added an SiDB simulation figure to the README @marcelwa (#359)
- 🔧 Updated the linguist attributes @marcelwa (#301)
- 📝 Updated README to make it more approachable @marcelwa (#304)
- 🔧 Update the Doxygen documentation system @marcelwa (#302)
- 🚨 Fix compiler warnings and more consistency @Drewniok (#283)
- 📝 Update publication list @simon1hofmann (#275)
- 📝 Update publication list @Drewniok (#274)
- 📝 Fixed remaining fragments from the move to
cda-tum
and adjusted the tracking of publications @marcelwa (#249) - 📝 Add paper references to functions @Drewniok (#220)
- 🍱 Added the MNT logo to the README and RtD @marcelwa (#215)
- 👥 Added missing thanks to Giuliana Beretta @marcelwa (#217)
- 📝 Added contributing and support info @marcelwa (#216)
✅ Testing
- ✅ Add missing unit test for sidb distance @Drewniok (#259)
- ✅ Ensured a reproducible SiDB order for test reproducibility @marcelwa (#194)
👷 CI
- 👷 Auto-commit pyfiction docstrings @simon1hofmann (#420)
- ⬆️ Bump the github-actions group with 4 updates @dependabot (#422)
- 👷 CI Restructuring @marcelwa (#418)
- ⬆️ Bump the Codecov action to v4 @marcelwa (#408)
- ⬆️ Bump the github-actions group with 5 updates @dependabot (#406)
- 👷 Update macOS CI to support Apple Silicon runners @Drewniok (#376)
- ⚡ Increased parallelism for building and testing in the Ubuntu and Windows workflows @marcelwa (#370)
- ⬆️ Bump the github-actions group with 1 update @dependabot (#368)
- ⬆️ Bump the github-actions group with 1 update @dependabot (#366)
- ⬆️ Bump the github-actions group with 2 updates @dependabot (#357)
- 💚 Hotfix for the macOS CI @marcelwa (#352)
- ⬆️ Bump the github-actions group with 1 update @dependabot (#351)
- ⬆️ Bump the github-actions group with 1 update @dependabot (#333)
- ⬆️ Bump the github-actions group with 1 update @dependabot (#313)
- 🔧 Update Dependabot to enable grouped pull requests @marcelwa (#300)
- 🔧 Fix broken CodeQL Pipeline @simon1hofmann (#303)
- 🏗️ Overhauled and modernized the build system @marcelwa (#288)
- 👷 Fix Windows CI @marcelwa (#294)
- ⬆️ Bump ZedThree/clang-tidy-review from 0.13.3 to 0.13.4 @dependabot (#284)
- ⬆️ Bump actions/checkout from 3 to 4 @dependabot (#280)
- 🔧 enable GitHub workflow concurrency @burgholzer (#277)
- 👷 Reduce
clang-tidy
warnings in unwanted cases @marcelwa (#276) - ⬆️ Bump DoozyX/clang-format-lint-action from 0.16.1 to 0.16.2 @dependabot (#229)
- ⬆️ Bump ZedThree/clang-tidy-review from 0.13.2 to 0.13.3 @dependabot (#266)
- ⬆️ Bump ZedThree/clang-tidy-review from 0.13.1 to 0.13.2 @dependabot (#264)
- ⬆️ Bump ZedThree/clang-tidy-review from 0.13.0 to 0.13.1 @dependabot (#228)
- ⚡ Use
mold
instead ofld
for faster link times @marcelwa (#210) - 💚 Fixed the Docker CI by installing Z3 via
pip
@marcelwa (#208) - ✨ Make ClangFormat aware of different line ending types and enforce
LF
@marcelwa (#177) - ⬆️ Bump DoozyX/clang-format-lint-action from 0.15 to 0.16 @dependabot (#196)
- ⬆️ Bump ZedThree/clang-tidy-review from 0.12.2 to 0.13.0 @dependabot (#193)
- ⬆️ Bump ZedThree/clang-tidy-review from 0.12.1 to 0.12.2 @dependabot (#171)
⬆️ Dependencies
86 changes
- Bump libs/alice from
3f8cb16
to544577f
@dependabot (#38) - ⬆️ Bump the submodules group with 2 updates @dependabot (#426)
- ⬆️ Bump the submodules group across 1 directory with 3 updates @dependabot (#421)
- ⬆️ Bump the github-actions group with 4 updates @dependabot (#422)
- ⬆️ Bump the documentation group in /docs with 2 updates @dependabot (#423)
- ⬆️ Use mockturtle upstream as submodule @Drewniok (#415)
- ⬆️ Bump sphinx from 7.2.6 to 7.3.6 in /docs in the documentation group @dependabot (#412)
- ⬆️ Bump the github-actions group with 5 updates @dependabot (#406)
- ⬆️ Bump the submodules group with 4 updates @dependabot (#405)
- ⬆️ Bump the submodules group with 3 updates @dependabot (#404)
- ⬆️ Bump the submodules group with 2 updates @dependabot (#402)
- ⬆️ Bump the submodules group with 3 updates @dependabot (#398)
- ⬆️ Bump the submodules group with 2 updates @dependabot (#397)
- ⬆️ Bump the submodules group with 1 update @dependabot (#391)
- ⬆️ Bump the submodules group with 1 update @dependabot (#386)
- ⬆️ Bump the submodules group with 1 update @dependabot (#384)
- ⬆️ Bump the submodules group with 2 updates @dependabot (#383)
- ⬆️ Bump the submodules group with 2 updates @dependabot (#379)
- ⬆️ Bump the submodules group with 3 updates @dependabot (#378)
- ⬆️ Bump the submodules group with 1 update @dependabot (#373)
- ⬆️ Bump the submodules group with 3 updates @dependabot (#369)
- ⬆️ Bump the github-actions group with 1 update @dependabot (#368)
- ⬆️ Bump the submodules group with 1 update @dependabot (#365)
- ⬆️ Bump the github-actions group with 1 update @dependabot (#366)
- ⬆️ Bump the submodules group with 3 updates @dependabot (#362)
- ⬆️ Bump the submodules group with 4 updates @dependabot (#356)
- ⬆️ Bump the github-actions group with 2 updates @dependabot (#357)
- ⬆️ Bump the submodules group with 3 updates @dependabot (#350)
- ⬆️ Bump the github-actions group with 1 update @dependabot (#351)
- ⬆️ Bump the documentation group in /docs with 1 update @dependabot (#344)
- ⬆️ Bump the submodules group with 5 updates @dependabot (#345)
- ⬆️ Bump the github-actions group with 1 update @dependabot (#333)
- ⬆️ Bump the submodules group with 3 updates @dependabot (#334)
- ⬆️ Bump the submodules group with 4 updates @dependabot (#328)
- ⬆️ Bump the submodules group with 3 updates @dependabot (#319)
- ⬆️ Bump the github-actions group with 1 update @dependabot (#313)
- ⬆️ Bump the submodules group with 2 updates @dependabot (#314)
- ⬆️ Bump the submodules group with 3 updates @dependabot (#307)
- ⬆️ Bump libs/Catch2 from
9c541ca
to766541d
@dependabot (#298) - ⬆️ Bump libs/pybind11 from
5891867
to0a756c0
@dependabot (#297) - ⬆️ Bump libs/json from
5fec803
tofac07e2
@dependabot (#299) - ⬆️ Bump libs/Catch2 from
aafe09b
to9c541ca
@dependabot (#291) - 👷 Fix Windows CI @marcelwa (#294)
- ⬆️ Bump ZedThree/clang-tidy-review from 0.13.3 to 0.13.4 @dependabot (#284)
- ⬆️ Bump libs/Catch2 from
3a5cde5
toaafe09b
@dependabot (#285) - ⬆️ Bump libs/parallel-hashmap from
3362017
to81ca453
@dependabot (#286) - ⬆️ Bump actions/checkout from 3 to 4 @dependabot (#280)
- ⬆️ Bump libs/parallel-hashmap from
df7935a
to3362017
@dependabot (#281) - ⬆️ Bump DoozyX/clang-format-lint-action from 0.16.1 to 0.16.2 @dependabot (#229)
- ⬆️ Bump libs/Catch2 from
85eb465
to3a5cde5
@dependabot (#271) - ⬆️ Bump libs/Catch2 from
e09de72
to85eb465
@dependabot (#268) - ⬆️ Bump libs/Catch2 from
d7304f0
toe09de72
@dependabot (#267) - ⬆️ Bump ZedThree/clang-tidy-review from 0.13.2 to 0.13.3 @dependabot (#266)
- ⬆️ Bump libs/Catch2 from
4acc518
tod7304f0
@dependabot (#265) - ⬆️ Bump ZedThree/clang-tidy-review from 0.13.1 to 0.13.2 @dependabot (#264)
- ⬆️ Bump libs/parallel-hashmap from
77cab81
todf7935a
@dependabot (#263) - ➖ Remove
unit
library due to increasing simulation runtimes. @Drewniok (#258) - ⬆️ Bump libs/Catch2 from
6e79e68
to4acc518
@dependabot (#253) - ⬆️ Bump libs/mockturtle from
975cd50
tofac58aa
@dependabot (#252) - ⬆️ Bump libs/Catch2 from
1b049bd
to6e79e68
@dependabot (#251) - ⬆️ Bump libs/Catch2 from
e4b1605
to1b049bd
@dependabot (#247) - ⬆️ Bump libs/parallel-hashmap from
93201da
to77cab81
@dependabot (#245) - ⬆️ Bump libs/mockturtle from
84711b2
to975cd50
@dependabot (#244) - ⬆️ Bump libs/mockturtle from
2130e72
to84711b2
@dependabot (#243) - ⬆️ Bump libs/parallel-hashmap from
79cbd2d
to93201da
@dependabot (#242) - ⬆️ Bump libs/Catch2 from
9131736
toe4b1605
@dependabot (#239) - ⬆️ Bump libs/parallel-hashmap from
a4ae6cc
to79cbd2d
@dependabot (#238) - ⬆️ Bump libs/Catch2 from
0631b60
to9131736
@dependabot (#234) - ⬆️ Bump libs/mockturtle from
f2f9030
to2130e72
@dependabot (#232) - ⬆️ Bump libs/Catch2 from
06c0e1c
to0631b60
@dependabot (#230) - ⬆️ Bump libs/parallel-hashmap from
a68a9b5
toa4ae6cc
@dependabot (#231) - ⬆️ Bump ZedThree/clang-tidy-review from 0.13.0 to 0.13.1 @dependabot (#228)
- ⬆️ Bump libs/parallel-hashmap from
56a2e53
toa68a9b5
@dependabot (#213) - ⬆️ Bump libs/Catch2 from
0dc82e0
to06c0e1c
@dependabot (#214) - ⬆️ Bump libs/Catch2 from
51fdbed
to0dc82e0
@dependabot (#209) - ⬆️ Bump libs/parallel-hashmap from
9f09034
to56a2e53
@dependabot (#201) - ⬆️ Bump libs/Catch2 from
10596b2
to51fdbed
@dependabot (#202) - ⬆️ Bump libs/parallel-hashmap from
7807157
to9f09034
@dependabot (#199) - ⬆️ Bump DoozyX/clang-format-lint-action from 0.15 to 0.16 @dependabot (#196)
- ⬆️ Bump libs/parallel-hashmap from
d2bed96
to7807157
@dependabot (#192) - ⬆️ Bump libs/Catch2 from
9a2a4ea
to10596b2
@dependabot (#191) - ⬆️ Bump ZedThree/clang-tidy-review from 0.12.2 to 0.13.0 @dependabot (#193)
- ⬆️ Bump libs/Catch2 from
50bf00e
to9a2a4ea
@dependabot (#182) - ⬆️ Bump libs/parallel-hashmap from
7883cb6
tod2bed96
@dependabot (#181) - ⬆️ Bump libs/Catch2 from
1f881ab
to50bf00e
@dependabot (#178) - ⬆️ Bump ZedThree/clang-tidy-review from 0.12.1 to 0.12.2 @dependabot (#171)