migen


Namemigen JSON
Version 0.9.2 PyPI version JSON
download
home_pagehttps://m-labs.hk
SummaryPython toolbox for building complex digital hardware
upload_time2019-11-03 18:16:27
maintainer
docs_urlNone
authorSebastien Bourdeauducq
requires_python
licenseBSD
keywords hdl asic fpga hardware design
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ### Migen (Milkymist generator)

<img src="https://github.com/m-labs/migen/raw/master/doc/migen_logo.png" alt="migen logo" width="150"/>

#### A Python toolbox for building complex digital hardware

Despite being faster than schematics entry, hardware design with Verilog and
VHDL remains tedious and inefficient for several reasons. The event-driven
model introduces issues and manual coding that are unnecessary for synchronous
circuits, which represent the lion's share of today's logic designs. Counter-
intuitive arithmetic rules result in steeper learning curves and provide a
fertile ground for subtle bugs in designs. Finally, support for procedural
generation of logic (metaprogramming) through "generate" statements is very
limited and restricts the ways code can be made generic, reused and organized.

To address those issues, we have developed the **Migen FHDL** library that
replaces the event-driven paradigm with the notions of combinatorial and
synchronous statements, has arithmetic rules that make integers always behave
like mathematical integers, and most importantly allows the design's logic to
be constructed by a Python program. This last point enables hardware designers
to take advantage of the richness of the Python language - object oriented
programming, function parameters, generators, operator overloading, libraries,
etc. - to build well organized, reusable and elegant designs.

Other Migen libraries are built on FHDL and provide various tools such as a
system-on-chip interconnect infrastructure, a dataflow programming system, a
more traditional high-level synthesizer that compiles Python routines into
state machines with datapaths, and a simulator that allows test benches to be
written in Python.

See the doc/ folder for more technical information.

Migen is designed for Python 3.5. Note that Migen is **not** spelled MiGen.

#### Quick Links

Code repository:
https://github.com/m-labs/migen

System-on-chip design based on Migen:
https://github.com/m-labs/misoc

Online documentation:
https://m-labs.hk/migen/manual/

#### Quick intro

```python
from migen import *
from migen.build.platforms import m1
plat = m1.Platform()
led = plat.request("user_led")
m = Module()
counter = Signal(26)
m.comb += led.eq(counter[25])
m.sync += counter.eq(counter + 1)
plat.build(m)
```

#### License

Migen is released under the very permissive two-clause BSD license. Under the
terms of this license, you are authorized to use Migen for closed-source
proprietary designs.
Even though we do not require you to do so, those things are awesome, so please
do them if possible:
* tell us that you are using Migen
* put the Migen logo (doc/migen_logo.svg) on the page of a product using it,
  with a link to http://m-labs.hk
