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

[AP] Added AP Flow to VPR #2746

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

AlexandreSinger
Copy link
Contributor

@AlexandreSinger AlexandreSinger commented Sep 24, 2024

This adds the AP flow to VPR, allowing AP to be called from the command line and how the input and output of the flow will interract with the rest of VPR.

Note: I was unable to add a testcase for this since VPR does not have the infrastructure in place to do an "expected fail" (from a full flow call like basic tests and strong tests). Eventually this may be a nice feature to have.

This adds the AP flow to VPR, allowing AP to be called from the command
line and how the input and output of the flow will interract with the
rest of VPR.
@github-actions github-actions bot added VPR VPR FPGA Placement & Routing Tool lang-cpp C/C++ code libvtrutil labels Sep 24, 2024
Copy link
Contributor

@vaughnbetz vaughnbetz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good.
You should also make a documentation update to describe this new command line option (easiest to do now right when you're writing the options and .help) and mark it as experimental / under development.

// some fixed blocks somewhere. Maybe we can live without fixed
// blocks.

// FIXME: Should we enforce that the size of the device is fixed? Or is
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Device size isn't fixed in the constraints file; it's specified either in the arch file or can be specified on the command line.

@@ -276,6 +279,12 @@ void SetupVPR(const t_options* Options,
PlacerOpts->doPlacement = STAGE_DO;
}

if (Options->do_analytical_placement) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe comment why: analytical placement performs both packing & placement with an integrated algorithm.

@@ -1324,6 +1324,11 @@ argparse::ArgumentParser create_arg_parser(const std::string& prog_name, t_optio
.action(argparse::Action::STORE_TRUE)
.default_value("off");

stage_grp.add_argument<bool, ParseOnOff>(args.do_analytical_placement, "--analytical_place")
.help("Run analytical placement")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd expand on this .help. Should say analytical placement uses an integrated packing & placement algorithm.

(Reason to explain this: otherwise it would make more sense for us to just have another set of placement options, but not a different stage).

* True if analytical placement is supposed to be done in the CAD
* flow. False if otherwise.
*/
struct t_ap_opts {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know we've got lots of types in this file already, but I wonder if the t_ap_ops should go in the analytical_place directory (maybe ap_types.h) instead? Don't worry about it if that would be a big refactor or be more trouble than it is worth due to being inconsistent with other opts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lang-cpp C/C++ code libvtrutil VPR VPR FPGA Placement & Routing Tool
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants