Skip to main content

Micro-Framework for FPGA / VLSI Design Flow in Python

Project description

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

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

pydesignflow-0.4.3.tar.gz (31.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydesignflow-0.4.3-py3-none-any.whl (23.5 kB view details)

Uploaded Python 3

File details

Details for the file pydesignflow-0.4.3.tar.gz.

File metadata

  • Download URL: pydesignflow-0.4.3.tar.gz
  • Upload date:
  • Size: 31.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for pydesignflow-0.4.3.tar.gz
Algorithm Hash digest
SHA256 349d26cb1feed288744bd1aee43ff6cc58c08a571fa2d5c0889a6687ad9fd516
MD5 54a4d4a713028af1c14208c63dee49b7
BLAKE2b-256 ff0235ca3a3111fe4379d55ac173b31f1c7cc6a238ce79be2b4870d93b567f89

See more details on using hashes here.

File details

Details for the file pydesignflow-0.4.3-py3-none-any.whl.

File metadata

  • Download URL: pydesignflow-0.4.3-py3-none-any.whl
  • Upload date:
  • Size: 23.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for pydesignflow-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6ee6f67cb60d0b6feefd7d163f1b91194db47f0f58702cb1872e7b2b6a3d944f
MD5 c31634e7053ee5eb709c3f99cbf9aabc
BLAKE2b-256 8fabda4bb4ecc70b44bc6609b76d581f5f7b3c620ed2803a1fa968cde4a2f727

See more details on using hashes here.

Supported by

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