* cite Migen in publications related to research it has helped
* send us feedback and suggestions for improvements
* send us bug reports when something goes wrong
* send us the modifications and improvements you have done to Migen. The use
   of "git format-patch" is recommended. If your submission is large and
   complex and/or you are not sure how to proceed, feel free to discuss it on
   the mailing list or IRC (#m-labs on Freenode) beforehand.

See LICENSE file for full copyright and license info. You can contact us on the
public mailing list devel [AT] lists.m-labs.hk.

  "Electricity! It's like magic!"
            

Raw data

            {
    "_id": null,
    "home_page": "https://m-labs.hk",
    "name": "migen",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "HDL,ASIC,FPGA,hardware design",
    "author": "Sebastien Bourdeauducq",
    "author_email": "sb@m-labs.hk",
    "download_url": "https://files.pythonhosted.org/packages/cc/f0/b38382ac821861c193992817e3687e49122d09f130f6a33a7d01a4f01bc1/migen-0.9.2.tar.gz",
    "platform": "Any",
    "description": "### Migen (Milkymist generator)\n\n<img src=\"https://github.com/m-labs/migen/raw/master/doc/migen_logo.png\" alt=\"migen logo\" width=\"150\"/>\n\n#### A Python toolbox for building complex digital hardware\n\nDespite being faster than schematics entry, hardware design with Verilog and\nVHDL remains tedious and inefficient for several reasons. The event-driven\nmodel introduces issues and manual coding that are unnecessary for synchronous\ncircuits, which represent the lion's share of today's logic designs. Counter-\nintuitive arithmetic rules result in steeper learning curves and provide a\nfertile ground for subtle bugs in designs. Finally, support for procedural\ngeneration of logic (metaprogramming) through \"generate\" statements is very\nlimited and restricts the ways code can be made generic, reused and organized.\n\nTo address those issues, we have developed the **Migen FHDL** library that\nreplaces the event-driven paradigm with the notions of combinatorial and\nsynchronous statements, has arithmetic rules that make integers always behave\nlike mathematical integers, and most importantly allows the design's logic to\nbe constructed by a Python program. This last point enables hardware designers\nto take advantage of the richness of the Python language - object oriented\nprogramming, function parameters, generators, operator overloading, libraries,\netc. - to build well organized, reusable and elegant designs.\n\nOther Migen libraries are built on FHDL and provide various tools such as a\nsystem-on-chip interconnect infrastructure, a dataflow programming system, a\nmore traditional high-level synthesizer that compiles Python routines into\nstate machines with datapaths, and a simulator that allows test benches to be\nwritten in Python.\n\nSee the doc/ folder for more technical information.\n\nMigen is designed for Python 3.5. Note that Migen is **not** spelled MiGen.\n\n#### Quick Links\n\nCode repository:\nhttps://github.com/m-labs/migen\n\nSystem-on-chip design based on Migen:\nhttps://github.com/m-labs/misoc\n\nOnline documentation:\nhttps://m-labs.hk/migen/manual/\n\n#### Quick intro\n\n```python\nfrom migen import *\nfrom migen.build.platforms import m1\nplat = m1.Platform()\nled = plat.request(\"user_led\")\nm = Module()\ncounter = Signal(26)\nm.comb += led.eq(counter[25])\nm.sync += counter.eq(counter + 1)\nplat.build(m)\n```\n\n#### License\n\nMigen is released under the very permissive two-clause BSD license. Under the\nterms of this license, you are authorized to use Migen for closed-source\nproprietary designs.\nEven though we do not require you to do so, those things are awesome, so please\ndo them if possible:\n* tell us that you are using Migen\n* put the Migen logo (doc/migen_logo.svg) on the page of a product using it,\n  with a link to http://m-labs.hk\n* cite Migen in publications related to research it has helped\n* send us feedback and suggestions for improvements\n* send us bug reports when something goes wrong\n* send us the modifications and improvements you have done to Migen. The use\n   of \"git format-patch\" is recommended. If your submission is large and\n   complex and/or you are not sure how to proceed, feel free to discuss it on\n   the mailing list or IRC (#m-labs on Freenode) beforehand.\n\nSee LICENSE file for full copyright and license info. You can contact us on the\npublic mailing list devel [AT] lists.m-labs.hk.\n\n  \"Electricity! It's like magic!\"",
    "bugtrack_url": null,
    "license": "BSD",
    "summary": "Python toolbox for building complex digital hardware",
    "version": "0.9.2",
    "project_urls": {
        "Download": "https://github.com/m-labs/migen",
        "Homepage": "https://m-labs.hk"
    },
    "split_keywords": [
        "hdl",
        "asic",
        "fpga",
        "hardware design"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ccf0b38382ac821861c193992817e3687e49122d09f130f6a33a7d01a4f01bc1",
                "md5": "6ddab129fad17bac245744667065f3ae",
                "sha256": "8fdb776d3556fda82aaa95e936b54196a92afc8427564e94f5ecc34a5681085d"
            },
            "downloads": -1,
            "filename": "migen-0.9.2.tar.gz",
            "has_sig": false,
            "md5_digest": "6ddab129fad17bac245744667065f3ae",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 129103,
            "upload_time": "2019-11-03T18:16:27",
            "upload_time_iso_8601": "2019-11-03T18:16:27.607725Z",
            "url": "https://files.pythonhosted.org/packages/cc/f0/b38382ac821861c193992817e3687e49122d09f130f6a33a7d01a4f01bc1/migen-0.9.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2019-11-03 18:16:27",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "m-labs",
    "github_project": "migen",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "migen"
}
        
Elapsed time: 3.76130s