⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vpr_5.txt

📁 VPR布局布线源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
     VPR and T-VPack1 User’s Manual 

                 Summer 2008 VPR 5.0 Full Release, July 17, 2008 


                 VPR Contributers: 
                         Betz, Vaughn (vaughn@eecg.toronto.edu) 
                         Campbell, Ted (campbell@eecg.toronto.edu) 
                         Fang, Wei Mark (fang@eecg.toronto.edu) 
                         Jamieson, Peter (jamieson@eecg.toronto.edu) 
                         Kuon, Ian (kuon@eecg.toronto.edu) 
                         Luu, Jason (jluu@eecg.toronto.edu) 
                         Marquardt, Alexander 
                         Rose, Jonathon (jayar@eecg.toronto.edu) 
                         Ye, Andy 



1.       Overview 

     VPR (Versatile Place and Route) is an FPGA placement and routing tool. VPR has four 
required and many optional parameters; it is invoked by typing: 

> vpr netlist.net architecture.xml placement.p routing.r [-options] 


     Netlist.net is the netlist describing the circuit to be placed and/or routed, while 
architecture.xml describes the architecture of the FPGA in which the circuit is to be realized. If 
VPR is placing a circuit, the final placement will be written to placement.p; if VPR is routing a 
previously placed circuit, the placement is read from placement.p. The final routing of a circuit is 
written to file routing.r. The format of each of these files is described in Section 0. 
     VPR can be run in one of two basic modes. In its default mode, VPR places a circuit on an 
FPGA and then repeatedly attempts to route it in order to find the minimum number of tracks 
required by the specified FPGA architecture to route this circuit. If a routing is unsuccessful, 
VPR increases the number of tracks in each routing channel and tries again; if a routing is 
successful, VPR decreases the number of tracks before trying to route it again. Once the 
minimum number of tracks required to route the circuit is found, VPR exits. The other mode of 
VPR is invoked when a user specifies a specific channel width for routing. In this case, VPR 
places a circuit and attempts to route it only once, with the specified channel width. If the circuit 
will not route at the specified channel width, VPR simply report that it is unroutable. 
     VPR can perform either global routing or combined global and detailed routing. 
     T-VPack is a packing program which can be used with or without VPR. It takes a 
technology-mapped netlist (in blif format) consisting of lookup tables (LUTs), flip flops (FFs), 
and black boxes. It packs the LUTs and FFs together to form more coarse-grained logic blocks 
while treating inputs and outputs from black boxes as primary outputs and inputs respectively. 
The netlist it outputs is in the .net format required by VPR, and hence can be fed directly into 
VPR. Its usage is: 

> t-vpack input.blif output.net [-options] 




     1 T-VPack is a timing-driven version of the VPack program that was provided with earlier versions of 
VPR. When run in its non-timing-driven mode, T-VPack is equivalent to VPack. 

   Typing either VPR or T-VPack with no parameters will print out a list of all the available 
command line parameters. 

2.       Compiling VPR and T-VPack 

    If your compiler of choice is gcc and you are running a Solaris-based Sparcstation, you can 
compile VPR simply by typing make in the directory containing VPR’s source code and 
makefile. If your compiler and/or architecture are different, however, you will have to make 
some small modifications to the makefile. First, change the CC = gcc line in the makefile so that 
CC is set to the name of your desired compiler. Second, you may want to change the line 
OPT_FLAGS = -O3 to set OPT_FLAGS to the value that gives the highest level of optimization 
with your compiler, and it may be necessary to give the linker different options so it finds all the 
relevant libraries on your machine. If, during compilation, you get an error that type XPointer is 
not defined, uncomment the “typedef char *XPointer” line in graphics.c (many X Windows 
implementations do not define the XPointer type). Finally, if you are compiling VPR on a 
system without X Windows (e.g. Windows NT), you should add a “#define NO_GRAPHICS” line 
to the top of vpr_types.h. VPR’s built-in graphics will all be removed by this define, allowing 
compilation on non-X11 machines. 
    Project files are included for Microsoft Visual C++ 2005 for compilation under Windows. 
The Cygwin package should allow compiling under Windows using the makefile. Graphics are 
not supported when compiling with Visual C++, but should be supported when compiling with 
Cygwin. 
    If you are using T-VPack to convert SIS output to VPR’s netlist format, you should make 
similar modifications to T-VPack’s makefile. 

3.       Typical CAD Flow 

     Figure 1 illustrates the CAD flow we typically use. First, Odin [16] converts a Verilog 
Hardware Destription Language (HDL) design into a flattened netlist consisting of logic gates 
and blackboxes that represent heterogeneous blocks. Next, the ABC [1] synthesis package is 
used to perform technology-independent logic optimization of each circuit, and then each circuit 
is technology-mapped into 4-LUTs and flip flops [2]. The output of ABC is a .blif format netlist of 
LUTs, flip flops, and blackboxes. The T-VPack program [3, 4, 5, 6] then packs this netlist of 
LUTs and flip flops into more coarse-grained logic blocks, and outputs a netlist in the .net 
format VPR uses. The black boxes are also converted into the .net format. VPR [3, 4, 7, 8, 9, 
10, 11] can then place the circuit and either globally route it or perform combined global and 
detailed routing on it. The output of VPR consists of a file describing the circuit placement, 
another file describing the circuit’s routing, and various statistics concerning the minimum 
number of tracks per channel required to successfully route, the total wirelength, etc. In order 
to find the minimum number of tracks required for successful routing, VPR actually attempts to 
route the circuit several times with different numbers of tracks allowed per channel in each 
attempted routing. 
     Of course, many variations on this CAD flow are possible. It is possible to use other high- 
