commit | 5f8a84a5028896844284275514778309c943a6fa | [log] [tgz] |
---|---|---|
author | Srikrishna Iyer <sriyer@google.com> | Thu May 06 17:31:10 2021 -0700 |
committer | Srikrishna Iyer <46467186+sriyerg@users.noreply.github.com> | Fri May 07 20:03:08 2021 -0700 |
tree | 23fcda7787463841567ad9bdaaa9a7c3c017e4db | |
parent | a0ced90f66320402856ba22ed8450b38ac1a6990 [diff] |
[push_pull agent] Driver code refactor Noticed an opportunity to refactor the code a bit to make it more efficient. Primarily, the host and device mode drivers check at runtime on every cycle whether its in push mode or pull mode to decide which signals to drive, which IMO can be improved. The host and device driver classes really need to be broken further down to 2 classes each, for push and pull directions (so have 4 classes) and decide at the time of creation, which one to pick. That way, at runtime, we will no longer need any conditionals. Each of the driver variants are small enough - so they are all added to the same file - `push_pull_driver_lib.sv`, which originally was push_pull_driver,sv`. The `push_pull_driver` class (which previously did not do much), now absorbs a bit more of the driver code (the `get_and_drive` part) and hands off the actual interaction with the interface to a `sub` driver, which is implemented as a pure virtual class. The sub driver is then specialized to the 4 variants. Signed-off-by: Srikrishna Iyer <sriyer@google.com>
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.
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.
The project contains comprehensive documentation of all IPs and tools. You can access it online at docs.opentitan.org.
Have a look at CONTRIBUTING and our documentation on project organization and processes for guidelines on how to contribute code to this repository.
Unless otherwise noted, everything in this repository is covered by the Apache License, Version 2.0 (see LICENSE for full text).