I'd also vote for an FPGA Mainboard, ideally Lattice, ideally iCE40, and ideally compatible with Project IceStorm (Yosys, Arachne-pnr, and IceStorm) open source tools:
Think something similar to MiSTer FPGA -- but in a laptop form factor, and able to run all sorts of "soft" CPUs on it, including (but not limited to) the following:
> I'd also vote for an FPGA Mainboard, ideally Lattice, ideally iCE40
That wouldn't be usable as the main board of a laptop.
The iCE40 series consists entirely of small, low-power FPGAs. They're neither large nor fast, and they don't have a lot of I/Os. They can fit a soft core CPU, but with little room to spare, no external memory controller, and at a relatively low Fmax (like, maybe 50 MHz with a lucky P&R run). They're neat parts, but this isn't what they're for.
The ECP5 series (also Lattice) might be somewhat more suitable, but it's still no replacement for a fixed-function CPU. Reconfigurability comes with a dramatic penalty to speed and power consumption.
> able to run all sorts of "soft" CPUs on it, including (but not limited to) the following:
For what it's worth, OpenCores is basically a junkyard. Most of what you see there is abandoned and barely functional, if at all.
East asian vendors like Efinix seem to have high spec parts (with LPDDR4, PCIE4) at low prices and actual availability, without the ITAR troubles you see with US parts.
duskwuff: I'm more than happy to let you have your ideal laptop, with the fastest, latest most cutting-edge Intel or AMD chip...
Why won't you let me have my ideal laptop -- with an iCE40 FPGA?
My value system is that of simplicity, verifyability, transparency, open hardware -- and open software of all layers of the computing stack...
I don't care about MHz, 50 is plenty -- if that's what it takes to get all of the above. If there's another FPGA which is faster yet still compatible with all open source tools, feel free to name it (and give an URL to the open source toolchain for it).
At present, I am not aware of one...
>For what it's worth, OpenCores is basically a junkyard.
For what it's worth, most commercial CPUs are basically transparency trainwrecks.
Also, I'd leave it to each individual reader to make their own determination if OpenCores has value to them or not.
Some will not understand its whyness and thus not value it. But I'd rather let it be their own individual choice.
Also, you should know that many individuals put a lot of their own unpaid hard work into their projects on OpenCores.
A lot of blood, sweat and tears.
A lot of hard work, unpaid hard work -- to donate the results of that hard work to the community.
Painting OpenCores with a broad brush and broadly labeling OpenCores as "Most of what you see there is abandoned and barely functional" greatly disparages the work, the hard work of all of the people who put their blood sweat and tears into their projects there.
Many OpenCores projects are complete, do work, and are models, absolutely stellar models of transparency and individual and community effort.
I know that I for one value OpenCores and the work of everyone involved greatly, greatly.
Have you personally tested each and every project on OpenCores?
If you haven't -- then how do you presume to know the value?
Have you personally downloaded and tested even one complete project from OpenCores?
?
OpenCores has information which tells you if a project is complete or not, if it is working or not, and which phase of development it is in... one wouldn't select an unfinished project unless one were interested in learning from it and/or helping to complete it...
Point is -- some of us (and this would include EE students and others potentially interested in CPU/Processor design, other present/future chip designers and educators and the like) -- would see value, great value in OpenCores...
Again, you are free to have your ideal laptop, with the fastest, latest most cutting-edge Intel or AMD chip, or whatever you want, with whatever components you want...
I would politely ask for the reciprocal grant of freedom in selecting my ideal laptop, with my ideal components, inside of the value system I have explained, above.
Most people in the world would regard the Pinetab-V with quad core 1.5 GHz dual issue CPU -- around 8,000 to 9,000 MIPS in total -- as either unusably slow or barely usable. It's somewhere around a late 2000s PC in performance.
Your FPGA solution will be around 50 MIPS. That's around a 1992 486dx2.
If you're happy to run something akin to Windows 3.11 then that will be fine.
Literally unusable as a laptop. ~128 KB memory, no display, no networking, probably no storage either. Even USB would be a stretch. iCE40 FPGAs only have 20-30 I/O pins, and they're all too slow to communicate with modern DRAM, an LCD, an Ethernet PHY, SATA, or PCIe.
It'd certainly be possible to build a computing device around one (or, more likely, several) iCE40 FPGAs, but it would have very little in common with the Framework.
At the signal level (1's and 0's) -- +5V and 0V (or 3.3V and 0V, 2.2V and 0V, xV and 0V where 'xV' is on and 0V is off) -- any computer interface, module or perhiperhal -- can be interfaced with any other one.
It's just a question of getting the voltage and the frequency and protocol correct -- so that electronic components will speak to other components along a signal path.
If one component cannot talk to another component -- because say, a given frequency is too high, or a given component is too slow -- then a proxy component which acts as an intermediator between high frequency and low(er) frequency sides may be used as a mediator; as an intercessor...
For example, let us suppose that I have a dumb terminal, the "dumbest" and slowest of all computing devices.
No memory to speak of -- except perhaps for a small amount of screen memory...
Now, if I want that dumb terminal to interface with USB, DRAM, LCD, Ethernet PHY, SATA, or PCIe -- I can use a Raspberry Pi to accomplish that (it can act as an intermediary, it can act as a proxy.)
Similarly, I can also use other electronic devices in lieu of the Raspberry Pi as the interface -- including but not limited to other computers, ASIC's, FPGA's, custom chips for handling signals, etc., etc.
That something wired together in such a manner is, or would be "unusable as a laptop" -- is a very subjective idea (unusable to whom exactly?) -- because properly engineered, it would indeed work, and would indeed be quite fast and useable...
By your argument, that component parts would be too slow, I would submit to you that:
Modern computer engineering is all about the speeds of various computer subsystems, and getting faster subsystems to work with slower ones.
These examples include (but are not limited to) the speed a computer's CPU vs. the speed of its memory (the cache hierarchy), Northbridge Vs. Southbridge, A Computer's Bus Vs. Slow Perhipherals, A CPU's speed vs. say, the speed of an older spinning mechanical hard drive, etc., etc.
The Internet (and the hardware that makes it up) itself is comprised of most, if not all of those devices, all of which have different rates of speed.
And yet, it all "magically" communicates...
Oftentimes a slower devices will need electronic proxies to communicate effectively with higher speed devices.
This principle is well understood in Electrical Engineering and amongst Electrical Engineers.
Not only that, but this very principle is enshrined in all computers -- even in the fastest laptop produced today...
The fastest laptop produced today has many subcomponents, many electronic subsystems, along which signals are travelling at different rates of speed -- some fast, some slow, some very slow -- and yet the whole system communicates and works, and is quite, yes, quite usuable...
That principle is enshrined in all computer engineering, and computers today.
Your uber-fast laptop, whichever make and model it is -- is proof, proof positive of it...
So, I appreciate your advice (I am sure it was given in Good Faith) -- but I feel that your advice only addresses the tip of the iceberg of the true scope of possibilites, the things that are possible when a more nuanced understanding is to be had...
The advice given limits the scope of what seemingly should be possible ("don't try it, it'll never work, or never work well") -- whereas the principle which I have submitted should expand the set of those possibilities ("it will work and will work well if the proper rules for engineering it are followed, with the proper understandings, with the proper first principles...")...
Yes, and quite limited. The MiSTer hardware, and other similar platforms are good for emulating ancient video game processors and running 8-bit style video games. This is a fun thing to do I guess if you like that. Modern high performance FPGA's, meaning AMD/Xilinx since that is the only option, can handle prototyping modern CPU's, including RISC-V, as soft processors. This is great for R&D, but FPGA's have hardware ARM cores built in, specifically because they are much more efficient and have existing ecosystems. There are other options for hardware RISC-V CPUs, but not really a SoC style FPGA+RISC-V combination. that I am aware of.
Why would you want that? While soft CPUs are fun and interesting, they are not really considered to be an ideal solution for anything. More like "well, that's what we have to use due to not having an actual CPU, even though we need one. Either this, or nothing.".
There are very good reasons to want this. A big one is being able to perform computing without the prying eyes of a corporation, for example if you disagree with the idea of large companies making money off of your data. As a different idea, perhaps you might want to do something with Amiga or old game consoles, and you are developing a game for this. One reason you might want to do this is to teach yourself better 68k assembly language. This is a useful skill to have in certain niches in software security.
Another good one is if you are into homebrew computers or are a computer or electrical engineer. Perhaps you would like to make your own processor, or collaborate with your friends on making a processor.
But it's not like any of this is impossible to do today. Want to learn assembly of some old CPU, or write a game? Buy a Zynq board, or grab an emulator. It's not like you can't do any of this, because Framework (anyone else) isn't creating hardware for it... there is just simply no mass appeal for consumers.
As a half-joke, half-serious question: how do you know that Lattice isn't backdooring all their FPGAs, sending home everything you run through their bird-drone network?
I do not want exactly what you are suggesting. What I am into is homebrew computing and trusted compute. I can't have either of these things by just getting a zynq board. The game issue, as you noted, is quite trivial to solve.
I think the keywords are 'laptop formfactor'. If your goal is specifically to run niche specialized soft-processors and you wanted it all bundled into a laptop style dev environment, then I think this is a great idea. But for an actual functional laptop, no way.
Small screen and around 8x slower than the PineTab-V, between 1.0 GHz vs 1.5, single-issue vs dual-issue (good for ~1.5x), and one core vs four cores. Plus 1 GB RAM vs 4 or 8 GB.
The PineTab-V is at least around the same speed as the Arm-based PineTab2, with the SiFive U74 being very comparable to (even a bit better than) the Arm A55 at the same MHz. In these devices the Arm is at 1.8 GHz vs the RISC-V at 1.5 but that's pretty minor. Also the Arm has NEON SIMD while that generation of RISC-V doesn't have SIMD or Vector -- the D1 and TH1520 do have 128 bit vectors, though standard software doesn't support that, so it's only whatever you write yourself.
Very niche indeed. I admit I love the look and would like to have one to tinker with and use for various electronics related projects, but price vs performance is definitely in favor of the PineTab-V. I would however seriously consider buying an edition with no brains, only keyboard plus trackball, LVDS/HDMI/DP/* capable screen, a battery holder and related charging circuitry, then enough internal space to be filled with whatever board the user already has handy, and possibly mounting frames compatible with most known boards (RPi, OrangePi, NanopPi, Odroids, etc). There is already something like that that can use RPi compute modules and similar others, but I'm talking about the full boards, of which almost everyone has a couple unused in a drawer.
I recommend reading sifive's errata, at least the ones it's possible to get ahold of. They are consistently wild, for multiple CPU IP generations. Some paraphrases that come to mind: "mmu doesn't work; workaround: don't use it" and "exception cause register not sign-extended; workaround: don't cause page faults on addresses in that half of memory".
Yeah this is why I have held off on buying a Framework too. I want a Risc solution, but also preferably the FPGA mainboard idea with the OpenCores for the supplemental processing.
Right now the fastest RISC-V SoC available is the TH1520, similar to a Pi 4. Sipeed are selling the Lichee Pi 4A for $119 with 8 GB RAM and 16 GB eMMC (cheaper and more expensive configurations are coming soon). They are planning a laptop to take the same Lichee Module 4A.
If Intel starts selling the "Horse Creek" SoC on the open market then that will be more like RK3588 class -- the best you can get on an Arm SBC right now.
The next couple of years are going to see probably 50% faster RISC-V SoCs every six months on average.
I see a great future for RISCV, but at the current point it's so far behind everyone else in performance, it's nice to play around but not fast enough for anything except web surfing on a GUI.
(Wanted to switch my SBC work from ARM to RISCV but it looks that you need to put in a lot of effort to get Linux reliably going).
[Edit] ARM has less legacy than x86, but RISCV has less legacy than ARM. Intels move to drop 16 and 32 bit modes in the future and some commands seems to show that dropping legacy makes your CPU faster or more energy efficient (less complex) if nothing else you can replace the die space with caches.
An ARM framework main board, either using a cheap MediaTek/similar smartphone grade processor, making the main board a Pi Compute Module breakout, or maybe one of the Windows capable ARM processors would be a nice way to sell a low cost/high power efficiency framework.
33 comments
[ 4.9 ms ] story [ 89.1 ms ] threadhttps://github.com/YosysHQ/icestorm
Think something similar to MiSTer FPGA -- but in a laptop form factor, and able to run all sorts of "soft" CPUs on it, including (but not limited to) the following:
https://opencores.org/projects?expanded=Processor
That wouldn't be usable as the main board of a laptop.
The iCE40 series consists entirely of small, low-power FPGAs. They're neither large nor fast, and they don't have a lot of I/Os. They can fit a soft core CPU, but with little room to spare, no external memory controller, and at a relatively low Fmax (like, maybe 50 MHz with a lucky P&R run). They're neat parts, but this isn't what they're for.
The ECP5 series (also Lattice) might be somewhat more suitable, but it's still no replacement for a fixed-function CPU. Reconfigurability comes with a dramatic penalty to speed and power consumption.
> able to run all sorts of "soft" CPUs on it, including (but not limited to) the following:
For what it's worth, OpenCores is basically a junkyard. Most of what you see there is abandoned and barely functional, if at all.
https://www.apple.com/shop/product/MW682AM/A/apple-afterburn...
Under the hood, it's a Xilinx Ultrascale+ (XCKU15P) FPGA on a card.
Why won't you let me have my ideal laptop -- with an iCE40 FPGA?
My value system is that of simplicity, verifyability, transparency, open hardware -- and open software of all layers of the computing stack...
I don't care about MHz, 50 is plenty -- if that's what it takes to get all of the above. If there's another FPGA which is faster yet still compatible with all open source tools, feel free to name it (and give an URL to the open source toolchain for it).
At present, I am not aware of one...
>For what it's worth, OpenCores is basically a junkyard.
For what it's worth, most commercial CPUs are basically transparency trainwrecks.
Also, I'd leave it to each individual reader to make their own determination if OpenCores has value to them or not.
Some will not understand its whyness and thus not value it. But I'd rather let it be their own individual choice.
Also, you should know that many individuals put a lot of their own unpaid hard work into their projects on OpenCores.
A lot of blood, sweat and tears.
A lot of hard work, unpaid hard work -- to donate the results of that hard work to the community.
Painting OpenCores with a broad brush and broadly labeling OpenCores as "Most of what you see there is abandoned and barely functional" greatly disparages the work, the hard work of all of the people who put their blood sweat and tears into their projects there.
Many OpenCores projects are complete, do work, and are models, absolutely stellar models of transparency and individual and community effort.
I know that I for one value OpenCores and the work of everyone involved greatly, greatly.
Have you personally tested each and every project on OpenCores?
If you haven't -- then how do you presume to know the value?
Have you personally downloaded and tested even one complete project from OpenCores?
?
OpenCores has information which tells you if a project is complete or not, if it is working or not, and which phase of development it is in... one wouldn't select an unfinished project unless one were interested in learning from it and/or helping to complete it...
Point is -- some of us (and this would include EE students and others potentially interested in CPU/Processor design, other present/future chip designers and educators and the like) -- would see value, great value in OpenCores...
Again, you are free to have your ideal laptop, with the fastest, latest most cutting-edge Intel or AMD chip, or whatever you want, with whatever components you want...
I would politely ask for the reciprocal grant of freedom in selecting my ideal laptop, with my ideal components, inside of the value system I have explained, above.
Your FPGA solution will be around 50 MIPS. That's around a 1992 486dx2.
If you're happy to run something akin to Windows 3.11 then that will be fine.
It'd certainly be possible to build a computing device around one (or, more likely, several) iCE40 FPGAs, but it would have very little in common with the Framework.
It's just a question of getting the voltage and the frequency and protocol correct -- so that electronic components will speak to other components along a signal path.
If one component cannot talk to another component -- because say, a given frequency is too high, or a given component is too slow -- then a proxy component which acts as an intermediator between high frequency and low(er) frequency sides may be used as a mediator; as an intercessor...
For example, let us suppose that I have a dumb terminal, the "dumbest" and slowest of all computing devices.
No memory to speak of -- except perhaps for a small amount of screen memory...
Now, if I want that dumb terminal to interface with USB, DRAM, LCD, Ethernet PHY, SATA, or PCIe -- I can use a Raspberry Pi to accomplish that (it can act as an intermediary, it can act as a proxy.)
Similarly, I can also use other electronic devices in lieu of the Raspberry Pi as the interface -- including but not limited to other computers, ASIC's, FPGA's, custom chips for handling signals, etc., etc.
That something wired together in such a manner is, or would be "unusable as a laptop" -- is a very subjective idea (unusable to whom exactly?) -- because properly engineered, it would indeed work, and would indeed be quite fast and useable...
By your argument, that component parts would be too slow, I would submit to you that:
Modern computer engineering is all about the speeds of various computer subsystems, and getting faster subsystems to work with slower ones.
These examples include (but are not limited to) the speed a computer's CPU vs. the speed of its memory (the cache hierarchy), Northbridge Vs. Southbridge, A Computer's Bus Vs. Slow Perhipherals, A CPU's speed vs. say, the speed of an older spinning mechanical hard drive, etc., etc.
Have a look at this table:
https://en.wikipedia.org/wiki/List_of_interface_bit_rates
The Internet (and the hardware that makes it up) itself is comprised of most, if not all of those devices, all of which have different rates of speed.
And yet, it all "magically" communicates...
Oftentimes a slower devices will need electronic proxies to communicate effectively with higher speed devices.
This principle is well understood in Electrical Engineering and amongst Electrical Engineers.
Not only that, but this very principle is enshrined in all computers -- even in the fastest laptop produced today...
The fastest laptop produced today has many subcomponents, many electronic subsystems, along which signals are travelling at different rates of speed -- some fast, some slow, some very slow -- and yet the whole system communicates and works, and is quite, yes, quite usuable...
That principle is enshrined in all computer engineering, and computers today.
Your uber-fast laptop, whichever make and model it is -- is proof, proof positive of it...
So, I appreciate your advice (I am sure it was given in Good Faith) -- but I feel that your advice only addresses the tip of the iceberg of the true scope of possibilites, the things that are possible when a more nuanced understanding is to be had...
The advice given limits the scope of what seemingly should be possible ("don't try it, it'll never work, or never work well") -- whereas the principle which I have submitted should expand the set of those possibilities ("it will work and will work well if the proper rules for engineering it are followed, with the proper understandings, with the proper first principles...")...
Here is where you get it:
1. The Laptop: https://shop.mntre.com/products/mnt-reform
2. The FPGA OpenCores-compatible Processor for the Laptop: https://shop.mntre.com/products/mnt-rkx7-fpga-module
3. Remember to click that you want the display adapter in #2.
Note, its not an ICE40. However, its pretty close to what you want.
Another good one is if you are into homebrew computers or are a computer or electrical engineer. Perhaps you would like to make your own processor, or collaborate with your friends on making a processor.
As a half-joke, half-serious question: how do you know that Lattice isn't backdooring all their FPGAs, sending home everything you run through their bird-drone network?
I do not want exactly what you are suggesting. What I am into is homebrew computing and trusted compute. I can't have either of these things by just getting a zynq board. The game issue, as you noted, is quite trivial to solve.
[0] https://www.adafruit.com/product/4332
https://www.pine64.org/2023/04/10/pinetab-v-and-pinetab2-lau...
https://www.clockworkpi.com/product-page/devterm-kit-r01
The PineTab-V is at least around the same speed as the Arm-based PineTab2, with the SiFive U74 being very comparable to (even a bit better than) the Arm A55 at the same MHz. In these devices the Arm is at 1.8 GHz vs the RISC-V at 1.5 but that's pretty minor. Also the Arm has NEON SIMD while that generation of RISC-V doesn't have SIMD or Vector -- the D1 and TH1520 do have 128 bit vectors, though standard software doesn't support that, so it's only whatever you write yourself.
If Intel starts selling the "Horse Creek" SoC on the open market then that will be more like RK3588 class -- the best you can get on an Arm SBC right now.
The next couple of years are going to see probably 50% faster RISC-V SoCs every six months on average.
(Wanted to switch my SBC work from ARM to RISCV but it looks that you need to put in a lot of effort to get Linux reliably going).
[Edit] ARM has less legacy than x86, but RISCV has less legacy than ARM. Intels move to drop 16 and 32 bit modes in the future and some commands seems to show that dropping legacy makes your CPU faster or more energy efficient (less complex) if nothing else you can replace the die space with caches.
I got a VisionFive2 (~$100) and I am impressed with the progress made since it shipped in February.