My FPGA notes

(Parent) New 20Sep2019, more text 11Dec2019 in work WordPress test = 1

In this note I will try to find out what might be in FPGA design for me. And if so, how. (Next note)

Fold handling

This blog note uses the Collapse-O-Matic WordPress plugin to handle text folding. In addition to expanding and closing them individually you may here:

Expand All
Collapse All

Intros

1st investigation: myStorm?

A year ago a friend told me don’t think about Xilinx because it is too expensive, and don’t use their vendor tools because they are bloated and slow. And he continued, have a look at myStorm Ice40 instead. I guess he simply stated that we were not in Xilinx’s audience. Finally, in comparison to Altera FPGAs the Ice40 is simpler and less powerful, but has the huge advantage of support by the opensource Yosys tool.

I therefore googled myStorm Ice40 and discovered a page that had been updated only 18 months ago (Feb2018) [2]. There, Folknology talks about BlackIce and the latest incarnation myStorm BlackIce II. I have no problem using old systems (old?), but I would still like something to be happening now, simply because I couldn’t do it alone.

(Altera is now a subsidiary of Intel.)

Aside: retrospective

Now? Didn’t I take an exam in these matters once? VLSI konstruksjon og hjelpemidler (in Norwegian) or rather VLSI design and tools. At NTH, 8 years after I graduated. (And after 40+ years in the industry I now, as retired, I am lucky enough to do some work for NTNU, here). The course was in 1983 (nineteen eighty three). Yes, the word VLSI had been invented then. The course book was Principles of CMOS VLSI Design: A Systems Perspective by N. Weste and Kamram Eshraghian [3] and we learned about Spice. Plus, I wrongly recollected: also some of the Verilog hardware description language (HDL). This was at a time when Autronica (the company I always worked for) had two VLSI chips designed for them. An address unit and a detector unit for their first addressable smoke detector (as addressable a first, even worldwide). These chips were used for many years. As some guys at work did the specification and testing, the VLSI implementation was outsourced to SINTEF in Trondheim. I also recollect. The original colour paper printing that they used to show to people resides by me, at least for the time being. At some moment in time the alternative was the dustbin. In the nineties I did some designs mostly using the ABEL HDL (where I had included test vectors) for some stray logic and bus connections for transputer and TMS320 DSP systems. In 1995 we updated an ABEL 1990 version into 6.1 at a price of 11000 NOK (around 1000 GBP) without blinking an eye. In all of the systems where we used this technology we were running occam, initially natively and later through the very functional SPOC occam-to-C translator. By not only digging in files, but also in leftover boxes I found the boards. I used (1) Atmel ATV750L Programmable Logic Device (PLD) with 20 sum terms, (2) AMDs PALCE22V10 Programmable Array Logic (PAL) with 10 macro cells and an AND array of 144*32 and (3) Lattice ispLSI2032E with 1000 PLD gates – with more than one on each board. They weren’t that big. I always liked it. But alas, that was all. The years passed and I did other things, mostly concurrent SW and schedulers. And nobody else at work did any VLSI, FPGA or PAL designs.

But doing FPGA has always been a dream. Plus, some time getting a flavour of Verilog. Even getting a flavour my now down-the-line Xilinx and ALTERA – to me like remote stars since the early eighties.

2nd investigation: BlackIce Mx?

The myStorm page’s 18 months ageing all of a sudden was less of a problem when I discovered (but I can’t trace how) the myStorm IceCore board at GitHub [5] – also by Folknology. Github contains the IceCore Ice40 HX based modular core. The silk printing on the IceCore board says Copyright 2018, Alan Wood, @folknology, www.mystorm.uk. A name revealed. But I can not find any trace of this board at the silk print’s url. At the Twitter account he points to Folknology Labs [4] (that also mentions Folknology Club) – where the About takes me to a Tindie store that seems to be active now [6]. The BlackIce Mx is sold there, with the text myStorm BlackIce Mx is our 5th generation FPGA development board. In [10] I read that BlackIce Mx composition is based around a carrier and Core module, the carrier in this case is MixMod based and the initial bundled core is the new IceCore (The fastest Ice40 – HX). The silk printing on the BlackIce Mx board simply says Copyright 2018, Alan Wood.

“BlackIce Mx” = (IceCore + BlackIce Mx) @ BlackEdge

The above formula is not as recursive as it looks:

@folknology writes at myStorm forum (here) that BlackIce Mx is composed of a core (IceCore) and a carrier (BlackIce Mx [21]), these were built and designed to the BlackEdge standard. BTW ‘BlackIce Mx’ is commonly used to refer to the combination of these parts together which is a little confusing.. And @lawrie adds and BlackEdge is sometimes used to refer to the combination that includes the future ECP5 core, which is also confusing.

Also have a look at the BlackIce wiki [17] and BlackIce Mx eBook [18]. Plus the IceCore connections chapter (below).

3rd investigation: inside

I think it’s the Tindie store that has the best background info. By visiting several of the pages there I can read the very interesting story of how Al Wood et al even have been in China to lead the myStorm project for production ready boards. Impressing. Impressing also: the open source HW.

Since I am not in scope to understand the number of PIOs and logic cells, and since I haven’t even figured out what to make, I will concentrate on some other matters. Listing up:

  • myStorm “BlackIce Mx” (named as such, containing the real BlackIce Mx plus the core BlackIce board) [10], residing on its BlackIce core board:
    • STM32F730 216MHz, 256KB Ram, 64KB Flash =
      Arm® Cortex®-M7 core (with floating point unit) [8]
    • ICE40HX4K FPGA 144 pins [9]

At first I mistook this for a ESP32 processor since I saw the 32 in there and did not think that any Arm chip naming included that. But no, this is an Arm proper. But I have seen both 200 and 216 MHz mentioned, not that it matters to me (right now?).

How to develop with BlackIce boards

I am not certain how the BlackIce boards are developed. After having tried to find the very many loose ends I think I see some alternatives. This is after the necessary Verilog and Yosys SW is runnable in some way.

  1. Single-line command based in Terminal
  2. An editor alone (like the Atom)
  3. Apio from the command line
  4. An editor with a plug-in (Atom with the Apio plugin)
  5. Icestudio visual editor

See myStorm forum Ads blackice MX on icestudio.

Download and building the tools

This is some of what I ended up with after these installs (even if NextPNR failed) (top and bottom application just to show the context):

Fig.1 – Screen cut of macOS Applications folder with IceStorm code installed

Enable XCODE command line tools log

Can I run the development tool on my Mac? I am in the process of selling my two USB scopes because the Mac support was lousy. I don’t want to be trapped again.

From [5]: As makers, we fell in love with IceStorm opensource Verilog toolchain back in 2015 and wanted to create a best of class independent opensource hardware development board to fully use the IceStorm FPGA toolkit including Clifford Wolf’s amazing YOSYS [7]

Now, the IceCore getting started page [12] shows how this development system may be installed on Macs. It is so updated that it even writes Installation prerequisites for macOS. OS X changed to macOS with Sierra (10.12) in 2016. This makes me somewhat relieved, even if a MyStorm page from 2018 did not..

I am running macOS High Sierra (10.13.6), thus being two revision behind Catalina 10.15 (19Nov2019).

