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

Interactive Path Analysis Feature Integration #2526

Merged
merged 145 commits into from
May 23, 2024

Conversation

w0lek
Copy link
Contributor

@w0lek w0lek commented Apr 2, 2024

Summary

Added the ability to operate the VPR Viewer in server mode and accept and reply to requests from third-party applications (clients) via socket.

Change log from iteration 1 PR: #2483
which was canceled. This PR is accumulative, it contains all changes from PR 2483#

  • Implemented per path element renderer, allowing to render any combination of path and path elements selection.
  • Using sockpp wrapper to provide cross-platform communication (previously restricted to UNIX socket only).
  • Transitioned to header-based communication protocol instead of delimiter-based to enable sending zipped data.
  • Implementing zlib compression of timing report before transmission.

Description

Implemented the ability to run the VPr Viewer in server mode by specifying a few new command-line arguments: --server and --port_num N. Once the server mode is activated, the VPp Viewer waits for a single client connection to be established.
Currently there two requests are supported:

  1. get n critical path report
    example:
    {"CMD":"0","JOB_ID":"1","OPTIONS":"int:path_num:100;string:path_type:setup;string:details_level:netlist;bool:is_flat_routing:0"}

  2. hight light critical path elements
    example:
    {"CMD":"1","JOB_ID":"3","OPTIONS":"string:path_elements:0#1,2;string:high_light_mode:crit path flylines delays;bool:draw_path_contour:1"}

Motivation and Context

The VPR Viewer server mode enables an extended integration with third-party applications, enhancing the debugging process of FPGA designs. This mode allows parsing reports on the third-party side and brings interactivity to it. Users are able to select paths and path elements freely, and see the result of their selection in the VPR Viewer.

How Has This Been Tested?

The changes are utilized in the Aurora package, where Aurora acts as a client app(in a sense of Interactive Path Analysis Tool), wrapping the execution of the VPR Viewer. Furthermore, these changes have been integrated into FOEDAG already, making them potentially useful for any software component based on FOEDAG.

Aurora v2.6 packages already contains VPR with such functionality.
ipa_path_elements_selected_plus_vpr

The package also contains docs/Aurora_Quick_Start_Guide.pdf where in chapter 3.7 there is full feature description with example how to use it.

As long as the command-line argument --server is not specified, the workflow remains unchanged. However, when the --server command-line argument is specified, additional control via socket is enabled, overriding events coming from the UI.

Types of changes

  • Bug fix (change which fixes an issue)
  • New feature (change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • My change requires a change to the documentation
  • [ will be done in separate PR] I have updated the documentation accordingly
  • I have added tests to cover my changes
  • All new and existing tests passed

w0lek added 30 commits March 15, 2024 21:16
…re), except draw_basic.cpp/h changes, will be updated separately due to conflict with layered draw ability
…he end of the report (will be used in parser on client side)
@w0lek
Copy link
Contributor Author

w0lek commented May 16, 2024

Thanks for applying the previous comments.

I added a few comments to suggest minor improvements.

thank you, i am going to fix them, on Friday(tomorrow) or on this weekend as latest option

w0lek and others added 26 commits May 21, 2024 12:47
… of just std::size_t, where first bool in pair signalize about search status
@w0lek
Copy link
Contributor Author

w0lek commented May 22, 2024

@vaughnbetz @soheilshahrouz @AlexandreSinger
Thank you for a review and feedback, i have corrected all moments.
Please let me know if i need to correct something else.

@vaughnbetz
Copy link
Contributor

Thank you @w0lek ! And thanks to @soheilshahrouz and @AlexandreSinger for the detailed reviews.
A long awaited merge ... :).

@vaughnbetz vaughnbetz merged commit a2e91dc into verilog-to-routing:master May 23, 2024
53 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
build Build system external_libs infra Project Infrastructure lang-cpp C/C++ code lang-make CMake/Make code lang-python Python code lang-shell Shell scripts (bash etc.) VPR VPR FPGA Placement & Routing Tool
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants