Fixed gpio not getting input connections (a bit more) due to verilog being dumb and not correctly parsing a mux inside a mux when performing syntheses, even though it works correctly in rtl simulation.
3 files changed
tree: c643e99e321478b4480194edc90c2e0d1bbe2fd2
  1. .github/
  2. def/
  3. docs/
  4. gds/
  5. lef/
  6. mag/
  7. maglef/
  8. openlane/
  9. sdc/
  10. sdf/
  11. signoff/
  12. spef/
  13. spi/
  14. verilog/
  15. .gitignore
  16. LICENSE
  17. Makefile
  18. README.md
README.md

License UPRJ_CI

ExperiarSoC

RISC-V SoC designed for the Efabless Open MPW Program. This project

Block diagram of Experiar SoC

Features

  • Dual RV32I cores
  • Per core SRAM
  • JTAG interface
  • External flash controller
  • Shared video SRAM
  • Configurable VGA output
  • 3x UART ports + 1 internal to caravel
  • 1x SPI ports
  • 4x PWM counters with 4x separate outputs (2 are internal read only)

Memory Map

Memory map for Experiar SoC

Macro Layout

Build Status

  • CaravelHost: Success
  • ExperiarCore: Success
  • Flash: Success
  • Peripherals: Success
  • Video: Success
  • WishboneInterconnect: Success
  • user_project_wrapper: Success

Several macros have max slew violations.

Tests

RTL

verify-peripheralsGPIO-rtl: Success

verify-peripheralsUART-rtl: Success

verify-peripheralsSPI-rtl: Not implemented

verify-peripheralsPWM-rtl: Not implemented

verify-memory-rtl: Success

verify-video-rtl: Success (Not validating correct pixel data)

verify-corePC-rtl: Success

verify-coreMemory-rtl: Not implemented

verify-coreArch-rtl: Not implemented

GL

verify-peripheralsGPIO-gl: Failed

verify-peripheralsUART-gl: Failed

verify-peripheralsSPI-gl: Not implemented

verify-peripheralsPWM-gl: Not implemented

verify-memory-gl: Not run

verify-video-gl: Not run

verify-corePC-gl: Failed

verify-coreMemory-gl: Not implemented

verify-coreArch-gl: Not implemented

Need to do

  • Write remaining tests (and fix everything until they pass)
  • Fix timing violations
  • Make version of art which passes prechecks

Could do

  • Add uart pin swapping
  • Flash controller
  • JTAG core management controller
  • CSRs
  • More tests
  • Tile map rendering
  • Change peripheral bus design to have a read ready signal
  • Fetch next instruction a clock cycle earlier so instructions only take 2 cycles

Reference work and inspiration

  • Zero to ASIC Course: Complete course on ASIC design. Also has useful references and terminology definitions.
  • Openlane Documentation: Reference for a lot of configuration. The Variables and Hardening Macros pages have been particularity useful.
  • Caravel Documentation: Reference for caravel and configuration. This seems slightly out of date, but an alternate version can be found in the github repository.
  • Riscduino: Used for inspiration and as a reference for using openlane. There are a number of similar aspects to this project, but all have been reimplemented rather than copied.