[HN Gopher] VexRiscv is a quadcore, Linux-capable RISC-V softcor... ___________________________________________________________________ VexRiscv is a quadcore, Linux-capable RISC-V softcore for FPGA Author : homarp Score : 82 points Date : 2020-05-21 19:28 UTC (3 hours ago) (HTM) web link (antmicro.com) (TXT) w3m dump (antmicro.com) | lifeisstillgood wrote: | How far down the road of something like nand2tetris can I take a | FPGA ? Can I design my own system in verilog and flash it to a | FPGA like this and effectively run on my own computer? | teraflop wrote: | Absolutely. | ladberg wrote: | Yep, that's the point of FPGAs. The easiest way to see is to | synthesize it in an FPGA tool (e.g. Vivado) which you can | probably do for free. Different FPGAs have different hardware | resources, but for any small designs you can probably fit them | on a cheap FPGA. | non-entity wrote: | Kind of off topic, but how much time is involved building | processors with FPGA's, especially for modern architectures like | RISC-V? I only have a very basic overview knowledge about FPGA's | and almost none at the time about HDL's (I plan on learning!), | but with the complexity involved in modern processors, I can't | imagine this being a few weeks or even months or work. | q3k wrote: | RISC-V as an ISA is designed to be easy to implement. You can | get a simple implementation in 3k lines of Verilog [1]. | | That being said, there's a huge difference between a toy / | simple multi-cycle machine-mode RISC-V core and one with a | modern, performent microarchitecture (pipelined, super-scalar, | multi-issue, cache coherent across multiple cores, with | efficient branch prediction). There's also extra work to | implement RISC-V extensions that let you run any 'real' code | like Linux (which requires anything from simple ISA extensions | to implementing the Privileged Instruction spec which dictates | additional things like the MMU and interrupt controller). | | [1] - | https://github.com/cliffordwolf/picorv32/blob/master/picorv3... | gchadwick wrote: | It depends what you want to do? Do you want to build a | processor from scratch? A basic processor for core RISC-V is | actually quite simple. The RISC-V I specification (all the core | instructions not including multi/div, none of the privileged | spec) is not complex. | | Implementing something like the story talks about is obviously | far more complex. | | If you're mostly interested in putting together existing | processors that can again can vary in complexity, there are | some things with 'batteries included' where you can just spin | up an FPGA image that works then go poking around, others where | there will be significant work in integrating things into a | working system. | | I'll give a plug to Ibex (https://github.com/lowRISC/ibex) | which is the core I work on, it doesn't have an MMU and is | targetted at embedded applications. It's a 'real' core, in that | it's suitable for taping-out into a real system but still quite | simple to understand. OpenTitan | (https://github.com/lowRISC/opentitan) is a notable project | we're also working on that uses it, it's an open source root of | trust and will give you a working RISC-V SoC you can put on an | FPGA, you can easily carve out the security things leaving you | with a RISC-V core, some SRAM and various useful peripherals. | [deleted] | tasty_freeze wrote: | I didn't find what clock rate it runs at. It mentions booting | linux in 4 seconds, but that is hard to extrapolate into a core | clock frequency. | | 100 MHz? 200 MHz? higher? | amelius wrote: | Now the only problem left is to find an open-source-friendly FPGA | manufacturer. | rkagerer wrote: | I'm disappointed today's general purpose CPU's and | microcontrollers don't come with some integrated FPGA space, | similar to how you have SRAM and other peripherals. Intel talked | about it a few years back [1] but I'm not sure anything | materialized. | | The closest I've seen in popular chips is a few gates worth of | programmable logic. Are there any hidden gems I've missed out on? | | [1] https://www.nextplatform.com/2018/05/24/a-peek-inside- | that-i... | zozbot234 wrote: | Don't general purpose CPU's and mC's use replaceable microcode | as part of the chip implementation? Shouldn't that boil down to | the same thing? | opencl wrote: | Not in the desktop/server space but there are a few products | like this. Xilinx has the Zynq line with 1-2 Cortex-A9 cores | paired to an FPGA. Microsemi has their Cortex-M3 based | Smartfusion line and is supposedly launching their Polarfire | SoC with 4 RISC-V cores plus an FPGA later this year. | throwaway4590 wrote: | They have the patents to do even better than that and create | hierarchies of miniature programmable fabric, similar to the | concept of L1-L4 caches except for FPGA designs [0]. | Unfortunately, they don't have the organizational willpower to | do true innovation though. From what I have heard, significant | portions of the designs for their processor lines are not | understood by any current or recent employees. There is a | tremendous amount of legacy "code" and fear of changing things | that may break backwards compatibility. There is no vision at | the top, their process lead is gone, and the architecture team | is patching decades of bad security without simplifying | designs. | | It seems like they are just riding out their market share for | as long as they can, which could be a while. Intel has a really | strong brand. | | [0] https://patents.google.com/patent/US10310868B2/ | magicalhippo wrote: | Well Xilinx has the Zynq-7000 SoC[1], featuring an ARM | Cortex-A9 CPU along with a potentially quite large FPGA. | | Not exactly cheap though, at least in small quantities[2] | | [1]: https://www.xilinx.com/products/silicon- | devices/soc/zynq-700... | | [2]: https://www.digikey.com/products/en/integrated-circuits- | ics/... | mhh__ wrote: | Intel has the Cyclone V range. | | Also, I've never done it myself but I've read that digikey | prices are almost never the actual price for FPGAs even in | relatively small quantities (haggling with avnet). | Ductapemaster wrote: | Worked with FPGAs at a past gig, and that is correct. There | is heavy markup due to the accessibility of the parts. | sneak wrote: | Are there many applications that would benefit from having it | on die versus across a few PCIe lanes? AFAIK putting it on a | card would still grant it the same full speed DMA it would have | being on-die with the CPU. | wmf wrote: | The benefit from putting it on-die is not speed but economy | of scale. | londons_explore wrote: | With the transition of compute from performance focussed to | performance per watt focussed (due to cooling usually being the | limiting factor), the niche for the FPGA has almost vanished. | | There are very very very few compute tasks where an FPGA solves | a problem with better performance per watt than both a CPU and | a GPU. | | I would bet that emulating a RISC-V program on x64 is far more | power efficient than running a RISC-V core on an FPGA for | example. | monocasa wrote: | There's a lot of use cases today where perf per watt doesn't | matter. | londons_explore wrote: | Name some... Any task where perf per dollar matters also | boils down to perf per watt, since watts cost dollars... | monocasa wrote: | Say, robotics where the difference between an FPGA and | something else is way overshadowed by the motors. | | Or really basically anywhere that has you interacting | with the real world directly connected to your compute, | and not just compute off in a datacenter. | anonymousDan wrote: | I thought FPGAs were more power efficient than GPUs for many | ML applications for example (CNNs aside)? | londons_explore wrote: | For unusual ML architectures, like 1 bit precision, that | might be true. | | For anything using floating point maths, it isn't true. | tverbeure wrote: | One of the most interesting aspects of the VexRiscv is the way | it's implemented. The VexRiscv is written with SpinalHDL, a | hardware description library in Scala. But that's not the main | thing: in additional to Verilog and VHDL, there are other ways to | write RTL, from Python to Scala to Haskell. | | What's really special is that the VexRiscv is constructed from a | large number of plugins that split up the design 'horizontally' | per feature instead the traditional 'vertical' way that is | pipeline-stage oriented. | | It makes it possible to implement all aspects of, say, a new | instruction in one file, instead of spreading it over many | different files. | | I've written about that here: | https://tomverbeure.github.io/rtl/2018/12/06/The-VexRiscV-CP.... | acrossthepond10 wrote: | FPGA Noob here. I have 2 questions about FPGA's that I'm hoping | someone here can help me out with: | | 1. For the FPGAs i've looked at, you seem to have to initially | configure them before being able to run your programs on them, | kind of like EEPROM. I feel it would be much more interesting | from a reconfigurable computing perspective if the devices were | able to programatically re-configure on the fly as easily as it | is to read and write to DRAM or Flash Memory. So what are the | barriers that prevent the hardware from being able to do this? | | 2. Its exciting to see projects like Symbiflow making great | progress, but after reading some expert opinions[1] it seems like | an extremely difficult challenge to attempt to reverse engineer | hardware from commercial FPGA vendors who wish to keep their | designs closed in order to protect their IP and compete. So my | question is wouldn't it be a more feasible goal to construct | fully open FPGA platform from scratch, just like RISC-V is doing | with CPUs? What would the obstacles be here? | | Thanks! | | [1] | https://www.reddit.com/r/FPGA/comments/a5pzs5/prediction_ope... | tverbeure wrote: | 1. Most higher capacity FPGA have a features called "partial | reconfiguration" where you can reload a part of the FPGA with a | new bitstream. This new part can usually come from anywhere | (PCIe, SPI, ...) | | 2. RISC-V is a ISA. It's not an implementation. You can | implemented it on FPGA or ASIC. When you implement a RISC-V on | an FPGA, it will cost you between $2 and maximum a few $1000 in | silicon. FPGA technology itself is something that can only | reasonably be implemented in an ASIC. The initial cost of an | ASIC can go anywhere from $100K (on a very old process) to | multiple millions. | mhh__ wrote: | 1. I'm not sure what you mean but remember that FPGAs don't run | programs as per se (HDL gets compiled to logic, not | instructions). The bitstream can be modified, it just gets | loaded from some flash. I'm not sure where it's done, but it's | possible. | | 2. The obstacles are billions and billions of R&D (and you'd | need similar amounts to get a fab pick up the phone too). | Reverse engineering the bitstream is also difficult because of | this - Symbiflow (i.e. Trellis etc.) have got the bulk of the | bitstream done (apart from specialized blocks like those for | DSP), but you need to have good algorithms to decide what to do | with that bitstream e.g. a fully open source flow requires | intricate timing analysis. | amelius wrote: | Regarding 2: the question was about an open-source solution, | so I think that "billions and billions of R&D" will translate | to just a lot of time spent and no literal cost, e.g. just | like GCC is free as in beer. | | It is true that getting a wafer fabricated will cost a lot of | money (in the millions maybe?) but this may be money well | spent because the resulting FPGA design can be used over and | over. I think this would be in the reach of perhaps some | universities or government technology centers, if someone | could formulate the case for it. | mhh__ wrote: | Nearly all the cool stuff in GCC and LLVM is paid for by | companies (paying the salaries of developers). The software | could definitely be done in this way (Symbiflow is very | very nice), but keep in mind that developing an FPGA will | require a lot of hardware and bums in seats. | | The question is similar in scale to building an open source | Intel core i7 - it's not impossible but keep in mind that | an FPGA big enough (for example) to prototype any | subsections of the CPU let alone the whole thing would cost | hundreds of thousands. | dhanna wrote: | Is Dolu1990 the primary developer of everything SpinalHDL | related? | | I'm genuinely impressed with his effort. | eebynight wrote: | The fact that it fits in the 35T version with room to spare is | pretty huge, especially since certain packages of the 35T start | as low as $35 for a single chip, no MOQ. | | I could see myself dropping one of these on a homemade project if | I ever spend the time making a reliable reflow oven... | tverbeure wrote: | If you're happy that it fits in a 35T, you'll be ecstatic to | learn that a single VexRiscv fits comfortably in a Cyclone II | EP2C5 FPGA. :-) | | It's hard to find an FPGA that's too small to fit one. | gchadwick wrote: | Worth mentioning SymbiFlow: https://symbiflow.github.io/, it's a | fully open-source flow for FPGAs, Xilinx support (targetting the | Arty A7 that the project in this story uses for instance) is on | the way so hopefully won't be long until you can build a | opensource RISC-V SoC that can run Linux entirely on open source | tooling. ___________________________________________________________________ (page generated 2020-05-21 23:00 UTC)