Skip to content

Commit

Permalink
🔖 When it comes to the past, everyone writes fiction (#428)
Browse files Browse the repository at this point in the history
* 🔖 Bump version to 0.6.0

* 🔖 Bump version in docs to 0.6.0

* 📝 Updated the changelog
  • Loading branch information
marcelwa authored May 5, 2024
1 parent c8ca592 commit ec465b8
Show file tree
Hide file tree
Showing 6 changed files with 117 additions and 8 deletions.
1 change: 1 addition & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ This checklist serves as a reminder of a couple of things that ensure your pull

- [ ] 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.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)
# Set the project name and version
project(
fiction
VERSION 0.5.0
VERSION 0.6.0
DESCRIPTION
"An open-source design automation framework for Field-coupled Nanotechnologies"
HOMEPAGE_URL "https://github.com/cda-tum/fiction"
Expand Down
108 changes: 108 additions & 0 deletions docs/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,114 @@ All notable changes to this project will be documented in this file.

The format is based on `Keep a Changelog <https://keepachangelog.com/en/1.0.0/>`_.

v0.6.0 - 2024-05-05
-------------------
*When it comes to the past, everyone writes fiction.* --- Stephen King

Added
#####
- Python bindings:
- Python bindings for most of the core functionality of *fiction* using `pybind11 <https://github.com/pybind/pybind11>`_
- Hosted on `PyPI <https://pypi.org/project/mnt.pyfiction/>`_
- Technology:
- H-Si lattice orientation support
- H-Si(100)-2x1
- H-Si(111)-1x1
- Algorithms:
- Post-layout optimization and wiring reduction for 2DDWave-clocked Cartesian gate-level layouts (based on `this paper <https://www.cda.cit.tum.de/files/eda/2023_nanoarch_post-layout_optimization_for_fcn.pdf>`_)
- SAT-based clock number assignment
- Added an upper bound option for the total layout area to ``exact``
- Automatic and exhaustive SiDB gate designer (based on `this paper <https://www.cda.cit.tum.de/files/eda/2023_nanoarch_minimal_gate_design.pdf>`_)
- Operational domain computation for SiDB layouts (based on `this paper <https://www.cda.cit.tum.de/files/eda/2023_nanoarch_reducing_the_complexity_of_operational_domain_computation_in_silicon_dangling_bond_logic.pdf>`_)
- Novel SiDB simulator ``quickexact`` for exhaustive but fast SiDB layout simulation including atomic defects (based on `this paper <https://www.cda.cit.tum.de/files/eda/2024_aspdac_efficient_exact_simulation.pdf>`_)
- Random SiDB layout generator
- 2DDWave distance function
- Hexagonalization algorithm for transforming Cartesian 2DDWave-clocked layouts into ROW-clocked hexagonal layouts (based on `this paper <https://www.cda.cit.tum.de/files/eda/2023_ieeenano_45_degree_sidb_design.pdf>`_)
- Temperature-aware SiDB simulation (based on `this paper <https://www.cda.cit.tum.de/files/eda/2023_ieeenano_temperature_behavior.pdf>`_)
- Atomic defect-aware physical design for SiDB layouts. Many thanks to Jeremiah Croshaw and Samuel Sze Hang Ng for the collaboration on `the paper <https://arxiv.org/abs/2311.12042>`_!
- Data types:
- Distance maps for faster path-finding via caching or pre-computation
- Enable ``coord_iterator`` for ``siqad::coord_t``
- I/O:
- Unified ``print_layout`` function for all layout types
- Support ``charge_distribution_surface`` in ``print_layout``
- Support atomic defects in ``print_layout``
- Support atomic defects in reading and writing SQD files
- Proprietary file format writer for SiDB layouts together with simulation results
- SiDB simulation file writer for `SiQAD <https://github.com/siqad/siqad>`_
- Clocking schemes:
- Ripple
- CLI:
- Commands ``miginvopt`` and ``miginvprop`` for MIG network optimization and inverter propagation from ``mockturtle``
- Utils:
- Function to round a number to ``n`` decimal places
- Libraries:
- Updated all libraries to the latest versions
- Continuous integration:
- Added a workflow to build and test the Python bindings
- Added a workflow to publish the Python bindings to `PyPI <https://pypi.org/project/mnt.pyfiction/>`_
- Added a workflow to extract the docstrings from C++ to make them available in Python
- Added a `CodeCov <https://about.codecov.io/>`_ configuration file
- Setup `pre-commit <https://pre-commit.com/>`_ checks for code formatting and linting
- Build and documentation:
- Added documentation on the Python bindings
- Overhauled the README
- Flags to partially compile select features of the CLI
- Added latest paper references to the documentation
- Added the new Munich Nanotech Toolkit logo
- Added missing thanks to Giuliana Beretta
- Added contribution and support info
- Benchmarks:
- Combinational networks from the `IWLS93 suite <https://ddd.fit.cvut.cz/www/prj/Benchmarks/IWLS93.pdf>`_
- Code benchmarking via `Catch2 <https://github.com/catchorg/Catch2>`_

Changed
#######
- Usability:
- Added return types to the ``area``, ``critical_path_length_and_throughput``, and ``equivalence_checking`` functions instead of relying on the passed statistics objects
- Refactored the technology mapping interface
- Enabled ``offset::ucoord_t`` and ``cube::coord_t`` as coordinate types for SiDB simulations
- Enhanced path-finding versatility by enabling them on all layout abstractions
- ``random_coordinate`` function for all layout types
- Added the EPFL and ISCAS85 benchmarks to the benchmark selector in the experiments
- Changed the unit of the ``lambda_tf`` physical parameter from meter to nanometer
- Continuous integration:
- Increased parallelism for building and testing in the Ubuntu and Windows workflows
- Use ``mold`` instead of ``ld`` for faster link times
- Switched to the newest OS versions in the GitHub Actions workflows
- Build and documentation:
- Overhauled and modernized the CMake build system
- Updated the Doxygen documentation system
- Linting:
- Make ClangFormat aware of different line ending types and enforce ``LF``
- Miscellaneous:
- Updated the linguist attributes
- ``fiction`` moved to the ``cda-tum`` GitHub organization

Fixed
#####
- Minor oversights in using ``static constexpr`` and ``noexcept``
- Fixed conversion of cube coordinate with negative y-value to SiQAD coordinate
- Fixed an inconsistency in SiDB layout printing
- Fixed hop energy calculation from neutral to positive SiDB
- ``read_sqd_layout`` now updates the aspect ratio properly for SiQAD-coordinate based layouts
- Atomic defects can now be updated and new ones can be assigned to specific coordinates
- Case style of experiments folders corrected in ``fiction_experiments.hpp``
- Fixed CodeQL warnings
- Fixed a bug that caused pre-mature termination of ``sidb_surface_analysis``
- Fixed design-rule violation testing and equivalence checking on empty gate-level layouts
- Fixed compiler warnings
- Fixed a documentation bug in the physical constants section
- Fixed the bug that some physical parameters were not correctly passed to the simulators
- Fixed ``equivalence_checking`` on ``obstruction_layout`` objects
- Fixed fragments from the move to ``cda-tum`` and adjusted the tracking of publications
- Missing physical validity check in ``quicksim`` for special cases
- Bug fixes and improvements related to the coordinate system
- Fixed wrong SiDB locations in a Bestagon tile's input wire
- Fixed an issue with ``charge_distribution_surface`` not being recognized as a ``cell_level_layout``
- Fixed port routing determination for unconnected gates in the Bestagon library


v0.5.0 - 2023-03-30
-------------------
*Fiction is a way to challenge the status quo and to push the boundaries of conventional thinking.* --- unknown
Expand Down
4 changes: 2 additions & 2 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@
# built documents.
#
# The short X.Y version.
version = 'v0.5.0'
version = 'v0.6.0'
# The full version, including alpha/beta/rc tags.
release = 'v0.5.0'
release = 'v0.6.0'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
6 changes: 3 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ requires = [
"setuptools>=45",
"setuptools_scm[toml]>=7",
"ninja>=1.10; sys_platform != 'win32'",
"cmake>=3.15",
"cmake>=3.21",
]
build-backend = "setuptools.build_meta"

[project]
name = "mnt.pyfiction"
version = "0.5.0"
version = "0.6.0"
description = "Design Automation for Field-coupled Nanotechnologies"
readme = "README.md"
authors = [
Expand All @@ -35,7 +35,7 @@ classifiers = [
'Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)',
]

requires-python = ">=3.7"
requires-python = ">=3.8"

[project.urls]
Source = 'https://github.com/cda-tum/fiction'
Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def build_extension(self, ext):

setup(
name='mnt.pyfiction',
version='0.5.0',
version='0.6.0',
author='Marcel Walter',
author_email='[email protected]',
description='Design Automation for Field-coupled Nanotechnologies',
Expand All @@ -111,7 +111,7 @@ def build_extension(self, ext):
ext_modules=[CMakeExtension('pyfiction', namespace='mnt')],
cmdclass={"build_ext": CMakeBuild},
zip_safe=False,
python_requires=">=3.7",
python_requires=">=3.8",
classifiers=[
'Development Status :: 4 - Beta',
'Programming Language :: Python :: 3',
Expand Down

0 comments on commit ec465b8

Please sign in to comment.