[otbn] Integrate ECC check bits properly into the memory

These extra bits will be used for ECC-based integrity checks. We're
not doing that as yet, but want correctly sized memories for area
estimation.

We'd already expanded the memories, using the top bits as check bits.
Unfortunately, that causes (correctly) Verilator lint errors. Most are
easy enough to waive with unused_foo signals, but our choice of a
write mask doesn't divide into the memory size which causes warnings
in the SRAM primitive.

Rather than hack around further, this patch integrates things more
properly, putting 7 (ignored) "check bits" after each 32-bit word in
the data memory. For now, otbn.sv converts between the expanded
312-bit words and the narrow 256-bit words that the SRAM adapter, the
core and the model expect. Once we start generating/consuming
integrity properly, this conversion will essentially move to the Ibex
and OTBN ALUs.

As well as the narrowing/widening conversions in otbn.sv (repeated in
otbn_top_sim.sv), we also use the new Ecc32MemArea class to handle the
check bit insertion.

Signed-off-by: Rupert Swarbrick <rswarbrick@lowrisc.org>
5 files changed
tree: e8a8daf1cb7258a0049410a34079e8348967e942
  1. .github/
  2. ci/
  3. doc/
  4. hw/
  5. site/
  6. sw/
  7. test/
  8. util/
  9. .clang-format
  10. .dockerignore
  11. .flake8
  12. .gitignore
  13. .style.yapf
  14. .svlint.toml
  15. .svls.toml
  16. _index.md
  17. apt-requirements.txt
  18. azure-pipelines.yml
  19. check_tool_requirements.core
  20. CLA
  21. COMMITTERS
  22. CONTRIBUTING.md
  23. LICENSE
  24. meson.build
  25. meson_init.sh
  26. meson_options.txt
  27. python-requirements.txt
  28. README.md
  29. tool_requirements.py
  30. toolchain.txt
  31. topgen-generator.core
  32. topgen-reg-only.core
  33. topgen.core
  34. 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 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).