对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 板子的例子:
<!--
ExampleofaclassicalFPGAsoftlogicblockwith
N=10,K=4,I=22,O=10
BLEsconsistingofasingleLUTfollowedbyaflip-flopthatcanbebypassed
-->
<pb_typename="clb">
<inputname="I"num_pins="22"equivalent="true"/>
<outputname="O"num_pins="10"equivalent="true"/>
<clockname="clk"equivalent="false"/>
<pb_typename="ble"num_pb="10">
<inputname="in"num_pins="4"/>
<outputname="out"num_pins="1"/>
<clockname="clk"/>
<pb_typename="lut_4"blif_model=".names"num_pb="1"class="lut">
<inputname="in"num_pins="4"port_class="lut_in"/>
<outputname="out"num_pins="1"port_class="lut_out"/>
</pb_type>
<pb_typename="ff"blif_model=".latch"num_pb="1"class="flipflop">
<inputname="D"num_pins="1"port_class="D"/>
<outputname="Q"num_pins="1"port_class="Q"/>
<clockname="clk"port_class="clock"/>
<interconnect>
<directinput="lut_4.out"output="ff.D"/>
<directinput="ble.in"output="lut_4.in"/>
<muxinput="ff.Qlut_4.out"output="ble.out"/>
<directinput="ble.clk"output="ff.clk"/>
</interconnect>
<completeinput="{clb.Ible[9:0].out}"output="ble[9:0].in"/>
<completeinput="clb.clk"output="ble[9:0].clk"/>
<directinput="ble[9:0].out"output="clb.O"/>
<!--DescribecomplexblockrelationwithFPGA-->
<fc_intype="frac">0.150000</fc_in>
<fc_outtype="frac">0.125000</fc_out>
<pinlocationspattern="spread"/>
<gridlocations>
<loctype="fill"priority="1"/>
</gridlocations>
这种代码是对该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流程。
原文链接:https://www.f2er.com/xml/296654.html