1、使用sbt构建第一个chisel项目

我理解的sbt、scala、chisel的关系

scala是门语言、可以类比于C语言。
sbt是个项目构建工具,类比于VC++。本身.c文件可以用gnu直接编译,为了项目构建方便会用VC++构建相应的项目。
chisel相当于一个库函数,比之于C语言中的<stdio.h>。我理解其本质是利用scala面向函数与面向对象的性质将chisel所写代码转换为Verilog代码。当然其本身也具有不转换就仿真硬件描述功能的性质。chisel可以当做Verilog生成器也可以当做一种硬件描述语言。

sbt的安装

参考这个网站:https://www.scala-sbt.org/1.x/docs/Setup.html
其中Linux安装,先安java-jdk

sudo apt-get update
sudo apt install openjdk-8-jdk

然后官网叭叭叭说这么一堆代码

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

其中Ubuntu18.04以上会报错,这是因为key不好用,报错最后会有一个http:…deb的链接,点它下载那个deb的包然后安装就好了。

其他工具安装

正常来说这样就能开始了,其他常见的chisel、firrtl、Verilator、gtkwave其中chisel、firrtl可以用chisel-templete模板中含有的。Verilator用于仿真,gtkwave用于看波形我觉得不影响写代码。
Verilator安装:

sudo apt-get install git make autoconf g++ flex bison
git clone http://git.veripool.org/git/verilator

Gtkwave安装

sudo apt-get install gtkwave

(因为比较复杂懒得重新搭环境所以不太确定chisel和firrtl用不用安装,我觉得不用,之前实验的时候似乎操作了一下,但正常来说chisel-templete会自己下载对应的文件)

开始构建第一个chisel工程

这里我用的是VScode,在应用里搜索chisel安装第一个插件即可。主要还是sbt构建工程。
首先第一步克隆chisel-templete项目

git clone https://github.com/freechipsproject/chisel-template 

然后用VScode打开,选择文件-打开文件夹会有如下文件结构,其中我们主要编写的是src下的分支,其中main是我们硬件描述代码编写,test是我们测试文件编写的位置。
在这里插入图片描述
然后在src-main-scala下创建文件夹mypack这就创建了一个包
在这里插入图片描述
(PS:前两个带加号的分别是创建文件和文件夹,先用鼠标选好位置再创建)
在这里插入图片描述

在包里创建一个MyPacket.scala文件输入如下代码

package mypack
//定义包
import chisel3._
//调用chisel包

class Abc extends Module {
    val io = IO(new Bundle {})
}//创建从Module创建一个Abc类,其中Module、Bundle、IO是chisel包的一个类。

然后在src-main-scala创建AbcUser.scala(啥名不重要)
在这里插入图片描述
在其中输入如下代码

import mypack._//调用我们自己写的包
import chisel3._
//创建一个AbcUser其中调用了我们自己写的Abc
class AbcUser extends Module {
    val io = IO(new Bundle {})
    val abc = Module(new Abc())

}
//必须有一个object不然之后sbt run的时候会报错发现不了一个main,这段话的意思是生成一个Verilog程序,在这里我感觉和chisel-bootcamp中jupyter里不太一样(chisel-bootcamp是Git一个项目适合初学者学习chisel,可以去看看)
object AbcUser extends App {
  (new chisel3.stage.ChiselStage).emitVerilog(new AbcUser())

}

(PS:记得全都crtl+s保存文件,保存后再做下面操作)
然后点上方终端-新建终端 如下图所示

在这里插入图片描述
在终端中输入

sbt run

这时sbt会在src中寻找object或main进行编译
正确会如下图所示
在这里插入图片描述
如果第一次运行可能会需要等一段时间,让sbt进行资源的下载。(我不太确定,环境装太多遍了…记不清哪个有装哪个没装了)
(记录一下如果报错什么 Module in not wrapping什么的话大概率是val abc=new Abc直接实例化Abc没用Module框上)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值