Lattice Diamond
Lattice Diamond 是用于 Lattice FPGA 架构的设计软件。
Arch Linux 没有得到 Lattice Diamond 的官方支持,但与其他 HDL 套件(如 Xilinx ISE WebPACK 或 Xilinx Vivado)一样,它的大部分功能可以通过一些技巧来使用。
安装
安装 lattice-diamondAUR。请注意,安装包大小约为 4 GB,因此由于压缩阶段,生成软件包可能需要一些时间。 如果您想缩短构建软件包的时间,请编辑 PKGBUILD 文件以避免压缩。
许可
您可以向 Lattice Semiconductor 申请免费许可证(需要注册)。 这些许可证是节点锁定的(绑定到您的以太网卡的 MAC 地址)。 获得许可证文件后,将其复制到 /usr/local/diamond/version/license/license.dat
(确保将 version
更改为您系统中安装的版本号),以便能够启动 Diamond 程序。
请注意,如果用户确实拥有相关硬件,或者希望将 Diamond 与硬件解耦,则可以创建一个具有任意选择的 MAC 地址的虚拟以太网接口。 请参阅 MAC 地址欺骗#手动,或添加一个新的虚拟接口,如下所示
加载相关的内核模块并使用 MAC 地址创建接口
# modprobe dummy # ip link add bond0 type dummy # ifconfig bond0 hw ether 10:22:33:44:55:66
Diamond 退出后清理
# ip link delete bond0 type dummy # rmmod dummy
故障排除
布局布线失败
如果布局布线失败并显示消息 ERROR - par: Switch "-msgsegset" is not allowed.
,请尝试删除项目根目录中的 promote.xml
文件,然后再次启动它。 现在应该可以正常运行了。
使用 FTDI 电缆编程无效
如果加载了 ftdi_sio
内核模块,则使用基于 FTDI 芯片的电缆编程 FPGA 将不起作用。 在插入编程器之后运行
# rmmod ftdi_sio
现在编程器应该可以工作,直到您再次重新连接它(因此您每次插入编程器时都必须运行上述命令)。
Lattice 入门套件上存在基于 FTDI 的串行接口时 Diamond 崩溃
“Lattice Diamond 3.9 Linux 安装注意事项”文档描述了如何手动设置串行驱动程序,但按照该文档中解释的方式命名 udev 规则 无效。 以下是有效的说明。
- 找到您的用户名,该用户名在
/etc/group
文件中给出。 如果需要,请注销。 例如username:x:1000:
- 创建一个名为
51-lattice.rules
的工作文件。 - 将以下信息添加到
51-lattice.rules
文件- Lattice - 来自 Lattice Diamond 3.9 Linux 安装注意事项 p.20 和 https://github.com/jandob/lattice-diamond-archlinux,显示用于
.rules
文件的更高编号SUBSYSTEM=="usb",ACTION=="add",ATTRS{idVendor}=="1134",ATTRS{idProduct}=="8001",MODE=="0660",GROUP=="username:x:1000:",SYMLINK+="lattice-%n"
- FTDI
SUBSYSTEM=="usb",ACTION=="add",ATTRS{idVendor}=="0403",ATTRS{idProduct}=="6010",MODE=="0666",GROUP=="username:x:1000:",SYMLINK+="ftdi-%n"
SUBSYSTEM=="usb",ATTRS{idVendor}=="0403",ATTRS{idProduct}=="6010",RUN+="/bin/sh -c 'basename %p > /sys/bus/usb/drivers/ftdi_sio/unbind'"
- Lattice - 来自 Lattice Diamond 3.9 Linux 安装注意事项 p.20 和 https://github.com/jandob/lattice-diamond-archlinux,显示用于
编程器工具在 Diamond GUI 中呈灰色
这是由缺少依赖项引起的。 安装 libusb-compat 软件包。 如果这还不够,请直接启动编程器二进制文件以获取缺少库的报告 (/usr/local/diamond/3.12/bin/lin64/programmer
)。