Skip to content

Releases: stnolting/neorv32

v1.5.9

13 Aug 12:54
Compare
Choose a tag to compare

DOI

This list shows the main core changes since the last release. See the project's changelog for more information.

🐛 Bug Fixes

  • ⚠️ fixed major bug in CPU interrupt system: interrupts during memory accesses broke those memory accesses leading to undefined behavior
  • fixed bug in E ISA extension that prevented the extension to be actually enabled
  • fixed bug in linker script (#134): missing constant data section
  • fixed bug in AXI4-Lite wrapper (#133) that caused failure of Vivado packaging
  • fixed bug in execution of xRET instructions (trapping of MRET and DRET when not in according mode was missing)

💡 Updates and New Features

  • ⚠️ top entity machine-level interrupts now trigger on rising edges (mext_irq_i, msw_irq_i, mtime_irq_i, nm_irq_i)
  • exposed advanced external bus interface configuration options as new top entity generics (moved from package constants): MEM_EXT_PIPE_MODE, MEM_EXT_BIG_ENDIAN, MEM_EXT_ASYNC_RX
  • added mstatus.TW CSR flag (to allow execution of wfi in user machine mode)
  • added mstatus.FS and mstatus.SD CSR bits to control the state of the FPU (Zfinx extension)
  • added mconfigptr CSR (not actually used yet, read-only, always zero)
  • reworked CPU register file ("implementation" of zero register)
  • clean-up of processor top's generic and signals default values

✔️ Pull Requests and Issues

Merged pull requests:

  • none

Closed issues:

  • #133 Problems generating a Vivado-Block Design
  • #134 Missing memory section for .rodata in neorv32.ld

v1.5.8

22 Jul 10:11
Compare
Choose a tag to compare

DOI

This list shows the main core changes since the last release. See the project's changelog for more information.

🐛 Bug Fixes

  • fixed bug in custom functions subsystem CFS: address map layout overlapping
  • fixed minor bug in FIFO component (setups with FIFO_DEPTH = 1 caused mapping issues)

💡 Updates and New Features

  • added RISC-V Zmmul ISA extension (subset of M extension: integer HW multiplier, but no HW divider; intended for area-constrained setups)
  • bootloader is more independent of HW configuration (no need for UART, MTIME, GPIO anymore); added several options to customize default bootloader
  • ⚠️ removed top's fast IRQ (FIRQ) inputs soc_firq_i
  • ⚠️ removed numerically-controller oscillator module (NCO)
  • added new processor module stream link interface (SLINK) providing up to 8 independent RX and TX links
  • increased GPIO port size from 32-bit to 64-bit
  • added new processor module external interrupt controller (XIRQ) providing up to 32 processor-external interrupt request lines
  • new performance-vs-ares configuration generic: CPU_IPB_ENTRIES defines size of CPU's instruction prefetch buffer
  • reworked NEOLED module: IRQ now uses fifo half-full fill level; added option to send LED RESET command as explicit FIFO command
  • (re-)added mstatush CSR (hardwired to zero)
  • minor logic optimizations to reduce area requirements and switching activity and to shorten critical path

✔️ Pull Requests and Issues

Merged pull requests:

  • #89 Make uart_rx a verification component
  • #90 Make uart_rx a VUnit verification component. Step 4.
  • #92 sim: update readme
  • #93 [setups/vivado] arty-a7-test-setup: define multiple filesets, set board, set language
  • #95 Add loopback test for SLINK
  • #98 OrangeCrab
  • #99 osflow rework
  • #100 [docs] move Makefile from project root to subdir 'docs'
  • #104 [setups/osflow] cleanup
  • #107 [setups/osflow] update OrangeCrab constraints file
  • #109 riscv-arch-test script cleanup
  • #114 use RISCV_PREFIX instead of RISCV_TOOLCHAIN
  • #116 [ci] add workflow 'Containers'
  • #117 mv riscv-arch-test sw/sig-arch-test
  • #118 [sw/example] add common.mk
  • #119 [riscv-arch-test] measure execution time of each test
  • #120 [sim/ghdl] use --workdir=build
  • #123 [docs] update references to isa-test
  • #124 Split ISA test suites in multiple jobs and rework makefiles
  • #125 Fix source/sink mixup in SLINK docs
  • #127 [ci/windows] fix RISCV_PREFIX

Closed issues:

  • #77 Use ProcessorTop templates in non osflow examples
  • #97 Having trouble building the iCESugar example
  • #106 Constraints file for OrangeCrab r0.2
  • #108 question: Is the prebuilt build support rv32IMAC ISA extension or just rv32imc?
  • #122 Add halfway interrupts for SLINK interface

v1.5.7

23 Jun 15:52
Compare
Choose a tag to compare

DOI

This list shows the main changes since the last release. See the project's changelog for more information.

🐛 Bug Fixes

  • fixed bug in instruction cache flush/re-sync logic (via fence.i instruction) - cache might have missed a re-sync request in some cases
  • fixed bug in debugger park loop: instruction cache re-sync (fence.i) was missing - caused debugger to execute obsolete code from program buffer

💡 Updates and New Features

  • fixed endiannes inconsistencies: processor/CPU is little-endian
  • ⚠️ removed TINY_SHIFT_EN generic; CPU shifter is implemented as iterative single-bit shift by default
  • ⚠️ reworked boot configuration
    • removed MEM_INT_IMEM_ROM generic; processor-internal IMEM is implemented as ROM if internal IMEM is enabled (MEM_INT_IMEM_EN = true) and internal bootloader is disabled (INT_BOOTLOADER_EN = false)
  • ⚠️ removed option to grant user-level access to HPM counters (removed according mcounteren CSR bits)
  • increased processor-internal IO size (from 256 bytes to 512 bytes)
    • relocated base address of CFS module
  • number of PWM channels is now configured via IO_PWM_NUM_CH generic (0=none at all, max 60)
  • ⚠️ CPU B extension has been (temporarily) removed from the core
  • CPU_CNT_WIDTH and HPM_CNT_WIDTH generics can now also be zero to exclude CPU core counters (cycle & instret) and HPM counters
  • minor logic optimizations to reduce area requirements and switching activity and to shorten critical path

✔️ Pull Requests and Issues

Merged pull requests:

  • #47 Update CI to use VUnit for running VHDL testbenches
  • #48 Introduce VUnit logging and checking
  • #53 docs: split User Guide
  • #54 [ci] cleanup
  • #59 Add examples
  • #60 [docs] add attrs.adoc and attrs.main.adoc
  • #61 Reorganise setups
  • #63 Add Fomu
  • #64 [sim] split UART logging component, make self-checking
  • #65 Add VUnit
  • #66 [sim/VUnit] support CLI argument for selecting the expected UART responses
  • #67 rename logical library 'iCE40UP' to 'iCE40'
  • #69 VUnit checking
  • #71 Add MSYS2 jobs to continuous integration workflows
  • #72 [ci/riscv-arch-test] make test script executable
  • #73 [sim] make ghdl_sim.sh executable
  • #74 [ci/generate-job-matrix] fix UPduino_v3 artifact (bitstream) extension
  • #75 iCESugar
  • #76 [setups/examples] add iCESugar Minimal
  • #79 add mailmap
  • #80 Added option to print a selected subset of information from processor…
  • #82 [sim] use custom VUnit loggers for better verbosity control
  • #83 [setups/osflow] support optionally using Verilog sources and add Fomu MixedLanguage example
  • #84 [setups/osflow/iCESugar] update PCF

Closed issues:

  • #50 Endianness inconsistency
  • #58 mtime_o could be instable
  • #62 Processor Boot Concept
  • #70 Passing argument to ghdl_sim.sh - bug?

📚 Documentation