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

Add support for write broadcasting #37

Open
amykyta3 opened this issue Apr 12, 2023 · 0 comments
Open

Add support for write broadcasting #37

amykyta3 opened this issue Apr 12, 2023 · 0 comments
Assignees
Labels
feature request New feature or request

Comments

@amykyta3
Copy link
Member

amykyta3 commented Apr 12, 2023

A common design pattern is to implement an address region that broadcasts write operations to multiple registers. This saves on software cycles since a single SW write can be used to broadcast a configuration to multiple registers simultaneously.

Since this is not supported by SystemRDL's built-in properties, add this as a UDP extension.

For example:

my_reg_t rega;
my_reg_t regb;
my_reg_t regc[4];

my_reg_t reg_all;

reg_all -> broadcast_write = '{
    rega, regb, regc
};

Writing to reg_all is equivalent to individually writing to rega, regb, and all of regc

Semantics:

  • The broadcast_write property is valid on reg or regfile components
  • If a component is assigned broadcast_write, its hw implementation is omitted. Instead, all the broadcast targets the property references inherit an additional SW write-enable strobe.
  • broadcast_write accepts an array of one or more references.
  • Each reference shall be the exact same component type and datatype as the assignee
  • A reference to a regfile applies recursively to all its child registers
  • A reference to an entire array applies to all elements in the array
  • A reference to a specific array element is not supported
  • A broadcaster and its targets shall be internal to each other. (one cannot be external compared to the other)
  • A software read operation on the broadcaster is illegal and the implementation may optionally return a cpuif error.
@amykyta3 amykyta3 added the feature request New feature or request label Apr 12, 2023
@amykyta3 amykyta3 self-assigned this Apr 20, 2023
@amykyta3 amykyta3 added this to the v1.0 milestone May 12, 2023
@amykyta3 amykyta3 removed this from the v1.0 milestone Oct 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant