# RapidLayout-VPR **Repository Path**: landro/RapidLayout-VPR ## Basic Information - **Project Name**: RapidLayout-VPR - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-30 - **Last Updated**: 2025-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RapidLayout-VPR ## Introduction In the paper *RapidLayout: Fast Hard Block Placement for FPGA-optimized Systolic Arrays using Evolutionary Algorithms*, we compare evolutionary placement algorithms with VPR's annealer. This repo provides a complete guide of setting up the VPR experiment. ## Set up VPR First, clone the repo on a Linux machine: ``` $ git clone https://github.com/zzzDavid/RapidLayout-VPR.git $ cd RapidLayout-VPR/vpr ``` The vpr binary is already compiled. To run the placement experiments under the same settings, we defined an architecture file `my_arch.xml` and a netlist file `conv.blif`. `my_arch.xml` reproduces the columnar hard block distribution of Xilinx VU11P device. It defines a resource region equivalent to half of a SLR of the VU11P FPGA. `conv.blif` tries to capture the hard block connections of the original systolic array design. It defines a netlist containing 80 convolution units, which will be mapped to the resource region. To run the placement design once with GUI, execute: ``` $ ./vpr my_arch.xml conv.blif -place ``` After the netlist and architecture file are parsed, it outputs the resource report: ``` The circuit will be mapped into a 200 x 96 array of clbs. Resource usage... Netlist 0 blocks of type: Architecture 4 blocks of type: Netlist 962 blocks of type: io Architecture 4736 blocks of type: io Netlist 0 blocks of type: clb Architecture 14400 blocks of type: clb Netlist 1440 blocks of type: dsp Architecture 1488 blocks of type: dsp Netlist 640 blocks of type: block_ram Architecture 672 blocks of type: block_ram Netlist 160 blocks of type: ultra_ram Architecture 160 blocks of type: ultra_ram ``` And the GUI displays the initial placement:
Then, click "Proceed", the tool will run the placement experiment and output the results as `conv.place` file:
**Produce the results in the paper**: In the RapidLayout repository, we provide tools to automatically run VPR without GUI and translate the results back for evaluation. Please refer to RapidLayout's documentation for details. ## License This tool is distributed under MIT license. Copyright (c) 2020 Niansong Zhang, Nachiket Kapre
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.