详细介绍如何在linux中配置chisel环境

2023-11-11

一、安装java和scala

1、安装java

安装java

sudo apt install openjdk-11-jre-headless

安装javac

sudo apt install openjdk-11-jdk-headless

测试是否安装成功:

java --version或javac --version

在这里插入图片描述

2、安装scala

1)下载

传送门:https://www.scala-lang.org/download/2.12.12.html
在这里插入图片描述
2)解压缩文件包,可将其移动至/usr/local/share下:

sudo mv /downloadpath/scala-2.12.12/ /usr/local/share # 下载目录需要按你实际的下载路径

3)修改环境变量,在profile文件的末尾加入下面第二行的内容:

sudo vim /etc/profile

export PATH="$PATH:/usr/local/share/scala-2.12.12/bin"

4)保存退出

先按:esc键
然后按下::wq

5)重启

6)最后测试是否安装成功即可

在这里插入图片描述

二、安装sbt

依次执行以下命令:

echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list
echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.list
curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo apt-key add
sudo apt-get update
sudo apt-get install sbt

有一点需要注意的是,如果安装了sbt,我们其实就不需要安装scala了,也就是前面安装的scala压根就用不到,你可以理解为sbt会自动下载所需版本的scala!!!

三、安装chisel及相关文件

有两种方式:

  • 第一种是通过在工程文件夹下的build.sbt文件中添加库依赖并指定好版本,使指定版本的chiselfirrtl等一些所需文件自动下载;
  • 第二种是单独下载安装chiselfirrtltreadle,然后导出到~/.ivy2/local/edu.berkeley.cs路径下供sbt使用;

1、第一种方式

①先从GitHub上克隆一个chisel-examples文件夹:

git clone https://github.com/schoeberl/chisel-examples.git

可以看到文件夹中有个build.sbt,重点在于修改版本号:

scalaVersion := "2.12.12"

scalacOptions := Seq("-deprecation", "-Xsource:2.11")

resolvers ++= Seq(
  Resolver.sonatypeRepo("snapshots"),
  Resolver.sonatypeRepo("releases")
)

// Chisel 3.4
libraryDependencies += "edu.berkeley.cs" %% "chisel3" % "3.4.3"
libraryDependencies += "edu.berkeley.cs" %% "chisel-iotesters" % "1.5.3"
libraryDependencies += "edu.berkeley.cs" %% "chiseltest" % "0.3.3"

你可以合理的修改其中的版本号,来控制自动下载的chisel版本,虽然没有显式配置firrtl,但是firrtl也会同步下载。

关于以上指定的版本号,可以在这里传送门查看,对应起来就好,如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至于这里库依赖的格式,可以参考:

https://www.scala-sbt.org/1.x/docs/zh-cn/Library-Dependencies.html

②接着在该文件夹下打开终端,执行:

make alu

也可以执行其他命令,这里主要是为了运行sbt命令生成.v文件,这样才能开始下载chiselfirrtl
在这里插入图片描述

你会发现,下载的东西存在了家目录的如下路径中:
在这里插入图片描述

继续查看chisel3_2.12/3.4.3/下面的文件:
在这里插入图片描述
chisel3_2.12-3.4.3.jar文件其实就是以后写chisel程序会使用的chisel3库,如下所示:
在这里插入图片描述

chisel3_2.12-3.4.3.pom文件提供了groupId, artifactId 和 version的具体信息,在.sbt文件中写库依赖的时候会用到这几个信息,如下所示:
在这里插入图片描述

需要说明的是:

其实你可以理解为在使用sbt编译运行chisel程序,最终生成verilog代码的过程中,sbt会自动在以下路径寻找chisel3库文件和firrtl

/home/alex/.cache/coursier/v1/https/repo1.maven.org/maven2

然后根据build.sbt中的库依赖(比如libraryDependencies += "edu.berkeley.cs")定位到更加具体的如下路径,并在其中寻找所需版本的chisel3库文件和firrtl

/home/alex/.cache/coursier/v1/https/repo1.maven.org/maven2/edu/berkeley/cs
在这里插入图片描述

又会根据%% "chisel3" % "3.4.3"找到下图中的文件,也即chisel3库。
在这里插入图片描述
因为此时只安装了一个版本的chisel3,当有多个版本的时候,你就需要在build.sbt里正确指定版本号,这样就不会使用其他版本,也不会再下载新版本。所以也就是说,当上述路径下存在了相关文件后,以后就不需要再下载了,除非你又指定了不同的版本,更新或更旧的版本!!!

如果正确下载了以上文件,make alu最后会执行成功,如下所示:
在这里插入图片描述

2、第二种方式

首先需要说明的是,接下来将要下载下来的三个包,它们的build.sbt里面的scala版本,至少要保证三者(其实是四者,还有工程文件夹下的build.sbt)的版本号都是2.12.x或者2.13.x。如果有的是2.12.x,有的是2.13.x,可能会报路径错误,你可以自己试试。

之所以会有路径错误,是因为如下图所示:
在这里插入图片描述
文件夹的名字中的2.12其实是会随你设置的scala版本的不同变化的,也即如果下面安装的三个包的build.sbt设置的是2.13.x,那么上图中的文件夹的名字里也是2.13

而执行make alu时,如果工程文件夹中的build.sbt设置的是2.12.x,它寻找依赖时会访问比如chisel3_2.12文件夹,不会访问chisel3_2.13文件夹,那么就会找不到。大概是这意思吧,反正我是出错了,所以最好直接设置成同一个版本,应该会好些!!!

如下三张图依次是下载好这三个包后,首先修改后的build.sbt中版本内容:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

①安装Firrtl:

git clone https://github.com/freechipsproject/firrtl.git && cd firrtl

克隆完成后,cd命令会把终端路径切换到firrtl文件夹下,在该路径下执行:

pushd firrtl; sbt publishLocal; popd

②安装treadle:

编译完成后,执行测试命令:

git clone https://github.com/chipsalliance/treadle.git && cd treadle

克隆完成后,cd命令会把终端路径切换到treadle文件夹下,在该路径下执行:

pushd treadle; sbt publishLocal; popd

安装chisel3,依次执行如下命令:

git clone https://github.com/freechipsproject/chisel3.git && cd chisel3

sbt compile

sbt publishLocal

如果安装正确,会在~/.ivy2/local/edu.berkeley.cs路径下看到:
在这里插入图片描述
完成上面的步骤后,更改一下你的项目工程chisel-examples下的build.sbt中的版本号即可:

scalaVersion := "2.12.12"

scalacOptions := Seq("-deprecation", "-Xsource:2.11")

resolvers ++= Seq(
  Resolver.sonatypeRepo("snapshots"),
  Resolver.sonatypeRepo("releases")
)

// Chisel 3.5
libraryDependencies +=  "edu.berkeley.cs" %% "chisel3" % "3.5-SNAPSHOT"
libraryDependencies += "edu.berkeley.cs" %% "chisel-iotesters" % "1.5.3"
libraryDependencies += "edu.berkeley.cs" %% "chiseltest" % "0.3.3"

需要说明的是:

第二种方式直接git下来的firrtl、treadle、chisel,后面都带有-snapshot。比如我写这篇文章的时候,下载的这三个东西的版本分别是:

1.5-SNAPSHOT
1.5-SNAPSHOT
3.5-SNAPSHOT

回忆一下第一种方式下载下来的包,它们的版本就没有-snapshot,比如之前的chisel的版本就是3.4.3。个人认为这里版本号不同的特点非常关键,因为由于两者的版本号明显不同,所以当如下路径:

/home/alex/.cache/coursier/v1/https/repo1.maven.org/maven2/edu/berkeley/cs

和如下路径:

~/.ivy2/local/edu.berkeley.cs

同时存在chisel时,也不会有冲突,因为它们的版本号正如上面所说的,有着明显的不同,所以你只需要在工程目录下的build.sbt文件中指定好chisel的版本号即可,如下所示:

libraryDependencies += "edu.berkeley.cs" %% "chisel3" % "3.5-SNAPSHOT"

你可以理解为sbt看到-SNAPSHOT就会去第二个路径下找chisel,否则就去第一个路径下找chisel,而其他包的寻找保持和chisel一致即可,也即总是使用选择的chisel库同路径下的其他包,比如firrtl

四、小结

以上的第三部分内容部分属于自己的猜测,可能不完全对,如有错误,还望指正。会再继续研究研究!!!溜了溜了!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

详细介绍如何在linux中配置chisel环境 的相关文章

  • 使用 MongoDB docker 镜像停止虚拟机而不丢失数据

    我已经在 AWS EC2 上的虚拟机中安装了官方的 MongoDB docker 映像 并且数据库上已经有数据 如果我停止虚拟机 以节省过夜费用 我会丢失数据库中包含的所有数据吗 在这些情况下我怎样才能让它持久 有多种选择可以实现此目的 但
  • 使用 sed 将 old-link-url 替换为 new-link-url

    我正在 bash 中编写一个脚本 将 old link url 替换为 new link url 我的问题是 sed 由于斜杠而无法替换 url 如果我只输入一些文字就可以了 my code sed e s old link new lin
  • gnome-terminal 新选项卡,使用别名作为要执行的命令

    我已经创建了一个别名 bashrc文件如下 alias myproject cd Desktop myproject 当我重新启动终端时保存文件后 输入myproject带我到项目目录 但是当我尝试使用别名作为新的命令参数时gnome te
  • Linux 文本文件操作

    我有一个格式的文件 a href a href a href a href 我需要选择 之后但 之前的文本 并将其打印在行尾 添加后 例如 a href http www wowhead com search Su a a a a a
  • 如何在 Linux x86_64 上模拟 iret

    我正在编写一个基于 Intel VT 的调试器 由于当 NMI Exiting 1 时 iret 指令在 vmx guest 中的性能发生了变化 所以我应该自己处理vmx主机中的NMI 否则 guest会出现nmi可重入错误 我查了英特尔手
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0
  • Gradle 1.3:build.gradle 不构建类

    这里有一个新问题 我有一个 build gradle 文件apply plugin java在其中 并与 java 项目 包关联 当我跑步时gradle build从命令行我得到 compileJava UP TO DATE process
  • 为什么 ld 无法从 /etc/ld.so.conf 中的路径找到库?

    我想添加 opt vertica lib64进入系统库路径 所以我执行以下步骤 1 添加 opt vertica lib64 into etc ld so conf 然后运行ldconfig 2 检查 bash ldconfig p gre
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • IntelliJ IDEA 13:新的 Scala SBT 项目尚未生成 src 目录结构

    我按照 Jetbrains 网站上的入门视频设置 IntelliJ IDEA 13 1 Community Edition 以与 Scala 配合使用 Scala 插件 v0 36 431 已安装 当我使用向导创建一个新的 Scala SB
  • “grep -q”的意义是什么

    我正在阅读 grep 手册页 并遇到了 q 选项 它告诉 grep 不向标准输出写入任何内容 如果发现任何匹配 即使检测到错误 也立即以零状态退出 我不明白为什么这可能是理想或有用的行为 在一个程序中 其原因似乎是从标准输入读取 处理 写入
  • Linux 上的 Python 3.6 tkinter 窗口图标错误

    我正在从 Python GUI 编程手册 学习 Python GUI 某项任务要求我通过将以下代码添加到我的配方中来更改窗口图标 Change the main windows icon win iconbitmap r C Python3
  • 为 Linux 安装 R 包时出错

    我试图在 R 3 3 上安装一个名为 rgeos 的包 但是当我输入 install packages rgeos 但它返回给我以下错误 其他包也会发生同样的情况 但不是所有包 gt installing source package rg
  • 如何查明 Ubuntu 上安装了哪个版本的 GTK+?

    我需要确定 Ubuntu 上安装了哪个版本的 GTK 男人似乎不帮忙 这个建议 https stackoverflow com a 126145 会告诉您安装了哪个 2 0 的次要版本 不同的主要版本将具有不同的包名称 因为它们可以在系统上
  • numpy 未定义符号:PyFPE_jbuf

    我正在尝试使用一百万首歌曲数据集 为此我必须安装 python 表 numpy cython hdf5 numexpr 等 昨天我设法安装了我需要的所有内容 在使用 hdf5 遇到一些麻烦之后 我下载了预编译的二进制包并将它们保存在我的 b
  • 如何获取 linux 实用程序 tail 的源代码?

    这个命令确实非常有用 但是我可以在哪里获取源代码以查看内部发生的情况 thanks tail 实用程序是 Linux 上 coreutils 的一部分 源压缩包 ftp ftp gnu org gnu coreutils coreutils
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • 无法安装 WWW::Curl::Easy: SZBALINT/WWW-Curl-4.17.tar.gz : make NO

    我正在尝试在我的 Fedora 26 机器上安装 WWW Curl Easy gcc c I usr include D REENTRANT D GNU SOURCE O2 g pipe Wall Werror format securit
  • 标准头文件中的 C 编译器错误 - 未定义的 C++ 定义

    我正在尝试编译 C 程序 但收到许多错误 这些错误是在标准 C 头文件 inttypes h stdio h stat h 等 中遇到的 错误的来源是以下未定义的常量 BEGIN DECLS END DECLS BEGIN NAMESPAC
  • 无法执行'x86_64-conda_cos6-linux-gnu-gcc':没有这样的文件或目录(pysam安装)

    我正在尝试安装 pysam 执行后 python path to pysam master setup py build 这个错误的产生是 unable to execute x86 64 conda cos6 linux gnu gcc

随机推荐

  • C++中插件使用举例

    插件并不是在构建时链接的 而是在运行时发现并加载的 因此 用户可以利用你定义好的插件API来编写自己的插件 这样他们就能以指定方式扩展API的功能 插件库是一个动态库 它可以独立于核心API编译 在运行时根据需要显示加载 不过插件也可以使用
  • 左耳朵耗子:拖累开发团队效率的困局与解决之道

    作者 陈皓编辑 小智影响软件开发团队效率的因素有许多 产品和业务上的效率问题固然是根本 但很多时候 这种问题并没有解 如果只从软件开发的过程出发 哪些开发方式是典型 又该怎么解呢 写在前面 我之前写过一篇叫 加班与效率 的文章 从概念上说了
  • outlook中打开链接时收到错误信息

    http helpdesk blog 51cto com 219783 233525 症状 outlook中打开链接时收到错误信息 一般性错误 http 找不到应用程序 原因 IE非默认浏览器 解决方法 打开任意文件夹 工具 文件夹选项 文
  • 【python】—— python的基本介绍并附安装教程

    前言 今天 我将给大家讲解关于python的基本知识 让大家对其有个基本的认识并且附上相应的安装教程以供大家参考 接下来 我们正式进入今天的文章 目录 前言 一 Python 背景知识 二 Python 都能干啥 三 Python的优缺点
  • 判断一个数是否为素数之费马测试

    费马测试被称为概率性素性测试 它判断的是 某个数是素数的概率大不大 如果P为素数 那么所有比P小的数Q都满足公式 QP mod P Q 即 例素数5的性质 比素数5小的数有4 3 2 1 那么 45 45 1024 mod 5 4 35 3
  • 电脑性能,如何提高电脑性能 方法介绍【图文教程】

    在这个信息传播飞速的当下 网络是人们必不可少的传播工具 网络传播信息的途径就是通过电脑 电脑如今已经是每家每户的宠儿了 几乎每个人都有自己的电脑 然而电脑与电脑之间也有差异 它们最大的不同就是性能方面 影响性能的主要因素是硬件 当然还有其它
  • C#学习教程六

    C 异常机制具有如下的特征 1 所有异常必须用System Exception类或者从System Exception派生的类实例来标识 2 可以使用fianlly块编写在正常执行或异常情况下都要执行的终止代码 3 系统级的异常如移除 被零
  • keepalived双主模式(互为主备)

    考虑到keepalived高可用 备节点的机器基本上属于空闲状态 很浪费硬件资源 所以我们可以让keepalived互为主备 跑多个实例 第一个节点配置 vim etc keepalived keepalived conf global d
  • Qt中Udp通信、Udp广播和组播(QT七)

    目录 一 UDP通信 1 Qt中udp通信QUdpSocket 1 发送端 2 接收端 2 Udp通信广播 1 app端UdpApp 2 控制器端UdpControl 3 Udp通信组播 1 组播发送端 2 组播接收端 3 如果要接收组播数
  • 华为服务器bios中修改磁盘格式,华为服务器设置bios

    华为服务器设置bios 内容精选 换一换 通过在BIOS中设置一些高级选项 可以有效提升虚拟化平台性能 表1列出了TaiShan服务器和性能相关的BIOS推荐配置项 开启CPU预取配置选项的目的在于CPU先行提取下一段指令以提高系统效能 在
  • pthread的互斥量和自旋锁

    一 自旋锁与互斥量的区别 在多处理器环境中 自旋锁最多只能被一个可执行线程持有 如果一个可执行线程试图获得一个被争用 已经被持有的 自旋锁 那么该线程就会一直进行忙等待 自旋 也就是空转 等待锁重新可用 如果锁未被争用 请求锁的执行线程便立
  • Vue3安装配置、开发环境搭建(组件安装卸载)(图文详细)

    Vue3安装配置 开发环境搭建 组件安装卸载 图文详细 本文目录 一 vue的主要安装使用方式 二 node js安装和配置 1 支持运行 Node js的平台 2 Node js 版本开发发布时间表 日期可能会有变化 3 下载安装node
  • qt5.15 快速安装 国内源

    1 qt5 15 安装问题 最大的问题就是需要在线下载与安装 即使挂了科学上网 国外的服务器下载速度也还是超级慢 在网上找了各种解决办法后 终于找到一个快速下载安装的办法 2 安装器下载 阿里源 清华源都没有Windows的安装器了 在腾讯
  • 机器学习实战——第五章(分类):Logistic回归

    前言 首先感谢博主 Jack Cui 主页 http blog csdn net c406495762 Logistic回归博文地址 https blog csdn net c406495762 article details 777233
  • 分布式系统服务器要求,浅谈分布式系统

    分布式系统的由来 软件系统的架构一直以来随着技术的发展和市场的需求进行着不断的演进 最初 各行业业务相对比较简单 对系统的要求也不高 软件系统的架构均采用单一应用架构 此时单台服务器即可满足系统的要求 之后 随着业务的发展 对系统的要求不断
  • Codeblocks的安装与配置

    Hello 大家好 欢迎大家来到编程世界 从现在开始 我将和大家一起走进代码王国 既然我们出来混社会 哦不 是来新世界闯荡 我们至少应该先选一把 神兵利器 来防身嘛 在一些高校的电脑室里 你可能会看见下面这款经典软件 没错 VC 6 0 额
  • Linux redis 主从复制,从服务器一直显示master_link_status:down

    Linux redis 主从复制 从服务器一直显示master link status down 这里初步的解决方案是权限不足 切换成root 就可以解决了
  • vscode无法在只读编辑器中输入

    在设置中搜索run code config 将run in terminal打勾即可
  • 学点Selenium玩点新鲜~新的一年,让分布式测试有更多玩法

    我们都知道 Selenium 是一款在 Web 应用测试领域使用的自动化测试工具 而 Selenium Grid 是 Selenium 中的一大组件 通过它能够实现分布式测试 能够帮助团队简单快速在不同的环境中测试他们的 Web 应用 分布
  • 详细介绍如何在linux中配置chisel环境

    一 安装java和scala 1 安装java 安装java sudo apt install openjdk 11 jre headless 安装javac sudo apt install openjdk 11 jdk headless