Skip to main content

Design Automation for Field-coupled Nanotechnologies

Project description

fiction – Design Automation for Field-coupled Nanotechnologies

Ubuntu CI macOS CI Windows CI Python Bindings Docker Image CodeQL Documentation Status codecov License PyPI Release arXiv

This code base provides a C++17 framework for field-coupled technology-independent open nanocomputing developed as part of the Munich Nanotech Toolkit (MNT) by the Chair for Design Automation at the Technical University of Munich. Within fiction, algorithms for logic synthesis, placement, routing, clocking, verification, and simulation for Field-coupled Nanocomputing (FCN) technologies are implemented.

To this end, most physical design tasks can be performed on generic data structures that abstract from particular technology or cell design. Using an extensible set of gate libraries, technologies, and cell types, these can easily be compiled down to any desired FCN technology for physical simulation.

For these use cases, fiction provides a C++ header-only library as well as Python bindings that provide data types and algorithms for recurring tasks, e.g., logic network and layout types on different abstraction levels, clocking schemes, gate libraries, design automation algorithms, etc. Additionally, fiction comes with an ABC-like CLI tool that allows quick access to its core functionality.

Documentation

If you have any questions, feel free to contact us via nanotech.cda@xcit.tum.de or by creating an issue on GitHub.

Quick Start (C++)

Clone the repository and its submodules:

git clone --recursive https://github.com/cda-tum/fiction.git

The CLI

Inside the newly cloned fiction folder, trigger the build process:

cmake . -B build
cd build
cmake --build . -j4

Run the CLI tool:

cli/fiction

Here is an example of running fiction to perform a full physical design flow on a QCA circuit layout that can afterward be simulated in QCADesigner:

CLI example

The Header-only Library

Add fiction as a sub-directory to your CMake project and link against libfiction (assuming your project is called fanfiction):

add_subdirectory(fiction/)
target_link_libraries(fanfiction libfiction)

Include the headers you need:

#include <fiction/layouts/cell_level_layout.hpp>
#include <fiction/layouts/clocking_scheme.hpp>
#include <fiction/technology/qca_one_library.hpp>
#include <fiction/io/write_qca_layout.hpp>
#include <fiction/...>

Quick Start (Python)

Install the Python bindings from PyPI:

pip install mnt.pyfiction

Import the bindings:

from mnt import pyfiction

For a full getting started guide, please refer to the documentation.

Supported Technologies

Physical design in fiction can be performed technology-independent. Only if resulted layouts are to be physically, simulated, a specific technology implementation is required. To this end, fiction supports various potential FCN implementations together with gate libraries to compile gate-level layout abstractions down to the cell level. Additionally, output formats for external physical simulator engines are also supported.

Quantum-dot Cellular Automata (QCA)

QCA cells

Gate libraries:

File formats:

Many thanks to Frank Sill Torres for his support with the QCADesigner format, to Willem Lambooy for his support with the QCA-STACK format, and to Sophia Kuhn for implementing the SVG writer!

in-plane Nanomagnet Logic (iNML)

iNML cells

Gate libraries:

File formats:

Many thanks to Umberto Garlando, Fabrizio Riente, and Giuliana Beretta for their support!

Silicon Dangling Bonds (SiDBs)

SiDB cells

Gate libraries:

File formats:

Many thanks to Samuel Sze Hang Ng for his support!

Implemented Design Automation Algorithms

The fiction framework provides implementations of state-of-the-art design automation algorithms for FCN technologies. These algorithms can be used in evaluation scripts to perform logic synthesis, physical design, layout verification, and physical simulation.

Logic Synthesis

For logic synthesis, fiction relies on the mockturtle library that offers a multitude of logic network types and optimization algorithms. Logic synthesis can be performed in external tools and resulting Verilog/AIGER/BLIF/... files can be parsed by fiction. Alternatively, since mockturtle is included in fiction, synthesis can be applied in the same evaluation script.

Physical Design

For automatic FCN layout obtainment, fiction provides algorithms that receive mockturtle logic networks as input specification and output placed, routed, and clocked generic FCN circuits.

QCA Layout

Among these algorithms are

plus several path-finding algorithms that work on generic layouts:

On top, there is a hexagonalization algorithm to transform Cartesian layouts suitable for QCA into hexagonal layouts suitable for SiDBs, and multiple algorithms to optimize gate-level layouts post-placement:

Verification

Layout correctness can be validated using

Physical Simulation

SiDB simulation result

When a layout is compiled to the cell level via the application of a technology-dependent gate library, it can be simulated using a physical model. Currently, the following simulation algorithms are implemented in fiction:

Clocking Schemes

Regular clocking schemes have been proposed in the FCN literature, which can be used as a floor plans for physical design. However, sometimes it can make sense to have more freedom and assign clock numbers on the fly. That is why fiction supports both regular and irregular clocking schemes with variable amounts of clock numbers as QCA for instance uses four clock phases but iNML needs only three.

Built-in schemes are

Columnar Row 2DDWave
Columnar Row 2DDWave
USE RES ESR
USE RES ESR
CFE Ripple BANCS
CFE Ripple BANCS

plus the mentioned irregular open clocking that works via a clock map instead of a regular extrapolated cutout.

Wire Crossings

Second layer crossing

With many FCN technologies considered planar, wire crossings should be minimized if possible. However, there are some options in QCA where, using a second layer, crossings over short distances and co-planar rotated cells become possible. As both are just technical implementations of the same concept, fiction supports crossings as wires in a second grid layer in its data structures for all FCN technologies. They will also be represented as such in corresponding SVG and QCADesigner output. However, note that it is to be interpreted as the concept of crossings and could also be realized co-planar.

Wires are only allowed to cross other wires! Wires crossing gates is considered to lead to unstable signals.

Gate Pins vs. Designated I/Os

Input pin and cell output

In the literature, both are seen: having input cells (pins) directly located in the gate structure or using designated I/O elements that are located outside of gates. This distinction only makes sense on the gate level and fiction supports both approaches and offers usage in the implemented physical design algorithms.

Multi Wires

Multi wires

Gate-level abstraction has its limits. Often, chip area is wasted when only using a single wire per tile. In fiction, cell-level layouts allow for precise control over cell placement and can, thus, also create multiple wire segments per clock zone. Physical simulation can give an indication of whether the built structures are implementing the intended functionality.

Synchronization Elements

Synchronization element

A technology extension proposes to utilize the external clock signal generator in an unconventional way: by creating further asymmetric clock signals with extended Hold phases that are assigned to specific wire tiles, synchronization elements can be created that stall signals over multiple clock cycles. These artificial latches are able to feed information to any other clock number, but their usage reduces the overall throughput of the layout. In return, long wire detours for signal synchronization can be prevented.

Cost Metrics

Designed layouts can be evaluated with regard to several cost functions. The following metrics are currently implemented:

Gate-level layouts:

  • Circuit dimension in tiles
  • Number of gate tiles
  • Number of wire tiles
  • Number of wire crossings
  • Number of synchronization elements
  • Critical path
  • Throughput
  • Bounding box
  • Energy dissipation based on a physical model (QCA only)

Cell-level layouts:

  • Circuit dimension in cells
  • Number of cells
  • Bounding box
  • Area usage in nm²

Benchmark Library

To objectively evaluate and compare software and design automation tools, MNT Bench provides gate-level layouts for various gate libraries and clocking schemes, generated using the latest physical design and optimization algorithms, with fiction offering the corresponding read and write utilities to generate gate-level layouts from gate-level layout files (.fgl) and vice versa.

Additionally, the benchmarks folder contains the function descriptions of frequently used benchmark sets in Verilog format (.v) provided by MNT Bench.

Reference

Since fiction is academic software, we would be thankful if you referred to it by citing the following publications:

@misc{fiction,
      author = {Walter, Marcel and Wille, Robert and Sill Torres, Frank and Gro{\ss}e, Daniel and Drechsler, Rolf},
      title = {{fiction: An Open Source Framework for the Design of Field-coupled Nanocomputing Circuits}},
      archivePrefix = {arXiv},
      eprint = {1905.02477},
      note = {arXiv:1905.02477},
      year = {2019},
      month = {May}
}

and

@inproceedings{mnt,
    author = {Walter, Marcel and Drewniok, Jan and Hofmann, Simon and Hien, Benjamin and Wille, Robert},
    title = {{The Munich Nanotech Toolkit (MNT)}},
    booktitle = {IEEE International Conference on Nanotechnology (IEEE NANO)},
    pages = {454--459},
    year = {2024}
}

Additionally, many algorithms implemented in fiction have been published individually. For a full list of publications, please refer to the documentation.

Acknowledgements

The Munich Nanotech Toolkit has been supported by the Bavarian State Ministry for Science and Arts through the Distinguished Professorship Program.

TUM Logo       Coat of Arms of Bavaria

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mnt_pyfiction-0.6.5.tar.gz (13.0 MB view details)

Uploaded Source

Built Distributions

