Chisel环境搭建教程(Ubuntu)

Chisel环境搭建教程(Ubuntu)

  • 0 前言
  • 1 安装java
  • 2 安装scala
  • 3 安装sbt
  • 4 A Chisel template
  • 5 Chisel教程
  • 参考资料

0 前言

  • chisel的依赖很多,而且很容易出现版本不兼容的情况,这里每一步我都会提供自己的安装版本
  • OS版本:Ubuntu 21.04 64bit
  • 相关参考资料见底

1 安装java

  • 版本:11.0.13

Chisel是基于scala开发的,而scala是基于java的,因此我们先安装java再安装scala。

  1. java
    sudo apt install openjdk-11-jre-headless

  2. javac
    sudo apt install openjdk-11-jdk-headless

  3. 完成后查看版本以检查是否成功安装:java --version javac --version
    出现这样的版本号就说明java已经安装成功。

openjdk 11.0.13 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.21.04)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.21.04, mixed mode)
javac 11.0.13

2 安装scala

  • 版本2.12.12
  1. 到这个网址下载合适版本的scala,不建议使用scala3, 推荐2.12.x

  2. 下载.tgz文件,将其解压后移动到/usr/local/share目录下

  3. 添加环境变量,在家目录下.bashrc文件的最后添加:
    export PATH="$PATH:/usr/local/share/scala-2.12.12/bin"

    这句的含义是在PATH变量中加上你刚刚安装的scala内bin文件夹的目录,其中的scala-2.12.12取决于你下载的scala版本

  4. 最后source一下使其更新生效:
    source ~/.bashrc

  5. 在任意目录下输入scala,若出现如下的prompt,则说明scala安装成功。

Welcome to Scala 2.12.12 (OpenJDK 64-Bit Server VM, Java 11.0.13).
Type in expressions for evaluation. Or try :help.

scala> 
scala> 1+1
res0: Int = 2

3 安装sbt

  • 版本 sbt 1.6.2
  • 如果像我一样是第一次接触sbt,可能不太理解这个工具,并且觉得很复杂。sbt是一个构建工具,其实可以简单地理解为一个编译、管理chisel工程的工具,一个针对scala的make。
  1. 对于sbt的下载,有很多教程直接sudo apt install sbt,有的还在之前先update一下,但这个方法至少对我来说一直没有用。最保险的方法是上官网下载,可以试试官网提供的命令行下载方法(没亲测过):
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
  1. 也可以直接下载.tgz,解压后同安装scala,vim ~/.bashrc在最后添加:
export SBT_HOME="安装路径/sbt"
export PATH="$SBT_HOME:$PATH"
  1. 最后source ~/.bashrc更新。
  2. 测试sbt,在任意文件夹下输入sbt sbtVersion,若出现版本号说明安装成功。
  3. 可以对sbt换源,进入~/.sbt,创建文件repositories,内容为
[repositories]
local
huaweicloud-maven: https://repo.huaweicloud.com/repository/maven/
maven-central: https://repo1.maven.org/maven2/
huaweicloud-ivy: https://repo.huaweicloud.com/repository/ivy/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
  1. 现在,我们找一个现成的chisel工程测试一下所有工具是否安装到位。

4 A Chisel template

  • github地址
  1. git clone https://github.com/schoeberl/chisel-empty.git
  2. cd 进文件夹,可以看到有以下几个文件(文件夹):
	build.sbt  
	Makefile 
	README.md  
	src/ 
	quartus/

build.sbt 规定了scala版本,导入的包等:

scalaVersion := "2.12.12"

scalacOptions ++= Seq(
  "-feature",
  "-language:reflectiveCalls",
)

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

// Chisel 3.5
addCompilerPlugin("edu.berkeley.cs" % "chisel3-plugin" % "3.5.0" cross CrossVersion.full)
libraryDependencies += "edu.berkeley.cs" %% "chisel3" % "3.5.0"
libraryDependencies += "edu.berkeley.cs" %% "chiseltest" % "0.5.0"
  • 重点第一行的scala版本一定要匹配(也有说sbt会自动下载合适版本的scala,但没亲测过)。
  • 最后两行libraryDependencies相当于安装这个工程所需的包,可能需要联网下载。
  • 版本兼容问题,详见这里,例如我想知道chiseltest的版本应该多少才和我的scala版本兼容:

chiseltestVersion1Chisel环境搭建教程(Ubuntu)_第1张图片
Makefile 并不是必须的,里面实际上是sbt的命令,对sbt命令的进一步了解可以参考这篇博客。

quartus/ 与目前的关系不大,可以暂时不管。

src 用来存放代码。该模板中自带一个简单加法器的chisel实现,存放在src下。文件结构如下,这也是一般sbt工程文件的规范:

src/
  main/
    scala/
       
test/ scala/
  1. 在chisel-empty文件夹下(就是有build.sbt的一级)输入命令make或者实际上是sbt run
  2. 最终出现如下信息,即说明以上所有部分完全安装正确,可以开始搭建自己的chisel工程了。
[info] Updated file /home/ckq/Documents/codes/CHISEL/chisel_proj/chisel-empty/project/build.properties: set sbt.version to 1.6.2
[info] welcome to sbt 1.6.2 (Ubuntu Java 11.0.13)
[info] loading project definition from /home/ckq/Documents/codes/CHISEL/chisel_proj/chisel-empty/project
[info] loading settings for project chisel-empty from build.sbt ...
[info] set current project to chisel-empty (in build file:/home/ckq/Documents/codes/CHISEL/chisel_proj/chisel-empty/)
[info] compiling 1 Scala source to /home/ckq/Documents/codes/CHISEL/chisel_proj/chisel-empty/target/scala-2.12/classes ..
[info] running empty.AddMain 
Generating the adder hardware
[success] Total time: 7 s, completed May 2, 2022, 5:00:07 PM

也可以输入sbt test跑一下test中的测试代码:

[info] AddTester:
[info] Add
[info] - should work
[info] Run completed in 2 seconds, 540 milliseconds.
[info] Total number of tests run: 1
[info] Suites: completed 1, aborted 0
[info] Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0
[info] All tests passed.
[success] Total time: 7 s, completed May 2, 2022, 5:02:39 PM

5 Chisel教程

最后推荐一些入门chisel的学习资源:

  1. 首推Chisel-book,可以免费下载,建议看英文版,虽然有中文版本的,但是机翻极其难受。
  2. 如果英文恐惧的话,可以看chisel-getting-started-chinese,主要介绍语言本身。
  3. 对sbt的进一步了解,查看官方手册
  4. 其他建议。可以在vscode上编写chisel代码,安装插件:Chisel Syntax;另外,还可以查看波形(vcd文件),这样即使没有其他EDA软件和FPGA板,我们至少也能进行逻辑上的仿真。安装插件:WaveTrace。

参考资料

本人也是小白一枚,难免整理不周,如有疑问可以进一步参考以下博客/专栏:

初学Chisel语言,看这篇就够了:最方便简洁的入门资料整理

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

Ubuntu18安装Scala

SBT简介

sbt的安装及其配置

SBT无痛入门指南

你可能感兴趣的:(数字IC,ubuntu,scala)