| # 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) |