GithubHelp home page GithubHelp logo

a-kest / pydesignflow Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tobiaskaiser/pydesignflow

1.0 0.0 0.0 107 KB

Micro-Framework for FPGA / VLSI Design Flow in Python

Home Page: https://pydesignflow.readthedocs.io/

License: Apache License 2.0

Python 100.00%

pydesignflow's Introduction

PyDesignFlow: Micro-Framework for FPGA / VLSI Design Flow in Python

PyDesignFlow is a technology- and tool-agnostic micro-framework for building FPGA / VLSI design flows in Python.

Principles:

  • All design objects are managed by a central Flow object, which is accessible via the command line tools flow.
  • A Block encapsulates a part of the design, e.g. a hardware component, a testbench or a software program.
    • Blocks are defined by subclassing pydesignflow.Block. One or more instances of the block are then added to the central Flow object.
    • In hierarchical designs, blocks can depend on other blocks. For example, this allows bottom-up hardware design, where small hardware components are first built and then integrated into larger hardware systems. Block boundaries are set by hand.
    • Blocks can have parameters / configuration options. A Block class can be instantiated with different options under different names.
    • Simple designs may be realized with a single block only.
  • Every Block can define one or more Tasks.
    • Tasks are Python class methods using the special @pydesignflow.task decorator.
    • A task of a specific Block instance is called Target. Targets / Tasks can be built using the flow command line tool.
    • Running a Target produces a Result. There can be at most one result per target.
  • Task Dependencies: Targets / Tasks can depend on Results of other Targets.
    • Missing dependencies are built automatically.
    • Dependencies marked as always_rebuild are always rebuilt.
    • In contrast to Makefiles, PyDesignFlow does not track source file changes.
    • A dependency not marked as always_rebuild with Result present it is never rebuilt. This means that the designer must remember to rebuild / clean Targets by hand if source files have changed.
    • By not having to specify correct source file dependencies, the design flow is kept simple. Furthermore, by giving the designer the choice of when to rebuild Results, long tool runtimes can be avoided. Maximum control over the design flow is retained.

Full documentation is found at https://pydesignflow.readthedocs.io or in the docs/ folder.

License

Copyright 2022 - 2024 Tobias Kaiser

SPDX-License-Identifier: Apache-2.0

pydesignflow's People

Contributors

tobiaskaiser avatar a-kest avatar

Stargazers

 avatar

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.