[prim] Use prim_pkg::impl_e instead of int for Impl

All target-dependent primitives are supplied with an Impl parameter,
which chooses the implementation target. The potential values for this
parameter are listed in the prim_pkg::impl_e enum, which is based on
int.

This commit switches Impl over to use prim_pkg::impl_e as type, instead
of int. Doing so avoids many casts over the code base, at the cost of
having to pass an enum type name to the tool in the PRIM_DEFAULT_IMPL
define. This approach is standards-compliant, but seems fragile.
Let's give it a try nonetheless, and see how tools react to it.

Tested with
- Verilator 4.019
- Xilinx Vivado synthesis 2018.3
- Synopsys VCS 2019.06

Note for the future: revert this commit if you run into tool issues.
16 files changed
tree: c3f5e0789832b0f128b8c2c6a377db36bc2c81bf
  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).