mnt.pyfiction-0.6.5-cp312-cp312-win_amd64.whl (10.2 MB view details)

Uploaded CPython 3.12 Windows x86-64

mnt.pyfiction-0.6.5-cp312-cp312-manylinux_2_28_x86_64.whl (15.9 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.28+ x86-64

mnt.pyfiction-0.6.5-cp312-cp312-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

mnt.pyfiction-0.6.5-cp312-cp312-macosx_10_15_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.12 macOS 10.15+ x86-64

mnt.pyfiction-0.6.5-cp311-cp311-win_amd64.whl (10.2 MB view details)

Uploaded CPython 3.11 Windows x86-64

mnt.pyfiction-0.6.5-cp311-cp311-manylinux_2_28_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

mnt.pyfiction-0.6.5-cp311-cp311-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

mnt.pyfiction-0.6.5-cp311-cp311-macosx_10_15_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.11 macOS 10.15+ x86-64

mnt.pyfiction-0.6.5-cp310-cp310-win_amd64.whl (10.2 MB view details)

Uploaded CPython 3.10 Windows x86-64

mnt.pyfiction-0.6.5-cp310-cp310-manylinux_2_28_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

mnt.pyfiction-0.6.5-cp310-cp310-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

mnt.pyfiction-0.6.5-cp310-cp310-macosx_10_15_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

mnt.pyfiction-0.6.5-cp39-cp39-win_amd64.whl (10.2 MB view details)

Uploaded CPython 3.9 Windows x86-64

mnt.pyfiction-0.6.5-cp39-cp39-manylinux_2_28_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

mnt.pyfiction-0.6.5-cp39-cp39-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

mnt.pyfiction-0.6.5-cp39-cp39-macosx_10_15_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

mnt.pyfiction-0.6.5-cp38-cp38-win_amd64.whl (10.2 MB view details)

Uploaded CPython 3.8 Windows x86-64

mnt.pyfiction-0.6.5-cp38-cp38-manylinux_2_28_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

mnt.pyfiction-0.6.5-cp38-cp38-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

mnt.pyfiction-0.6.5-cp38-cp38-macosx_10_15_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

File details

Details for the file mnt_pyfiction-0.6.5.tar.gz.

File metadata

  • Download URL: mnt_pyfiction-0.6.5.tar.gz
  • Upload date:
  • Size: 13.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for mnt_pyfiction-0.6.5.tar.gz
Algorithm Hash digest
SHA256 31efdfd813dca1a79ef26505b4548efd433e038b37169f2c90a6a0d06b875e1e
MD5 dfdfb58109f8da466c06598605438fff
BLAKE2b-256 653292b77f4f50433deaba629eb9a0b4be409df0b5f1e061c066184a05e6be14

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f105c3de307ee54c0a77ea688364174334c93011212236e3d8bfb0342d2d64ab
MD5 8d50fd13ebf6227f5d16f4f73a37b2b6
BLAKE2b-256 72023da140886623d1fa4f08589b38c691927306f62e261ca98eac21efb4da84

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 277b28e21a8a0e31393a52e4d410fba577cc08ee215054652b93da425158555d
MD5 c8beceb43a143df1ea25510b995654c8
BLAKE2b-256 23ce7cc590d4ee98df18edd31a63e98c7005ce4f9e81f10a9e49486f4a17caa4

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 32b27be5fd99f3c95b09ed986519cb7d8eeea866ad140fc2b85090fa4ca3ec34
MD5 1a6db00d9461a3ec64ce174de51f0de7
BLAKE2b-256 e2ed76ba28bd3602650a2ba0b54de1a954107653605745ae701ac4c01c18474a

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d468628eb937f8567de05beea28197a64021dc000ad3a4cd53bbca98873d3f71
MD5 9eecb679e926c2ca419802d5b6d2bcca
BLAKE2b-256 bf20c312519bcf2902f6079cf8d09e44f0afad32bcb63d715de09bf3e1b4ecfb

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 77693ac211468744184cbfdf568265bdb81bfa5066f5f54b6cd8a1d6e2735068
MD5 ca258713b032960f96cad372c88d5f19
BLAKE2b-256 aa4a178f7806b0d710d19b81a5db65ca0b911f9dc983c14ace04f6bb069d3ac9

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b9653ad19c112299f2d799693533da233f8fae8bc0edfbc66330a3b5582adc92
MD5 f1e9493d9c36f876078754c92f8087cc
BLAKE2b-256 841d65c53a375b1c3912a92f1165bec917f56b71222c86f147092a53ca6860a2

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 72c0dda53c09b2d13b3fa27e0671312cd6f15c570e4c2e6a391436aa0f67e59d
MD5 59288cd39c660178dd1f0b569651d7fe
BLAKE2b-256 9d2ecc4eb26bd5bb87b3565fc18bb079d996353e397eaa6c53f9e2039365d7ef

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f3d89d5facd5d977c7c83194027db2d51e7ca6117d5f7b6d9801630187ae3a60
MD5 3d7233ba62716781260039671d251197
BLAKE2b-256 ad775d923e3e268a4c36196cae6c4c3c096f4a64c48bdf262aead338d207aa97

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7870e7cb3a3100bd855524757ddbe2c70586fed83d354d27ddd2c51968d636d9
MD5 cfa93037f4d910ddb7fa4af35ebc0a9c
BLAKE2b-256 e4c4db75c7c79072bb623fde976e45d513bad81a8bf0613574528ae45bec8d75

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bde650b6955e5e32cfdc99725b9f1ab05d1a213db0a68a219625d2bd7f420c0c
MD5 88ca6386c5f3725a1d2bd124e1b230d0
BLAKE2b-256 0ac7fc51f157f98d240a90355af98f7a3a02a500fdc3eb9adc24f2af217b9eeb

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fc048625329f8d369a48ce2b109c084eaf0ab7e4ffd6e256e2fac94247758e0a
MD5 2f793005e50c79b176c238680aa862c9
BLAKE2b-256 e37213bc237ae46b5ee313af02a5edb6a4ef03bd1343db806d80533cbc112f72

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 6e9e69ebe43807333bdc774acd07f1a6321d3269829731cb9cb67f9810b0e9cc
MD5 ae984003a5f637262fed7d5d70da49b4
BLAKE2b-256 8594cd348014ecf994b8f64c08b1063b62c0f15d0133156157328752a0075e9a

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 176a2d9577259fe57cfc9907b27b5530491c15b87826a032ad67b5a85ab4ccec
MD5 aa2a63b7406c94082329a9f0dabc75e1
BLAKE2b-256 ef5ffe0a974bc3f17e0ecd126340b77406468ec2aed343a8db354107de3dbd4a

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f614ad07e742bf9cb3212bd0ba3a5db6f3a82ea4240b1dfaa9e366720b2d4d2b
MD5 2cc273887614a0850fb87300b12f81f9
BLAKE2b-256 cdd2706319b14e239c36e3245e8c19b4407b4d64b19dc5ce5ecf5a2b81afeb91

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 566072b7f5efa1de81efc60e46fc9c18bd1ca65cb27cfceb347e13f020e7ffd3
MD5 615af6cf8b98f144e57059ae81afd245
BLAKE2b-256 43652c157c5655908b2a20112605ef1e6cc50842ef0abde93de294f79429f680

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 33fb91c4fb938f6d4c572389158b557f5b839cce4858ddaf6a2214bde3d2ff5a
MD5 f2f0e5b42e9c2f8c4ade43ac3b65c9f0
BLAKE2b-256 9424656e6fa00d410a9e4a89c0e027ebc45390b2a176636d73da4a7459c75c7d

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 80a372cdd7d912ec8a52022270f02e79e41f345931daee137df65144b3a24f09
MD5 df8513610f50edb236bb378e3599b81e
BLAKE2b-256 7223bfeb3505e10d7e01301a1da3759595c4d09b24c412da478885f588e0af5a

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3370d78d77e7b6b192b303f5bc9dd3cbb6c02368d28f18b95ad39612f44931ba
MD5 59710fe3d7fc772eeba3f16b79ca7d44
BLAKE2b-256 0ebedd3acc38b5bd7861aabcee34bd5014f738ee799e586fc2db60e93d786d4d

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a19b1e12046c248849056aa0e7949e6e7b521b77c611e2b9ee06ade580139d05
MD5 b17839448b9a7ff2d4daa08377909d9d
BLAKE2b-256 04aa53450209bab85521ad8a6d6e472d8073a642cda27e9d6f8ec3f667aca9cf

See more details on using hashes here.

File details

Details for the file mnt.pyfiction-0.6.5-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for mnt.pyfiction-0.6.5-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ba70d6bd8f62e229aeb8d3f5d2850b2d92df1b1250be01e28b449ab7e9ea5246
MD5 290ee905cf7bde5fc700dff1c5b212a0
BLAKE2b-256 0c077e031aa473cc521c17504aa41a71572d071e40620386cae489c70313fd24

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page