Hackster's FPGAdventures: Unboxing and Testing the Microchip PolarFire SoC Icicle Kit

In this first installment of the series, we start our journey with Microchip's PolarFire SoC — by unboxing the board and testing Linux out.

Gareth Halfacree
2 years agoHW101 / FPGAs

Microchip's PolarFire SoC Icicle Kit launched in 2020 as an affordable and hopefully-accessible way for developers and engineers to begin experimenting with both the PolarFire field-programmable gate array (FPGA) family and application-class processor cores built around the free and open source RISC-V instruction set architecture.

Combining Microchip's PolarFire FPGA technology with four 64-bit RISC-V cores from SiFive — plus a fifth "monitor" core, which runs the open source "Hart Software Services" responsible for bringing up the rest of the board — the PolarFire SoC is a powerful beast, and the Icicle development board aims to make it accessible to all.

The Icicle board aims to get you started with Microchip's PolarFire SoC — but does it hit its mark? (📹: Microchip)

But does it succeed? In this series we'll be taking the Icicle through its paces, from initial unboxing all the way to having flashed entirely new gateware onto the FPGA — all while assuming no pre-existing experience with FPGAs or RISC-V.

Step one: The out-of-box experience.

The hardware

  • Price: $499
  • FPGA: Microchip PolarFire SoC MPFS250T-FCVG484EES, 254k LE, 784 math blocks (18×18)
  • CPU: 4× SiFive U54 RV64GC at 600MHz, 1× E51 RV64IMAC at 600MHz
  • GPU: None
  • RAM: 2GB LPDDR4
  • Storage: 128MB SPI flash, 8GB eMMC, SD card (not included, multiplexed with eMMC)
  • Networking: 2× Gigabit Ethernet
  • Expansion: 2x RJ45, Raspberry Pi-compatible GPIO header, mikroBUS, PCI Express Gen. 2 x4 (x16 mechanical), micro-USB 2.0 On-The-Go (OTG), micro-USB 2.0 with 4× UART, micro-USB 2.0 with FlashPro 6 or JTAG (multiplexed), 2× CAN, 2× SPI, 2× I2C, 4× 12.7Gbps SERDES, 52× test points
  • Dimensions: 135×185mm (around 5.31×7.28in)
  • Pack Contents: PolarFire SoC Icicle board, stand-off pillars (pre-mounted), 12V 5A PSU, Ethernet cable, micro-USB cable

Microchip unveiled the PolarFire SoC, a system-on-chip combining both fixed-purpose RISC-V-based processor cores and the company's low-power PolarFire FPGA technology, in 2019 with an early-access program opening in December that year. It wasn't until July the year after, though, that the company began taking orders for a PolarFire SoC-based development board: The Icicle, which began shipping to customers in September 2020 following a successful crowdfunding campaign on Crowd Supply.

The board is, effectively, a single-board computer — but a chunky one, and with an unusual array of ports. There's a full-size PCI Express slot to the bottom edge, for example, and two RJ45 connectors to the right for the board's twin gigabit Ethernet capabilities — but you'll find no full-size USB ports, and no video output capabilities.

There's a good reason for that: While it's Linux-capable, and even comes with the on-board 8GB eMMC storage pre-loaded with a minimalist Linux operating system as proof-of-life, the Icicle isn't designed to be used as a single-board computer. It's a development board, and one that focuses heavily on its FPGA capabilities — unsurprising, given that's Microchip's focus too.

The PolarFire FPGA itself is sold on the promise of high performance at a low power draw — around half as much as its competitors, Microchip claims. The PolarFire SoC variant adds in the RISC-V cores from SiFive, offering an all-in-one device ready for customizing with your own gateware as required — but we're getting ahead of ourselves.

Perhaps the biggest surprise in the box is the power supply: Despite Microchip boasting of PolarFire's low-power credentials, the Icicle comes bundled with a 12V brick capable of pushing 5A for a total of 60W. In news that will come as a relief to anyone looking at the small metal PolarFire chip at the board's center and wondering what it would look like throwing out 60W of heat, though, it's almost all headroom for expansion — primarily with use of that PCI Express slot, four-lane Gen. 2 with a 16x mechanical header, in mind.

First boot

There's little in the way of documentation included with the board, bar a "quick start card" that points you in the direction of Microchip's online resources. Here things can get a little muddled: There's plenty of information out there, but spread across multiple pages — and even multiple sites, with some documentation found on Microchip's own site while other material can only be found on the company's GitHub repositories.

In theory, though, first-boot is straightforward: Connect the bundled micro-USB cable to one of the three found on the board, plug the other end into a desktop or laptop with a terminal emulator available, connect the power supply to the DC jack, and flip the pleasingly chunky power button.

