Skip to content

Simulation of HLS MVAU with URAM for UltraScale devices returns invalid values #1312

@auphelia

Description

@auphelia

Prerequisites

Reproducible on current dev branch, link to test case will follow.

Quick summary

When running simulation for an HLS MVAU with runtime writeable weights in URAM targeting UltraScale devices, the first output values are 'Z's which causes pyxsi to throw an error here: https://github.com/maltanar/pyxsi/blob/feature/utils/py/pyxsi_utils.py#L255
Because a string consisting of Z's can't be converted to an integer. This behaviour is expected and can't be addressed at the moment, it will be addressed as part of the switch to finn xsi as new simulation backend.

Details

When selecting URAM (with the ram_style option "ultra"), depending on the target device the memstream component can have an initialization file for the weights (Versal fabric) or the weights need to be initialized using axilite (UltraScale fabric). In the latter scenario during simulation, we need to insert a pre-hook function in the simulation which writes the weights via axilite.
For the RTL MVAU this is working, but the HLS MVAU starts immediately processing before the weights are written. So that the first values that get produced are invalid and the simulator outputs ‘Z’s. This causes the error that was described above.
For now, the test will be skipped, and this will be addressed as part of the switch to finn xsi as new simulation backend.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions