Show HN: Manta – A tool for FPGA Debugging and Rapid Prototyping (fischermoseley.github.io)

86 points by fischerm ↗ HN
Hi HN! I'm Fischer, and I'm super stoked to share a project that I've been working on for a little over a year: Manta, an open-source, cross-platform, vendor-independent tool for debugging and rapid prototyping with FPGAs.

This was originally my Master's Thesis at MIT, where I developed it for our course on FPGA design. We needed an alternative to vendor debugging tools, which only supported x86 machines running Windows or Linux. We were able to patch in macOS support with VMs, but as more students came bringing ARM-based devices, we needed a new tool.

So I developed this. It's called Manta, and I've just released v1.0.0. It's written in Python using Amaranth HDL, which allows it to run on nearly any machine, and export vendor-agnostic Verilog-2001. It lets you read and write to arbitrary registers and memory on the FPGA, and provides an integrated logic analyzer. It's modular, so you can use any number of these functionalities in any combination, as long as you've got a UART or Ethernet connection to the FPGA.

Next up on the docket is adding support for more advanced interfaces like Wishbone, AXI, AHB, and Avalon. And maybe even adding a Web UI for debugging with a logic analyzer in the browser. Or peeking and poking at individual registers. Or issuing arbitrary AHB3 transactions.

I'd be super curious to hear your thoughts on the tool! And if you want to kick the tires, be my guest :)

5 comments

[ 0.30 ms ] story [ 21.8 ms ] thread
Thanks for sharing!

How does Manta compare to the free and open source https://github.com/enjoy-digital/litescope?

Good question! The design of LiteScope heavily inspired Manta, and Manta's Ethernet functionality comes from the LiteX Ethernet core.

That said, I spun Manta out into a separate project for a few reasons: - LiteX is written in nMigen, which has now spun off into Amaranth, and I wanted to use a language that's undergoing more active development. - I wanted to provide better support for non-SoC workflows. LiteScope is awesome when you're already using LiteX for your design, but it's a pretty steep barrier to entry if you're just trying to debug a class project real quick. - I wanted to provide a _lot_ of documentation! The original audience for the docs was undergraduate students that are new to the field and don't have a lot of time, so I wanted getting started to be as easy as possible.

I know the Amaranth project is working on it's own SoC tool, and I'll be curious to see how Manta evolves as the effort behind that ramps up.

I love it! I think people like myself who are hobbyists will benefit from your approach and documentation just as much as undergrads.
Thank you! Much appreciated, and let me know what could use more work!