It feels weird to see the ARM1 described as an 'ancestor of the iPhone's processor.' Of course, it is... but that feels like describing the 8086 as the ancestor of the PlayStation 4's processor. ARM was popular in embedded devices prior to the iPhone, after all; I had at least a couple ARM powered devices well prior to the iPhone's launch. Not even obscure: GameBoy Advance is an example.
This is really just a nitpick, though, I definitely find these in-browser gate-level chip emulators to be fascinating. It makes me wonder if we will some day see realtime gate-level emulation of entire machines... It may be too soon to ask given that state-of-the-art cycle-level CPU emulation is already pretty limited by performance, but perhaps for some really old devices, it'll happen. It would just be really cool to be able to do things like play with fault injection on an emulated processor and watch what actually happens.
GameBoy Advance CPU (ARM7TDMI) is very close to first ARM designs: just three stage pipeline, without cache (with higher IPC, because of better memory interface and less pipeline stalls). Because of using a 4-byte wide 24 bit memory bus, it could address up to 64MB of memory. It is an excellent platform to measure memory access behavior without the distortion of cache subsystems. You can buy dev boards with 64MB of external SDRAM, and run ucLinux (Linux for microcontrollers without MMU).
You could use Verilator to stimulate a processor, and SDL to give you a graphical output, if so desired. If you detest Verilator, Modelsim DE or above comes with TCL embedded, you could use Tk to build a graphical interface.
Sorry if this is too unrelated to the original post.
I just recently discovered verilator, and it seems pretty awesome. I'm curious if there are some drawbacks that you are aware of that make people dislike it?
It will never be able to simulate encrypted RTL - so any design using vendor IP is out (so lots of Xilinx cores, for example). It is a cycle simulator (not a delta time simulator), so no back annotated timing is possible. It does not support mixed language simulation (I know, it is a Verilog simulator, but you don't always get to choose what language a vendor supplies IP in). So that's just to start.
Writing C++ to toggle clocks then force the simulator to re-evaluate everything is terrible (opinion). The primary tutorials I've found are Dan Gisselquest's (ZipCpu) and (iirc) he recommends running your testbench in a delta simulator as well, to make sure it's giving you what you expect. So it isn't much of a "standalone" tool.
All that said, it seems like it could be useful - it wasn't in my case, but ymmv.
ARM was founded as a joint venture of Apple and VLSI. And Apple was the very first client and used an ARM processor in the Newton—the grandfather of the iPhone. So it makes a lot of sense to describe the ARM1 as an ancestor of the iphone’s processor today.
This is really just a nitpick, though, I definitely find these in-browser gate-level chip emulators to be fascinating. It makes me wonder if we will some day see realtime gate-level emulation of entire machines... It may be too soon to ask given that state-of-the-art cycle-level CPU emulation is already pretty limited by performance, but perhaps for some really old devices, it'll happen. It would just be really cool to be able to do things like play with fault injection on an emulated processor and watch what actually happens.