Here is what I need to complete, according to [12].

    1. Install Homebrew

      Homebrew install log

    2. Enable XCODE command line tools

      bash-3.2$ xcode-select --install
      xcode-select: error: command line tools are already installed, use "Software Update" to install updates
    3. Download libftdi0, python3 and gawk

      Download libftdi0, python3 and gawk install log

    4. Download and install IceStorm

      Download and install IceStorm install log

    5. Download and install Arachne-pnr

      Update 9Oct2019: I have learned that “for small projects, Arachne-pnr is fine, but it’s no longer under active development, and it doesn’t support more complicated things like multiple clock domains”. That’s why NextPNR is nice to have. I did this install twice since I forgot to start in the same directory as I started above. After this I deleted the /icestorm/arachne-pnr directory and ended up with /icestorm and /arachne-pnr in the same root:Download and install Arachne-pnr install log

    6. FAILED: Optional Installing NextPNR place&route tool

      This failed since it not find any cmake. I did finr a cmake.pro in a Qt directory I had, but I did not do anything to try to straiten this out. I will query about this anyhow.Update 9Oct2019: I have learned that this problem has been acknowledged by David Shah, the author of NextPNR.

      • First trial, but no cmake

        
        mymachine:IceStorm teig$ ls
        arachne-pnr	icestorm
        mymachine:IceStorm teig$ git clone https://github.com/YosysHQ/nextpnr nextpnr
        Cloning into 'nextpnr'...
        remote: Enumerating objects: 14351, done.
        remote: Total 14351 (delta 0), reused 0 (delta 0), pack-reused 14351
        Receiving objects: 100% (14351/14351), 5.70 MiB | 2.91 MiB/s, done.
        Resolving deltas: 100% (10526/10526), done.
        Checking connectivity... done.
        mymachine:IceStorm teig$ cd nextpnr
        mymachine:nextpnr teig$ cmake -DARCH=ice40 -DCMAKE_INSTALL_PREFIX=/usr/local .
        -bash: cmake: command not found
        
      • Second trial, but no Boost

        As suggested in the myStorm forum, by @lawrie (here) why not just try brew install cmake? Good idea:

        The complete log is here 194_2019_11_21_cmake_and_nextpnr_install_log_failed.txt
        It contains three logs:

        ===1 #FILE Installing cmake ===
        ===2 #FILE Installing nextpnr ===
        ===3 #FILE CMakeOutput.log ===

        I think the problem is that Could NOT find Boost. How is that installed?

      • Installing Boost

        I followed the recipe on pyimagesearch, see Installing boost and boost-python on OSX with Homebrew. The log is at 194_2019_12_10_brew_install_boost_log.txt

      • Trying to install Boost again, not needed

        mymachine:bin teig$ brew install cmake
        Warning: cmake 3.15.5 is already installed and up-to-date
        To reinstall 3.15.5, run `brew reinstall cmake`
    7. Ready-built nextpnr-ice40

      Update 11Dec2019: I have received a prebuilt macOS nextpnr-ice40 version (240 MB) from a user at the myStorm forum (AndyCap/Andrew Capon – thanks  lot!-). He also sent me the magic commands to have it run, so that all prerequisites would become installed:

      brew install boost boost-python3 qt5 eigen
      

      The log is at 194_2019_12_11_A_install_nextpnr_ice40_runs.txt and it runs!

      It reports that  “qt is keg-only”  which means that “the formula is installed only into the Cellar; it is not linked into /usr/local. This means most tools will not find it. We don’t do this for stupid reasons. You can still link in the formula if you need to with brew link.” (FAQ here). I’ll ask my man whether I need to make it available all over (answer: not needed).

      And then it’s a good idea to move the nextpnr-ice40 binary to /usr/local/bin, which should also be in the path. The last line would then also make sense (./ not needed):

      sudo cp ./nextpnr-ice40 /usr/local/bin
      echo $PATH
      nextpnr-ice40
      

      In /usr/local/bin there would also be several other relevant binaries by now: ice*, yosys* and arachne-pnr. I don’t know what all are for, but there are several.

      However Python still says 2.7.16 (so pip and python updates is not closed).

    8. Downloading and installing Yosys install log

      Downloading and installing Yosys

    Result of downloads and installs

    As of 29Sep2019. An edited list:

    Root: /Applications/IceStorm/ subdirectories:
    drwxr-xr-x  arachne-pnr/  33.3MB
    drwxr-xr-x  icestorm/    128.3MB
    drwxr-xr-x  nextpnr/      20.0MB NOT SUCCESSFUL cmake
    drwxr-xr-x  yosys/       710.7MB
    

Next with installs etc.

I will now take this to the forum to get som help on cmake [11]. Since nextpnr was optional I guess it’s kind of ok at the moment.

At the moment I have two IceCore boards! (19Nov2019)

Finally there is a tutorial that I would look forwards to try. Then later, perhaps, upload the design [12].

Not building from sources using apio and modules instead

According to response by Elminster on my first myStorm forum posting (20Oct2019) this is possible. I will try to do it and document it here.

