参考链接:
https://www.chisel-lang.org/docs/installation
使用Chisel语言编写硬件描述语言,相比于使用Verilog会更加地灵敏快捷,Coding效率更高,但似乎debug会出现一些小问题。但新工具还是要尝试一下才知道好不好用。
1 安装Chisel及生成Verilog代码
1、安装Scala CLI:
https://scala-cli.virtuslab.org/install/
Scala CLI安装的同时会自动下载和管理Chisel的依赖,包括JDK等等。如果是更加复杂的工程需要用户自行安装JDK和构建工具。
2、下载Chisel Scala CLI例程:
curl -O -L https://github.com/chipsalliance/chisel/releases/latest/download/chisel-example.scala
下载情况如下:
% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 00 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
100 947 100 947 0 0 421 0 0:00:02 0:00:02 --:--:-- 0
3、使用Scala CLI编译并运行例程:
scala-cli chisel-example.scala
运行结果:
Downloading JVM temurin:17
Downloading compilation server 1.5.17-sc-2
Starting compilation server
Downloading compiler plugin org.chipsalliance:::chisel-plugin:6.4.0
Downloading Scala 2.13.12 compiler
Downloading Scala 2.13.12 bridge
Downloading 2 dependencies
Compiling project (Scala 2.13.12, JVM (17))
Compiled project (Scala 2.13.12, JVM (17))
// Generated by CIRCT firtool-1.62.0
module Foo(input clock,reset,a,b,c,d,e,f,input [7:0] foo,bar,output [7:0] out
);reg [7:0] myReg;always @(posedge clock) beginif (reset)myReg <= 8'h0;else if (d & e & f)myReg <= bar;else if (a & b & c)myReg <= foo;end // always @(posedge)assign out = myReg;
endmodule
Chisel Scala CLI例程是一个简单、单文件的Chisel例程,运行后Verilog代码会显示在命令行窗口中。
- 当遇到更加复杂的工程,一般使用SBT或者Mill等构建工具进行编译,但依旧建议使用Scala CLI来进行实验和编写片段。
4、打开chisel-example.scala
文件,查看内部代码:
//> using scala "2.13.12"
//> using dep "org.chipsalliance::chisel:6.4.0"
//> using plugin "org.chipsalliance:::chisel-plugin:6.4.0"
//> using options "-unchecked", "-deprecation", "-language:reflectiveCalls", "-feature", "-Xcheckinit", "-Xfatal-warnings", "-Ywarn-dead-code", "-Ywarn-unused", "-Ymacro-annotations"import chisel3._
// _root_ disambiguates from package chisel3.util.circt if user imports chisel3.util._
import _root_.circt.stage.ChiselStageclass Foo extends Module {val a, b, c = IO(Input(Bool()))val d, e, f = IO(Input(Bool()))val foo, bar = IO(Input(UInt(8.W)))val out = IO(Output(UInt(8.W)))val myReg = RegInit(0.U(8.W))out := myRegwhen(a && b && c) {myReg := foo}when(d && e && f) {myReg := bar}
}object Main extends App {println(ChiselStage.emitSystemVerilog(gen = new Foo,firtoolOpts = Array("-disable-all-randomization", "-strip-debug-info")))
}
更详细的Windows或Linux安装步骤请查阅:
https://www.chisel-lang.org/docs/installation
2 Verilog仿真
2.1 安装Verilator
Verilator是一款高性能、开源的Verilog仿真软件。该软件不使用传统方法进行仿真,而是在编译时将Verilog代码转译成C++语言。因此仿真器需要C++编译器至少支持C++14和Make,Windows上还需要部分Perl脚本。
Windows上使用Verilator较为麻烦,这里使用VMware虚拟机运行Ubuntu 20.04,在Linux环境下安装Verilator。
1、安装依赖包:
sudo apt-get install git help2man perl python3 make autoconf g++ flex bison ccache
sudo apt-get install libgoogle-perftools-dev numactl perl-doc
sudo apt-get install libfl2 # Ubuntu only (ignore if gives error)
sudo apt-get install libfl-dev # Ubuntu only (ignore if gives error)
sudo apt-get install zlibc zlib1g zlib1g-dev # Ubuntu only (ignore if gives error)
2、git clone 模拟器程序
git clone https://github.com/verilator/verilator
3、查看版本:
cd verilator
git pull # Make sure git repository is up-to-date
git tag # See what versions exist
#git checkout master # Use development branch (e.g. recent bug fixes)
#git checkout stable # Use most recent stable release
#git checkout v{version} # Switch to specified release version
4、构建:
autoconf # Create ./configure script
./configure # Configure and create Makefile
make -j `nproc` # Build Verilator itself (if error, try just 'make')
这一步时间较长,构建结束可以看到的以下内容:
5、通过运行自检来检查编译:
make test
6、安装:
sudo make install
2.2 安装GTKWave
2.2.1 安装方法1(本人安装失败)
链接:
https://gtkwave.sourceforge.net/
1、安装依赖包:
sudo apt-get install tcl tk tcl-dev tk-dev
如果/usr/lib/目录下有tclConfig.sh
、tkConfig.sh
,或者tcl8.6
和tk8.6
文件夹内部有相关文件,才可以接下来的操作。
2、安装gperf、libbz2等依赖包:
sudo apt-get install gperf libbz2-dev lzma
3、安装xz-devel:
sudo apt-get install xz-devel
如果这个依赖包下载不下来,./configure
添加--disable-xz
后缀跳过。
4、尝试使用./configure
命令:
sudo ./configure --prefix=/usr --with-tcl=/usr/lib --with-tk=/usr/lib
xz不通过,尝试以下命令:
sudo ./configure --prefix=/usr --with-tcl=/usr/lib --with-tk=/usr/lib --disable-xz
依赖追踪失败,尝试以下命令:
sudo ./configure --prefix=/home/ren/gtkwave --with-tcl=/usr/lib --with-tk=/usr/lib --disable-xz --disable-dependency-tracking
接下来一步make
,程序报错,原因未知。
2.2.2 安装方法2(本人安装成功)
包管理器安装gtkwave:
sudo apt-get install gtkwave
3 一生一芯相关依赖包
需要安装如下程序:
sudo apt-get install build-essential man gcc-doc gdb git libreadline-dev libsdl2-dev llvm llvm-dev llvm-11 llvm-11-dev
4 安装中文输入法
参考链接:
https://blog.csdn.net/qq_42257666/article/details/128174474
安装输入法包:
sudo apt-get install ibus ibus-gtk ibus-gtk3 ibus-pinyin
重新启动:
sudo reboot
打开Settings,Region & Language,点击加号+添加输入源,找到Chinese。
按下键盘上的Win+Space键就可以切换输入法了,如果没用,就点开Input Sources右侧的小齿轮,查看Keyboard Shortcuts。