I just installed the latest version (2017.08) on Linux and tried to build the "alternate" example. It generates an error during the synthesis - blocking and non-blocking assignments to the same variable is not allowed. I fixed that and changed the size of the ADR parameter from 18:0 to 17:0 and got a successful build.

I copied the resulting .bin file over to my MacOS system and successfully loaded it into BlackIce - "config done" displayed. It looks like it starts up and then freezes (looking over the PMOD connector the green, red and green leds are lit). I just tried using the original version from the repository and it works fine.

We initially built myStorm (and later BlackIce) as a target for IceStorm and hence haven't really tackled ICEcube, it would certainly be nice for someone to work on this. Can you take a look at the /dev/ACM0 output when you upload, it might give us a clue?

OK, I started from a newly created copy of the examples, followed your instructions and still got a synthesis error about mixing blocking and non-blocking assignments. Fixed that and it built but it still hung after loading.

Next, I cloned your GitHub repository and loaded your .bin file and it worked but the BlackIce reported "CDONE not set".

I used iceunpack to decode both .bin files and there are 260 differences between them.

Hmm, strange that you are getting quite different behaviour. Both in terms of the parsing of the Verilog, and that it results in a non working BIN for you. I can only think we've got some configuration set differently.

I checked in all the cruft that iceCube generates, perhaps see if if there is anything that stands out in my logs that is different from yours?

If you post the output from "tool->view report" as well, I'll take a look

Software, Firmware and documentation for the myStorm BlackIce-II board

Looks like electrified built for a BlackIce and I built for a BlackIce-II. I was able to change to an older .pcf file, build successfully and get a functioning .bin file.

In order to get a successful build, I had to remove "input greset" from the chip module definition - why would the presence of the reset signal cause the system to hang? Could the reset signal be stuck "on" somehow?

The .pcf file that electrified used does not include a definition for a reset signal and neither do the 2 verilog files (chip.v and alternate.v). The version that I was using from the repository I mentioned above includes a reset signal (greset) for both the top level module and the alternate module. In order to built the newer alternate module with the old .pcf file I removed the usage in the top level module.

With this change the LED attached to PMOD[24] should reflect the current status of "greset". If I build with hosts, the greset LED is off and the example runs correctly. If I build with iCEcube2. the greset LED is on and the example freezes with LED2, LED4 and LED5 lit.

Ok You need to be a little careful with the greset line as it can be used in different ways (as a user specific reset) depending on your application. It is connected to the CH340 RTS and is also connected to P1 (PMOD[1]) which goes to PMOD 1 (UART) connector. Thus it's state will likely be unpredictable with P[1] set high impedance. With this in mind the synthesis you are describing with your Verilog is somewhat ambiguous really... Try something more concrete with known states pulldown/pullup etc..

OK. Unfortunately that's way beyond my expertise at this point in time. All I can really say is that if you take the alternate example for BlackIce-II and make the following changes so that it will build in both environments:

Change all ADR[18:0] to ADR[17:0]

Change module alternate to only use non-blocking assignments

A build using yosys will work and a build using iCEcube2 will freeze. In addition, electrified's build for an original BlackIce works on a BlackIce-II but generates a "<Iceboot 0.4> CDONE not set" message.

Ok John thank you, also I need to get the examples sorted, they were just imported from the BlackIce versions and have not be checked other than a simple run using IceStorm, clearly they need some attention..