Skip to content

Commit 1381988

Browse files
committed
VPR Place File Format Doc
1 parent 78c89f5 commit 1381988

File tree

1 file changed

+36
-11
lines changed

1 file changed

+36
-11
lines changed

doc/src/vpr/file_formats.rst

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -616,27 +616,35 @@ The io pad is set to inpad mode and is driven by the inpad:
616616

617617
Placement File Format (.place)
618618
------------------------------
619+
The placement file format is used to specify the position of blocks in an FPGA design. It includes information about the netlist and architecture files, the size of the logic block array, and the placement details of each block.
620+
619621
The first line of the placement file lists the netlist (.net) and architecture (.xml) files used to create this placement.
620-
This information is used to ensure you are warned if you accidentally route this placement with a different architecture or netlist file later.
622+
This information is used to ensure you are warned if you accidentally route this placement with a different architecture or netlist file later.
621623
The second line of the file gives the size of the logic block array used by this placement.
622-
All the following lines have the format::
623624

624-
block_name x y subtile_number
625+
All subsequent lines follow this format:
626+
627+
block_name x y subblk [layer_number] block_number
628+
629+
- **block_name**: Refers to either:
630+
- The name of a clustered block, as given in the input .net formatted netlist.
631+
- The name of a primitive within a clustered block.
625632

626-
The ``block_name`` can refer to either:
633+
- **x** and **y**: Represent the row and column in which the block is placed, respectively.
627634

628-
- The name of a clustered block, as given in the input .net formatted netlist.
629-
- The name of a primitive within a clustered block.
635+
- **subblk**: Specifies which of several possible subtile locations in row **x** and column **y** contains this block, especially when the block capacity is greater than 1. The subtile number should be in the range `0` to `(grid[i][j].capacity - 1)`. The subtile numbers for a particular **x, y** location do not have to be used in order.
636+
637+
- **layer_number**: Indicates the layer (or die) on which the block is placed. If omitted, the block is assumed to be placed on layer `0` (a single die system). In 3D FPGA architectures, multiple dies can be stacked, with the bottom die considered as layer `0`.
630638

631-
``x`` and ``y`` are the row and column in which the block is placed, respectively.
632639

633640
.. note:: The blocks in a placement file can be listed in any order.
634641

635642
Since we can have more than one block in a row or column when the block capacity is set to be greater than 1 in the architecture file, the subtile number specifies which of the several possible subtile locations in row x and column y contains this block.
636643
Note that the subtile number used should be in the range 0 to (grid[i][j].capacity - 1). The subtile numbers for a particular x,y location do not have to be used in order.
637644

638-
The placement files output by VPR also include (as a comment) a fifth field: the block number.
639-
This is the internal index used by VPR to identify a block -- it may be useful to know this index if you are modifying VPR and trying to debug something.
645+
If a layer_number is provided, it specifies the layer (or die) on which the block is placed. If the layer_number is omitted, the block is assumed to be placed on layer 0 (a single die system). In 3D FPGA architectures, multiple dies can be stacked on top of each other, with the bottom die considered as layer 0.
646+
647+
The placement files output by VPR also include (as a comment) a sixth field: the block_number. This is the internal index used by VPR to identify a block -- it may be useful to know this index if you are modifying VPR and trying to debug something.
640648

641649
.. _fig_fpga_coord_system:
642650

@@ -653,10 +661,10 @@ All pads either have x equal to ``0`` or ``nx + 1`` or y equal to ``0`` or ``ny
653661

654662
Placement File Format Example
655663
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
656-
An example placement file is:
664+
657665

658666
.. code-block:: none
659-
:caption: Example placement file.
667+
:caption: Example 2D Placement File
660668
:linenos:
661669
662670
Netlist file: xor5.net Architecture file: sample.xml
@@ -673,6 +681,23 @@ An example placement file is:
673681
xor5 1 2 0 #6
674682
[1] 1 1 0 #7
675683
684+
.. code-block:: none
685+
:caption: Example 3D Placement File with Layer Column
686+
:linenos:
687+
688+
Netlist file: xor5.net Architecture file: sample.xml
689+
Array size: 2 x 2 logic blocks
690+
691+
#block name x y subblk layer block number
692+
#---------- -- -- ------- ------ -----------
693+
a 0 1 0 0 #0 -- NB: block number is a comment.
694+
b 1 0 0 1 #1
695+
c 0 2 1 0 #2
696+
d 1 3 0 1 #3
697+
e 1 3 1 0 #4
698+
out:xor5 0 2 0 1 #5
699+
xor5 1 2 0 0 #6
700+
[1] 1 1 0 1 #7
676701
677702
.. _vpr_route_file:
678703

0 commit comments

Comments
 (0)