{ "info": { "author": "Shinya Takamaeda-Yamazaki", "author_email": "shinya.takamaeda_at_gmail_com", "bugtrack_url": null, "classifiers": [], "description": "PyCoRAM\n=======\n\nPython-based Portable IP-core Synthesis Framework for FPGA-based\nComputing\n\nCopyright (C) 2013, Shinya Takamaeda-Yamazaki\n\nE-mail: shinya\\_at\\_is.naist.jp\n\nLicense\n=======\n\nApache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)\n\nPublication\n===========\n\nIf you use PyCoRAM in your research, please cite our paper.\n\n- Shinya Takamaeda-Yamazaki, Kenji Kise and James C. Hoe: PyCoRAM: Yet\n Another Implementation of CoRAM Memory Architecture for Modern\n FPGA-based Computing, The Third Workshop on the Intersections of\n Computer Architecture and Reconfigurable Logic (CARL 2013)\n (Co-located with MICRO-46), December 2013.\n `Paper `__\n `Slide `__\n\n::\n\n @inproceedings{Takamaeda:2013:CARL:PyCoRAM,\n author = {Takamaeda-Yamazaki, Shinya and Kise, Kenji and Hoe, James C.},\n title = {{PyCoRAM: Yet Another Implementation of CoRAM Memory Architecture for Modern FPGA-based Computing}},\n booktitle={Intersections of Computer Architecture and Reconfigurable Logic (CARL 2013)},\n month={Dec},\n year = {2013},\n location = {Davis, CA},\n } \n\n- Zynq + PyCoRAM (+ Debian) (slideshare, in Japanese)\n `Slide `__\n\n- PyCoRAM for HLS meet up (slideshare, in Japanese)\n `Slide `__\n\nWhat's PyCoRAM?\n===============\n\nPyCoRAM is a Python-based portable IP-core synthesis framework with\nCoRAM (Connected RAM) memory architecture.\n\nPyCoRAM framework generates a portable IP-core package from computing\nlogic descriptions in Verilog HDL and memory access pattern descriptions\nin Python. Designers can easily build an FPGA-based custom accelerator\nusing a generated IP-core with any common IP-cores on vendor-provided\nEDA tools. PyCoRAM framework includes (1) the Verilog-to-Verilog design\ntranslation compiler and (2) the Python-to-Verilog high-level synthesis\n(HLS) compiler for generating control circuits of memory operations.\n\nThere are some major differences between PyCoRAM and the original\nsoft-logic implementation of CoRAM.\n\n- Memory access pattern representation in Python\n\n - The original CoRAM uses C language to represent a memory access\n pattern (called 'control thread').\n - In PyCoRAM, you can easily describe them by using popular\n lightweight scripting language.\n - A Python script of memory access patterns is translated into an\n RT-level hardware design in Verilog HDL by the Python-to-Verilog\n high-level synthesis compiler.\n\n- Commercial interconnect supports (AMBA AXI4 and Altera Avalon)\n\n - The original CoRAM uses CONNECT to generate an on-chip\n interconnect.\n - PyCoRAM compiler generates a IP-core design with AMBA AXI4 or\n Altera Avalon. Both are commonly used on vendor-provided EDA\n tools.\n\n- Parameterized RTL Design Support\n\n - The original CoRAM has some limitations in Verilog HDL description\n of computing logic, such as no supports of generate statement.\n - PyCoRAM has a sophisticated RTL analyzer/translator to convert RTL\n descriptions into synthesizable IP-core package under memory\n abstractions of CoRAM.\n\nInstallation\n============\n\nRequirements\n------------\n\n- Python: 2.7, 3.4 or later\n\nPython3 is recommended.\n\n- Icarus Verilog: 0.9.7 or later\n\nInstall on your platform. For exmple, on Ubuntu:\n\n::\n\n sudo apt-get install iverilog\n\n- Jinja2: 2.8 or later\n- pytest: 2.8.2 or later\n- pytest-pythonpath: 0.7 or later\n\nInstall on your python environment by using pip.\n\n::\n\n pip install jinja2 pytest pytest-pythonpath\n\n- Pyverilog: 1.0.0 or later\n\nInstall from pip:\n\n::\n\n pip install pyverilog\n\nInstall\n-------\n\nInstall PyCoRAM.\n\n::\n\n python setup.py install\n\nOn Docker\n---------\n\nDockerfile is available, so that you can try PyCoRAM on Docker without\nany installation on your host platform.\n\n::\n\n cd docker\n sudo docker build -t user/pycoram .\n sudo docker run --name pycoram -i -t user/pycoram /bin/bash\n cd PyCoRAM/tests/single_memory/\n make build\n make sim\n\nGetting Started\n===============\n\nYou can use the pycoram command from your console.\n\n::\n\n pycoram\n\nYou can find some examples in 'PyCoRAM/examples/' and 'PyCoRAM/tests'.\n\nLet's begin PyCoRAM by an example in 'tests/single\\_memory'. You will\nfind two source files.\n\n- ctrl\\_thread.py : Control-thread definition in Python\n- userlogic.v : User-defined Verilog code using CoRAM memory blocks\n\nType 'make' to build a PyCoRAM IP-core from the source files. Then type\n'make run' to simulate sample system.\n\n::\n\n make build\n make sim\n\nInstead, you can type commands as below directly at 'PyCoRAM' directory.\n\n::\n\n pycoram default.config -t userlogic -I include tests/single_memory/ctrl_thread.py tests/single_memory/userlogic.v\n iverilog -I pycoram_userlogic_v1_00_a/hdl/verilog/ pycoram_userlogic_v1_00_a/test/test_pycoram_userlogic.v \n ./a.out\n\nPyCoRAM compiler generates a directory for IP-core\n(pycoram\\_userlogic\\_v1\\_00\\_a, in this example).\n\n'pycoram\\_userlogic\\_v1\\_00\\_a.v' includes - IP-core RTL design\n(hdl/verilog/pycoram\\_userlogic.v) - Test bench\n(test/test\\_pycoram\\_userlogic.v) - XPS setting files\n(pycoram\\_userlogic\\_v2\\_1\\_0.{mpd,pao,tcl}) - IP-XACT file\n(component.xml)\n\nA bit-stream can be synthesized by using Xilinx Platform Studio, Xilinx\nVivado, and Altera Qsys. In case of XPS, please copy the generated\nIP-core into 'pcores' directory of XPS project.\n\nThis project has some examples in 'PyCoRAM/examples/' and\n'PyCoRAM/tests'. To build them, please modify 'Makefile', so that the\ncorresponding files and parameters are selected (especially INPUT,\nMEMIMG and USERTEST).\n\nPyCoRAM Command Options\n=======================\n\nCommand\n-------\n\n::\n\n pycoram [config] [-t topmodule] [-I includepath]+ [--memimg=filename] [--usertest=filename] [file]+\n\nDescription\n-----------\n\n- file\n\n - User-logic Verilog file (.v) and control-thread definition file\n (.py). Automatically, .v file is recognized as a user-logic\n Verilog file, and .py file recongnized as a control-thread\n definition, respectively.\n\n- config\n\n - Configuration file which includes memory and device specification\n\n- -t\n\n - Name of user-defined top module, default is \"userlogic\".\n\n- -I\n\n - Include path for input Verilog HDL files.\n\n- --memimg\n\n - DRAM image file in HEX DRAM (option, if you need). The file is\n copied into test directory. If no file is assigned, the array is\n initialized with incremental values.\n\n- --usertest\n\n - User-defined test code file (option, if you need). The code is\n copied into testbench script.\n\nRelated Project\n===============\n\n`Pyverilog `__ - Python-based\nHardware Design Processing Toolkit for Verilog HDL - Used as basic code\nanalyser and generator in PyCoRAM\n\n`CoRAM `__ - A General\nPurpose Memory Architecture for FPGAs - The original CoRAM developed at\nCMU", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/PyHDI/PyCoRAM", "keywords": "FPGA,Verilog HDL,High-Level Synthesis", "license": "Apache License 2.0", "maintainer": null, "maintainer_email": null, "name": "pycoram", "package_url": "https://pypi.org/project/pycoram/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pycoram/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/PyHDI/PyCoRAM" }, "release_url": "https://pypi.org/project/pycoram/1.0.1/", "requires_dist": null, "requires_python": null, "summary": "Python-based Portable IP-core Synthesis Framework for FPGA-based Computing", "version": "1.0.1" }, "last_serial": 1803893, "releases": { "0.9.1": [ { "comment_text": "", "digests": { "md5": "f3747119a349cf1b079429d1e2705d09", "sha256": "84c1e97a205a6bc8029aaada4b6ac8fcdda7a5de73f6c0865698aa0da448c634" }, "downloads": -1, "filename": "pycoram-0.9.1.tar.gz", "has_sig": false, "md5_digest": "f3747119a349cf1b079429d1e2705d09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 202301, "upload_time": "2014-11-10T11:26:52", "url": "https://files.pythonhosted.org/packages/ac/75/8ae39a8317712cb13fd7d8f29144e537c36a3a5e22111a9ad4eddaa78f59/pycoram-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "cbebf033dfad0bf570d6766d0c78d798", "sha256": "1ff7c4f1356b8c14cc948a6f0572b70205b6f0aaf1c4764e9ba0a9e4f34a9c57" }, "downloads": -1, "filename": "pycoram-0.9.2.tar.gz", "has_sig": false, "md5_digest": "cbebf033dfad0bf570d6766d0c78d798", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 217948, "upload_time": "2015-05-23T02:59:51", "url": "https://files.pythonhosted.org/packages/92/84/146f76db57be6edd4bfc97744fe1664a7986158555c8537b9f6c0032af89/pycoram-0.9.2.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "dee73bffe000fb3dfdeb8484b312697a", "sha256": "f0712ee865ed7b69b883cbea4b9aa3710402ab4858fe1854cc61c2e9df6354fb" }, "downloads": -1, "filename": "pycoram-0.9.3.tar.gz", "has_sig": false, "md5_digest": "dee73bffe000fb3dfdeb8484b312697a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 220241, "upload_time": "2015-06-21T17:09:36", "url": "https://files.pythonhosted.org/packages/ce/82/b45ad375a4e5d54f55b7727148fd6ec2a88cb0a8183d15a2d9aee4abe4bd/pycoram-0.9.3.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "7f17a50f2bb3a7e27c64bb1784ee88fc", "sha256": "234c2394027d994fc713a75bbf6b89c4857b5179c90020783bdabda33205c364" }, "downloads": -1, "filename": "pycoram-1.0.0.tar.gz", "has_sig": false, "md5_digest": "7f17a50f2bb3a7e27c64bb1784ee88fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41085275, "upload_time": "2015-11-05T05:29:07", "url": "https://files.pythonhosted.org/packages/b0/ca/7c5138cb5b500b7eccfa43dee568a80cd296f9e3e720dc0c483783799703/pycoram-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "f42256bc5411018e6c42dcf6734426b7", "sha256": "86806581fb14be092209779b9269bb46f515c8d6229266b2a8da3e492480f70f" }, "downloads": -1, "filename": "pycoram-1.0.1.tar.gz", "has_sig": false, "md5_digest": "f42256bc5411018e6c42dcf6734426b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41089990, "upload_time": "2015-11-06T03:47:52", "url": "https://files.pythonhosted.org/packages/62/fd/91c9f54bcb24c2520ba4bf850f7b7a68d75251981b4af3c49729c602ca22/pycoram-1.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f42256bc5411018e6c42dcf6734426b7", "sha256": "86806581fb14be092209779b9269bb46f515c8d6229266b2a8da3e492480f70f" }, "downloads": -1, "filename": "pycoram-1.0.1.tar.gz", "has_sig": false, "md5_digest": "f42256bc5411018e6c42dcf6734426b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41089990, "upload_time": "2015-11-06T03:47:52", "url": "https://files.pythonhosted.org/packages/62/fd/91c9f54bcb24c2520ba4bf850f7b7a68d75251981b4af3c49729c602ca22/pycoram-1.0.1.tar.gz" } ] }