Atom editor

A hint from Elminster suggested this editor. It arrived as a finished Atom.app when downloaded from https://atom.io. Up to now I have been programming for the XMOS processors in XC and I have been using the xTIMEcomposer IDE which is Eclipse based. I have of course been missing real folding. I may miss it with Atom too. It supports “folding” all right, as did the Eclipse based. I will wait and see. I learn from myStorm forum that there is “an apio add on for Atom editor”.

However, @folknology says in myStorm forum (here) that “Be careful with the Atom based IDE, many have experienced issues with the install on different OS’s (things may have changed). Atom/IDE support is probably beyond the scope of this thread, maybe even our forum!”

apio

  • pip is a de facto standard package-management system used to install and manage software packages written in Python [Wikipedia]
  • apio is an open source ecosystem for open FPGA boards [16]

The install log is at pip install -U apio log

So now I have collected packages: click, semantic-version, urllib3, certifi, chardet, idna, requests, pyjwt, colorama, pyserial, apio installed. Where does this take me?

pip and python updates

Since I had got a warning that Python 2.7.6 was soon to be obsoleted I downloaded (from here) and installed 3.8.0, and did as I was told and ran the Install Certificates.command and Update Shell Profile.command. I got a

Congratulations! Python 3.8.0 for macOS 10.9 or later was successfully installed.

But when I did a python --version after this I still got Python 2.7.16. Even after I deleted the /Applications/MacPorts/Python 2.7 and /Applications/MacPorts/Python 3.6 directories and a following machine restart. (Update: I see here that deleteing them was wrong, I have now undone the deletes.)

The Python he Install Certificates.command complained that pip was updated. So I did as it told me: pip install --upgrade pip which gave me 19.3.1

I see that I have loads of Python directories. There even is a /Applications/IceStorm/yosys/share/python3

Can I just delete remaining Python directories (those that reside inside other projects and don’t seem like a concrete install)? How do I clean up the machine so that a Terminal window will see 3.8.0?

I experimented with the below but still got python --version Python 2.7.16

brew install python3
brew upgrade python
brew link python
brew link --overwrite python

11Dec2019: At the moment I am giving up on macOS and Python 3.7 or 3.8. I have other things to do before Christmas! But still nextpnr-ice40 runs! See above

Icestudio

I see on Apio’s page that it is used by Icestudio. Icestudio is a “visual editor for open FPGA boards. Built on top of the Icestorm project using Apio.” It’s for Linux, Mac and Windows. I think it’s written in Python and Node.js.

Aside: The Monk book [13] uses the Xilinx ISE. The book says there are Linux and Windows versions of ISE, but I can only find Windows10 and version 14.7. However, for newer designs Xilinx now recommends Vivado Design Suite – HLx Editions . There too, I can only find Windows versions. So much as I would not want to run my Windows 10 in the Parallels Desktop VM version 2019.1. I worked with Windows at work all these years (and I liked it), but now It’s macOS (Mac OS) for me if I have to choose.

However, Icestudio list BlackIce and BlackIce II as supported, not BlackIce Mx. This is queried about at the myStorm forum, see Ads blackice MX on icestudio. It’s almost there.

However, I also read in that thread by @lawrie that “Most of the projects I work on are things like retro computers, soft processors, SoCs, oscilloscopes, logic analysers, etc., and they are too complex to be done with a visual editor.”

What to implement

Have a look in My IceCore notes.

Comments

I have mailed with several friends about this. I will try to summarise some here.

Comment 1 - Uwe Mielke (03-Oct-2019)

Oh, for your FPGA notes you have chosen a “very special” board and tool chain!

Lattice is a FPGA niche vendor, especially for low power and low cost applications. For comparison you may have a look at FPGA vendor Microsemi as well (former Actel – now owned by Microchip) and e.g. their “IGLOO” FPGA-family. Both vendors have low-end to mid-range FPGAs, e.g. Lattice up to 150k LUTs (EPC3) and Microsemi up to 500K LUTs (PolarFire).

  • iCE40HX4K has limited 4K LUT capacity… no way to squeeze a larger µController into the FPGA, but for that reason the STM32 ARM is on the FPGA board
  • iCE40 family seems to be good for smaller hardware projects to do (sensor) data pre-processing

