Skip to content

[Atop Filter] Add an obi_atop_filter module to filter-out atomic requests#44

Open
LucaRufer wants to merge 1 commit into
pulp-platform:mainfrom
mosaic-soc:pr/obi-atop-filter
Open

[Atop Filter] Add an obi_atop_filter module to filter-out atomic requests#44
LucaRufer wants to merge 1 commit into
pulp-platform:mainfrom
mosaic-soc:pr/obi-atop-filter

Conversation

@LucaRufer

Copy link
Copy Markdown

Overview

This PR adds an obi_atop_filter module that filters-out atomic requests and responds with an error. The module was created as suggested in #15.

Motivation

This module was created as a counter-part to the obi_atop_resolver, which resolves OBI requests. With these two modules, a user can combine a bus with atomics support to a bus without atomics support and choose whether to resolve or block atomic transactions - allowing selective mixed atomicity systems.

Implementation details

The new module filters atomic operations (ATOPs), i.e., write transactions that have a non-zero a.atop value, from its subordinate to its manager port. The module guarantees that:

  1. a.atop is always obi_pkg::ATOPNONE on the mgr port;
  2. Transactions with non-zero a.atop on the sbr port are handled in conformance with the OBI standard by replying to such transactions with {err, exokay} = 2’b10.

The module supports a configurable number of outstanding transactions.
When an atomic request is detected, the module behaves as follows:

  1. The atomic request is filtered out and not forwarded on this manager port.
  2. The module does not grant any new requests until all outstanding requests were responded to.
  3. Once all outstanding non-atomic requests were completed, it injects an error response for the atomic requests.
  4. After the error response was completed, new requests are allowed again.

The module supports all currently possible OBI configurations, with the exception of Integrity.

In addition to the module, a testbench was added to verify the module. The testbench requires #43 to work properly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant