Skip to content

Dashboard for RRGraph API refactoring status #1868

Closed
@tangxifan

Description

@tangxifan

Motivation of Refactoring effort

A detailed technical plan can be found at link

The overall refactoring effort aims to

  • create a unified data structure RRGraphView as a centralized storage for all the routing resource graph -related information. See Fig. 1
  • create a set of frame view object from the centralized storage RRGraph for client functions, which are suitable for rr_graph builder, placer, router, GUI, timing analyzer etc. See Fig. 2.
  • This is to avoid massive updates to the codes of client functions when there is a change on the unified data structure.
  • Also it avoid large memory footprint for client functions, since each client function may only use a small portion (typically <50%) APIs of the unified object.

image
Fig. 1 Illustration of the relationship between data structures

image
Fig. 2 Different levels of frame views of routing resource graphs to satisfy various needs from client functions.

The result/benefits of the refactoring efforts is

  • The routing resource graph can be decoupled from VPR's core engine as a library. Unit tests can be enabled
  • It is much easier for developers to develop custom routing resource graph builders thanks to the APIs of the unified data structure RRGraph. A routing resource graph builder can be a library, decoupled from VPR's core engine. Many checking codes can be efficiently merged into the data structure and developers can save a lot of efforts in writing the atom-level sanity checks.
  • Ensure that each client functions have a clean view of the routing resource graph, i.e. RRGraphView. In other words, routing resource graph will be read-only and only accessors are exposed to client functions. Developers have no worries on developing their own placer/router etc.

Checklist

RRGraphBuilder API to be refactored:

RRGraphView API to be refactored:

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions