Skip to content

Add support for callbacks to cppmod output #2

@sdnellen

Description

@sdnellen

From open-register-design-tool created by ebertland: Juniper#36

We need to register callback functions that are triggered on reads and/or writes of specific registers. The most common use cases are:

  1. After a write is performed, copy or transform data written into one or more fields from the register model to another part of the reference model.
  2. After a write is performed, trigger an action elsewhere in the reference model such as a FIFO push.
  3. When a read is performed, modify the state of one or more fields in the register model before returning data to the caller.
  4. After a read is performed, modify the state of a register such as clearing interrupt status bits.
  5. After a read is performed, trigger an action elsewhere in the reference model such as a FIFO pop.

I propose 4 callback hooks: pre_write, post_write, pre_read, post_read.

post_write: use case 1) & 2)
pre_read: use case 3)
post_read: use case 4) & 5)

I cannot think of a use case for pre_write, but I think it should be added for consistency.

I plan to extend ordt_addr_elem so that callbacks may be registered with any ordt_reg or ordt_regset derived class. I don't have any need to register a callback on a field.

I'll submit a PR when the first draft is done.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions