@@ -444,22 +444,22 @@ Use the options below to override this default naming behaviour.
444
444
Reads a file containing the locations of each atom on the FPGA.
445
445
This is used by the packer to better cluster atoms together.
446
446
447
- The flat placement file (which often ends in `` .fplace ` `) is a text file
447
+ The flat placement file (which often ends in :ref: ` .fplace < vpr_flat_place_file > `) is a text file
448
448
where each line describes the location of an atom. Each line in the flat
449
449
placement file should have the following syntax:
450
450
451
451
.. code-block :: none
452
452
453
- <atom_name : str> <x : float> <y : float> <layer : float> <atom_sub_tile : int> <atom_site_idx? : int>
453
+ <atom_name : str> <x : float> <y : float> <layer : float> <atom_sub_tile : int>
454
454
455
455
For example:
456
456
457
457
.. code-block :: none
458
458
459
- n523 6 8 0 0 3
460
- n522 6 8 0 0 5
461
- n520 6 8 0 0 2
462
- n518 6 8 0 0 16
459
+ n523 6 8 0 0
460
+ n522 6 8 0 0
461
+ n520 6 8 0 0
462
+ n518 6 8 0 0
463
463
464
464
The position of the atom on the FPGA is given by 3 floating point values
465
465
(``x ``, ``y ``, ``layer ``). We allow for the positions of atom to be not
@@ -475,25 +475,29 @@ Use the options below to override this default naming behaviour.
475
475
the sub-tile of an atom is unkown (allowing the packing algorithm to choose
476
476
any sub-tile at the given (x, y, layer) location).
477
477
478
- The ``site_idx `` is an optional index into a linearized list of primitive
479
- locations within a cluster-level block which may be used as a hint to
480
- reconstruct clusters.
481
-
482
478
.. warning ::
483
479
484
480
This interface is currently experimental and under active development.
485
481
486
482
.. option :: --write_flat_place <file >
487
483
488
- Writes the post-placement locations of each atom into a flat placement file.
484
+ Writes the post-placement locations of each atom into a flat placement file
485
+ (see :ref: `flat placement file format <vpr_flat_place_file >`).
486
+
487
+ For each atom in the netlist, the following information is stored into the
488
+ flat placement file:
489
+
490
+ * The x, y, and sub_tile location of the cluster that contains this atom.
491
+
492
+ .. option :: --write_legalized_flat_place <file >
493
+
494
+ Writes the post-legalization locations of each atom into a flat placement file
495
+ (see :ref: `flat placement file format <vpr_flat_place_file >`).
489
496
490
497
For each atom in the netlist, the following information is stored into the
491
498
flat placement file:
492
499
493
500
* The x, y, and sub_tile location of the cluster that contains this atom.
494
- * The flat site index of this atom in its cluster. The flat site index is a
495
- linearized ID of primitive locations in a cluster. This may be used as a
496
- hint to reconstruct clusters.
497
501
498
502
.. _netlist_options :
499
503
@@ -1285,14 +1289,20 @@ Analytical Placement is generally split into three stages:
1285
1289
1286
1290
**Default: ** ``bipartitioning ``
1287
1291
1288
- .. option :: --ap_full_legalizer {naive | appack}
1292
+ .. option :: --ap_full_legalizer {naive | appack | flat-recon }
1289
1293
1290
1294
Controls which Full Legalizer to use in the AP Flow.
1291
1295
1292
1296
* ``naive `` Use a Naive Full Legalizer which will try to create clusters exactly where their atoms are placed.
1293
1297
1294
1298
* ``appack `` Use APPack, which takes the Packer in VPR and uses the flat atom placement to create better clusters.
1295
1299
1300
+ * ``flat-recon `` Use the Flat Placement Reconstruction Full Legalizer which tries to reconstruct a clustered placement that is
1301
+ as close to the incoming flat placement as possible. It can be used to read a flat placement from a :ref: `.fplace <vpr_flat_place_file >` file
1302
+ or on the (in memory) output of VTR's integrated Global Placement algorithm. In both cases, it expects the given solution to be close to legal.
1303
+ If used with a :ref: `.fplace <vpr_flat_place_file >` file, each atom in a molecule should have compatible location information. It is legal to
1304
+ leave some molecules unconstrained; the reconstruction phase will choose where to place them but does not attempt to optimize these locations.
1305
+
1296
1306
**Default: ** ``appack ``
1297
1307
1298
1308
.. option :: --ap_detailed_placer {none | annealer}
0 commit comments