Skip to main content

mflowgen

Documentation Status mflowgen pytest CI pypi

mflowgen is a modular flow specification and build-system generator for ASIC and FPGA design-space exploration built around sandboxed and modular nodes.

mflowgen allows you to programmatically define and parameterize a graph of nodes (i.e., sandboxes that run anything you like) with well-defined inputs and outputs. Build system files (e.g., make, ninja) are then generated which shuttle files between nodes before running them.

Key features and design philosophies:

  • Process and technology independence -- Process technology libraries and variables can be abstracted and separated from physical design scripts. Specifically, a single node called the ASIC design kit (ADK) captures this material in one place for better maintainability and access control.

  • Sandboxed and modular nodes -- Traditional ASIC flows are composed of many steps executing with fixed path dependencies. The resulting flows have low reusability across designs and technology nodes and can be confusing and monolithic. In contrast, modularity encourages reuse of the same scripts across many projects, while sandboxing makes each node self-contained and also makes the role of each node easy to understand (i.e., take these inputs and generate those outputs).

  • Programmatically defined build-system generator: A Python-based scripting interface and a simple graph API allows flexible connection and disconnection of edges, insertion and removal of nodes, and parameter space expansions. A simple graph can be specified for a quick synthesis and place-and-route spin, or a more complex graph can be built for a more aggressive chip tapeout (reusing many of the same nodes from before).

  • Run-time assertions -- Assertions can be built into each modular node and checked at run-time. Preconditions and postconditions are simply Python snippets that run before and after a node to catch unexpected situations that arise at build time. Assertions are collected and run with pytest. The mflowgen graph-building DSL can also extend a node with design-specific assertions by extending Python lists.

  • A focus on hardware design-space exploration -- Parameter expansion can be applied to nodes to quickly spin out parallel builds for design-space exploration at both smaller scales with a single parameter (e.g., sweeping clock targets) as well as at larger scales with multiple parameters (e.g., to characterize the area-energy tradeoff space of a new architectural widget with different knobs). Dependent files are shuttled to each sandbox as needed.

  • Complete freedom in defining what nodes do -- Aside from exposing precisely what the inputs and outputs are, no other restrictions are placed on what nodes do. A node may conduct an analysis pass and report a gate count. A node can also apply a transform pass to a netlist before passing it to other tools. In addition, a node can even instantiate a subgraph to implement a hierarchical flow.

mflowgen ships with a limited set of ASIC flow scripts for both open-source and commercial tools including synthesis (e.g., Synopsys DC, yosys), place and route (e.g., Cadence Innovus Foundation Flow, RePlAce, graywolf, qrouter), and signoff (e.g., Synopsys PTPX, Mentor Calibre). In addition, we include an open-source 45nm ASIC design kit (ADK) assembled from FreePDK45 version 1.4 and the NanGate Open Cell Library.

More info can be found in the documentation.


License

mflowgen is offered under the terms of the Open Source Initiative BSD 3-Clause License. More information about this license can be found here:

Metadata

Release files for mflowgen 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mflowgen 0.7.0
File Size Uploaded
mflowgen-0.7.0.tar.gz 6.9 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for mflowgen 0.7.0
File Interpreter ABI Platform
mflowgen-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 14.1 MB

Release files / mflowgen-0.7.0.tar.gz

Download URL mflowgen-0.7.0.tar.gz
Size 6.9 MB
Tags Source
SHA-256 checksum
How to use checksums
d31eb2e2ef19a48029ec129a8a4be6270e27af6bae0c92fb94a63d5693666c43
BLAKE2b-256 checksum
How to use checksums
bd360292f08f1703e9e9f2c0a17d76a1bf976092243b28a91079d69ae25b6f26
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.6

Release files / mflowgen-0.7.0-py3-none-any.whl

Download URL mflowgen-0.7.0-py3-none-any.whl
Size 7.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
cbe32477b48c97244cb1a9adfc8edc08f72a7825a8e4b984df95c55ff08d11fe
BLAKE2b-256 checksum
How to use checksums
c1e2927448b6f861e115a51a738e80f6835df101a51f602fe7bb3e1d3ea194ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.6

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page