Interrupt Handling in OSVVM AddressBus Model Independent Transactions

Why OSVVM™? Forums OSVVM Interrupt Handling in OSVVM AddressBus Model Independent Transactions

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #2520
    l1234
    Member

    [Moved from the post “Multiple Drivers on Transaction Record”:]

    Moin Jim,
    I have created a VIP block acting as an interrupt service routine, e.g. clearing the detected interrupt bits on interrupt occurrence, just like a SW driver would do.
    A parallel testcase process is running. Both parts access the same register space.
    So, I instantiated an Axi4LiteManager and connected both the testcase process and the VIP block to the same ManagerRec. This does obviously not work.
    How would you implement that structure? Are there any procedures available that can be used to implement such a feature? I had a look into TbAxi4_ReleaseAcquireManager1, but this scenario is more suitable for a kind of deterministic testcase flow, not for an asynchronously occurring snterrupt service
    Do I need some kind of ManagerRec 2to1 arbiter or 2 managers with AXI4-Lite interconnect?
    I hope there is an easier way.
    Many thanks in advance,
    Lars

    #2527
    Jim Lewis
    Member

    Hi Lars,
    OSVVM has an InterruptHandler.vhd in OsvvmLibraries/Common/Src. It handles switching records for you. When there is no interrupt pending, it connects the transaction record of TransRec to the AddressBus VC (such as Axi4Manager or Axi4LiteManager). When an interrupt is pending it connects the InterruptRec to the AddressBusVC.

    The InterruptRec can come from either TestCtrl or a separate entity (especially if it is always the same).

    Testbench that tests it is here: OsvvmLibraries/Common/Src/TbInterrupt/Testbench
    You do not need the InterruptGenerator if you already have a source of interrupts. The array of interrupts is defined by: InterruptGlobalSignalPkg also in OsvvmLibraries/Common/Src, but you are not required to use this as long as you have an array of interrupts (even an array of 1 to 1).

    Documentation is here: OsvvmLibraries/Documentation/InterruptHandler_user_guide.pdf

    Best Regards,
    Jim

Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.