[rv_dm, dv] Fixes for sberror=2,7 support

Previously, if the SBA TL access returned an error response,
it would have not impact (i.e. it would not show up) in the
DMI SBCS status register, and the debugger would have no way
of knowing an erroneous response occurred. Likewise, if the
SBA TL response had a data integrity error, it would also not
show up.

The recent changes to the PULP debug module added support for
indicating device error response as sberror=2 and also allowed
TL device intg error to be indicated as other error (sberror=7).

This commit updates the sba_access_utils_pkg (monitor and the
utility tasks) and the RV_DM testbench (sequences and the
scoreboard with fixes needed to support this design change.

The sba access monitor can only predict sberror=3,4. It now
wires the actual sberror value seen when polling the sbcs for
status into the predicted SBA access item that is written to the
analysis port. The rv_dm scoreboard which retrieves the item
checks the correctness of sberror=2,7 based on the monitored
TL transaction.

The sba access util tasks have minor flow related enhancements
to ensure the accesses to SBA registers in the DMI space are
sequenced corrected to properly facilitate a SBA TL access.

The rv_dm sba test sequences have similar fixes to properly
sequence events to avoid unexpected bahaviors. The injection of
SBA TL device error response and SBA TL device intg error is
now disbled in the base sequence class, which now does only
does clean accesses. These are constrained-randomized in the
extended vseq classes instead, since they have a real impact
on the behavior of the PULP debug module's SBA logic.

Signed-off-by: Srikrishna Iyer <sriyer@google.com>
5 files changed
tree: fb772adb10ec9cfd708447a01fadee9b8adcb04e
  1. .github/
  2. ci/
  3. doc/
  4. hw/
  5. rules/
  6. site/
  7. sw/
  8. third_party/
  9. util/
  10. .bazelignore
  11. .bazelrc
  12. .bazelversion
  13. .clang-format
  14. .dockerignore
  15. .flake8
  16. .gitattributes
  17. .gitignore
  18. .style.yapf
  19. .svlint.toml
  20. .svls.toml
  21. _index.md
  22. apt-requirements.txt
  23. azure-pipelines.yml
  24. bazelisk.sh
  25. BUILD.bazel
  26. check_tool_requirements.core
  27. CLA
  28. COMMITTERS
  29. CONTRIBUTING.md
  30. LICENSE
  31. mypy.ini
  32. python-requirements.txt
  33. README.md
  34. tool_requirements.py
  35. topgen-reg-only.core
  36. topgen.core
  37. WORKSPACE
  38. yum-requirements.txt
README.md

OpenTitan

OpenTitan logo

About the project

OpenTitan is an open source silicon Root of Trust (RoT) project. OpenTitan will make the silicon RoT design and implementation more transparent, trustworthy, and secure for enterprises, platform providers, and chip manufacturers. OpenTitan is administered by lowRISC CIC as a collaborative project to produce high quality, open IP for instantiation as a full-featured product. See the OpenTitan site and OpenTitan docs for more information about the project.

About this repository

This repository contains hardware, software and utilities written as part of the OpenTitan project. It is structured as monolithic repository, or “monorepo”, where all components live in one repository. It exists to enable collaboration across partners participating in the OpenTitan project.

Documentation

The project contains comprehensive documentation of all IPs and tools. You can access it online at docs.opentitan.org.

How to contribute

Have a look at CONTRIBUTING and our documentation on project organization and processes 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 for full text).