博客首页 | 排行榜 |

king0105的博客

个人档案
博文分类
关于11.2中XUPV5-LX110T的BSB包  2009/09/02 10:10

以下是10.1版本所使用的BSB包。

http://www.xilinx.com/univ/xupv5-lx110t/design_files/EDK-XUPV5-LX110T-Pack.zip

但是这个包在做11.2时会遇到很多问题。

我这里根据我做实验时候碰到的问题,同时从walkie那儿和网络上提供的信息,总结了关于XUPV5-LX110TDDR2 RAMll_temac硬核网卡的问题。也算是减轻各位查找的麻烦了。

 

一、DDR2 RAM的问题

 

如果用该包生成工程,在生成Bitstream的时候会出现类似如下错误:

 

ERROR:Map:10 - RLOC_ORIGIN attribute on FDRSE symbol

   "DDR2_SDRAM/DDR2_SDRAM/mpmc_core_0/gen_v5_ddr2_phy.mpmc_phy_if_0/u_phy_io_0/g

   en_dq[0].u_iob_dq/gen_stg2_sg1.u_ff_stg2a_rise" (output

   signal=DDR2_SDRAM/DDR2_SDRAM/mpmc_core_0/gen_v5_ddr2_phy.mpmc_phy_if_0/u_phy_

   io_0/gen_dq[0].u_iob_dq/stg2a_out_rise) must be on the start of a set.

ERROR:Map:10 - RLOC_ORIGIN attribute on FDRSE symbol

   "DDR2_SDRAM/DDR2_SDRAM/mpmc_core_0/gen_v5_ddr2_phy.mpmc_phy_if_0/u_phy_io_0/g

   en_dq[1].u_iob_dq/gen_stg2_sg1.u_ff_stg2a_rise" (output

   signal=DDR2_SDRAM/DDR2_SDRAM/mpmc_core_0/gen_v5_ddr2_phy.mpmc_phy_if_0/u_phy_

   io_0/gen_dq[1].u_iob_dq/stg2a_out_rise) must be on the start of a set.

ERROR:Map:11 - FDRSE symbol

   "DDR2_SDRAM/DDR2_SDRAM/mpmc_core_0/gen_v5_ddr2_phy.mpmc_phy_if_0/u_phy_io_0/g

   en_dq[1].u_iob_dq/gen_stg2_sg1.u_ff_stg2a_rise" (output

   signal=DDR2_SDRAM/DDR2_SDRAM/mpmc_core_0/gen_v5_ddr2_phy.mpmc_phy_if_0/u_phy_

   io_0/gen_dq[1].u_iob_dq/stg2a_out_rise) - more than one RLOC_ORIGIN attribute

   found within the RPM set "DDR2_SDRAM/hset".

 

完整的错误如下:

ERRORS.txt

 

后来Walkie改了支持包给了我一份,我比较了一下和原来的区别。最主要是其中的ucf文件DDR2_SDRAM_mpmc.ucf不同。

 

其中的不同为以下这段:

 

