f4pga / ideas

Random ideas and interesting ideas for things we hope to eventually do.
86 stars 9 forks source link

Testing on hardware #25

Open elms opened 5 years ago

elms commented 5 years ago

Brief explanation

Develop a hardware setup that provides good coverage for features and platforms supported. Ideally this can be incorporated into a CI approach in the future. It may start as a manual process or provide minimal coverage, but the approach needs to scale.

Expected results

An easy and relatively inexpensive setup that can be reproduced at different scales (different subsets of hardware and tests). A full scale setup would be connected to the CI system and report failures. I'm not sure if it's practical to incorporate into presubmit checks.

Detailed Explanation

Initial sketch:

It should probably target the most complex design for a specific architecture (eg PicoSoC), but maybe a good first intermediate would be iceram or ram_test with a change.

Simplifications to get started:

Scaling

Additional target boards could be added with an additional set of DUT, "logic analyzer" board, and adapter board. I don't think the limit for this would be quite high, but requires specifying which UART/"logic analyzer" is connected to which hardware.

Probably shouldn't write to flash for all tests when it is scaled up.

Options

Prerequisites

mithro commented 5 years ago

Thanks for the detailed description @elmsfu!

Using Glasgow from @whitequark for something like this might be another option. See https://github.com/whitequark/Glasgow

GitHub
whitequark/Glasgow
Scottish Army Knife for electronics. Contribute to whitequark/Glasgow development by creating an account on GitHub.
elms commented 5 years ago

I saw @daveshah1 add a repo for ECP5 testing https://github.com/daveshah1/hilotof

GitHub
daveshah1/hilotof
HiLoTOF -- Hardware-in-the-Loop Test framework for Open FPGAs - daveshah1/hilotof
mkurc-ant commented 5 years ago

I would go for something that can provide a stimulus to the DUT. It can be either the "Glasgow" project or eg. a FTDI breakout board. I guess a solution with FTDI might be cheaper and simpler.

HackerFoo commented 5 years ago

Another option is to use embedded CPU(s) (e.g. MicroBlaze) maybe one to stimulate the DUT and one to collect and summarize the results. Then exhaustive checks could be run for up to 32 bits in a few minutes.

elms commented 5 years ago

Another option is to use embedded CPU(s) (e.g. MicroBlaze) maybe one to stimulate the DUT and one to collect and summarize the results. Then exhaustive checks could be run for up to 32 bits in a few minutes.

I think an interesting aspect of this is for small tests. If we have the test driver be static and only reconfigure a region that contains a UUT (unit under test).