AMF-Placer  2.0
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
main.cc
Go to the documentation of this file.
1 
13 #include "3rdParty/Rendering/bl-qt-AMF.h"
14 #include "AMFPlacer.h"
15 
16 void runPlacer(AMFPlacer *placer)
17 {
18  placer->run();
19 }
20 
22 {
23  char *argv[] = {"GUI"};
24  int argc = 1;
25  QApplication app(argc, argv);
26  MainWindow win;
27  win.paintData = placer->paintData;
28  win.setMinimumSize(QSize(400, 320));
29  win.resize(QSize(WIN_W, WIN_H + 80));
30  win.show();
31 
32  app.exec();
33 }
34 
35 int main(int argc, char **argv)
36 {
37  if (argc < 2)
38  {
39  std::cerr << "Usage: " << argv[0] << " <config JSON file> [-gui]" << std::endl;
40  return 1;
41  }
42  bool guiEnable = false;
43  if (argc == 3)
44  {
45  std::string arg2(argv[2]);
46  if (arg2 == "-gui")
47  guiEnable = true;
48  }
49 
50  AMFPlacer *placer = new AMFPlacer(argv[1], guiEnable);
51 
52  std::thread threadPlacer(runPlacer, placer);
53  while (!placer->paintData)
54  {
55  };
56  std::thread *threadPaint = nullptr;
57  if (guiEnable)
58  threadPaint = new std::thread(runVisualization, placer);
59  threadPlacer.join();
60  if (threadPaint)
61  threadPaint->join();
62 
63  delete placer;
64 
65  return 0;
66 }
AMFPlacer
AMFPlacer is an analytical mixed-size FPGA placer.
Definition: AMFPlacer.h:50
runPlacer
void runPlacer(AMFPlacer *placer)
Definition: main.cc:16
AMFPlacer::paintData
PaintDataBase * paintData
Definition: AMFPlacer.h:254
main
int main(int argc, char **argv)
Definition: main.cc:35
AMFPlacer.h
The major file describing the overall workflow of AMFPlacer (an analytical mixed-size FPGA placer)
runVisualization
void runVisualization(AMFPlacer *placer)
Definition: main.cc:21
AMFPlacer::run
void run()
launch the analytical mixed-size FPGA placement procedure
Definition: AMFPlacer.h:133