In doing so, you'll fire up an impressive four UART buses. Only the first two are of interest at this point: the first UART prints the output from the FPGA's boot sequence, while the second brings up a console session for the pre-loaded Linux environment.

Jumping straight into the meat of the quick-start guide would see you boot up, log in, and run a basic sample application — a small web server, which hosts a page designed to showcase a neat feature of the board, the ability to monitor in real-time the power draw of various sections of hardware. To put it bluntly: Don't, as the image that ships on the boards is far from the latest.

With an update released roughly every three months, it's well worth taking the time to refresh both the Linux operating system image and the gateware running on the FPGA. Ignore the emboldened advice to do so at the top of the quick-start guide, and you'll find yourself hitting a range of bugs and performance issues.

Freshening things up

There are two ways to work with the FPGA portion of the PolarFire SoC. The first is to use Microchip's Libero SoC integrated development environment (IDE), a proprietary package for which a free license — renewable annually — is bundled with the board. Unless you're planning to ignore the FPGA entirely — which would be an odd choice, it being the primary focus point of the board — it's worth getting to grips with it sooner rather than later.

If you're more interested in working with the RISC-V side of things to begin with, though, there's a simpler alternative: FlashPro Express, which is designed purely for processing "programming jobs" and uploading them to the FPGA fabric and embedded non-volatile memory (eNVM). It's a free download, though installation — on a Linux host, at least — is a little more awkward than it should be, requiring manual handling of some prerequisites.

Installation, in fact, takes considerably longer than updating the FPGA itself — a process that, in a handy revision to the Icicle's pre-release board design, requires no additional hardware thanks to an on-board FlashPro 6 device accessible on the second of the three micro-USB ports and which pulls double-duty as a JTAG debugger. A few clicks and you're done, or, at least, ready to update the eMMC.

Flashing the eMMC is even easier: Interrupting the boot process on one of the four UARTs, you can flip the board into mass-storage mode — exposing the eMMC to the host operating system. Then it's simply a case of overwriting its contents with the latest image from GitHub — using dd or the image writing tool of your choice. Reboot the board, and you're up-to-date.

It's a good idea to keep on top of new releases, too: Subscribing to the Yocto BSP and Icicle Kit Reference Design GitHub repositories will alert you when new builds are available. Always update the two in lock-step, too: Running an older Linux image with newer gateware or vice-versa is not recommended.

Performance

Taking the time to update the board is well worth it: The performance of the CPU cores more than doubled for some workloads compared to the factory image, turning what had been some very disappointing benchmark results into figures that punch considerably above the weight class suggested by their 600MHz clock speeds.

Take the double-precision Linpack benchmark, for example: At 80.35 MFLOPs, a single PolarFire SoC core handily beats the Arm core on board a Raspberry Pi Zero W's 56.22 MFLOPs despite running at almost half the clock speed — and the PolarFire has another three cores it can bring to bear on your workload. While the Dhrystone and Whetstone benchmarks were closer — 869 DMIPs and 533 MWIPs to the Raspberry Pi Zero W's 985 DMIPs and 562 MWIPs — it's still impressive for a 600MHz core battling a 1GHz one.

Real-world performance, too, is considerably higher than the cores' specification would suggest. A single-threaded file compression test, which took 66.48 seconds to complete on the Raspberry Pi Zero W finished in 49.28 seconds on the PolarFire SoC — dropping to just 16.32 seconds when the workload was spread across all four cores. Compiling software on-device, meanwhile, is perfectly possible for anyone who doesn't want to set up a cross-compilation environment: The pigz compression tool compiled in 39.9 seconds on the PolarFire SoC, compared with 106.3s on the Raspberry Pi Zero W.

There's still work to be done on the Linux image, though. While updating boosted performance and brought back the missing Ethernet port, there are a range of bugs still to be ironed out: There's still only 1GB of the 2GB RAM accessible to the user, the root partition starts off nearly full yet 7GB of the 8GB eMMC is left unpartitioned, and there are basic tools — like gzip — still missing. They're all issues of which Microchip is aware, and we're told work is underway in addressing them.

Those who picked up the Icicle to delve into the low-power promise of the PolarFire SoC, meanwhile, may find the power draw figures of interest. At idle, the board pulls a hefty 6.45W that rises to 7.07W under load — both measured with no peripherals attached bar a single Ethernet cable and the USB UART. The PolarFire SoC itself, however, remains cool — a measured peak of just 43°C (around 109°F) — even under sustained load, suggesting that the bulk of the power is being sucked up by other components on the board.

With the board unboxed, updated, and serving web pages, it's time to draw the first part of this series to a close. Join us next month for a look at the software side of things, as we install the Libero SoC IDE and take a look at the educational material Microchip has prepared for new users.

More information on the PolarFire SoC Icicle Kit is available on the Microchip website.

Read the whole series:

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire: freelance@halfacree.co.uk.
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles