ara_soc
: Top-Level Dummy SoC for Ara
Overview
The ara_soc
module is a top-level dummy system-on-chip used to instantiate the Ara vector processor alongside the scalar CVA6 core, enabling test and benchmarking in a standalone simulation environment.
This SoC includes:
Ara + CVA6 integration
L2 memory (a simple SRAM, called DRAM in the file for historical reasons)
Dummy UART peripheral
Control and status registers
AXI crossbar interconnect and protocol adapters
It is parameterizable to support varying numbers of vector lanes and data widths, enabling scalable evaluation of Ara across configurations.
Parameters
Name |
Description |
---|---|
|
Number of parallel vector lanes (2–16, power-of-two) |
|
Vector length in bits (usually |
|
Enable OS-level support in CVA6 |
|
Enables FP16, FP32, FP64 support |
|
Enable optional |
|
Enables fixed-point support |
|
Enables segmented memory instructions |
|
AXI bus widths for data, address, ID, user |
|
AXI response delay in picoseconds (used in gate-level simulations) |
|
Number of words in simulated SRAM ( |
Memory Map
Region |
Base Address |
Size |
---|---|---|
|
|
1 GB |
|
|
4 KB |
|
|
4 KB |
Internal Structure
AXI Crossbar
One master (CVA6+Ara system)
Three slaves: SRAM, UART, control registers
Managed via
axi_xbar
with routing rules
SRAM (L2 Memory)
Backed by non-synthesizable SRAM (
tc_sram
)Connected via
axi_to_mem
andaxi_atop_filter
(atomics filtered out)
Dummy UART
APB interface exposed to the environment
Internally connected via AXI-Lite and AXI width converter
Used to implement printf’s putc in during simulation
Control Registers
Control and status block (exit signal, counters, etc.)
Connected via AXI-Lite
CVA6 + Ara Integration
Instantiated via
ara_system
Custom configuration generated dynamically from RVV template config
Interfaces
Inputs
clk_i
,rst_ni
: Clock and active-low resetscan_enable_i
,scan_data_i
: Scan chain inputs (for DFT)uart_prdata_i
,uart_pready_i
,uart_pslverr_i
: UART bus inputs
Outputs
exit_o
: Simulation termination flag, sensed by the testbench to end the simulation.hw_cnt_en_o
: Hardware counter enable signal. Used for benchmarking.scan_data_o
: Scan chain output.uart_*
: APB UART outputs.
Configuration Notes
CVA6 is configured dynamically using:
function automatic config_pkg::cva6_user_cfg_t gen_usr_cva6_config(...);
Memory
CVA6 + Ara access the memory through AXI using a 32 * #Lanes
-bit wide data port. This wide data port avoids complex interconnects and banked memory management, but performs poorly with indexed memory operations.