Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow for WE/WEL in sticky/stickybit fields #98

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

mtdudek
Copy link

@mtdudek mtdudek commented Apr 11, 2024

This PR adds new classes to handle sticky/stickybit fields with WE/WEL property set.

It also removes some classes that were design for edge sensitive nonsitcky fields.
As far as I understand SystemRDL specification,
intr can only be one of the [level|posedge|negedge|bothedge|nonsticky] at a time,
so it's impossible to get posedge nonsticky field.

mtdudek added 2 commits April 9, 2024 23:14
According to the SystemRDL specification interrupt can be either:
level, posedge, negedge, bothedge, or nonsticky.
This means that it's impossible to reach create filed that
satisfies [Pos|Neg|Both]edgeNonstickybit match functions.

Signed-off-by: Maciej Dudek <[email protected]>
This commit adds new type of fields: sticky with write enable.
This is used to gate status/interrupt register when one or more
interrupts aren't monitored.

Signed-off-by: Maciej Dudek <[email protected]>
@mtdudek
Copy link
Author

mtdudek commented Apr 16, 2024

@amykyta3 sorry for pinging you directly, but could you take a look?

@amykyta3
Copy link
Member

Aware of it! I just have a lot of competing priorities. Will review.

@eehusky
Copy link

eehusky commented May 27, 2024

So i dont have any feedback on the PR itself but Ive been trying to get some nonsticky interrupts fields working and want to point out that I think the posedge nonsticky combo is legal.

From Section 9.9 of the SystemRDL spec (emphasis mine).

A nonsticky interrupt is typically used for hierarchical interrupts, e.g., a design has a number of interrupt
registers (meaning a number of registers with one or more interrupt fields instantiated within). Rather than
promoting a number of interrupt signals, the developer can specify an aggregate interrupt register (typically
unmasked, though a mask/enable may be specified) containing the same number of fields as there are
interrupt signals to aggregate. Each field is defined as a nonsticky interrupt and the next value of each
interrupt is directly assigned an interrupt pin for each interrupt register to be aggregated. Interrupt types are
defined with modifiers to the intr property. These modifiers are not booleans and are only valid in
conjunction with the intr property. The nonsticky modifier can be used in conjunction with posedge,
negedge, bothedge, and level.

The syntax for a interrupt property modifiers appears as follows.
[posedge | negedge | bothedge | level | nonsticky] intr

Then from Table 20.

nonsticky
Defines a non-sticky (hierarchical) interrupt; the associ-
ated interrupt field shall not be locked. This modifier can
be specified in conjunction with the other interrupt
types.

admittedly, the way they wrote that BFN seems to be in contradiction with the rest of the section but i was coincidently trying to create a posedge non sticky interrupt :D

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.

3 participants