Git Product home page Git Product logo

freepdk-45nm's Introduction

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:

freepdk-45nm's People

Contributors

ctorng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

freepdk-45nm's Issues

missing .scs file from freepdk45 ?

Hello. I was wondering if someone can assist. A months ago, we pulled down this freepdk45 PDK for our institution's usage. And the TAs and professors have been using it consistently. But I was told by a new hire that this freepdk45 PDK is missing the .scs model files.

I am not familiar and would like some assistance on where I can find the .scs model files for this freepdk45 PDK.
Any help would be greatly appreciated

Guidance for asap7 or nangate15

Have been using this repo with mflowgen (works great, thanks). I am trying to add more PDKs, such as ASAP7.

Is there any script/documentation/guidelines that will help generate a full view for other PDKs and stdcells, using the files from the vendor? For e.g., ASAP7's routing tech does not define any resistance/capacitance for the metal layers, which means I cannot generate the Milkyway lib for asap7, so I'm pretty much stuck at the synthesis step in mflowgen. Similarly, antenna and welltap cells seems to be missing. Any help with getting around these problems would be greatly appreciated.

qrcTech for freepdk45

Seems freepdk45 has no qrc file, so extract flow run failed.
Any soultion ?

Thanks a lot.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.