Xilinx is my favourite due to the availability of powerful educational FPGA boards for general purpose use, e.g. see their latest version(s) of Arty. 35-100K LUTs are enough for a quite big 32bit/64bit CPU + peripherals, like e.g. my T42 Transputer-in-FPGA (here), MIPSfpga, RISC-V, e.t.c. … pls see Arty A7: https://store.digilentinc.com/arty-a7-artix-7-fpga-development-board-for-makers-and-hobbyists/. If you like ARM there is a similar Arty Z7: https://store.digilentinc.com/arty-z7-apsoc-zynq-7000-development-board-for-makers-and-hobbyists/. And … yes- Xilinx (ISE/Vivado) software has bugs and difficulties (as I was told from the better insiders) … may be like any software. (Sorry, I don’t know if ISE-14.7 or Vivado 2018/2019 versions available for Linux will run on a MAC).

VHDL is my hardware language of choice due to its clear (extensive declaration) structure. I’m using only the synthesizable part of the syntax. For (simple) VHDL testbench creation I’m using available (Xilinx) templates, some scripting and as simulator http://ghdl.free.fr (+ waveform viewer http://gtkwave.sourceforge.net/). Maybe in future I will use predefined modules like OSVVM: see https://www.doulos.com/knowhow/vhdl_designers_guide/OSVVM/ and https://github.com/OSVVM/OSVVM/. TUD’s POC-Library https://github.com/VLSI-EDA/PoC/ is using PowerShell & Python to “automate” their “design+verification-flow”.

VERILOG is out of my knowledge and scope. However, it is important in industry, especially for testbench creation, due to its software-like constructs. VHDL has not … sorry, had not (!) that convenience for testbenches in the past. But I’ve heard about such VHDL language changes implemented in the latest revision of the standard 🙂 You may find some info & training here: https://vhdlwhiz.com/vhdl-2019/ .

P.S.: as I was told … VERILOG needs half the code size as VHDL – but allows twice as much errors in writing code! 😉

The open source EDA tool environment was growing step by step over the years, however slowly, may be because of the complexity of the tools. Good quality is there, e.g. GHDL – written in ADA – with excellent support.

Best regards,
Uwe


Remark (Øyvind): I will study your references in depth and make some purchasing decision later on! Also, whether the free(?) tools you mention run on macOS. On the VHDL Wikipedia article (below) I see that non-synthesizable code consists of simulation-only constructs, like delay and looping statements. As having used transputers and occam in the nineties at work I am really impressed by your Transputer-in-FPGA project – I guess it has inspired me to look in the FPGA direction! Thanks a lot, Uwe! (08-Oct-2019)

Comment 2 - RedPitaya

Oct2019. Mutually agreed upon summary of some mails with me, translated from Norwegian:

  1. Observe that there is little that reminds about “high level” or object orientation in neither Verilog nor VHDL
  2. I mostly have used the RTL part of VHDL and then a little “up” when writing test-benches
  3. Have a look at the comparison of Verilog and VHDL here: (I put it at [15]). There it is claimed that Verilog started for ASIC design while VHDL was for FPGA
  4. I don’t know BlackIce Mx, but I see it contains an FPGA and an ARM 32-bit controller. Something à la Xilinx’s Zynq-7000 series (in Arty Z7)
  5. I would think that the Red Pitaya starter kit (a STEM board) would be fine intro. See https://www.redpitaya.com/p1/stemlab-125-10-starter-kit. There are recipes of how to use it as an oscilloscope, signal generator, spectrum analyzer and bode analyzer – for free. It is also based on open source code. There also is the Jupyter notebooks opening to the Python world

Comment 3 - SystemVerilog

Oct2019. I hear from one of the larger local design houses that they use SystemVerilog for all their designs. I am not certain whether the Verilog used for Ice40 is the base Verilog standard IEEE 1364-2005 or the SystemVerilog that picked up Verilog on the way, now IEEE standard 1800-2017.

Comment 4 - ECP5

Oct2019. Mutually agreed upon summary of some mails with me:

    1. To meet some of the users of the Ice40 there is a conference. See ORConf: The open source digital design conference at https://orconf.org
    2. I have a BlackIce Mx but haven’t had much time to do anything with it so far. My experience is with the earlier BlackIce boards which were very good. In the past I’ve used Altera FPGAs; in comparison the Ice40 is simpler and less powerful, but has the huge advantage of support by the opensource yosys tool
    3. Next time I need to build something that won’t fit on an Ice40, I will still want to develop and test subcomponents on Ice40 using yosys, and only move to Altera or Xilinx at the last possible stage
    4. The open source tools are still evolving. There’s a bigger Lattice chip, the ECP5, which is becoming usable with yosys and nextpnr (and there will probably be an ECP5 MyStorm board one day). And I think there are people working at reverse-engineering Xilinx chips so there may be yosys support for those too … but when, I can’t guess
    5. Would it be possible to compile (is that the word?) with the “Ice40 toolset” to arty-z7? The answer was “Not yet, sorry”

Scratchpad 1

  1. 10Oct2019: I tried to create a myStorm forum account, but I never saw the mail feedbacks to acknowledge it. In no mail folder of any type. I tried several times. I need to try again tomorrow. After getting some help I am now up and running as Aclassifier
  2. Oct2019: But I found Verilog code from Simon Monk’s book: Programming FPGAs (by @lawrie) on the forum and immediately purchased the book Programming FPGAs: Getting Started with Verilog [13]. The forum post also pointed to a page where “someone had already converted a lot of examples to run on BlackIce” [14]. I can’t wait to get started! I have now received this book and if this isn’t a good start nothing is. I guess, since it’s from 2017 there is nothing in it about the BlackIce product range. The book mentions the below boards (or I may have found newer versions):
    1. Elbert 2. Contains a Xilinx Spartan 3A FPGA and is very cheap. From Numato
    2. Mojo. Contains a Xilinx Spartan 6 XC6SLX9 FPGA plus an Atmel ATmega32U4 processor. From Embeddedmicro
    3. Papilio. Contains a Xilinx Spartan 6 LX9 FPGA and an Atmel ATmega32U4 processor. From Gadget Factory
    4. Other boards mentioned: icoBOARD, Mimas V2
  3. myStorm people’s “yosys syntax” term – is it idiomatic for “Verilog syntax”? – is described as supporting Verilog-2005 which it supports “a large subset of” [7.1]. In the fantastic Yosys Manual (no date or version info in it) I find that:
    1. “Yosys can synthesize a large subset of Verilog 2005” (p28) and “The most important challenge is compliance with the HDL standards in question (in case of Verilog the IEEE Standards 1364.1-2002 and 1364-2005)”  in the Standards Compliance chapter (p20).
    2. If I search for SystemVerilog in the manual I find no discussion of this, but I find these spread lines, like “Only a small subset of SystemVerilog is supported” and “Full SystemVerilog support is only available via Verific.”
    3. So what of 2005 is not supported an what og SystemVerilog is perhaps something that will come to me in due course

IceCore connections

I guess it’s all in this myStorm thread by @lawrieIceCore connections. It has these chapters:

  • BlackEdge
  • Mixmods (also see the two next chapters below)
  • SPI connections
  • I2C connections
  • LEDs and buttons
  • SWD pins
  • UART pins
  • HDMI connector
  • SDRAM
  • The RPi header

Also see a picture etc. of what I received at My IceCore notes (Unpacking).

Pmod Interface Specification

Digilent has defined (therefore first letter capitalised in the heading of this chapter) a standard for FPGA I/O connectivity:

The Digilent Pmod interface is used to connect low frequency, low I/O pin count peripheral modules to host controller boards. There are six-pin and twelve-pin versions of the interface defined. The six-pin version provides four digital I/O signal pins, one power pin and one ground pin. The twelve-pin version provides eight I/O signal pins, two power pins and two ground pins. The signals of the twelve-pin version are arranged so that it provides two of the six-pin interfaces stacked. [20]

