xapp1151_Param_CAM模块安装

所需生成模块

  • TCAM
  • CAM

下载链接

赛灵思技术支持网站:http://www.xilinx.com/support.html

并在网页中搜索xapp1151,下载xapp1151_Param_CAM.zip,如下图所示

安装过程

1、在任意一个目录下,解压xapp1151_Param_CAM.zip

  1. unzip xapp1151_Param_CAM.zip

并将reference_router_nf1_cml文件下的patches文件夹复制到刚刚解压的xapp1151_Param_cam目录下

  1. cp -r patches <path>/xapp1151_cam_v1_1/

然后需添加一下ISE的路径信息

  1. source <ISE_POSIZITION>/ISE_DS/settings64.sh

然后进入patches目录执行cam_patch.sh文件,打一些补丁

  1. cd <path>/xapp1151_cam_v1_1/patches/
  2. sh cam_patch.sh

笔者这里遇到了一个问题,错误提示如下

  1. wpq@wpq:~/Downloads/xapp1151_cam_v1_1/patches$ sh cam_patch.sh
  2. Invalid file name ../implement/CustomizeWrapper.pl -- skipping patch
  3. Invalid file name ../implement/vhdl_xst.scr -- skipping patch
  4. Invalid file name ../src/vhdl/cam_pkg.vhd -- skipping patch
  5. Invalid file name ../src/vhdl/cam_control.vhd -- skipping patch
  6. Invalid file name ../src/vhdl/cam_mem_blk.vhd -- skipping patch
  7. Invalid file name ../src/vhdl/cam_mem_blk_extdepth_prim.vhd -- skipping patch
  8. Invalid file name ../src/vhdl/cam_rtl.vhd -- skipping patch

查看了问题缺少了文件,笔者也觉得很纳闷,于是尝试着修改cam_patch.sh把这相对路径改成绝对路径,如下

  1. patch /home/wpq/Downloads/xapp1151_cam_v1_1/implement/CustomizeWrapper.pl CustomizeWrapper.pl.patch
  2. patch /home/wpq/Downloads/xapp1151_cam_v1_1/implement/vhdl_xst.scr vhdl_xst.scr.patch
  3. patch /home/wpq/Downloads/xapp1151_cam_v1_1/src/vhdl/cam_pkg.vhd cam_pkg.vhd.patch
  4. patch /home/wpq/Downloads/xapp1151_cam_v1_1/src/vhdl/cam_control.vhd cam_control.vhd.patch
  5. patch /home/wpq/Downloads/xapp1151_cam_v1_1/src/vhdl/cam_mem_blk.vhd cam_mem_blk.vhd.patch
  6. patch /home/wpq/Downloads/xapp1151_cam_v1_1/src/vhdl/cam_mem_blk_extdepth_prim.vhd cam_mem_blk_extdepth_prim.vhd.patch
  7. patch /home/wpq/Downloads/xapp1151_cam_v1_1/src/vhdl/cam_rtl.vhd cam_rtl.vhd.patch

此时在执行cam_patch.sh文件成功解决,如下

  1. wpq@wpq:~/Downloads/xapp1151_cam_v1_1/patches$ sh cam_patch.sh
  2. patching file /home/wpq/Downloads/xapp1151_cam_v1_1/implement/vhdl_xst.scr
  3. patching file /home/wpq/Downloads/xapp1151_cam_v1_1/src/vhdl/cam_pkg.vhd
  4. patching file /home/wpq/Downloads/xapp1151_cam_v1_1/src/vhdl/cam_control.vhd
  5. patching file /home/wpq/Downloads/xapp1151_cam_v1_1/src/vhdl/cam_mem_blk.vhd
  6. patching file /home/wpq/Downloads/xapp1151_cam_v1_1/src/vhdl/cam_mem_blk_extdepth_prim.vhd
  7. patching file /home/wpq/Downloads/xapp1151_cam_v1_1/src/vhdl/cam_rtl.vhd

2、CAM模块生成

