[rv_plic] Add skipto handling for large interrupts

Problem:

    Current `reggen` raises an error if `skipto` field is less than
    calculated `offset` field. RV_PLIC sets first target offset to
    `0x100` and if # of interrupt sources is greater than or equal to
    60, it exceeds 0x100 offset for the first target. For 60 interrupts
    , it needs 60 PRIORITY registers (240 addr offset) and two Interrupt
    Pending registers and two Level-Edge registers. So it hits the
    `skipto <= offset` condition in `reggen/validate.py#L1357`.

Error Msg:

    Traceback (most recent call last):
      File "../../../util/regtool.py", line 213, in <module>
        main()
      File "../../../util/regtool.py", line 165, in main
        elif (validate.validate(obj, params=params) == 0):
      File "/util/reggen/validate.py", line 1357, in validate
        " evaluates as " + hex(skipto) +
    TypeError: can only concatenate str (not "int") to str

Resolution:

    Changed `hw/ip/rv_plic/data/rv_plic.hjson.tpl` to consider a large
    number of interrupts case. It calculates the target offset and
    increases skip to value at 0x100 granularity. So if #Src is greater
    than 60, it changes the `skipto` value to 0x200.

    Also, validate.py now converts `['skipto']` to string so that rather
    than above Exception error, it correctly creates error on the log
    file (our stdout).

this is related to #653
2 files changed
tree: 79e90c2a82ddc34f4fc6babbf83fcbd6a3b2caff
  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. azure-pipelines.yml
  13. CONTRIBUTING.md
  14. index.md
  15. LICENSE
  16. meson.build
  17. meson_init.sh
  18. meson_options.txt
  19. python-requirements.txt
  20. README.md
  21. sitemap.md
  22. 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. 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 ./opentitan-docs and starts a local server, which allows you to access the documentation at http://127.0.0.1:5500.

How to contribute

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