f4pga / f4pga/ideas

Testing on hardware

Open
#25 5 comments 0 reactions 0 assignees View on GitHub
enhancement help wanted project-symbiflow-arch-defs project-xray type-coding type-infra
Dominant language
No language data
Stars
86
Forks
9
PR merge metrics
No merged PRs in 30d

Description

# 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:

* Cheap FPGA DUT (Device Under Test)
* Cheap "logic analyzer" type board (use [fx2lafw](https://sigrok.org/wiki/Fx2lafw))
* Connect them with an adapter board
* software to drive tests:
* build image
* load image
* capture output of sigrok and UART
* check against a expected result

It should probably target the most complex design for a specific architecture (eg PicoSoC), but maybe a good first intermediate would be [iceram](https://github.com/SymbiFlow/symbiflow-arch-defs/tree/master/ice40/tests/iceram) or [ram_test](https://github.com/SymbiFlow/symbiflow-arch-defs/tree/master/xc7/tests/ram_test) with a change.

Simplifications to get started:
* start with UART only, maybe UART echo (repeat output)
* iCE40 boards are cheaper

## 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

* Run without "logic analyzer"
* Run only specified DUT
* Run all or only specific test
* Some sanity check that hardware is there and not defunct in someway (not sure what to do here)

# Prerequisites

* Decide initial target hardware
* Generate expected results
* Design adapter board (if supporting logic analyzer)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.