执行以下命令,并填入如下所示参数:

  1. cd <path>/xapp1151_cam_v1_1/implement
  2. xilperl CustomizeWrapper.pl
  3. You need to specify several parameters. To choose those options, see follows:
  4. ***************************************************************
  5. CAM Reference Design Customizer v1.1
  6. ***************************************************************
  7. ***************************************************************
  8. Please input the following parameters for the CAM:
  9. ***************************************************************
  10. Enter the FPGA base architecture to target
  11. Valid options are virtex4, virtex5, virtex6, virtex6l, spartan3, spartan3e, spartan3a, spartan3adsp, aspartan3, aspartan3e, spartan6, kintex7 :
  12. kintex7
  13. Input the CAM data width. Valid values are 1-512:
  14. 32
  15. Input the CAM depth. Valid values are 16-4096:
  16. 32
  17. Enter the CAM memory type to implement
  18. (Choose SRL-based if you need a Ternary or Enhanced Ternary mode CAM)
  19. 0 = SRL-based, 1 = BRAM-based: 0
  20. Choose the Ternary Mode setting.
  21. 0 = Ternary Mode Off, 1 = Standard Ternary Mode, 2 = Enhanced Ternary Mode: 1
  22. Will the CAM be write-able (WE pin)? (If no, CAM will be read-only) (y/n): y
  23. Use a MIF file to initialize the memory contents? (y/n): n
  24. Choose what type of encoding the MATCH_ADDR port will have.
  25. 0 = Binary Encoded, 1 = Single Match Unencoded (one-hot), 2 = Multi-match Unencoded: 1
  26. For Binary Encoded or Single Match Unencoded MATCH_ADDR, output lowest address match or highest address match?
  27. 0 = Lowest, 1 = Highest: 0
  28. Please select the optional features to be implemented:
  29. Simultaneous Read/Write (y/n): y
  30. Please select from the following optional input ports:
  31. Enable (EN) (y/n): n
  32. Please select from the following optional output ports:
  33. Multiple Match Flag (MULTIPLE_MATCH) (y/n): n
  34. Single Match Flag (SINGLE_MATCH) (y/n): n
  35. Read Warning Flag (READ_WARNING) (y/n): n
  36. After the selections the parameters should be as follows:
  37. VHDL parameters were generated as follows:
  38. ===============================================
  39. C_FAMILY : string := kintex7;
  40. C_MEM_TYPE : integer := 0;
  41. C_WIDTH : integer := 32;
  42. C_DEPTH : integer := 32;
  43. C_ADDR_TYPE : integer := 1;
  44. C_MATCH_RESOLUTION_TYPE : integer := 0;
  45. C_TERNARY_MODE : integer := 1;
  46. C_HAS_WE : integer := 1;
  47. C_MEM_INIT : integer := 0;
  48. C_HAS_CMP_DIN : integer := 1;
  49. C_REG_OUTPUTS : integer := 0;
  50. C_HAS_EN : integer := 0;
  51. C_HAS_MULTIPLE_MATCH : integer := 0;
  52. C_HAS_SINGLE_MATCH : integer := 0;
  53. C_HAS_READ_WARNING : integer := 0;
  54. ===============================================

查看相同目录下的vhdl_xst.scr文件,并将-ofn ./results/cam.ngc改成```-ofn ./results/tcam.ngc``,如下所示

  1. run
  2. -ifmt VHDL
  3. -work_lib cam
  4. -p xc7k325tffg676-1
  5. -write_timing_constraints No
  6. -ifn vhdl_xst.prj
  7. -iobuf NO
  8. -max_fanout 100
  9. -ofn ./results/tcam.ngc
  10. -ofmt NGC
  11. -bufg 1
  12. -bus_delimiter ()
  13. -hierarchy_separator /
  14. -case Maintain
  15. -opt_mode Speed
  16. -opt_level 1
  17. -loop_iteration_limit 5000
  18. -use_new_parser yes

然后执行

  1. xilperl RunXST.pl

3、修改Verilog代码

执行以下命令,生成对应的verilog代码

  1. cd results
  2. netgen -sim -ofmt verilog tcam.ngc

修改生成的tcam.v文件

  • 将代码中的模块名cam_wrapper改成tcam

  • 在端口声明后(即在output下一句,wire上一句),加入以下语句,虽然此句为注释,但必须得加上去,不然后续步骤会报错,笔者亲身踩坑

    1. // synthesis translate_off
  • cam_wrapper(上面我们已经改名为tcam)的endmodule前面加入以下语句

    1. // synthesis translate_on

4、将生成的文件复制到NetFPGA-1G-CML-live的相应目录下

执行以下命令,创建netlist目录

  1. mkdir -p $(NF10_ROOT_DIRECTORY)/lib/hw/std/pcores/nf10_router_output_port_lookup_v1_00_a/netlist

tcam.ngc复制到刚刚创建的netlist目录

  1. cp tcam.ngc $(NF_ROOT)/lib/hw/std/pcores/nf10_router_output_port_lookup_v1_00_a/netlist

tcam.v复制到对应的verilog目录下

  1. cp tcam.v $(NF_ROOT)/lib/hw/std/pcores/nf10_router_output_port_lookup_v1_00_a/hdl/verilog

5、生成第二个cam模块,具体步骤与上述1-4步骤相似,只是一些参数不同

  1. xilperl CustomizeWrapper.pl
  2. You need to specify several parameters. To choose those options, see follows:
  3. ***************************************************************
  4. CAM Reference Design Customizer v1.1
  5. ***************************************************************
  6. ***************************************************************
  7. Please input the following parameters for the CAM:
  8. ***************************************************************
  9. Enter the FPGA base architecture to target
  10. Valid options are virtex4, virtex5, virtex6, virtex6l, spartan3, spartan3e, spartan3a, spartan3adsp, aspartan3, aspartan3e, spartan6, kintex7 :
  11. kintex7
  12. Input the CAM data width. Valid values are 1-512:
  13. 32
  14. Input the CAM depth. Valid values are 16-4096:
  15. 32
  16. Enter the CAM memory type to implement
  17. (Choose SRL-based if you need a Ternary or Enhanced Ternary mode CAM)
  18. 0 = SRL-based, 1 = BRAM-based: 1
  19. NOTE: BRAM-based CAMs do not support Ternary Modes.
  20. Setting C_TERNARY_MODE = 0 ...
  21. Will the CAM be write-able (WE pin)? (If no, CAM will be read-only) (y/n): y
  22. Use a MIF file to initialize the memory contents? (y/n): n
  23. Choose what type of encoding the MATCH_ADDR port will have.
  24. 0 = Binary Encoded, 1 = Single Match Unencoded (one-hot), 2 = Multi-match Unencoded: 1
  25. For Binary Encoded or Single Match Unencoded MATCH_ADDR, output lowest address match or highest address match?
  26. 0 = Lowest, 1 = Highest: 0
  27. Please select the optional features to be implemented:
  28. Simultaneous Read/Write (y/n): y
  29. Register Outputs (y/n): n
  30. Please select from the following optional input ports:
  31. Enable (EN) (y/n): n
  32. Please select from the following optional output ports:
  33. Multiple Match Flag (MULTIPLE_MATCH) (y/n): n
  34. Single Match Flag (SINGLE_MATCH) (y/n): n
  35. Read Warning Flag (READ_WARNING) (y/n): n
  36. After the selections the parameters should be as follows:
  37. VHDL parameters were generated as follows:
  38. ===============================================
  39. C_FAMILY : string := kintex7;
  40. C_MEM_TYPE : integer := 1;
  41. C_WIDTH : integer := 32;
  42. C_DEPTH : integer := 32;
  43. C_ADDR_TYPE : integer := 1;
  44. C_MATCH_RESOLUTION_TYPE : integer := 0;
  45. C_TERNARY_MODE : integer := 0;
  46. C_HAS_WE : integer := 1;
  47. C_MEM_INIT : integer := 0;
  48. C_HAS_CMP_DIN : integer := 1;
  49. C_REG_OUTPUTS : integer := 0;
  50. C_HAS_EN : integer := 0;
  51. C_HAS_MULTIPLE_MATCH : integer := 0;
  52. C_HAS_SINGLE_MATCH : integer := 0;
  53. C_HAS_READ_WARNING : integer := 0;
  54. ===============================================

修改vhdl_xst.scr文件,如下所示

  1. run
  2. -ifmt VHDL
  3. -work_lib cam
  4. -p xc7k325tffg676-1
  5. -write_timing_constraints No
  6. -ifn vhdl_xst.prj
  7. -iobuf NO
  8. -max_fanout 100
  9. -ofn ./results/cam.ngc
  10. -ofmt NGC
  11. -bufg 1
  12. -bus_delimiter ()
  13. -hierarchy_separator /
  14. -case Maintain
  15. -opt_mode Speed
  16. -opt_level 1
  17. -loop_iteration_limit 5000
  18. -use_new_parser yes

然后执行

  1. xilperl RunXST.pl

生成verilog代码

  1. cd results
  2. netgen -sim -ofmt verilog cam.ngc

修改verilog代码

  • 将代码中的模块名cam_wrapper改成cam

  • 在端口声明后(即在output下一句,wire上一句),加入以下语句,虽然此句为注释,但必须得加上去,不然后续步骤会报错,笔者亲身踩坑

    1. // synthesis translate_off
  • cam_wrapper(上面我们已经改名为tcam)的endmodule前面加入以下语句

    1. // synthesis translate_on

复制文件

  1. cp cam.ngc $(NF_ROOT)/lib/hw/std/pcores/nf10_router_output_port_lookup_v1_00_a/netlist
  1. cp cam.v $(NF_ROOT)/lib/hw/std/pcores/nf10_router_output_port_lookup_v1_00_a/hdl/verilog

xapp1151_Param_CAM模块安装的更多相关文章

  1. python安装、模块安装

    python安装 windows 下载安装包 https://www.python.org/downloads 改环境变量 [右键计算机]-->[属性]-->[高级系统设置]-->[ ...

  2. python3 中mlpy模块安装 出现 failed with error code 1的决绝办法(其他模块也可用本方法)

    在python3 中安装其它模块时经常出现 failed with error code 1等状况,使的安装无法进行.而解决这个问题又非常麻烦. 接下来以mlpy为例,介绍一种解决此类安装问题的办法. ...

  3. [转] npm 模块安装机制简介

    npm 是 Node 的模块管理器,功能极其强大.它是 Node 获得成功的重要原因之一. 正因为有了npm,我们只要一行命令,就能安装别人写好的模块 . $ npm install 本文介绍 npm ...

  4. npm 模块安装机制简介

    npm 是 Node 的模块管理器,功能极其强大.它是 Node 获得成功的重要原因之一. 正因为有了npm,我们只要一行命令,就能安装别人写好的模块 . $ npm install 本文介绍 npm ...

  5. Mac MySQLdb模块安装,可算解决了

    转载:http://blog.csdn.net/janronehoo/article/details/25207825 短评:这篇文章感觉是比较全面解决Mac MySQLdb模块安装问题的文章了,特别 ...

  6. perl模块安装

    转自: http://www.cnblogs.com/itech/archive/2009/08/10/1542832.html http://www.mike.org.cn/blog/index.p ...

  7. 详解npm的模块安装机制 --社会我npm哥,好用话不多

      依赖树表面的逻辑结构与依赖树真实的物理结构 依赖树表面的逻辑结构与依赖树真实的物理结构并不一定相同! 这里要先提到两个命令:tree -d(linux)和npm ls(npm) 在一个npm项目下 ...

  8. python机器学习模块安装

    环境:RHEL6.5 离线安装 ############################################################################ 一,本地yum ...

  9. Python下载、环境变量配置、 模块安装方法

    下载 Windows版官网下载地址:https://www.python.org/downloads/windows/ 类似下图以 installer结尾的文件就是我们需要下载的,位数根据自己的电脑进 ...

随机推荐

  1. 【转载】Apache Spark Jobs 性能调优(二)

    调试资源分配   Spark 的用户邮件邮件列表中经常会出现 "我有一个500个节点的集群,为什么但是我的应用一次只有两个 task 在执行",鉴于 Spark 控制资源使用的参数 ...

  2. Rolling Update - 每天5分钟玩转 Docker 容器技术(140)

    滚动更新是一次只更新一小部分副本,成功后,再更新更多的副本,最终完成所有副本的更新.滚动更新的最大的好处是零停机,整个更新过程始终有副本在运行,从而保证了业务的连续性. 下面我们部署三副本应用,初始镜 ...

  3. 下一代 Android

    据闻,Android M 是下一代 Android 的开发代号.那么,对于 M,Google 正在实验着什么? 指纹识别 根据此前的消息,Nexus 6 据称原本是包含指纹识别传感器的,但后来在开发过 ...

  4. luogu【P2745】[USACO5.3]窗体面积Window Area

    这个题 就是个工程题 (然而一开始我并不知道怎么做..还是看nocow的..qwq)(原题入口) 算法为 离散化 + 扫描线  将大坐标变小  并且 用横纵坐标进行扫描 来计算面积 一开始 我想边添加 ...

  5. 【BZOJ1834】网络扩容(最大流,费用流)

    [BZOJ1834]网络扩容(最大流,费用流) 题面 Description 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用.求: 1. 在不扩容的情况下 ...

  6. mysql mariadb 删除表中的数据时数据库变大

    删除表中数据以前 [root@RM uar3]# du -sh * 3.3G apache-tomcat-7.0.54 150M instalRM4UAR 0 mariadb 903M mariadb ...

  7. 34.Ajax

    优先级 如果发送的是[普通数据] jQuery XMLHttpRequest iframe 如果发送的是[文件] iframe jQuery(FormData) XMLHttpRequest(Form ...

  8. log4net应用实践(一)

          1.背景 log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具.它是.Net下一 ...

  9. 三方面搞定http协议之“报文模型”

    关于http协议,这一块的知识其实相当大,但是作为一个前端开发者来说,我觉得只要知道三方面的内容就足矣把http协议是个什么东西解释清楚了.而这三方面,就是http的报文模型,请求方式以及状态码. 这 ...

  10. 实用的Docker入门

    1 Docker概述 Docker和虚拟机一样,都拥有环境隔离的能力,但它比虚拟机更加轻量级,可以使资源更大化地得到应用.首先来看Docker的架构图: 理解其中几个概念: Client(Docker ...