Xilinx ISE WebPACK
Xilinx ISE WebPACK 是一套完整的 FPGA/CPLD 可编程逻辑设计套件,提供
- 通过原理图捕获或 Verilog/VHDL 规范可编程逻辑
- 针对各种 Xilinx FPGA 和 CPLD 的指定逻辑进行综合和布局布线
- 功能 (行为) 和时序 (布局布线后) 仿真
- 通过通信电缆将配置数据下载到目标设备
ISE WebPACK 的开发已停止,转而支持 Vivado 套件,但它仍然可用于为新套件不支持的旧设备进行开发。
虽然 Arch Linux 不是官方支持的发行版之一,但已知许多功能在 Arch Linux 上可以工作。
先决条件
下载 ISE WebPACK
Xilinx ISE WebPACK 是一款免费软件,根据不允许再分发的专有许可证发布。要获取安装数据,请访问 官方下载页面。
依赖
ISE Webpack 中包含的几个工具(以及安装程序本身)依赖于 ncurses5-compat-libsAUR。 此外,其他工具(例如 FPGA 编辑器)需要 libstdc++5AUR openmotif xorg-fonts-75dpi xorg-fonts-100dpi。
如果您计划为嵌入式 ARM 内核(例如,用于 Xilinx Zynq SoC 设备)开发软件,您将需要安装 Xilinx Embedded Development Kit (EDK) 捆绑的 GCC 交叉编译器。此编译器需要 lib32-glibc 软件包(来自 multilib 仓库)和 lib32-ncurses5-compat-libsAUR。
默认 Shell
在安装期间,可以将用于嵌入式处理器的 Mentor CodeSourcery 工具链与 Xilinx 工具一起安装。当默认 shell 设置为 dash 时,此安装将静默失败。确保 /usr/bin/sh
指向 /usr/bin/bash
。
可以通过运行以下命令来检查这一点
$ ls -l /usr/bin/sh
如果输出看起来像这样
lrwxrwxrwx 1 root root 15 13 Mar 06:47 /usr/bin/sh -> bash
则 /usr/bin/sh
已经指向 /usr/bin/bash
。(Arch Linux 中的默认设置)。
如果不是,将 /usr/bin/sh
链接到 bash
# ln -sfT bash /usr/bin/sh
安装
从 AUR 安装
安装软件包 xilinx-iseAUR,您将必须在启动构建过程之前将包含安装数据的 tarball 放在 PKGBUILD
的同一文件夹中。
手动安装
解压包含安装数据的 tarball
$ tar -xvf Xilinx_ISE_DS_Lin_14.7_1015_1.tar
ISE 设计工具安装程序是一个 Qt 应用程序。如果您正在运行 KDE 桌面环境,安装程序可能会尝试加载 “Oxygen” 小部件主题,由于 Xilinx ISE 设计工具捆绑的旧 Qt 框架,这将失败。您需要在执行安装程序之前删除 QT_PLUGIN_PATH
环境变量
$ unset QT_PLUGIN_PATH
然后,安装 ISE 设计工具
$ cd Xilinx_ISE_DS_Lin_14.7_1015_1 $ ./xsetup
按照说明安装 ISE。默认情况下,整个应用程序都安装到 /opt/Xilinx/
,因此请确保运行安装程序的用户具有写入此目录的权限。
在安装过程中,取消选中 “Install Cable Drivers” 选项。选中它将在安装过程中导致错误。
启动 ISE 设计工具
ISE 设计工具包含一个 shell 脚本,用于修改环境变量(主要是 PATH
和 LD_LIBRARY_PATH
)。在启动 ISE 工具之前,必须先执行此脚本
$ source /opt/Xilinx/14.7/ISE_DS/settings64.sh
然后,ISE 设计工具将在您的 PATH
中找到,并且可以通过在终端中键入它们的名称(例如 ise
、planAhead
、xsdk
等)来启动。
通过桌面图标启动
您还可以在 /usr/share/applications/
中创建一个 桌面条目
/usr/share/applications/ise.desktop
#!/usr/bin/env xdg-open [Desktop Entry] Version=1.0 Type=Application Name=Xilinx ISE Exec=sh -c "unset LANG && unset QT_PLUGIN_PATH && source /opt/Xilinx/14.7/ISE_DS/settings64.sh && ise" Icon=/opt/Xilinx/14.7/ISE_DS/ISE/data/images/pn-ise.png Categories=Development; Comment=Xilinx ISE StartupWMClass=_pn
之后,您可以将此文件复制到 ~/Desktop
文件夹,并从桌面启动 ISE 工具。
许可证安装
在使用 Xilinx 的 许可站点 请求 WebPACK 许可证后,您将收到一封包含许可证文件的电子邮件。可以使用 Xilinx License Manager 导入此文件(从终端运行 xlcm -manage
)。
导入许可证的另一种方法是简单地将其复制到 ~/.Xilinx
或 /opt/Xilinx/14.7/ISE_DS/ISE/coregen/core_licenses
目录。
节点锁定许可证
Arch Linux 默认使用 systemd 的 可预测网络接口名称。这意味着您的系统很可能不会将其网络接口命名为 eth0
、eth1
等。
但是,Xilinx License Manager 会查找这些名称以找出系统的 MAC 地址,这些地址用于 节点锁定许可证。如果您想使用节点锁定许可证,则必须手动为您的接口分配许可证管理器期望格式的名称。 网络配置#恢复到传统接口名称 解释了如何执行此操作。如果您的机器没有有线以太网适配器,则可以使用 systemd 和 dummy
内核模块创建一个具有正确 MAC 地址的虚拟以太网适配器。为此,创建以下内容
/etc/systemd/network/25-dummy.netdev
[Match] [NetDev] Name=eth0 Kind=dummy MACAddress=00:11:22:33:44:55:66
然后,重启 systemd-networkd
服务。
安装后修复和调整
安装后,需要进行一些手动修复,以解决在非 Xilinx 官方支持的 Linux 发行版上运行 Xilinx 工具引起的问题。其中一些修复取自 此论坛帖子。[死链 2023-09-16 ⓘ]
动态库修复 (libstdc++.so)
ISE 工具提供了一个过时的 libstdc++.so 库版本,当使用 Xilinx Microprocessor Debugger 时可能会导致段错误,并阻止使用 oxygen-gtk 主题。这个过时的版本位于安装树中的两个目录中:/opt/Xilinx/14.7/ISE_DS/ISE/lib/lin64/
和 /opt/Xilinx/14.7/ISE_DS/common/lib/lin64
。要使用 Arch 的较新版本的 libstdc++,请重命名或删除原始文件,并将其替换为符号链接
$ cd /opt/Xilinx/14.7/ISE_DS/ISE/lib/lin64/ $ mv libstdc++.so libstdc++.so.bak $ mv libstdc++.so.6 libstdc++.so.6.bak $ mv libstdc++.so.6.0.8 libstdc++.so.6.0.8.bak $ ln -s /usr/lib/libstdc++.so $ ln -s libstdc++.so libstdc++.so.6 $ ln -s libstdc++.so libstdc++.so.6.0.8
然后,在 /opt/Xilinx/14.7/ISE_DS/common/lib/lin64
目录中重复此过程。
Digilent USB-JTAG 驱动程序
要从 Xilinx 设计工具中使用 Digilent Adept USB-JTAG 适配器(例如 ZedBoard 上的板载 JTAG 适配器),您需要安装 Digilent Adept Runtime 和 Plugin。
确保您已从 Arch 用户仓库 安装了 fxloadAUR。
要安装 Digilent Adept Runtime,建议从 Arch 用户仓库 安装 digilent.adept.runtimeAUR。
此外,安装 digilent.adept.utilitiesAUR 可能有助于配置您的板卡。
要安装 Digilent 插件,您必须将两个文件复制到 ISE 插件目录。以 root 身份运行以下命令
$ mkdir -p /opt/Xilinx/14.7/ISE_DS/ISE/lib/lin64/plugins/Digilent/libCseDigilent $ cd /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/digilent/libCseDigilent_2.4.4-x86_64/lin64/14.1/libCseDigilent $ cp libCseDigilent.{so,xml} /opt/Xilinx/14.7/ISE_DS/ISE/lib/lin64/plugins/Digilent/libCseDigilent $ chmod -x /opt/Xilinx/14.7/ISE_DS/ISE/lib/lin64/plugins/Digilent/libCseDigilent/libCseDigilent.xml
最后,将每个应该访问 Digilent USB-JTAG 适配器的用户添加到 “uucp” 组。
要授予普通用户访问 USB 驱动程序的权限,您可能需要将 JTAG 适配器的 USB 供应商/产品 ID 添加到 /etc/udev/rules.d/20-digilent.rules
中的 udev 规则中,可以使用以下命令找到 ID
$ lsusb | grep Xilinx
到 /etc/udev/rules.d/20-digilent.rules
中的 udev 规则
SUBSYSTEM=="usb", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="xxxx", GROUP="users", MODE="666"
如果仍然不起作用,您可以在 Xilinx_JTAG_Linux 中进一步阅读。那里的 magic git 仓库可能会有所帮助。
Xilinx Platform Cable USB-JTAG 驱动程序
确保您已从 Arch 用户仓库 安装了 fxloadAUR 或 fxload-libusbAUR。我们需要从源代码构建驱动程序(需要安装 git 和一些 make 工具,make 将说明缺少哪些程序或库)
$ cd /opt/Xilinx # git clone git://git.zerfleddert.de/usb-driver $ cd usb-driver/ $ make
如果您在 64 位系统上使用 32 位版本的 ISE,请将 “lib32” 传递给 make
$ make lib32
并安装驱动程序(将 14.7 替换为您的版本)
$ ./setup_pcusb /opt/Xilinx/14.7/ISE_DS/ISE
或在旧版本中
$ ./setup_pcusb /opt/Xilinx/10.x/ISE
对于新的 fxload 版本:fxload-libusbAUR,需要将文件 /etc/udev/rules.d/xusbdfwu.rules 更改为
$ /etc/udev/rules.d/xusbdfwu.rules
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0008", MODE="666" ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0007", RUN+="/usr/bin/fxload-libusb -t fx2 -I /usr/share/xusbdfwu.hex -d 03fd:0007" ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0009", RUN+="/usr/bin/fxload-libusb -t fx2 -I /usr/share/xusb_xup.hex -d 03fd:0009" ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="000d", RUN+="/usr/bin/fxload-libusb -t fx2 -I /usr/share/xusb_emb.hex -d 03fd:000d" ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="000f", RUN+="/usr/bin/fxload-libusb -t fx2 -I /usr/share/xusb_xlp.hex -d 03fd:000f" ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0013", RUN+="/usr/bin/fxload-libusb -t fx2 -I /usr/share/xusb_xp2.hex -d 03fd:0013" ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0015", RUN+="/usr/bin/fxload-libusb -t fx2 -I /usr/share/xusb_xse.hex -d 03fd:0015"
当执行此命令时,将创建 udev 规则文件。您可以重新加载 udev 规则以立即应用更改
# udevadm control --reload-rules
如果驱动程序安装正确并且 udev 规则有效,则 STATUS 指示灯应亮起(绿色或红色,具体取决于 VREF PIN 上的电压是否存在)
$ export LD_PRELOAD=/opt/Xilinx/usb-driver/libusb-driver.so
区域设置问题
PlanAhead 不喜欢使用除 “.” 以外的文字作为小数点的区域设置(例如,德语,它使用 “,”)。在启动 PlanAhead 之前运行以下命令
$ unset LANG
PlanAhead 上的段错误
当启动 PlanAhead 以生成 .ucf 文件时,可能会发生段错误。此问题似乎与前一个主题无关。ISE 控制台将显示
"/opt/Xilinx/14.7/ISE_DS/PlanAhead/bin/rdiArgs.sh: line 64: 14275 Segmentation fault $RDI_PROG $*"
问题似乎源于捆绑的 JRE,如此处所述。 要解决此问题,请将 OpenJDK libjvm.so 符号链接到 Xilinx 的安装目录中。
# pacman -S jre8-openjdk-headless # cd /opt/Xilinx/14.7/ISE_DS/PlanAhead/tps/lnx64/jre/lib/amd64/server # mv libjvm.so{,-orig} # ln -s /usr/lib/jvm/java-8-openjdk/jre/lib/amd64/server/libjvm.so
记住!较新版本的 jre,例如 jre-openjdk-headless
(版本 17)不适用(可能导致错误)
GNU make
XSDK 查找 gmake
可执行文件,该文件在 Arch Linux 中默认不存在。 在路径中的某个位置创建一个符号链接,例如:
$ ln -s /usr/bin/make /home/<user>/bin/gmake
确保此目录在您的 PATH 变量中。
从 KDE 中运行 Xilinx 工具
KDE 默认定义了 QT_PLUGIN_PATH 环境变量。 一些 Xilinx ISE 工具(ISE、Impact、XPS)是 Qt 应用程序,这意味着它们将在此环境变量定义的位置搜索 Qt 插件。
由于 Xilinx 工具是针对旧版本的 Qt 框架编译的并随附旧版本,而旧版本的 Qt 框架无法使用这些插件,因此在存在此环境变量的情况下启动时,它们将崩溃。
要解决此问题,请在启动工具之前运行以下命令
$ unset QT_PLUGIN_PATH
CORE Generator 生成内核失败
在某些情况下,CORE Generator 将无法生成内核,并在其控制台中输出类似以下内容
ERROR:sim - Unable to evaluate Tcl file: /opt/Xilinx/14.7/ISE_DS/ISE/coregen/ip/xilinx/primary/com/xilinx/ip/clk_wiz_v3_6/generate/run_legacy_tcl_flow.tcl ERROR:sim - Failed executing Tcl generator.
解决方案 #1
如果发生这种情况,请确保您的环境中未设置 _JAVA_OPTIONS。 如果您通常使用以下命令运行 coregen:
$ source /opt/Xilinx/14.7/ISE_DS/settings64.sh && coregen
您需要在前面加上 "unset _JAVA_OPTIONS"
$ unset _JAVA_OPTIONS && source /opt/Xilinx/14.7/ISE_DS/settings64.sh && coregen
解决方案 #2
解决方案 #1 不再有效,原因是:coregen 捆绑的 java 启动失败。 解决方法是强制使用 ISE 捆绑的 java6 而不是 java5。
备份旧版本
$ mv /opt/Xilinx/14.7/ISE_DS/ISE/java/lin64/jre/bin/java /opt/Xilinx/14.7/ISE_DS/ISE/java/lin64/jre/bin/java.old
添加指向 java6 的符号链接
$ ln -s /opt/Xilinx/14.7/ISE_DS/ISE/java6/lin64/jre/bin/java /opt/Xilinx/14.7/ISE_DS/ISE/java/lin64/jre/bin/java
解决方案 #3
如果以前的方法都失败了,请尝试运行 32 位版本的 coregen
$ unset _JAVA_OPTIONS && source /opt/Xilinx/14.7/ISE_DS/settings32.sh && coregen