Power is 3.3V. The FPGA community seems to use this a lot. The BlackIce Mx carrier board is no exception [21].

A typical Pmod board is Pmod 8LD: Eight High-brightness LEDs from Digilent (diagram here).

MixMods interface specification

MixMods has been defined by Alan Wood. He writes in the proposing document that

I have a none Pmod based carrier design (more later) aimed at more robust forms of expansion for robotics, automation and industrial applications, but it would be good to build on existing Pmods for general purpose development. [23]

In summary:

  1. Observe the “BlackIce Mx” = (IceCore + BlackIce Mx) @ BlackEdge chapter (above)
  2. Pinning, see BlackIceMx carrier/connection board, [21]
  3. MixMods is based on the BlackEdge standard, [22]
  4. Individual Pmods (12 single or 6 double). On BlackIceMx sockets MX1, MX2 and MX3[24]
  5. Some extra pins, these are the “mixed” pins. On BlackIceMx sockets COM/DBG and in between (non Pmod pins) on  MX1, MX2 and MX3
  6. 5.0V power is also taken out on all BlackIceMx sockets if you solder across a jumper (default is not connected)

(Aside: I have queried about this at MixMods defined)

Use of third party designs

I need to find out about this. I have a feeling that both VHDL and Verilog reuse is by means of true source files. Like with the free Arm Cortex-M0 and M3 cores for Xilinx FPGAs project (2018, start here – an Arm/Xilinx shared effort) they seem to talk more about licences and soft IP, but also about source code and precompiled/preplaced libraries. But then I would not know if that is about the tools or the Arm designs. And distribution of netlists I know nothing about. So, for the Arduino, Raspberry Pi maker market I guess there’s source code in VHDL, Verilog or SystemVerlog that are distributed?

I asked Arm about this, and they answered the following. In short, the deliverable is “soft IP”:

The actual deliverable for such Design start FPGA requests for Arm Cortex M1 and Cortex M3 processors would be soft IP (proposed system with IP protection) that’s publicly available for developers to try our processor cores (not intended for commercial purposes). Combining the performance of a hard CPU with the flexibility of a soft CPU and programmable logic on Xilinx Zynq.

myStorm forum

Newest on the bottom. I am only listing those that I have started:

  1. Can Yosys etc. run on macOS Catalina which is 64-bit only? – 20Oct2019
  2. Using an IDE for BlackIce Mx development (on Mac) – 23Oct2019
  3. MixMods defined – 8Nov2019
  4. Continues here

Some other boards

iCEBreaker

There also is this crowdfunded project (on CrowdSupply) called iCEBreaker [19]. It would even have a Pmod driver board for a 64*64 (64×64) LED matrix display. (This was pointed to from this post at the myStorm forum). On 6Nov2019 all these products are on pre-order only.

Pano logic

I was pointed to this by a friend in Nov2019. I think this is a summary:

Pano logic (Wikipedia) was a company that produced thin clients based on FPGAs from Xilinx, containing no CPU. The company shut down in 2012, so http://www.panologic.com is dead. Since then the technology has been reverse engineered (github by twj42 and github by tomverbeure, Tom Verbeure) so that it’s now possible to buy boards with this technology. There also is an overview on Hackaday (here). Now another company Pano logic (here) sell what they call Zero Client without any CPU. However, that page does not seem to have been updated since 2012, so I don’t know.

I just put this up for reference. I guess it would be very fun for those who can find a board at eBay (“Pano Logic G2 PCBs with Xilinx Spartan 6 XC6SLX100”) and who are already experts and who have the rest of their lives to find out of this. I will not pursue this line.

References

