icestorm | Project IceStorm - Lattice iCE40 FPGAs Bitstream

 by   YosysHQ Python Version: Current License: ISC

kandi X-RAY | icestorm Summary

kandi X-RAY | icestorm Summary

icestorm is a Python library typically used in Embedded System applications. icestorm has no vulnerabilities, it has a Permissive License and it has medium support. However icestorm has 264 bugs and it build file is not available. You can download it from GitHub.

Project IceStorm aims at documenting the bitstream format of Lattice iCE40 FPGAs and providing simple tools for analyzing and creating bitstream files. See for more information.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              icestorm has a medium active ecosystem.
              It has 852 star(s) with 206 fork(s). There are 76 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              There are 29 open issues and 93 have been closed. On average issues are closed in 381 days. There are 12 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of icestorm is current.

            kandi-Quality Quality

              icestorm has 264 bugs (0 blocker, 0 critical, 145 major, 119 minor) and 302 code smells.

            kandi-Security Security

              icestorm has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              icestorm code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              icestorm is licensed under the ISC License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              icestorm releases are not available. You will need to build from source code and install.
              icestorm has no build file. You will be need to create the build yourself to build the component from source.
              icestorm saves you 15187 person hours of effort in developing the same functionality from scratch.
              It has 30317 lines of code, 240 functions and 70 files.
              It has high code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi has reviewed icestorm and discovered the below as its top functions. This is intended to give you an instant insight into icestorm implemented functionality, and help decide if they suit your requirements.
            • Print the details of a tile
            • Group all of the tiles in the DB
            • Return the Tile DB for the given location
            • Check if tile has a given net
            • Get lutff bits from tile
            • Return tile position
            • Convert lut to a logical expression
            • Negate an expression
            • Discards unused arguments
            • Removes an argument from lut
            • Group all available segments
            • Convert a logic expression into a lambda expression
            • Read data from a file
            • Print the iCE40 FPGA fabric
            • Test the forward network translation
            • Convert timings to C
            • Print usage information
            • Get the network information for a given detector
            • Return the tile index for the specified device
            • Read data from the device
            • Setup 0k
            • Setup empty device
            • Show differences between two tiles
            • Main entry point
            • Rewrite a celltype
            • Parse SDF string
            • Parse the NLTDB DB
            • Print a seq op
            • Setup 8k tiles
            • Setup 0k tiles
            Get all kandi verified functions for this library.

            icestorm Key Features

            No Key Features are available at this moment for icestorm.

            icestorm Examples and Code Snippets

            No Code Snippets are available at this moment for icestorm.

            Community Discussions

            QUESTION

            Why I can not copy a content of register to another one in "always" block in Verilog?
            Asked 2020-Aug-24 at 23:23

            well, I have this code, that is working perfectly:

            ...

            ANSWER

            Answered 2020-Aug-22 at 14:49

            The problem is that delay is multiply driven (driving from multiple always blocks is not allowed in synthesis) which is undefined behaviour (in this case I believe the constant '0' will be used). It should also be at least a warning.

            Source https://stackoverflow.com/questions/63536391

            QUESTION

            Verilog error handling two posedge signals in "always" block
            Asked 2020-Aug-22 at 19:59

            I have a problem with an "always" block in Verilog. First let me present the code:

            ...

            ANSWER

            Answered 2020-Aug-22 at 19:59

            I guess you can use separate counters for each clk_1khz and signal. Then just add them:

            Source https://stackoverflow.com/questions/63535525

            QUESTION

            Caused by: java.net.ConnectException: Connection refused: no further information
            Asked 2020-Apr-28 at 12:38

            When I run this programm it show this mistake. Dose it because i donot run the service? How to writ config files for the following code?

            ...

            ANSWER

            Answered 2020-Apr-28 at 12:38

            You need to run the IceStorm service to be able to connect to it, IceStorm/TopicManager is an object hosted by IceStorm service.

            if you want to define the topic manager using a property you should use communicator.propertyToProxy instead of communicator.stringToProxy and define the proxy in the configuration file used to initialize the configuration.

            Source https://stackoverflow.com/questions/61451725

            QUESTION

            Multiple conflicting drivers for reg assigned in only one always block
            Asked 2019-Oct-01 at 14:41

            I'm working on a simple video signal timing module in Verilog, as a learning project. I've understood from earlier study that each reg should be assigned from only one always block, so I arranged my system into two state machine blocks and then one block for populating the output registers, as shown below:

            ...

            ANSWER

            Answered 2019-Sep-30 at 10:17

            This pattern of asynchronous resets is not permitted by the IEEE synthesis standard (1364.1). Only an if statement can be used thus:

            Source https://stackoverflow.com/questions/58160812

            QUESTION

            How do I compile Forth code for the J1 CPU?
            Asked 2019-Sep-18 at 10:59

            I am interested in using the J1 CPU in an FPGA project.

            I understand that to use the J1 CPU itself, I need to synthesise (etc.) the Verilog code, and load the bitstream into my FPGA. I can do this using IceStorm, or the FPGA vendor's own tools. No problems.

            I don't understand how to compile a Forth program which can be uploaded to the FPGA's memory and executed.

            I am aware of SwapForth, which I believe is a Forth interpreter which runs on the J1 CPU itself. This is not what I want. I would like to be able to compile Forth code on my PC, into J1 machine code, so that I can later upload it into the FPGA's RAM and execute it natively.

            Does such a tool exist?

            ...

            ANSWER

            Answered 2018-Nov-18 at 01:52

            I am aware of SwapForth, which I believe is a Forth interpreter which runs on the J1 CPU itself

            You are wrong here. SwapForth is an interactive compiler, not the interpreter.

            Maybe it does more than you need - handling dictionaries, accepting new code from the UART (after all, it's a complete Forth system), which you might not need at all, but that doesn't make it an interpreter.

            To compile your own code, run gforth cross.fs basewords.fs your_prog.fs. Note that cross.fs is quite minimalistic, and doesn't even provide variable/value words. But you can easily add those (and many more) directly to cross.fs.

            Source https://stackoverflow.com/questions/53233998

            QUESTION

            How to run post-synthesis simulation with the IceStorm iCE40 FPGA flow
            Asked 2017-Aug-01 at 12:18

            It is good design practice to not only verify Verilog designs with regular pre-synthesis (behavioral) simulation, but also using post-synthesis simulation. This is practically mandatory when debugging mismatches between simulation and hardware. How can this be achieved with the open source IceStorm flow for iCE40 FPGAs?

            ...

            ANSWER

            Answered 2017-Aug-01 at 12:18

            See https://github.com/cliffordwolf/icestorm/tree/master/examples/icestick for an example. The "rs232demo" project comes with a test bench and the Makefile contains rules for pre- and post-synthesis simulation:

            Source https://stackoverflow.com/questions/45172834

            QUESTION

            How to make a module/java class publish A and subscribe for B simultaneously using zeroC IceStorm?
            Asked 2017-Apr-27 at 04:06

            I have tried the IceStorm Clock demo app approach, but once it enters run(), it just stays there

            ...

            ANSWER

            Answered 2017-Apr-25 at 16:07

            Nothing prevents you from subscribing to an Ice topic and retrieving a topic proxy to another one.

            Source https://stackoverflow.com/questions/43205297

            QUESTION

            Correspondence between iCE40 I/O blocks and package pins
            Asked 2017-Feb-28 at 16:06

            Is the correspondence between the I/O blocks of an iCE40 FPGA and the pins of the package they drive documented somewhere?

            The I/O tile documentation of Project IceStorm gives a list of I/O blocks, and for each block where its IE and REN bits are located in the bitstream. A few blocks are missing from this list:

            ...

            ANSWER

            Answered 2017-Feb-28 at 16:06

            Does that mean that these blocks don't exist?

            It means those blocks are not connected to actual IO pins. I would assume they still exist on the silicon. But since I've never looked at the actual die, I have no way of knowing.

            However, I'd like to cross-check this information if possible.

            See the .pins tq144 section of chipdb-1k.txt. For example:

            Source https://stackoverflow.com/questions/42421906

            QUESTION

            Analyzing bitstreams using Icestorm
            Asked 2017-Feb-28 at 16:02

            I'm trying to understand the bitstreams generated by Yosys/arachne-pnr as described on http://www.clifford.at/icestorm/:

            The recommended approach for learning how to use this documentation is to synthesize very simple circuits using Yosys and Arachne-pnr, run the icestorm tool icebox_explain on the resulting bitstream files, and analyze the results using the HTML export of the database mentioned above. icebox_vlog can be used to convert the bitstream to Verilog. The output file of this tool will also outline the signal paths in comments added to the generated Verilog code.

            In order to understand the effect a change in the bitstream has, it would be helpful if I could change the .ex file and convert it back to an ASCII bitstream (instead of having to identify the bit manually) for uploading to the FPGA. Is there a way to do so?

            I'm a bit concerned about damaging the FPGA with an invalid bitstream. Are there situations where this is known to happen? Is there a way to simulate a bitstream?

            Also, it would be helpful to have some kind of “higher-level” explanation format which e.g. shows the IE/REN bits on the I/O blocks to which they correspond, not the one on which they have to be set in the bitstream. Is there such a format?

            I know of the possibility to generate an equivalent Verilog circuit, but the problem with this is that it doesn't usually allow me a lossless round-trip back into a bitstream. Is there a way to generate an equivalent Verilog circuit which (e.g. by instantiating the blocks explicitly) yields the exact same bitstream when processed with Yosys/arachne-pnr?

            ...

            ANSWER

            Answered 2017-Feb-28 at 16:02

            I'm a bit concerned about damaging the FPGA with an invalid bitstream. Are there situations where this is known to happen? Is there a way to simulate a bitstream?

            I have not damaged any FPGA so far. (I have, however, managed to damage the serial flash on one icestick after running some test that reprogrammed it in a loop.)

            But this does not mean that you cannot damage your FPGA by programming it with an invalid bitstream. You could theoretically configure the FPGA in a way that produces a driver-driver conflict. I don't know how well the hardware deals with something like that. I have not run any experiments to find out..

            Also, it would be helpful to have some kind of “higher-level” explanation format which e.g. shows the IE/REN bits on the I/O blocks to which they correspond, not the one on which they have to be set in the bitstream. Is there such a format?

            icebox_vlog produces a higher-level output. But it does not output things like I/O blocks, so it might be too high-level for your needs.

            I know of the possibility to generate an equivalent Verilog circuit, but the problem with this is that it doesn't usually allow me a lossless round-trip back into a bitstream. Is there a way to generate an equivalent Verilog circuit which (e.g. by instantiating the blocks explicitly) yields the exact same bitstream when processed with Yosys/arachne-pnr?

            Not at the moment. But it should not be too hard to extend icebox_vlog to provide this functionality. So if you really need that, it might be something within your reach to add yourself.

            Source https://stackoverflow.com/questions/42419769

            QUESTION

            programming iceStorm binary file to which address?
            Asked 2017-Jan-24 at 18:17

            I'm trying the very first example supplied here: http://www.clifford.at/icestorm/

            I'm trying to program the iCEblink40-HX1K board in windows using the digilent adept program https://reference.digilentinc.com/reference/software/adept/start?redirect=1#software_downloads

            When I'm starting up Adept, the program says:

            Loading board information... Warning: Could not find specific board information Default information loaded.

            When I'm selecting the example.bin program from iCEstorm, the adept program says "Invalid address. Address must be entered as Binary, DEcimal, or Hexadecimal value.".

            So I just entered zero, click on "file>>Device" to upload the binary file, and the program says:

            Successfully read 32220 bytes from F:\me\fpga\example.bin.

            However, the "blinking lights" demo that already came with the board just keeps running. Nothing seems to have changed.

            I'm figuring that either the example.bin doesn't contain the correct address in the file, or that the lack of board info for the digilent adept program is the cause of the issue.

            In any case, would anybody know what address it could be?

            ...

            ANSWER

            Answered 2017-Jan-13 at 10:17

            I don't have the solution yet but iCE40ProgrammingandConfiguration.pdf http://www.latticesemi.com/view_document?document_id=46502 on page 12 says:

            Upon initial power-up, the start address is always 0x00_0000. After waiting eight additional clock cycles, the iCE40 device begins reading serial data from the SPI PROM.

            So it looks like programming the .bin file from 0 should have worked.

            I've tried programming with the iceutil programmer that comes with icecube2, as described in iCEblink40HX1KEvaluationKitUsersGuide.pdf http://www.latticesemi.com/view_document?document_id=45922

            FPGA Bitstream Configuration File The required bitstream image is part of the iCEcube2 project. Multiple versions of the bitstream are stored in the _Implmnt\sbt\outputs\bitmap directory. The raw hexadecimal version of the bitstream is called _bitmap.hex. The alternate format of the same information is an Intel hexadecimal file called _bitmap_int.hex. Raw Hexadecimal Command Example /iceutil -d iCE40 -res -cr -m M25P10A -fh -w _bitmap.hex Intel Hexadecimal Command Example /iceutil -d iCE40 -res -cr -m M25P10A -fi -w _bitmap_int.hex

            I presume that my file should be programmed as a binary file, using -fb

            Source https://stackoverflow.com/questions/41610956

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install icestorm

            You can download it from GitHub.
            You can use icestorm like any standard Python library. You will need to make sure that you have a development environment consisting of a Python distribution including header files, a compiler, pip, and git installed. Make sure that your pip, setuptools, and wheel are up to date. When using pip it is generally recommended to install packages in a virtual environment to avoid changes to the system.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/YosysHQ/icestorm.git

          • CLI

            gh repo clone YosysHQ/icestorm

          • sshUrl

            git@github.com:YosysHQ/icestorm.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link