Skip to content

v0.6.0

Compare
Choose a tag to compare
@github-actions github-actions released this 05 May 20:33
· 85 commits to refs/heads/main since this release
ec465b8

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

⚡️ Performance

  • ⚡ Increased parallelism for building and testing in the Ubuntu and Windows workflows @marcelwa (#370)
  • 🎨 Fix minor oversights by using static constexpr and noexcept @marcelwa (#306)
  • ⚡ Use mold instead of ld 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 and noexcept @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 on obstruction_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 a cell_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

✅ Testing

  • ✅ Add missing unit test for sidb distance @Drewniok (#259)
  • ✅ Ensured a reproducible SiDB order for test reproducibility @marcelwa (#194)

👷 CI

⬆️ Dependencies

86 changes