Replies: 2 comments
-
On Toolchains, broadlyWhat does an FPGA toolchain do? A first-order approximation is that it translates our design intent ("make the part speak SGMII") into a fully programmed FPGA. The next level comes via this survey of open-source FPGA tools:
And then I'd like to add:
By comparison to GALs, the work we did to map our logic down to a logic expression in a galasm file is approximately (1), assigning pins to signals is (2)—except this is "placement" only, because routing is trivial on a 22v10 since everything can be connected everywhere—and running the galasm or galette tool itself produces our final "bitstream" for (3). We then used a different tool (minipro) to store the bitstream in the GAL's onboard EEPROM to realize a working part. Here's a good "map of the territory" from f4pga: This looks like it ought to be read left-to-right mapping e.g. to get from SystemVerilog on the left to a binary on the right, one can travel via "Yosys+ABC" to an intermediate json file that holds the results of the synthesis, which "nextpnr" can consume to produce a description that's fed into some flavor of an "FPGA assembler" to produce the final bitstream. Finally, four things we value in toolchains:
|
Beta Was this translation helpful? Give feedback.
-
On Part Selection for a routerTaking a stroll through f4pga's Supported Architectures and prior work we find about three options:
A little more about the last option: the good folks at Beagle have already put in a ton of legwork to get a RISC-V SBC-alike based around the PolarFire SoC that'll boot to Linux. All of that is open source (including the PCB, albeit as what looks like "Cadence Allegro" files, which is not the easiest format for us), and there's solid upstream support from microchip, including things like a (C/C++) HAL for writing bare-metal programs. Especially of interest to me are this block diagram: (via https://docs.beagleboard.org/latest/boards/beaglev/fire/03-design.html) In there what I see is that there's already a single GbE port hooked up by way of SGMII to the SoC, with the possibility of a second SGMII path by way of the "High Speed Expansion Header" block. That's corroborated by the introduction to what they're calling "Gateware" that lists (among others) "SYZYGY Gateware" which can support "One SGMII interface" (and, the docs note, "There is a lot of fun that can be had with this interface given its high-speed capabilities."). They've also got a worked example of modifying the gateware (the FPGA interface-y bits, I think?); the wrinkle here is that it uses "Libero," microchip's FPGA "design suite." There's a free (as-in-beer) license for the software though, and it runs on Linux. Since none of the FPGA or RISC-V core itself is free (as-in-speech), I think this might be a reasonable place for us to draw a line in the sand: if we ship a router based around that system, someone else could still theoretically modify it to their own purposes with their own copy of Libero. |
Beta Was this translation helpful? Give feedback.
-
We wrote the first thing that came into our heads, and it just so happened to be the best post in the world.
This is not that post, this is just a tribute.
Beta Was this translation helpful? Give feedback.
All reactions