{ "info": { "author": "Jon Dawson", "author_email": "chips@jondawson.org.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)", "Topic :: Software Development :: Code Generators", "Topic :: Software Development :: Embedded Systems" ], "description": ".. image:: https://travis-ci.org/dawsonjon/Chips-2.0.svg?branch=master\n :target: https://travis-ci.org/dawsonjon/Chips-2.0`\n\nChips - 2.0\n===========\n\n*Chips* is a high level, FPGA design tool inspired by *Python*.\n\nTry it out\n----------\n\nWhy not try the `Chips `_ web app. \n\nDesign components in C, design FPGAs in Python\n----------------------------------------------\n\nIn Chips, a design resembles a network of computers implemented in a single\nchip. A chip consists of many interconnected components operating in parallel.\nEach component acts like a computer running a C program. \n\nComponents communicate with each other sending messages across buses. The\ndesign of a chip - the components and the connections between them - is carried\nin Python. \n\nChips come in three parts:\n\n1. A Python library to build and simulate chips by connecting together digital components using high speed buses.\n\n2. A collection of ready made digital components.\n\n3. A C-to-hardware compiler to make new digital components in the C programming language.\n\nA quick example\n---------------\n\n::\n\n from chips.api.api import *\n \n #create a new chip\n chip = Chip(\"knight_rider\")\n\n #define a component in C\n scanner = Component(C_file = \"\"\"\n\n /* Knight Rider */\n int leds = output(\"leds\");\n void main(){\n unsigned shifter = 1;\n while(1){\n while(shifter != 0x80){\n fputc(shifter, leds);\n shifter <<= 1;\n wait_clocks(5000000);\n }\n while(shifter != 0x01){\n fputc(shifter, leds);\n shifter >>= 1;\n wait_clocks(5000000);\n }\n }\n }\n\n \"\"\", inline=True)\n\n #capture simulation output in Python\n scanner_output = Response(chip, \"scanner\", \"int\")\n \n #add scanner to chip and connect\n scanner(chip, inputs = {}, outputs = {\"leds\":scanner_output})\n\n #generate synthesisable verilog code\n chip.generate_verilog()\n\n #run simulation in Python\n chip.simulation_reset()\n while len(scanner_output) < 16:\n chip.simulation_step()\n\n #check the results\n print list(scanner_output)\n\n.. \n\n\nWork at a higher level of abstraction \n-------------------------------------\n\nIn Chips, the details of gates, clocks, resets, finite-state machines and\nflow-control are handled by the tool, this leaves the designer free to think\nabout the architecture and the algorithms. This has some benefits:\n\n+ Designs are simpler.\n+ Simpler designs take much less time to get working.\n+ Simpler designs are much less likely to have bugs.\n\nWith Chips the batteries *are* included \n---------------------------------------\n\nWith traditional Hardware Description Languages, there are many restrictions on\nwhat can be translated into hardware and implemented in a chip.\n\nWith Chips almost all legal code can be translated into hardware. This includes\ndivision, single and double precision IEEE floating point, maths functions,\ntrig-functions, timed waits, pseudo-random numbers and recursive function\ncalls.\n\nPython is a rich verification environment\n-----------------------------------------\n\nChips provides the ability to simulate designs natively in Python. Python is\nan excellent programming language with extensive libraries covering many\napplication domains. This makes it the perfect environment to verify a chip.\n\n`NumPy `_ , `SciPy `_ and\n`MatPlotLib `_ will be of interest to\nengineers, but that's just the `start `_ .\n\nUnder the hood\n--------------\n\nBehind the scenes, Chips uses some novel techniques to generate compact and\nefficient logic - a hybrid of software and hardware. \n\nNot only does the compiler translate the C code into CPU instructions, it also\ngenerates a customised pipelined RISC CPU on the fly. The CPU provides the\noptimal instruction set for any particular C program.\n\nBy minimising the logic required to perform each concurrent task, designers can\nreduce power and area or cost. Performance gains can be achieved by increasing\nthe number of concurrent tasks in a single device (tens in a small device to\naround a thousand or more large device).\n\nWhile the code generated by chips is compact and efficient, die hard FPGA\ndesigners will be pleased to know that they can still hand craft performance\ncritical data paths if they need to. There are even a few hand crafted\ncomponents thrown in!\n\nInstall from github\n-------------------\n\n::\n\n $ git clone --recursive https://github.com/dawsonjon/Chips-2.0.git\n $ cd Chips-2.0\n $ sudo python setup install\n\nInstall from PyPi\n-----------------\n\n::\n\n $ pip-install chips", "description_content_type": null, "docs_url": null, "download_url": "http://github.com/dawsonjon/Chips-2.0", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pyandchips.org", "keywords": "Verilog,FPGA,C,HDL,Synthesis,VHDL", "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "Chips", "package_url": "https://pypi.org/project/Chips/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/Chips/", "project_urls": { "Download": "http://github.com/dawsonjon/Chips-2.0", "Homepage": "http://pyandchips.org" }, "release_url": "https://pypi.org/project/Chips/2.1.2/", "requires_dist": null, "requires_python": null, "summary": "Design hardware with Python", "version": "2.1.2" }, "last_serial": 1871295, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "6c17287d71e0d8bcbd067a37fe6957cc", "sha256": "9768bf74e6235bafe64c48620ce5f4a2592b7e77043c6c77a61d60ab35850413" }, "downloads": -1, "filename": "Chips-0.1.linux-x86_64.exe", "has_sig": false, "md5_digest": "6c17287d71e0d8bcbd067a37fe6957cc", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 139306, "upload_time": "2011-04-29T17:57:25", "url": "https://files.pythonhosted.org/packages/6a/87/8e781b796dfdd0c271783e2304f37d8a06e01c4877a4610f5a79205c6bd8/Chips-0.1.linux-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "6a35bc9033619545ce90daea6bbe6955", "sha256": "0fe41b94cea56267ca7971d2757e05202963d98e0e51317cd322ff8c4111713d" }, "downloads": -1, "filename": "Chips-0.1.tar.gz", "has_sig": false, "md5_digest": "6a35bc9033619545ce90daea6bbe6955", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 413702, "upload_time": "2011-04-29T17:57:24", "url": "https://files.pythonhosted.org/packages/7e/d2/1104d58dcd2dbb07f8147019235df1007ea88a651f917ae6416f5d7315d6/Chips-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "afe5804fa9aa75ae283c36f2b9cbfc9b", "sha256": "1d43d79ea1efc05a2beab6b50e59daa59c8599f6ed3cde7f2b38d65510ea6083" }, "downloads": -1, "filename": "Chips-0.1.1.linux-x86_64.exe", "has_sig": false, "md5_digest": "afe5804fa9aa75ae283c36f2b9cbfc9b", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 132748, "upload_time": "2011-05-19T19:29:39", "url": "https://files.pythonhosted.org/packages/6c/30/6f43c3cec3a4b7aa1ed09d98a476372d57bb97ad76f9c87dbc2c0d014b74/Chips-0.1.1.linux-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "452a5d46648d8d4af56cb8946e5beb02", "sha256": "3b780b4b023e93587ad42923372f6d45a84902e903ed924941635b3d323a25af" }, "downloads": -1, "filename": "Chips-0.1.1.tar.gz", "has_sig": false, "md5_digest": "452a5d46648d8d4af56cb8946e5beb02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 413836, "upload_time": "2011-05-19T19:29:37", "url": "https://files.pythonhosted.org/packages/96/b5/b7e938adcc0e82d0d35ce2f78efd6f385d1bf4f4e3ed11dfe66783e98365/Chips-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "57b437dae334f3457cee60a4f3d53445", "sha256": "cb97457f807bf04276309b68b1b257ab2daa6a46559933e2dbf779351a3398c7" }, "downloads": -1, "filename": "Chips-0.1.2.linux-x86_64.exe", "has_sig": false, "md5_digest": "57b437dae334f3457cee60a4f3d53445", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 134883, "upload_time": "2011-05-27T17:49:27", "url": "https://files.pythonhosted.org/packages/92/0e/be3d91bd7d64eed8bea524aa1a9acdd314e97a4f2a8f95665148ae56649b/Chips-0.1.2.linux-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "686947a027527db2f36629ab73cb53ab", "sha256": "61766ad2d918816a54172386aac9434cc288c21bc1d02261edd9002acb29e1a2" }, "downloads": -1, "filename": "Chips-0.1.2.tar.gz", "has_sig": false, "md5_digest": "686947a027527db2f36629ab73cb53ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 416311, "upload_time": "2011-05-27T17:49:26", "url": "https://files.pythonhosted.org/packages/6e/44/025ede92788394e6de002f58a78e537395cbf5fa156896bed01ef813f42f/Chips-0.1.2.tar.gz" } ], "2.1.1": [], "2.1.2": [] }, "urls": [] }