Reference Design
Active Project
Cover image
Megasoc architecture
dwn @ soclabs

megasoc re-usable SoC platform

Rationale

megasoc has been designed to provide a complex SoC component that can 'host' and support the development and evaluation of research components or subsystems. The design allows for seamless transition from FPGA to physical silicon implementation via a pre-verified programmable control system that allows reuse of software and diagnostic functionality to facilitate the configuration, control and diagnostic analysis of research hardware such as custom accelerators or signal processing.

The design is based on an Arm Cortex-A53 CPU core with inspiration from the Corestone 1000 subsystem from Arm. megasoc allows the reuse of the AAA pre-verified IP, documentation and software but it is architected to support simple 'bolting-on' of experimental hardware. The aim of megasoc is to provide a fully Linux capable SoC whilst minimising the cost of physical silicon production.

Technical Overview

megasoc is a complex SoC utilising the Cortex-A53 processor with pad-level support for silicon implementaation. Included is:

  • CPU - Armv8-a Cortex A53 processor
  • Interrupt Controller - GIC 400
  • Software Debugger - Arm DAP-lite
  • Boot ROM
  • XiP QSPI - For program or BIOS
  • SRAM
  • NIC 400 System Bud
  • DRAM controller
  • DMA for system support - Off-chip mem to DRAM
  • Peripherals (UART, Timers, etc)

Architecture 

The overall architecture is as shown below. This has been seperated into 2 main sections, the CPU and System sections. Development so far has been focused on the CPU subsystem, as we are currently exploring options for sourcing the IP for the ethernet, USB, DDR and PCIe controllers. 

MegaSoC Architecture

Address Map

The Cortex A53 has a 40-bit address interface, this gives a total addressable space of 1 TB. For now a simplified 32 bit address map is being created, it is likely that any higher address will be used to expand the DRAM and possibly for direct access from the CPU to the communication interfaces (PCIe, USB, Ethernet) if possible, although these will all likely be controlled by DMA transfers.

Currently this address map is unoptimised (some regions are much larger than neccessary, and there are a few empty regions which will likely be filled as development progresses.

MegaSoC CPU Address Map
Start AddressEnd AddressRegionSize
0x000000000x0000FFFFBoot Rom64 KiB
0x004000000x007FFFFFQSPI Flash4 MB
0x008000000x0080FFFFSRAM64 KiB
0x010000000x0100FFFFFlash and Cache Control64 KiB
0x010100000x01011FFFDMA Control8 KiB
0x011000000x01107FFFGIT 400 Control32 KiB
0x400000000x5FFFFFFFPeripheral512 KiB
0x600000000x7FFFFFFFDebug512 KiB
0x800000000xFFFFFFFFDRAM2 GB

CPU Interrupts

The GIC-400 generic interrupt controller supports a maximum of 

MegaSoC Cortex A53 Interrupt Map
IRQ NumberSource
32DMA350 Channel 0 interrupt
33DMA350 Channel 1 interrupt
34DMA350 Channel 2 interrupt
35DMA350 Channel 3 interrupt
36DMA350 common interrupt
37UART0 Transmit interrupt
38UART0 Recieve interrupt
39UART0 TX Overrun interrupt
40UART0 RX Overrun interrupt
41UART0 Combined interrupt
42TIMER0 interrupt

Communication channel

Currently implemented is a single UART channel for off-chip communications. 

Pinlist

Pin/PortFunction
REF_CLK_XTAL1/2Main System clock from crystal oscillator
RT_CLK_XTAL1/2Real time clock input from crystal oscillator
PORESTnActive low power-on-reset
nSRSTActive low System reset
GPIO_P0[15:0]GPIO Port 0
GPIO_P1[15:0]GPIO Port 1
QSPI_SCLKClock output from QSPI controller
QSPI_nCSChip select output from QSPI controller
QSPI_IOData I/O from QSPI controller
FT_CLKFT1248 Clock
FT_SSNFT1248 Chip Select
FT_MISOFT1248 input
FT_MIOSIOFT1248 IO

Using megaSoC

If you'd like to use megasoc for your custom hardware, you can fork or clone the megasoc project git repository. This SoC reference design is still under development, expand the V1 Tapeout section below for more details.

 

megaSoC V1 Tapeout

Work is currently underway to tapeout megaSoC in 2026. This initial version will be a "Minimal Viable Product" version of megaSoC. This version will not have the complexity of high speed external interfaces and the PCIe, USB and Ethernet subsystems. 

The aim for the initial tapeout of megaSoC is to prove the core compute system, the fabrication flows and provide a good baseline of information to the community on taping out an A-class processor on an advanced technology node. As with the first version of nanoSoC some application scenarios may be limited it will serve as a good foundation for future improvements.

megaSoC-lite

These two controllers will be replaced with an SDIO controller (ZipCPU SDIO) and a UART controller (PL011 from ARM)

Network over UART

Whilst not ideal, networking is possible over UART. And this is the plan for the MVP implementation of this megaSoC-lite version. Network communication is possible using packages like PPP in linux (an example on how to set this up between 2 raspberry pi's). The PL011 from Arm has been chosen as it allows for hardware flow control which is ideal for this application.

SD card filesystem 

Ideally a very high speed non-volatile memory would be used for the filesystem using a PCIe interface to integrate an M.2 SSD device. However, it is quite common practice to use SD cards for such applications. The implementation of a PCIe interface and associated PHY for the SD controller is the target for a later version. The ZipCPU project is mostly focused around FPGA implementations and so whilst there is a lot of information available it would require a custom PHY implementation. Without a PHY the system would be limited in the bandwidth achievable for the SD card.

DDR Controller + PHY

For this project, Synopsys have kindly donated their DDR controller and PHY IP to soclabs. The specific parts used in this project are the uMCTL2 DDR controller and LPDDR4 multiPHY. This will allow for an implementation of megaSoC as a single board computer (SBC), with LPDDR4 module on the PCB. For this initial prototype of the project we are keeping this as simple as possible, and so using a 16 channel LPDDR4 device (most likely something like the D1611PM3BDGVIW-U device from Kingston technology).

For this configuration we are using a 16 Gbit (2GB) device, which we believe will give us a good starting point to ensure enough memory for the OS performance, whilst keeping complexity and cost to a minimum. 

Project Milestones

Architectural DesignGetting StartedSpecifying a SoCdata modelIP SelectionVerification Methodology
Behavioural DesignBehavioural ModellingGenerate RTLRTL VerificationSimulation
Logical DesignTechnology SelectionSynthesisDesign for TestLogical verification
Physical DesignFloor PlanningPreperationClock Tree SynthesisRoutingTiming closurePhysical VerificationTape Out
Post Silicon
Complete
In Progress
Not Started
Not Needed
Click on any milestone above for details
X

Do you want to view information on how to complete the work stage ""

View

or update the work stage for this project?

Log in if you are the author to update

  1. Tape Out

    Design Flow

    Initial (ambitious) deadline for tapeout on europractise MPW for TSMC 16nm 

  2. Architectural Design

    Target Date
    Completed Date

    Overall architecture of megaSoC

    Result of Work

    The overall architecture is complete for this and can see from the architectural diagram. 

  3. Getting Started

    Design Flow
    Completed Date
    Result of Work

    Environment already setup for this project in the SoCLabs server

  4. Specifying a SoC

    Design Flow
    Completed Date
    Result of Work

    The aims for the SoC is to build a linux capable system. This will be achieved using an application class processor (A53) with filesystem storage (SD card), and system memory (LPDDR4). The networking for this initial version of the SoC will be performed using SLIP (serial line internet protocol) over UART. 

  5. IP Selection

    Design Flow
    Completed Date
    Result of Work

    The SoC consists of:

    • Arm Cortex A53
    • Arm GIC-400
    • Arm PCK-600
    • Arm NIC-400
    • SoCLabs QSPI AHB controller
    • Arm Corstone 101
    • Arm PL011
    • Open source SDIO controller (from ZipCPU)
    • Synopsys uMCTL2 DDR controller and LPDDR4 multiPHY
  6. Behavioural Design

    Target Date

    Most of the SoC is complete and simulated. However work is ongoing particularly on the reset controller, clock controller and DDR controller

  7. RTL Verification

    Design Flow
    Target Date

    Verification of the system is ongoing. Most of the subsystems/IP are pre-verified. So only integration verification is needed. Parts still to be verified are:

    • DDR controller
    • SDIO controller
    • Reset controller
  8. Technology Selection

    Completed Date
    Result of Work

    Aim for this project is to tape out with Europractise on the TSMC 16nm MPW

  9. Synthesis

    Design Flow
    Target Date

    Initial synthesis of the Cortex A53 is near completion.

    The rest of the SoC is still to go. The plan for this is to do a hierarchical approach, so the Cortex A53 and DRAM controller will be synthesised seperately, then integrated into the full system.

  10. Design for Test

    Design Flow
    Target Date

    In this complex SoC we have yet to decide exactly what scheme we will use for DFT. 

    This is a point that needs further clarification/discussion in the team

  11. Logical verification

    Target Date

    Logical equivalence checking and gate level simulations will be needed.

    For a SoC of this size, gate level simulations may be impractical, but are usually good to check bootup sequence at the very least

  12. Floor Planning

    Design Flow
    Target Date

    As we are planning on using Synopsys Fusion Compiler for the backend, floorplanning and synthesis will happen simultaneously. 

    The hierarchical approach will mean treating the Cortex A53 and DDR controller as macro blocks. 

    Some time will be allocated for floorplan exploration as well

  13. Routing

    Design Flow
    Target Date
  14. Physical Verification

    Target Date

    Full DRC, STA, and LEC should be complete on this design.

    Initial DRC will be complete before 30th June 2026, as that is when we have to register for the tapeout slot. Ideally at this point we will have some idea on how realistic an october tapeout will be

Team

Research Area
Low power system design
Role
Consultant

Add new comment

To post a comment on this article, please log in to your account. New users can create an account.

Project Creator
Profile picture Daniel Newbrook

Digital Design Engineer at University of Southampton
Research area: IoT Devices
ORCID Profile

Submitted on

Actions

Log-in to Join the Team