Wiki-refs: ABEL, Discourse, Electronic design automation EDAFPGA, Lookup table LUT, pip, PLD/PAL, SystemVerilog, Transputer, VHDLVerilog

  1. FPGA Vs ASIC: Differences Between Them And Which One To Use? by Rohit Singh (2018), see https://numato.com/blog/differences-between-fpga-and-asics/
  2. myStorm news, events and developments by Folknology, see https://mystorm.uk
  3. Principles of CMOS VLSI Design: A Systems Perspective by N. Weste and Kamram Eshraghian, see https://easyengineering.net/principles-of-cmos-vlsi-design-a-systems-perspective-by-weste/
  4. Folknology Labs, see https://folknologylabs.wordpress.com
  5. IceCore Ice40 HX based modular core by folknology, see https://github.com/folknology/IceCore
  6. BlackIce Mx at Tindie shop, see https://www.tindie.com/stores/Folknology/ and https://www.tindie.com/products/Folknology/blackice-mx/
  7. Yosys is a framework for Verilog RTL synthesis by Clifford Wolf (cliffordwolf), see http://www.clifford.at/yosys/
    * Documentation: “Yosys Open SYnthesis Suite”, see http://www.clifford.at/yosys/documentation.html
  8. STM32 32-bit Arm Cortex MCUs, see https://www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html
  9. iCE40 LP/HX/LM Instant mobile innovation that won’t break the bank by Lattice semiconductor, see http://www.latticesemi.com/en/Products/FPGAandCPLD/iCE40. Even if iCE40 (with a lower case starting ‘i’) is Lattice style, I also see ICE40, ice40 and Ice40 being used (the latter mostly used in this note)
  10. New Product – BlackIce Mx, annoncement by Folknology, see https://forum.mystorm.uk/t/new-product-blackice-mx/551 (starting Apr2019). A thread from the forum:
  11. myStorm forum, see https://forum.mystorm.uk. I am now a member: Aclassifier as always. It is not a terribly big forum (about 250 people and 10 new topics the first three weeks of October 2019). But my first topic was solved quite fast. That’s what forums are for.
    – The forum’s SW is the best I have seen. It is Discourse (I found it in the sources, in an invisible footer), made by Jeff Atwood. Easy to use, flexibility, live preview and how it rewards small actions: great! Atwood also co-founded StackOverflow and StackExchange
  12. IceCore Getting started, see https://github.com/folknology/IceCore/wiki/IceCore-Getting-Started
  13. Programming FPGAs: Getting Started with Verilog (Tab) by Simon Monk (2016), see Amazon. “This hands-on guide is for makers who have been working with Raspberry Pi or Arduino and want to take their projects to the next level with Field Programmable Gate Arrays (FPGAs) and Verilog. Electronics guru Simon Monk follows his best-selling approach―assuming very little, starting slowly with easy, DIY examples, and gradually introducing more complex ideas.” So should fit me! Even if I do have worked with XMOS boards 99.999% of the time. Also see [14]:
  14. Using the Programming FPGAs book with IceStorm and myStorm BlackIce by Ed Brindley (2018), see https://maidavale.org/blog/using-simon-monks-programming-fpgas-book-with-icestorm/
  15. Verilog vs. VHDL – What to Choose? by hardwarebee (2019) see http://hardwarebee.com/verilog-vs-vhdl-what-to-choose/
  16. apio is an open source ecosystem for open FPGA boards, see https://pypi.org/project/apio/
  17. BlackIce wiki, see https://github.com/mystorm-org/BlackIce-II/wiki/PLLs
  18. BlackIce Mx eBook by Lawrie Griffiths (@lawrie, 2019), starting at Blackice Mx ebook at myStorm forum. The book is at https://lawrie.github.io/blackicemxbook/
  19. iCEBreaker FPGA, see https://www.crowdsupply.com/1bitsquared/icebreaker-fpga
  20. Digilent Pmod™ ( Interface Specification, Revision: November 20, 201, see http://digilentinc.com/Pmods/Digilent-Pmod_%20Interface_Specification.pdf plus the the Wikipedia article Pmod interface
  21. BlackIceMx carrier/connection board, by @folknology, see https://github.com/folknology/BlackIceMx
  22. BlackEdge standard by Alan Wood @folknology, see https://github.com/folknology/BlackEdge
  23. MixMods proposing document: BlackEdge, my* and mixed signal interfacing support, by Alan Wood @folknology, see https://forum.mystorm.uk/t/blackedge-my-and-mixed-signal-interfacing-support/530
  24. BlackIce II Pmod pinouts, started by @uXe, see BlackIce II Pmod pinouts

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.