Chisel实验笔记(一)

最近在学习Risc-v,其中伯克利大学开源了一款兼容Risc-v指令集的处理器Rocket,而Rocket处理器是采用Chisel编写的,所以要学习Chisel,Chisel的简单介绍如下:

Chisel (Constructing Hardware In a Scala Embedded Language).

Chisel is a hardware construction language embedded in the high-level programming language Scala

可以认为与VHDL、Verilog HDL功能相同,都是用来编写实现硬件电路的,但是Chisel由于基于Scala,所以具有Scale的一些特性,可能便于开发。采用Chisel编写的代码,会被编译为verilog文件,还有C++文件,其中后者可以直接进行模拟。

本文主要以一个实验说明Chisel的使用步骤,实验平台是Ubuntu14.04(64位)。

(1)安装sbt

在http://www.scala-sbt.org/下载sbt0.13.8,解压到一个路径下,比如/home/riscv/riscv/sbt,将其中的bin路径添加到环境变量PATH中,如下:

gedit ~/.bashrc

在最后一行添加如下:

exportPATH=/home/riscv/riscv/sbt/bin/:$PATH

保存,然后记得source,如下:

source ~/.bashrc

(2)建立Chisel工程

新建一个文件夹chisel_max,在其中新建文件max2.scala、build.sbt,其中build.sbt的内容如下(注意两行之间空一行):

resolvers ++= Seq("scct-github-repository" at "http://mtkopone.github.com/scct/maven-repo" )

libraryDependencies += "edu.berkeley.cs" %% "chisel" % "latest.release"

max2.scala的内容如下,这是一个比较器,从两个8位的输入中,选择一个较大的数,作为输出:

import Chisel._ 

class Max2 extends Module {
  val io = new Bundle {
    val in0 = UInt(INPUT,  8)
    val in1 = UInt(INPUT,  8)
    val out = UInt(OUTPUT, 8)
  }
  io.out := Mux(io.in0 > io.in1, io.in0, io.in1) 

} 

object Hellp {
  def main(args: Array[String]) : Unit={
      val margs=Array("--backend","v","--compile")
      chiselMain(margs, () => Module(new Max2()))
  }
}

(3)编译得到verilog文件

在终端下进入上面的chisel_max目录,输入sbt,会下载相关的依赖包,等待较长的时间,如果期间长时间没有反应,那么可以按Ctrl+C,然后重新输入sbt,最后会给出>符号,表示可以进行下一步了,此时输入run,即可得到对应的verilog文件。

得到的verilog代码位于文件Max2.v中,内容如下:

module Max2(
    input [7:0] io_in0,
    input [7:0] io_in1,
    output[7:0] io_out
); 

  wire[7:0] T0;
  wire T1; 

  assign io_out = T0;
  assign T0 = T1 ? io_in0 : io_in1;
  assign T1 = io_in1 < io_in0;
endmodule

上面的verilog代码实现的正是比较器的功能。

接下来可以仿真,下一篇将讲解如何使用Icrus verilog、Gtkwave进行仿真及波形查看

时间: 2024-07-28 13:33:52

Chisel实验笔记(一)的相关文章

Chisel实验笔记(四)

在<Chisel实验笔记(二)>中,通过编写TestBench文件,然后使用Icarus Verilog.GtkWave可以测试,查看相关波形,比较直观,在<Chisel实验笔记(三)>直接对得到C++模拟器进行测试,也可以得到测试结果,实际上对C++模拟器进行测试也可以同时得到vcd文件,从而使用GtkWave查看波形,得到直观的结果.本文就介绍了这个过程. 为了得到对应的vcd文件,需要对<Chisel实验笔记(三)>中的代码做一处修改: 在main方法的margs

Chisel实验笔记(二)

在上一篇<Chisel实验笔记(一)>中,我们的到了对应的verilog文件,本文将采用Icarus Verilog + GtkWave进行仿真验证. 实验平台还是Ubuntu14.04(64位) 1.安装Icarus Verilog-0.9.7 首先输入如下命令: sudo apt-get install gperf sudo apt-get install flex sudo apt-get install bison sudo apt-get install build-essentia

Chisel实验笔记(三)

在<Chisel实验笔记(一)>中我们得到了verilog文件,在<Chisel实验笔记(二)>中我们使用Icarus Verilog.GtkWave对的道德verilog文件进行了仿真测试,实际上,时欧诺个Chisel可以得到对应的C++文件,从而可以直接进行仿真,本文就介绍产生C++文件,进行测试的实验过程. 1.修改Max2.scala文件如下: import Chisel._ class Max2 extends Module { val io = new Bundle {

[Ubuntu]操作系统实验笔记

前些日子为了更新Ubuntu到14.04这个LTS版本,连带着把Windows也重新安装了一遍.懒得再安装虚拟机了,尝试一下在Ubuntu14.04这个64位系统里做操作系统实验咯. 1.安装交叉编译器 第一个要解决的问题就是交叉编译器,材料里提供的是x86平台上的交叉编译器.按道理来说64位系统应该是支持32程序的呢.试一下. 先不吐槽说说明文档里面的代码了.首先要解决的是各种权限问题.sudo su似乎不能全部搞定. 经过一堆权限不够的提示后我对安装已经基本没有信心了. 2.安装gxemul

centos救援模式实验笔记

1.  首先在BIOS中把启动选项设置成DVD光驱启动或者USB启动也是可以的 2.  从光盘启动之后再出现的选项中选择"Rescue installed system"然后按回车确认,具体图下图: 3.语言选择,这里我们选择默认的就可以了,因为不是图形化得,所以没有办法支持中文,键盘也选择默认然后按回车,具体如下图: 4.  在SetupNetworking这里我们根据自己的需要来确认是否启用网络,这里我选择的是不启用,如图: 5.  Continue是让虚拟系统(也就是Rescue

SQL*Loader实验笔记【二】

所有SQL*Loader实验笔记 实验案例总结(1-7):     SQL*Loader实验笔记[一] 实验案例总结(8-13):   SQL*Loader实验笔记[二] 实验案例总结(14-19): SQL*Loader实验笔记[三]   8)加载序列 初始化 [email protected]>create table t2 (seqno int,name varchar2(20)); Table created. 控制文件 load data infile * into table t2

Linux 基础入门第一次实验笔记

第一节.实验介绍 本节主要介绍 Linux 的历史,Linux 与 Windows 的区别等入门知识.如果你已经有过充分的了解,可以跳过本节,直接进入下一个实验. 一.Linux 为何物 Linux 就是一个操作系统,就像你多少已经了解的 Windows(xp,7,8)和 Max OS ,至于操作系统是什么,就不用过多解释了,如果你学习过前面的入门课程,应该会有个基本概念了,这里简单介绍下操作系统在整个计算机系统中的角色. 我们的 Linux 也就是系统调用和内核那两层,当然直观的来看,我们使用

9. nginx服务实验笔记

LNMP安装与配置   Nginx与apache.lighttp性能综合对比,如下图:     一.系统需求: CentOS/RHEL/Fedora/Debian/Ubuntu系统 需要3GB以上硬盘剩余空间 MySQL 5.6及MariaDB 10必须1G以上内存. Linux下区分大小写,输入命令时请注意! 确定yum源正常使用! 二.安装步骤:1.下载并安装LNMP一键安装包: #tar -zxvf lnmp1.2-full.tar.gz #cd lnmp1.2-full #./insta

8. apache服务实验笔记

Apache服务器 一 简介 1 www:world  wide  web 万维网 http 协议: 超文本传输协议 HTML语言: 超文本标识语言 2 URL:统一资源定位 协议+域名:端口+网页文件名 http://www.sina.com.cn:80/11/index.html 3 搭建www的服务器的方法 windows   IIS+asp+SQLserver Internet  Information  server Linux apache+mysql+php 二 安装 1.lamp