VTR-to-Bitstream 2 FPGA Architecture File(.xml)

来源:互联网 发布:互联主机销售系统源码 编辑:程序博客网 时间:2024/06/13 23:21

 对FPGA架构进行描述,需要用传统的XML语言,其中有这么几个比较重要的tags:

<models> describes the .subckt model_name blif instance that are accpected by the FPGA architecture.

<layout>specifies the size and shape of the FPGA in grid units.

<device>specifies device information, like sizing , timing, area etc

<switchlist> specifies the types of switches and their properties.

<segmentlist> specifies the types of wire segments and their properties

<complexblocklist> this is the most important part of the xml, it specifies the types of functional blocks and their properties.


下面给出一个基于Virtex-6 板子的例子:



<!-- 

Example of a classical FPGA soft logic block with 

N = 10, K = 4, I = 22, O = 10 

BLEs consisting of a single LUT followed by a flip-flop that can be bypassed

-->

 

<pb_type name="clb">

  <input name="I" num_pins="22" equivalent="true"/>

  <output name="O" num_pins="10" equivalent="true"/>

  <clock name="clk" equivalent="false"/>

 

  <pb_type name="ble" num_pb="10">

    <input name="in" num_pins="4"/>

    <output name="out" num_pins="1"/>

    <clock name="clk"/>

 

    <pb_type name="lut_4" blif_model=".names" num_pb="1" class="lut">

      <input name="in" num_pins="4" port_class="lut_in"/>

      <output name="out" num_pins="1" port_class="lut_out"/>

    </pb_type>

    <pb_type name="ff" blif_model=".latch" num_pb="1" class="flipflop">

      <input name="D" num_pins="1" port_class="D"/>

      <output name="Q" num_pins="1" port_class="Q"/>

      <clock name="clk" port_class="clock"/>

    </pb_type>

 

    <interconnect>

      <direct input="lut_4.out" output="ff.D"/>

      <direct input="ble.in" output="lut_4.in"/>

      <mux input="ff.Q lut_4.out" output="ble.out"/>

      <direct input="ble.clk" output="ff.clk"/>

    </interconnect>

  </pb_type>

 

  <interconnect>

    <complete input="{clb.I ble[9:0].out}" output="ble[9:0].in"/>

    <complete input="clb.clk" output="ble[9:0].clk"/>

    <direct input="ble[9:0].out" output="clb.O"/>

  </interconnect>

  

  <!-- Describe complex block relation with FPGA -->

 

  <fc_in type="frac">0.150000</fc_in>

  <fc_out type="frac">0.125000</fc_out>

 

  <pinlocations pattern="spread"/>

  <gridlocations>

    <loc type="fill" priority="1"/>

  </gridlocations>

</pb_type>

这种代码是对该block的具体描述,其中会有一些其他的说明,像fc等,可以参考网页:

www.eecg.utoronto.ca/vpr/arch_language.html

现在手头里有关于Virtex6的板子,目前还没有在linux环境中真正的跑一次VTR-to-Bitstream。。。怪自己太懒。同时也在看V6的UG,现在准备写基于ZYNQ板子的xml文件,ZYNQ = FPGA(PL) + ARM(PS),vtr实际上就是设计逻辑单元。目前只管PL部分,ZYNQ的PL部分是Xilinx 7系的板子,与6系有很多相似的地方。首要目的就是从layout整体布局上入手,在Virtex-6 FPGA  CLB  UG364的第8页写到: 

Each CLB can contain zero or one SLICEM. Every other CLB column contains a SLICEMs. In addition, the 2 CLB columns to the left of the DSP48E columns both contain a SLICEL and a SLICEM. 其中强调了DSP和CLB的布局关系,真心觉得想学好硬件,不得不去面对这些头疼的User Guide,千把多页的英文看着就头大。。。之后还要看7系的UG。

归纳一下要解决的问题:

1、看6系和7系UG中的CLB,RAM,IOB,和DSP之间的布局关系。争取这周能够写出ZYNQ硬件部分的xml文件。

2、电脑需要重装下系统,重新装Ubuntu的虚拟机,扩容,下载xilinx ise linux版本,并且争取本周来一次完整的run-vtr-flow流程。





0 0
原创粉丝点击