blob: 60fa6417b7a42610d9acfed10ec12d726510e9c6 [file] [log] [blame] [view]
# Matcha
## About the project
[Matcha] will be an open source SOC(system on chip) project.
<!-- TODO(pbf): Will add more project description when ready.-->
## About this repository
This repository contains hardware, software and utilities written as part of the
Matcha project. Plus it leverages the Opentitan Repository for its HW IPs,
templates and utilities.
## Documentation
The project contains comprehensive documentation of all IPs and tools. You can
access it.
<!-- TODO(pbf): Add link to documents -->.
## How to contribute
Have a look at our [GettingStarted Guide](https://spacebeaker.googlesource.com/shodan/docs/+/refs/heads/master/GettingStarted.md#developing-in-this-codebase)
for guidelines on how to contribute code to this repository.
## Licensing
Unless otherwise noted, everything in this repository is covered by the Apache
License, Version 2.0 (see [LICENSE](./LICENSE) for full text).
## Prerequisites
Development for matcha requires that the necessary tools and prerequisites be
installed. See [GettingStarted Guide](https://spacebeaker.googlesource.com/shodan/docs/+/refs/heads/master/GettingStarted.md#developing-in-this-codebase)
To setup the build system, run following steps at root of repo:
```bash
source build/setup.sh
```
Install the prerequisites:
```bash
m prereqs
```
Install the tools used for development:
```bash
m tools
```
## Code/Repo Structure
```bash
<root_dir>/hw/matcha/
hw/top_matcha/
BUILD
data/
dv/
formal/
ip/
ip_autogen/
ip_templates/
lint/
rtl/
sw/
syn/
util/
hw/
BUILD
Makefile
sw/
BUILD
device/
hw_tests/
Maefile
util/
BUILD
topgen/
topgen_util
topgen_matcha.py
<root_dir>/hw/opentitan_upstream/
<root_dir>/build/
<root_dir>/Manifest/
<root_dir>/Makefile
<root_dir>/GettingStarted.md
<toot_dir>/...
```
## Quick start guide and cheat sheet
For following steps, make sure the above "Prerequisites" steps have been run if
the repo is been checked out at the first time.
Build RTL top Level and generate registers, interrupt and address map:
```bash
m matcha_hw_generate_all
```
Build verilator simulation target:
```bash
m matcha_hw_verilator_sim
```
Run matcha verilator test suite
```bash
m matcha_hw_verilator_tests
```
Run FPGA compilation flow for Nexus FPGA board:
```bash
m matcha_hw_fpga_nexus
```
## Bazel debug
Run matcha single test with messages to stdout
```bazel
bazel test --test_output=streamed //sw/device/tests:verilator_mailbox_test
```
Run matcha test suites
```bazel
bazel test --test_output=streamed //sw/device/tests:verilator_test_suite
```
Run FPGA compilation flow for Nexus FPGA board with debug commands:
```bazel
bazel build -s //hw/bitstream/vivado:fpga_nexus
```
## Simulation logs
Enable tracing on a single test
```bazel
bazel test --test_output=streamed --test_timeout=1000000 --test_arg=--trace //sw/device/tests:verilator_cam_ctrl_test
```
*Note: `--test_timeout=1000000` sets timeout in seconds. This helps prevent timeout issues then using trace.*
Waveform dump and peripheral logs for a test located in:
```bash
<root_dir>/hw/matcha/bazel-testlogs/sw/device/tests/<test_name>/test.outputs/output.zip
sim.fst (if tracing is enabled)
uart0.log
smc_uart.log
spi0.log
usb0.log
```
*Note: The trace_core_#.log files available in output.zip is currently a TODO
item.*
## The FPGA compiled bitstream and reports (resource utilization, pin assignment, etc) can be found in following directory:
<matcha_root_dir>/bazel-bin/hw/bitstream/vivado/build.fpga_nexus/synth-vivado/google_systems_chip_matcha_nexus_0.1.runs/impl_1/chip_matcha_nexus.bit
<matcha_root_dir>/bazel-bin/hw/bitstream/vivado/build.fpga_nexus/synth-vivado/google_systems_chip_matcha_nexus_0.1.runs/impl_1/*.rpt
<matcha_root_dir>/bazel-bin/hw/bitstream/vivado/build.fpga_nexus/synth-vivado/google_systems_chip_matcha_nexus_0.1.runs/synth_1/*.rpt
## DV flow
[Setup DV flow](doc/getting_started/setup_dv.md)