[hmac] Block the msg fifo request with packer ready

This is follow-up PR for #683

Problem 1:

    In #683, the design unguarded msg_fifo_gnt signal from
    `fifo_wready`. It only needs to see `packer_ready`. This results
    unintended request acceptance as `msg_write` is also gated by
    `fifo_wready`.

What happend with the problem is, when the MSG_FIFO is full, it
de-asserts `fifo_wready`. At this time, `prim_packer` has still enough
room to accept one more request. It doesn't drop `packer_ready`
(`prim_packer.ready_o`) yet. So `msg_fifo_gnt` can be high whenever the
request comes. That request should've come to `prim_packer`, which
didn't happen due to the `msg_write` is gated by `fifo_wready`.

Resolution:

    `msg_write` is not gated by `fifo_wready`.

I've tested hmac_back_pressure test with modified design. It still
fails. But the failure isn't due to the modified design but the
scoreboard assumes getting the fifo_full status which cannot be happen
as the request was back-pressured and accepted after fifo_full condition
is resolved.

Also, fifo_full interrupt now happens when MSG_FIFO and prim_packer both
cannot accept the new request, not only seeing MSG_FIFO `fifo_wready`.

Cindy has a fix PR for this issue.
2 files changed
tree: 99147f5c8aa2db0565c93c51562e357d7c51dc72
  1. .github/
  2. ci/
  3. doc/
  4. hw/
  5. site/
  6. sw/
  7. test/
  8. util/
  9. .clang-format
  10. .gitignore
  11. .style.yapf
  12. _index.md
  13. azure-pipelines.yml
  14. CONTRIBUTING.md
  15. LICENSE
  16. meson.build
  17. meson_init.sh
  18. meson_options.txt
  19. python-requirements.txt
  20. README.md
  21. toolchain.txt
README.md

OpenTitan

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.

Documentation

The project contains comprehensive documentation of all IPs and tools. You can either access it online or build it locally by following the steps below.

  1. Download and install hugo-extended.

  2. Ensure that you have the required Python modules installed (to be executed in the repository root):

$ sudo apt install python3 python3-pip
$ pip3 install --user -r python-requirements.txt
  1. Execute the build script:
$ ./util/build_docs.py --preview

This compiles the documentation into ./build/docs and starts a local server, which allows you to access the documentation at http://127.0.0.1:1313.

How to contribute

Have a look at CONTRIBUTING for guidelines 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).