level synthesis tools to generate the blif files that are passed into ABC. Also, one can use 
different logic optimizers and technology mappers than ABC; just put the output netlist from 
your technology-mapper into .blif format and feed it into T-VPack. Alternatively, if the logic 
block you are interested in is not supported by T-VPack, your CAD flow can bypass T-VPack 
altogether by outputting a netlist of logic blocks in .net format. VPR can place and route netlists 
of any type of logic block -- you simply have to create the netlist and describe the logic block in 
the FPGA architecture description file. Finally, if you want only to route a placement produced 
by another CAD tool you can create a placement file in VPR format, and have VPR route this 
pre-existing placement. 

                                    Verilog HDL Circuit 




                              Front-end Synthesis (ODIN) 
         Description of 
        Heterogeneous 
          Blocks on 
            FPGA                .blif Format Netlist of Logic 
                                    and blackboxes for 
                                 Heterogeneous Blocks 



                                Logic Optimization (ABC) 
                            Technology Map to LUTs (ABC) 



                               .blif Format Netlist of LUTs 
                                    and Flipl Flops and 
                                      blackboxes for 
                                 Heterogeneous Blocks 

  Logic Block 
                      T-Vpack: Pack FFs and LUTs into Logic Blocks 
  Parameters 



                                   .net Format Netlist of 
                                     Logic Blocks and 
                                 Heterogeneous Blocks 




   FPGA                                     VPR: 
                                                                     Existing Placement or 
 Architecture               Place Circuit or Read in an Existing         Placement from 
Description File                         Placement                      another CAD tool 

                           Perform Either Global or Combined 
                                Global/Detailed Routing 




                          Placement and Routing Output Files 
                            Placment and Routing Statistics 

                                           Figure 1 

4.       Operation of T-VPack 

     As stated earlier, T-VPack takes as input a technology-mapped netlist of lookup tables 
(LUTs) and flip flops in .blif format, and outputs a .net format netlist composed of more complex 
logic blocks. The logic block to be targeted is selected via command-line options. The simplest 
logic block T-VPack can target consists of a LUT and a FF, in the configuration shown in Figure 
2. We call this logic block a basic logic element. 




     To have T-VPack target a logic block of this form, use the command: 

> t-vpack <input.blif> <output.net> -lut_size <K> -no_clustering 


     In the command above, the italicized values in angled brackets, <>, should be replaced by 
the file names or numbers you are using, while unitalicized words are keywords and must be 
typed exactly as shown. 
     The -lut_size <K> option specifies the number of inputs to a LUT (i.e. K in Figure ). If - 
lut_size is not specified, a default LUT size of 4 is assumed by T-VPack. The -no_clustering 
option indicates that the logic block is a single basic logic element with no local routing to route 
the logic block output back to the logic block inputs. By default, T-VPack marks all clock nets in 
the input netlist as global nets which VPR should not route. Since clocks are typically routed via 
a dedicated network in FPGAs, this is usually the most realistic thing to do. If, however, you 
want clocks to be routed as using normal routing resources, you should specify -global_clocks 
off on the T-VPack command line. 
     T-VPack is capable of targeting a more complex form of logic block, which we call a 
cluster-based logic block [5]. Figure 3 depicts an example. A cluster-based logic block 
consists of N basic logic elements (i.e. N LUTs and N FFs), along with local interconnect that 
allows the N cluster outputs to be routed back to LUT inputs. Since the number of logic block 
inputs, I, can be less than the total number of LUT inputs (KN, where K is the number of inputs 
per LUT), the local interconnect also allows each of the I inputs to be routed to any of the KN 
LUT inputs. Cluster-based logic blocks are very similar to the logic blocks used in the Altera 8K 
and 10K FPGAs, and are reasonably similar to those used in the Xilinx 5200 and Virtex FPGAs. 

    To target such a logic block, use a command line of the form: 

> t-vpack input.blif output.net –lut_size <K> -cluster_size <N> 
  -inputs_per_cluster <I> -clocks_per_cluster <C> 


    The meaning of the -inputs_per_cluster and -cluster_size parameters should be clear from 
Figure . The -clocks_per_cluster option is used to specify how many distinct clocks can be 
used by each logic block. 

4.1 T-VPack Options 

4.1.1 Architecture Description Options That Are Always Valid 

     -lut_size <int> 
          Number of inputs per LUT (i.e. K). 
          Default: 4. 

     -no_clustering 
          Specifies that no clustering is to be performed -- i.e. the logic block consists of one 
          BLE (a LUT and a FF) with no local routing. 
          Default: cluster. 

     -global_clocks {on | off} 
          Indicates whether clocks should be marked as being routed via a special, global 
          resource. VPR does not route global signals. 
          Default: on. 

4.1.2 Architecture Options Valid Only When -no_clustering Is Not Specified 

    -cluster_size <int> 
         Number of BLEs in a cluster-based logic block (i.e. N). 

        Default: 1. 

   -inputs_per_cluster <int> 
        Number of distinct inputs in a logic cluster (i.e. I). 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -