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

Change in path from input to output place file causes digest error. #2783

Open
petergrossmann21 opened this issue Oct 18, 2024 · 0 comments
Open

Comments

@petergrossmann21
Copy link
Contributor

During use of VPR in which execution is broken into multiple substeps, it is possible for VPR to produce an output .place and .route file combination that is not self-consistent with respect to its digest data, leading to errors if both are read back for post-processing (in this case, graphics generation). The inconsistency appears to be introduced when a relative path to the .net file in the .place file is replaced with an absolute path and is a change that was made sometime since 5/27/2024 vs. previous methods for writing out the .place file header.

Expected Behaviour

In the test described below, correct output is the generation of a screenshot of a routing solution for a trivial circuit placed on a toy architecture.

Current Behaviour

This issue was discovered running a Silicon Compiler CI test on an updated version of VPR. Normally Silicon Compiler is tested on a fixed commit hash of VPR that we qualify for use (currently 9dd5ff6). Silicon Compiler's flow management for FPGA synthesis and place and route relies on being able to control the file paths for input and output files at each step of operation, so that it can manage an execution flow's file I/O on behalf of the user. In one of its CI tests, it verifies that it can generate a routing solution screenshot by rereading the place and route solution from a neighboring directory tree and running PNG graphics generation of the routing solution as a separate step.

During qualification of a more current VPR version (specifically, de31f09), the CI test described above (https://github.com/siliconcompiler/siliconcompiler/blob/4d825a4a6eecd652ad20ea7034ec75faacd5273a/tests/flows/test_fpgaflow.py#L70) failed when VPR threw an error that the digest for the placement file did not match the expected value.

Possible Solution

Our near-term solution will be to adopt use of the --verify_file_digests off command line option to suppress the hash checks. This issue is raised as a courtesy to encourage dialog about whether the current file header + hash validation solution is robust against all end use cases of interest to VPR developers and users.

Steps to Reproduce

  1. download
    vpr_hash_error_testcase_cleaned.tar.gz
    containing output generated from the CI test described above. Warning: the setup has been lightly modified from original form to fix path issues and then retested to show that below commands should work.
  2. tar -xzvf vpr_hash_error_testcase_cleaned.tar.gz
  3. cd test_fpgaflow_screenshot0/build/adder/_screenshot_job0_NoneNone/screenshot/0/
  4. ./replay.sh

Context

Your Environment

  • VTR revision used: See above
  • Operating System and version: Ubuntu 20.04
  • Compiler version: gcc 10.5.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant