I'm working on the problem of "getting it into the fingers". For example, if you learn typing you start by repeated muscle motions which you gradually learn. A similar thing happens when learning a musical instrument or woodworking.<p>In order to do this form of "finger learning" I start with a state machine encoding the initial actions. A JIT-like mechanism recognizes repeated actions, collects up the sequence, optimizes the total sequence, and then creates a new additional state, thus "getting things into the fingers".<p>Ideally I'd like an FPGA that could dynamically self-modify. It would be able to change lookup tables (LUTS) and pathways within itself, thus changing the recognized state logic.<p>The only path I know about would be to change the RAM that holds the initial state and then reboot.<p>That path requires deep knowledge of the binary blob that gets loaded when creating the FPGA design.<p>Changing that binary blob, as far as I know, involves going back to a Verilog compile and then through tools to do place-and-route, etc. This tedious path is my current effort.<p>So the question is: Is there an FPGA capable of directly self-modifying by writing LUTS or by writing RAM?<p>Ideally this self-modifying FPGA would have an embedded hard processor (RISC-V) that could read/write LUTS and pathways in the rest of the FPGA. The hard processor would run self-aware tasks like the JIT.<p>I know Intel has a CPU/FPGA combination (only available to data center scale vendors unfortunately) that MIGHT be able to self-optimize repeated instruction paths. This might be difficult on an X86 architecture but it might be reasonable on a RISC-V architecture which allows non-standard instructions.
Ref: "How to take advantage of partial reconfiguration in FPGA designs"
<a href="https://www.eetimes.com/how-to-take-advantage-of-partial-reconfiguration-in-fpga-designs/" rel="nofollow">https://www.eetimes.com/how-to-take-advantage-of-partial-rec...</a><p>That capability is called "partial reconfiguration" and is pretty common. Your description sounds like you would like to reconfigure the FPGA at a finer grain level than what "partial reconfig" does. Also, FPGA internals (WRT configuration) are typically undocumented and often proprietary, so having the FPGA self-generate FPGA configurations is going to be difficult unless the FPGA in question is well documented.<p>Using the FPGA to reconfigure itself might be tricky since FPGAs are typically loaded by an external source. Theoretically, you could generate the new configuration, write it to an external memory (e.g. RAM), and then use the FPGA load-from-memory capability to do what you ask. There is a wide gap between theory and practice here, however.<p>By the time you implement configuration generation and reloading in an FPGA, you probably will be out of room in the FPGA. :-/
We have designed several versions of Morphle Logic asynchronous runtime reconfigurable arrays. They can do the same as FPGA's but are not exactly the same gate arrays, as explaind in this readme:<p><a href="https://github.com/fiberhood/MorphleLogic/blob/main/README_MORPHLE_LOGIC.md">https://github.com/fiberhood/MorphleLogic/blob/main/README_M...</a><p>You can add Morphle Logic to any processor including RISC-V and program/reconfigure the gate array by just writing SRAM. So you can reprogram small parts in nanoseconds if you want, even while the circuit is running!
We've added a small RISC-V processor to make it easy to reprogram the Morphle Logic.<p>There is a small caveat: you can not buy our chips yet...
I need $100K and 3 months to tape out new chips first.<p>An equivalent Morphle Logic of a small FPGA like the ICE40 would cost half a dollar, the equivalent of an Virtex Ultrascale would cost around $600.
Some parts of these reconfigurable arrays could run at 12 Ghz.<p>Email us at morphle [at] ziggo { dot} nl
You can find a lot of scientific publications about partial reconfiguration for FPGAs and there seems to be some sort of support in commercial toolchains (Vivado/Quartus). In my experience, the support for partial reconfiguration always was rather brittle and I have never seen it used in practice. But things may have changed in the last decade or so...
Have you tried simulating your ideas in software ? There's nothing an FPGA can do that a software simulation can't. The only advantage of the FPGA would be speed.