INST "*/gen_dq[0].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y42;            # AF30      X0Y22    *
INST "*/gen_dq[1].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y43;            # AK31      X0Y23   
INST "*/gen_dq[2].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y45;            # AF31      X0Y25   
INST "*/gen_dq[3].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y46;            # AD30      X0Y26   
INST "*/gen_dq[4].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y41;            # AJ30      X0Y21   
INST "*/gen_dq[5].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y42;            # AF29      X0Y22    ***
INST "*/gen_dq[6].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y44;            # AD29      X0Y24   
INST "*/gen_dq[7].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y44;            # AE29      X0Y24   
INST "*/gen_dq[8].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y28;            # AH27      X0Y8     ***
INST "*/gen_dq[9].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y32;            # AF28      X0Y12   
INST "*/gen_dq[10].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y33;           # AH28      X0Y13   
INST "*/gen_dq[11].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y34;           # AA28      X0Y14   
INST "*/gen_dq[12].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y26;           # AG25      X0Y6    
INST "*/gen_dq[13].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y28;           # AJ26      X0Y8     *
INST "*/gen_dq[14].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y33;           # AG28      X0Y13   
INST "*/gen_dq[15].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y34;           # AB28      X0Y14   
INST "*/gen_dq[16].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y35;           # AC28      X0Y15   
INST "*/gen_dq[17].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y36;           # AB25      X0Y16    ***
INST "*/gen_dq[18].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y38;           # AC27      X0Y18   
INST "*/gen_dq[19].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y39;           # AA26      X0Y19   
INST "*/gen_dq[20].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y36;           # AB26      X0Y16    *
INST "*/gen_dq[21].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y37;           # AA24      X0Y17   
INST "*/gen_dq[22].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y38;           # AB27      X0Y18   
INST "*/gen_dq[23].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y39;           # AA25      X0Y19   
INST "*/gen_dq[24].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y46;           # AC29      X0Y26   
INST "*/gen_dq[25].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y49;           # AB30      X0Y29    ***
INST "*/gen_dq[26].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y53;           # W31       X0Y33   
INST "*/gen_dq[27].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y55;           # V30       X0Y35   
INST "*/gen_dq[28].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y49;           # AC30      X0Y29    *
INST "*/gen_dq[29].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y52;           # W29       X0Y32   
INST "*/gen_dq[30].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y54;           # V27       X0Y34    ***
INST "*/gen_dq[31].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y56;           # W27       X0Y36   
INST "*/gen_dq[32].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y52;           # V29       X0Y32   
INST "*/gen_dq[33].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y56;           # Y27       X0Y36   
INST "*/gen_dq[34].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y58;           # Y26       X0Y38   
INST "*/gen_dq[35].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y59;           # W24       X0Y39   
INST "*/gen_dq[36].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y54;           # V28       X0Y34   *
INST "*/gen_dq[37].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y57;           # W25       X0Y37   
INST "*/gen_dq[38].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y58;           # W26       X0Y38   
INST "*/gen_dq[39].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y59;           # V24       X0Y39   
INST "*/gen_dq[40].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y120;          # R24       X0Y100  
INST "*/gen_dq[41].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y121;          # P25       X0Y101  
INST "*/gen_dq[42].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y122;          # N24       X0Y102  
INST "*/gen_dq[43].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y123;          # P26       X0Y103  
INST "*/gen_dq[44].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y120;          # T24       X0Y100  
INST "*/gen_dq[45].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y121;          # N25       X0Y101  
INST "*/gen_dq[46].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y123;          # P27       X0Y103  
INST "*/gen_dq[47].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y124;          # N28       X0Y104  
INST "*/gen_dq[48].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y124;          # M28       X0Y104  
INST "*/gen_dq[49].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y126;          # L28       X0Y106  
INST "*/gen_dq[50].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y132;          # F25       X0Y112  
INST "*/gen_dq[51].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y133;          # H25       X0Y113  
INST "*/gen_dq[52].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y125;          # K27       X0Y105  
INST "*/gen_dq[53].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y126;          # K28       X0Y106  
INST "*/gen_dq[54].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y133;          # H24       X0Y113  
INST "*/gen_dq[55].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y134;          # G26       X0Y114  
INST "*/gen_dq[56].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y134;          # G25       X0Y114  
INST "*/gen_dq[57].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y136;          # M26       X0Y116  
INST "*/gen_dq[58].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y137;          # J24       X0Y117  
INST "*/gen_dq[59].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y138;          # L26       X0Y118  
INST "*/gen_dq[60].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y135;          # J27       X0Y115  
INST "*/gen_dq[61].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y136;          # M25       X0Y116  
INST "*/gen_dq[62].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y138;          # L25       X0Y118  
INST "*/gen_dq[63].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y139;          # L24       X0Y119  
 
在新的UCF文件中,这一段被注销掉了,我上网查了一下,找到了这个文件:
http://www.xilinx.com/support/documentation/ip_documentation/mpmc.pdf
该文件也可以在EDK目录下的hwXilinxProcessorIPLibpcoresmpmc_v5_02_adoc目录下找到。
在该文件中可以找到这样一段内容:
 
Migrating an MPMCv4 Virtex-5 DDR2 Design to MPMCv5
To migrate an existing Virtex-5 DDR2 design from MPMCv4 to MPMCv5, the following steps are necessary.
All other MIG PHY types do not need special consideration to be revised.
Note: Tool errors are reported if these steps are not performed.
1. In the MHS file, the C_MEM_DQS_IO_COL and C_MEM_DQ_IO_MS parameters are no longer used and
must be removed.
2. In the UCF file, MPMC specific constraints containing AREA_GROUP and RLOC_ORIGIN must be
removed.
 
从这段内容中可以看出,对于V5系列中的DDR2,在新的MPMCv5中,相对于MPMCv4需要作出如下修改:
1、.xbd文件中关于DDR2的参数设置中的C_MEM_DQS_IO_COL和C_MEM_DQ_IO_MS这两个参数必须删除。
2、ucf文件中的AREA_GROUP和RLOC_ORIGIN相关的引脚约束必须删除。
 
当然也可以在生成工程后,自己在MHS文件和ucf文件中做出相应的修改。
 
大家可以查看一下10.1生成的应该是4.03.a版本的,而11.2中的是5.02.a版本,所以相对于10.1版本中的文件也需要做这样的修改。
 
不过在做EDK实验时,修改一并没有修改,整个实验没有遇到问题。但是修改二必须修改,否则无法生成bitstream文件。
 
二、ll_temac硬核网卡问题
 
这个网卡也存在类似问题,我使用的是GMII模式,在生成比特文件时,出现如下错误:
 
   "clk_client_tx0";> [system.ucf(203)]: NET "*/tx_client_clk*" does not match
   any design objects.
   "clk_client_rx0";> [system.ucf(208)]: NET "*/rx_client_clk*" does not match
   any design objects.
   "clk_phy_tx0";> [system.ucf(213)]: NET "*/tx_gmii_mii_clk*" does not match
   any design objects.
 
官方的回答可以在http://www.xilinx.com/support/answers/32713.htm网址中找到。
根据官方的回答作出如下修改。
 
原Ucf文件如下:
 
# EMAC0 TX Client Clock input from BUFG
NET "*/tx_client_clk*" TNM_NET = "clk_client_tx0";
TIMEGRP "v5_emac_v1_3_single_gmii_client_clk_tx0"     = "clk_client_tx0";
TIMESPEC "TS_v5_emac_v1_3_single_gmii_client_clk_tx0" = PERIOD "v5_emac_v1_3_single_gmii_client_clk_tx0" 7700 ps HIGH 50 %;
 
# EMAC0 RX Client Clock input from BUFG
NET "*/rx_client_clk*" TNM_NET = "clk_client_rx0";
TIMEGRP "v5_emac_v1_3_single_gmii_client_clk_rx0"     = "clk_client_rx0";
TIMESPEC "TS_v5_emac_v1_3_single_gmii_client_clk_rx0" = PERIOD "v5_emac_v1_3_single_gmii_client_clk_rx0" 7700 ps HIGH 50 %;
 
# EMAC0 TX PHY Clock input from BUFG
NET "*/tx_gmii_mii_clk*" TNM_NET = "clk_phy_tx0";
TIMEGRP "v5_emac_v1_3_single_gmii_phy_clk_tx0"        = "clk_phy_tx0";
TIMESPEC "TS_v5_emac_v1_3_single_gmii_phy_clk_tx0"     = PERIOD "v5_emac_v1_3_single_gmii_phy_clk_tx0" 7700 ps HIGH 50 %;
 
# EMAC0 RX PHY Clock
NET "*/gmii_rx_clk*" TNM_NET = "phy_clk_rx0";
TIMEGRP "v5_emac_v1_3_single_gmii_clk_phy_rx0"        = "phy_clk_rx0";
TIMESPEC "TS_v5_emac_v1_3_single_gmii_clk_phy_rx0"     = PERIOD "v5_emac_v1_3_single_gmii_clk_phy_rx0" 7700 ps HIGH 50 %;
 
修改后的ucf文件如下:
 
 
# EMAC0 TX Client Clock input from BUFG
NET "*/TxClientClk_0" TNM_NET = "clk_client_tx0";
TIMEGRP "v5_emac_v1_3_single_gmii_client_clk_tx0"     = "clk_client_tx0";
TIMESPEC "TS_v5_emac_v1_3_single_gmii_client_clk_tx0" = PERIOD "v5_emac_v1_3_single_gmii_client_clk_tx0" 7700 ps HIGH 50 %;
 
# EMAC0 RX Client Clock input from BUFG
NET "*/RxClientClk_0" TNM_NET = "clk_client_rx0";
TIMEGRP "v5_emac_v1_3_single_gmii_client_clk_rx0"     = "clk_client_rx0";
TIMESPEC "TS_v5_emac_v1_3_single_gmii_client_clk_rx0" = PERIOD "v5_emac_v1_3_single_gmii_client_clk_rx0" 7700 ps HIGH 50 %;
 
# EMAC0 TX PHY Clock input from BUFG
NET "*/GMII_TX_CLK_0*" TNM_NET = "clk_phy_tx0";
TIMEGRP "v5_emac_v1_3_single_gmii_phy_clk_tx0"        = "clk_phy_tx0";
TIMESPEC "TS_v5_emac_v1_3_single_gmii_phy_clk_tx0"     = PERIOD "v5_emac_v1_3_single_gmii_phy_clk_tx0" 7700 ps HIGH 50 %;
 
# EMAC0 RX PHY Clock
NET "*/GMII_RX_CLK_0*" TNM_NET = "phy_clk_rx0";
TIMEGRP "v5_emac_v1_3_single_gmii_clk_phy_rx0"        = "phy_clk_rx0";
TIMESPEC "TS_v5_emac_v1_3_single_gmii_clk_phy_rx0"     = PERIOD "v5_emac_v1_3_single_gmii_clk_phy_rx0" 7700 ps HIGH 50 %;
 
改完之后,bitstream文件可以生成了。不过我没有下到板子上试过。(上次试的时候插线弄错了。对自己非常无语。-_-! )
类别:EDK基础实验 |
上一篇:ll_temac网卡在EDK10.1.03时遇到的license问题 | 下一篇:【FPGA博客大赛】Chipscope iba核中总线宽度不同带来的错误
以下网友评论只代表其个人观点,不代表本网站的观点或立场