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

CLIC Architecture tests #186

Open
dansmathers opened this issue Dec 21, 2021 · 11 comments
Open

CLIC Architecture tests #186

dansmathers opened this issue Dec 21, 2021 · 11 comments
Labels
post-v1.0 To be handled after v1.0

Comments

@dansmathers
Copy link
Collaborator

needed for definition of done. creating an issue for tracking

@allenjbaum
Copy link

The arch-test SIG is supposed to be designing infrastructure to test interrupts,
primarily a dummy device that can be programmed to issue interrupts at specific times
(as measured by a delta from the value of the instret counter at the time that the mmio write to the dummy device was executed)
The precise interface to this dummy device is TBD,
** we'd appreciate any thought on what this TG thinks is necessary.**

The other part of this is describing the scenarios that this TG thinks need to be tested to indicate architectural compatibility, e.g.

  • simultaneous interrupts of different priorities from different modes with different priorities and different target modes
  • different configuration values (especially extreme ones) and combinations of them,
  • etc.

@dansmathers
Copy link
Collaborator Author

Adding 2021/10/12 discussion (from meeting minutes)
Philosophical Interrupt testing question. Fake interrupt testing device. Need a way at a future
time an event will be generated. interface is a macro probably be a memory mapped widget. as
long as interface is a macro that implementor can define. one possible implementation is a csr
write. e.g. Use for SAIL. spike can do that too. some CSR that can normally cause a trap. trap
handler redirects. most environments can handle a memory map. testbed implementation issue.

Mock-device at a memory map that can see write to memory. macro is the interface. in SAIL
can you call an external function, like floating point. if have tests that don’t need the macro.
some you want to cause interrupts and multiple interrupts. expose retired counter so can have
device schedule when event happen

@dansmathers
Copy link
Collaborator Author

Adding 2021/06/08 discussion (from meeting minutes)
Imperas shared short presentation how they test interrupts in verilog testbenches and ISS:

  • Discussed external interrupt stimulator/interrupt agent/async event generator which acts
    as a virtual peripheral and the use of macros in test programs to allow different designs
    different methods to stimulate interrupts.
  • Discussed separating DV testing from compatibility testing.
  • Desire for at least some subset of compatibility tests to run on actual hardware/FPGA.
    and a class of tests that require something generating interrupts.
  • Confirm with architectural test group that the direction they are taking still allows for
    implemented hardware to be tested as well.

@dansmathers
Copy link
Collaborator Author

Adding 2021/05/11 discussion (from meeting minutes)
Discussed compliance simulations. Use macros to setup interrupts to abstract interrupt setup
from test and would be platform responsibility to define the macros. Could also add a nondeterministic
compliance sim that does a repeating sequence of instructions and a sanitized trap
handler e.g., signature checks trap did happen and was right one but doesn’t check epc or other
values that could change based on implementation differences.

@dansmathers
Copy link
Collaborator Author

Adding 2021/04/27 discussion (from meeting minutes)
Current proposed test-plan-clic.adoc does simple, minimal testing. E.g. Only does
synchronous tests, tests if CLIC registers can be set, and checks if it vectors to the correct
address.

  • But async behavior and debug are extremely important and where the bugs are. Bugs
    mean incompatibility and fragmentation. Isn’t it important that compliance covers items
    at highest risk of compatibility?
  • Since every pipeline will take an interrupt in a different place, it can’t be verified
    trivially. For actual verification to know CLIC is functioning correctly, need to have a
    way of testing async behaviors. Should CLIC have a standalone test? Generic test
    harness? Unit testing of behavioral component called the CLIC?

@dansmathers
Copy link
Collaborator Author

Adding 2021/03/30 discussion (from meeting minutes)
Current framework: load a test (binary), start a hart, hart runs, hart signals finished,
extract results from memory to verify it ran correctly/check signature.

  • how to handle async events with sail, implementations with varying behavior.
  • Coverage discussion
  • What can be leveraged from work teams have already done.

@allenjbaum
Copy link

allenjbaum commented Jan 10, 2022 via email

@kasanovic
Copy link
Contributor

TG Meeting 2/1/2022. - attendees felt above was sufficient for arch tests

@dansmathers
Copy link
Collaborator Author

Draft Pull request for Smclic, Ssclic testcases added to riscv-arch-test github. This should help enable spike/SAIL CLIC development.

riscv-non-isa/riscv-arch-test#436

@dansmathers dansmathers added the post-v1.0 To be handled after v1.0 label Feb 10, 2024
@dansmathers
Copy link
Collaborator Author

architecture tests need to be created for ratification but don't not need to be accepted int riscv-arch-test. That work is part of ecosystem phase. Since they have been created, changed this label to post-v1.0 to indicate this is now an ecosystem task.

@allenjbaum
Copy link

allenjbaum commented Feb 14, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
post-v1.0 To be handled after v1.0
Projects
None yet
Development

No branches or pull requests

3 participants