Vivado远程开发探索

news2024/11/16 13:55:52

  平时主要用轻薄本办公,但是有时候又需要用Vivado做一些开发的工作,就感觉生产力不够。如果能在远程的高性能服务器上跑Vivado综合实现就好了。前段时间用ubuntu下安装的Vivado发现有一个Remote Host的设置。所以就准备折腾一下这个。

WSL

  WSL的安装看官网的文档就好了。最近摸索了一段时间后感觉,Linux系统的桌面并没有很大的作用。一般只需要应用程序有一个可视化的图形窗口就行。切换目录浏览文件,启动应用程序都可以通过命令行快速实现。因此安装完WSL之后并不太需要安装一个“桌面”,而只要能够显示某些应用软件的图形界面即可。
  图形界面显示用Xserver实现,我在widows端采用xcvsrc作为服务端。在WSL中运行的应用程序都可以转发到widnows主机上显示,这一转发的功能需要设置转发显示的地址,由变量DSIPLAY控制显示的地址和端口。某些远程SSH登录的软件可以指定这一地址,如果不指定的话也需要在.profile或.bashrc中确定DISPLAY变量。

Vivado安装

  Vivado的安装过程可以看ug973,在没有图形界面的情况下可以用Batch mode来安装。WSL默认的根目录大小是256 GB,我没有额外扩容,安装了Vivado2019.2。

在这里插入图片描述

  ug973里同样说明了特定版本的Vivado能够和什么版本的操作系统一起工作,能够和什么版本的仿真软件一起工作。比如在2019.2版本的ug973里,它并没有说支持20.04版本的ubuntu,可能那时候ubuntu还没有更新到20.04,但实际使用过程中是没问题的。

在这里插入图片描述

  在真正开始安装之前需要先安装ncurses5库,然后再按部就班安装即可。安装完成后用了70+ GB。

sudo apt install libncurses5

在这里插入图片描述

  安装完成之后只需要把Vivado的路径添加到PATH环境变量中就可以通过命令行启动Vivado了。可以把下面这行命令放在~/.bashrc的末尾。然后就可以在任意目录下启动vivado了,vivado启动的路径下会生成.log和.jou日志文件,因此一般推荐在工程目录下启动vivado,这样方便管理那些自动生成的日志文件。

source /tools/Xilinx/Vivado/2019.2/settings64.sh

  用户目录下有两个文件.bashrc和.profile。.bashrc中的命令在每次打开一个终端的时候都会执行;.profile中的命令只有在用户刚登录的时候才会执行一次。Linux系统相比于windows系统能很快就让环境变量生效。因为只要在修改.bashrc之后,再打开一个新的终端,新的环境变量设置就能生效。更快的方式就是:

source ~/.bashrc

  总之,在确保Xserver运行的情况下,WSL设置正确的DISPLAY变量。然后启动Vivado,就可以在windows系统下运行Linux环境中的Vivado。

在这里插入图片描述

Modelsim安装

  Vivado安装成功后基本就能用了,Vivado也可以用来仿真,但是modelsim优化得更好,仿真更快,所以我一般都用modelsim仿真。但是在WSL里安装modelsim有些问题,如果是直接在Ubuntu系统下安装是没有问题的,可以参考这篇文章。
  我同样照着这篇文章安装modelsim,modelsim能够正常启动,但是有一个致命的问题是,WSL在每次启动时物理地址会变,导致license失效。网上好像有一些奇技淫巧可以做到固定MAC地址,但官方还没有给出解决方案,所以我还是想再等一等官方的更新。这时候我想大不了每次启动wsl都生成一遍license,因为生成license也挺快的。但实际上后面还有一个坑。
  加载正确的license之后能够打开modelsim了,但是不能开始仿真。一旦开始仿真它就报错,就像下面这样:

在这里插入图片描述

  这我就没办法了。WSL下的Modelsim仿真主要就是有这样两个问题:

  • MAC地址在每次启动WSL时都会发送变化;
  • 启动仿真时发生socket被占用的问题。

Vivado调试

  WSL中的Vivado连接板卡会相对比较繁琐,但是确实是可行的。

驱动安装

  参考ug973,Vivado的安装目录下有驱动的安装文件。执行以下命令来安装驱动:

sudo ${vivado_install_dir}/data/xicom/cable_drivers/lin64/install_script/install_drivers/install_drivers

需要把其中的${vivado_install_dir}替换为Vivado的安装路径。比如我的是:

sudo /tools/Xilinx/Vivado/2019.2/data/xicom/cable_drivers/lin64/install_script/install_drivers/install_drivers

WSL连接USB设备

  微软官方有介绍一种方法,可以由WSL直接连接USB外设。完成一系列安装后,需要在PowerShell中为WSL attach USB设备。
添加设备的命令:

usbipd wsl attach --busid <busid>

删除设备的命令:

usbipd wsl detach --busid <busid>

其中的busid是通过"usbipd wsl list"获得的。

在这里插入图片描述

  只要安装完驱动和attach USB设备,Vivado就可以识别并连接硬件板卡。

远程综合实现

  虽然Xilinx的ug904上有说可以利用远程的Linux主机来跑job。但它的要求就很迷,大概的意思就是需要工程所在的目录需要挂载到远程的服务器上才行。

在这里插入图片描述

  我遇到的情况大概和这个帖子差不多,单独使用ssh远程访问Linux主机没有问题,但是Test就是通不过。现在也没有找到解决方法。

远程服务器端工作

  借助Remote Host综合实现的想法没能实现,那干脆直接就在Remote Host上工作吧。这样都不需要WSL了,直接ssh远程连接Linux主机,在远程主机上完成所有开发。如果是在实验室的话,在实验室的局域网内通过ssh连接服务器做开发是完全可行的。
  比如我用MobaXterm通过ssh连接我们实验室的服务器。

  • 服务器IP:192.168.3.192
  • 本地IP:192.168.3.49

  因为要调试的设备也是在本地的,所以本地需要启动vivado的hw_server。并且hw_server的版本需要和服务器的vivado版本对应。2019版本及以前的Vivado支持单独下载hardware server。大概就200M的样子,很方便。
  还有一种方法很方便,就是直接去已经安装了Vivado的主机上拷贝hw_server.exe和驱动安装文件。这两个文件加起来都不超过100M,非常方便。可以让轻薄本不安装Vivado,然后借助远程服务器来调试本地的设备。本地的主机一般要写文档啥的还是windows比较方便,所以我这里用的是windows版本的软件。如果你的本地主机用的是Linux版本的,那应该也有对应的驱动和hw_server。

  • hw_server.exe路径: ${vivado_install_dir}/bin/unwrapped/win64.o/hw_server.exe
  • 驱动安装包install_digilent.exe路径: ${vivado_install_dir}/data/xicom/cable_drivers/nt64/digilent/install_digilent.exe

  安装完驱动,然后启动hw_server.exe就可以等待远程的服务器来连接了。

在这里插入图片描述

  结果就像这样,本地主机通过ssh连接远程服务器的22端口,远程服务器通过本地主机的3121端口连接待调试设备。

在这里插入图片描述

  而且这一做法不存在WSL中物理地址一直变的问题,可以正常在远程使用modelsim,modelsim的license里,需要为每一条加上"TS_OK"然后才能远程使用。可以看这个文章。正常做设计和仿真都是没问题的。
  如果本地主机没法和服务器在一个网段内,可以考虑结合ZeroTier使用。ZeroTier实现内网穿透非常方便,可以建立一个虚拟的局域网,但就是网速可能比较慢。ZeroTier下载安装,使用方法。

结论

  本来想在我的笔记本上通过WSL安装Vivado,然后连接远程主机,用Remote Host来跑一些job。但是因为种种原因失败了。但在在轻薄本上做Xilinx的FPGA开发并不是不行,这里有两个选择:

  1. 买高性能的轻薄本,既轻薄又有生产力,缺点就是比较贵。
  2. 利用ssh连接服务器,结合X11Forwarding进行开发。本地资源占用小,缺点就是比较依赖网速。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/655466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python怎么调成黑色背景?

Python怎么调成黑色背景&#xff1f; 随着人们对代码编辑器的要求越来越高&#xff0c;许多开发者都喜欢在黑色背景下编写代码。不仅仅是视觉审美方面考虑&#xff0c;黑色背景对眼睛的伤害也比浅色背景要小得多。本篇文章将介绍如何在Python中调整为黑色背景 介绍 默认情况…

[C++刷题之旅]反转链表

&#x1f338;心有所向&#xff0c;日复一日&#xff0c;必有精进 &#x1f338;专栏&#xff1a;C刷题之旅 &#x1f338;作者&#xff1a;早凉 目录 题目一&#xff1a;反转链表 【题目链接】 【题目描述】 【解题思路】 【代码实现】 进阶&#xff1a;链表中指定区间…

【异步】Futurn、FutureTask、CompletionService、CompletableFuture

1. Callable 在这篇文章中 【Thread】线程的基本概念及创建方式&#xff08;一&#xff09;&#xff0c;我们知道创建线程的几种方式。其中&#xff0c;有两个是通过接口来实现的&#xff1a;Runnable、Callable。它们的区别如下&#xff1a; Runnable 接口中的方法是没有返回…

代码审计——XXE详解

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 漏洞描述02 审计要点03 漏洞特征04 漏洞案例05 修复方案 01 漏洞描述 XXE&#xff08;XML External Entity Injection&#xff09;是一种针对XML终端实施的攻击&#xff0c;漏洞产生的根本原因就是…

chatgpt赋能python:Python怎么调整行距

Python怎么调整行距 在Python中&#xff0c;我们可以使用不同的方法来调整文本行距。 在这篇文章中&#xff0c;我们将讨论最常用的两种方法&#xff1a;使用文本编辑器和使用Python代码。 使用文本编辑器 许多文本编辑器都具有设置行距的选项。 这通常在“格式”或“段落”…

SpringBoot + Mybatis Plus 实现的瀑布内容管理系统、CMS建站系统

瀑布内容管理系统 瀑布内容管理系统&#xff0c;采用SpringBoot Apache Shiro Mybatis Plus Thymeleaf 实现的内容管理系统(附带权限管理)&#xff0c;是搭建博客、网站的不二之选。 项目介绍 PB-CMS&#xff0c;致力于开发最精简、实用的CMS管理系统&#xff0c;适合搭建…

chatgpt赋能python:Python如何访问手机:探索移动端SEO优化的新途径

Python如何访问手机&#xff1a;探索移动端SEO优化的新途径 随着移动互联网的快速发展&#xff0c;移动端成为了各大搜索引擎的竞争焦点。对于SEO优化工程师而言&#xff0c;探索移动端SEO优化的新途径显得尤为关键。而Python作为一种强大的编程语言&#xff0c;在移动端SEO优…

MM32F3273G8P火龙果开发板MindSDK开发教程21 - PWM的使用

MM32F3273G8P火龙果开发板MindSDK开发教程21 - PWM的使用 1、简述 开发版的LED灯连接PA1脚&#xff0c;而PA1可以映射TIM2_CH2&#xff0c;所以我们用通用定时器2的TIM2_CH2输出PWM到PA1脚&#xff0c;通过更改PWM的占空比&#xff0c;来改变LED的亮度。 2、LED灯的初始化…

读数据压缩入门笔记06_上下文转换

1. 压缩算法可归为两类 1.1. 统计压缩&#xff08;即VLC&#xff09; 1.2. 字典压缩&#xff08;如LZ78&#xff09; 1.3. 从不同的角度利用了给定数据流中存在的统计冗余信息 2. 上下文变换 2.1. contextual transform 2.2. 给定一组相邻的符号集&#xff0c;对它们进行…

代码审计——任意文件下载详解

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 漏洞描述02 审计要点03 漏洞特征04 漏洞案例05 修复方案 01 漏洞描述 网站可能提供文件查看或下载的功能&#xff0c;如果对用户查看或下载的文件不做限制&#xff0c;就能够查看或下载任意的文件&…

大数据相关概念了解

Hadoop生态及Hive、HBase、Impala、HDFS之间的关系 Hadoop生态(什么是 Hadoop) Apache Hadoop软件库是一个框架&#xff0c;允许使用简单的编程模型在计算机集群之间对大型数据集进行分布式处理。它旨在从单个服务器扩展到数千台计算机&#xff0c;每台计算机都提供本地计算和…

【雕爷学编程】Arduino动手做(112)---2.4G24L01无线模块

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

chatgpt赋能python:Python怎么调整黑色的SEO?

Python怎么调整黑色的SEO&#xff1f; 在当今互联网的大环境下&#xff0c;各种搜索引擎的存在具有巨大的价值&#xff0c;特别是Google&#xff0c;百度等常用搜索引擎的SEO排名对于企业、个人品牌的宣传有着极其重要的意义。但是&#xff0c;如果出现黑色SEO的情况&#xff…

Spark操作HBase的数据,实现列值的计算

本文将介绍如何使用Spark操作HBase的数据&#xff0c;实现列之间的计算&#xff0c;以特征值计算为例。特征值是指从原始数据中提取出来的具有代表性或判别性的数值&#xff0c;可以用于数据分析或机器学习等领域。本文将使用hbase-spark连接器&#xff0c;通过Spark RDD的方式…

深度解析:圣湘生物的数字化转型升级之路(附方案详情)

随着“互联网”医疗技术在医疗行业的应用不断深化&#xff0c;数字化正在加速推进IVD行业的创新。 当前&#xff0c;IVD企业应对机遇和挑战的核心是提升竞争力。 IVD企业基于企业资源&#xff0c;提升综合竞争力主要分【硬实力】和【软实力】。 一方面&#xff1a;需要企业不…

跟李沐学AI;Meta可能让其开源AI模型商业化,让开发者赚钱

&#x1f989; AI新闻 &#x1f680; Meta可能让其开源AI模型商业化&#xff0c;让开发者赚钱 摘要&#xff1a;Meta正考虑将其开源大语言模型&#xff08;LLM&#xff09;的下一个版本用于商业用途&#xff0c;这可以为聊天机器人等提供支持。此举可能会让更多开发者使用替代…

张量分解(Cp、Tuker、Block-Term)

张量 张量是向量或矩阵在维度空间上的高阶扩展。 一个 ( p , q ) (p,q) (p,q)型的张量 T T T被定义为一个多重线性映射。 T : V ∗ ⋯ V ∗ V ⋯ V ↦ R , T:V^* \times \dots \times V^* \times V \times \dots \times V \mapsto \R, T:V∗⋯V∗V⋯V↦R, 其中 V V V 是…

用GPT4写2023高考语文作文,新课标I卷,Ⅱ卷

文章目录 新课标Ⅰ卷新课标Ⅱ卷总结 每年的高考语文题目都会是热议的话题&#xff0c;今年同样也不例外。但是今年讨论的话题除了作文题目本身之外&#xff0c;对于chatgpt写出的作文会是什么样子的也​让广大网友同样期待 新课标Ⅰ卷 好的故事&#xff0c;可以帮我们更好地表达…

chatgpt赋能python:Python怎么让结果同行输出

Python怎么让结果同行输出 在Python编程中&#xff0c;我们经常需要打印出一系列的结果并在同一行输出。这对于输出更为整洁的结果和提高代码清晰度都是非常有帮助的。下面就让我们来介绍一些实现这一功能的方法。 方法一&#xff1a;使用 end 参数 在Python的 print() 函数…

机器视觉_HALCON_模板匹配_1.CreateScaledShapeModel

文章目录 一、前言二、create_scaled_shape_model 算子2.1 名称2.2 算子签名2.3 描述2.3.1 输入参数详述2.3.2 完整的预生成模型 2.4 执行信息2.5 参数2.6 执行结果2.7 可能的前驱算子2.8 可能的后继算子2.9 替代选择 一、前言 在HALCON算子手册中&#xff0c;对算子的介绍通常…