[~/=]

Amps <- & -> Embedded

  1. RISC-V soft core 5: When it goes wrong on purpose

    Making an illegal instruction trap instead of becoming a nop: CSRs, mepc and mcause, MRET, and where the Zicsr extension fits in a RISC-V core.

  2. RISC-V soft core 4: Talking to the world

    RISC-V has no I/O instructions. Memory mapped I/O on the soft core: the address map, a UART, and a boot menu driven by loads and stores.

  3. Simulator 3: A second opinion

    Using Yosys as a second simulator, independent of the Alchitry one because it reads generated Verilog, and a mutation that failed for the wrong reason.

  4. Simulator 2: A simulator that lies

    A mutation test that failed when my reasoning said it should pass, and the simulator that reported loads writing nothing to the register file.

  5. Simulator 1: Why the IDE simulates at 284 Hz

    Why the Alchitry IDE simulated the design at 284 Hz instead of 1 kHz, the first guess that was wrong, and the wrong place I was looking.

  6. RISC-V soft core 3: Harvard by accident, von Neumann by choice

    The RISC-V core was Harvard by accident. Moving to a single von Neumann memory, and the store that ran the old instruction word once.

  7. RISC-V soft core 2: Tests that can fail

    How to trust a CPU you wrote: tests you have seen fail, a single instruction encoder checked against the GNU assembler, and a RAM that was never there.

  8. Simulator 0: The simulator I use

    The Verilator based simulator behind the RISC-V posts: why not the one built into Alchitry Labs, what it is, what is mine, and what is not.

  9. RISC-V soft core 1: A CPU you can watch

    Building a tiny CPU from a program counter, memory, register file, ALU and control unit, until LEDs sweep along a row, and a double beat that was not a pipeline.

  10. RISC-V soft core 0: Firmware

    Why a firmware engineer went back to Mano's 1988 hardware design book and decided to build a RISC-V processor from scratch on an FPGA.