Skip to content

Commit

Permalink
📝
Browse files Browse the repository at this point in the history
  • Loading branch information
KINGFIOX committed May 27, 2024
1 parent e2f39c7 commit 467398b
Showing 1 changed file with 82 additions and 30 deletions.
112 changes: 82 additions & 30 deletions docs/unofficial-lab-env/comp-organ-lab2.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 计算机组成原理实验 2 环境指南(非官方)

以下指南适合有 linux 环境的同学使用。
以下指南适合有 linux/mac 环境的同学使用。

笔者心态:对 verilog 感到不适,并且想折腾一些花样。

Expand Down Expand Up @@ -41,6 +41,8 @@ sudo zypper in -t pattern devel_C_C++

如果配置环境过程中出现“command not found.”可能是有依赖的工具没装,此时可以利用搜索引擎。

mac 需要安装 homebrew 作为包管理器,请查阅: https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/

## 安装 bison 和 flex

bison 和 flex 是 gnu 提供的两个语法解析工具。
Expand All @@ -55,48 +57,82 @@ sudo dnf install bison flex
sudo pacman -Sy bison flex
# opensuse
sudo zypper in bison flex
# mac
brew install bison flex
```

## 安装 verilator

为什么需要手动安装?使用包管理器安装 verilator 有时候并不会携带 `.cmake` 文件,导致 cmake 中 find_package 找不到 verilator
使用包管理器安装

```sh
# 先 cd 到一个文件夹中,推荐 cd 到 ~/Downloads
# debian/ubuntu
sudo apt install verilator
# fedora/centos
sudo dnf install verilator verilator-devel
# arch
sudo pacman -Sy verilator
# mac
brew install verilator
```

但是有一些 linux 的发行版,他会将包拆的比较奇怪,导致没法找到 `verilated.mk` 之类的情况发生。亦或者是版本比较老,则可以使用编译安装

```sh
# 先 cd 到一个文件夹中,推荐 cd 到 $HOME/Downloads
git clone https://github.com/verilator/verilator
cd verilator
autoconf # 生成 ./configure 文件
./configure --prefix=$HOME/app/verilator # 配置 makefile 和安装路径
make -j `nproc` # 多核编译
make install # 这会安装到 /usr
echo 'export PATH=$PATH:$HOME/app/verilator/bin' >> .bashrc # 追加环境变量
make install # 这会安装到 $HOME/app/verilator
echo 'export VERILATOR_ROOT=$HOME/app/verilator' >> .bashrc # 追加环境变量
```

如果想要其他支持,请查阅 verilator 的安装文档 https://verilator.org/guide/latest/install.html#git-quick-install
如果想要其他支持,请查阅 verilator 的安装文档 https://verilator.org/guide/latest/install.html

( 因为 verilator 在编译的时候,需要使用 gnu 方言,因此推荐使用 linux )
verilator 在编译过程中,需要用到 gnu 方言,因此推荐使用 linux。当然 mac 下的`brew install`就已经可以正常工作了。

## 安装 sdkman

注意,并不一定要安装 sdkman 。sdkman 是一个用于管理 java 相关开发环境的软件。
如果我们发行版的包管理器可以顺利安装 java, [email protected], sbt ,那么实际上也不需要 sdkman。

```sh
# arch
paru sbt
sudo pacman -Sy openjdk
paru scala_2.12
# fedora
sudo dnf install sbt openjdk scala-2.12
# mac
brew install sbt openjdk [email protected]
```

注意,笔者没有查到 ubuntu/debian/opensuse/centos 可以使用包管理安装 sbt 的方式。
因此,推荐通过 sdkman 安装 sbt 。当然,scala 和 openjdk 是可以通过包管理器安装的。

可以通过下面这个命令安装

```sh
curl -s "https://get.sdkman.io" | bash
```

安装过程中,注意看提示,会要求在安装完成后配置环境变量
安装过程中,注意看提示,会要求在安装完成后配置环境变量

## 安装 java
### 使用 sdkman 安装 java

```sh
sdk install java
```

## 安装 scala 2.12.13
### 使用 sdkman 安装 scala 2.12.13

```sh
sdk install scala 2.12.13
```

## 安装 sbt
### 使用 sdkman 安装 sbt

sbt 是 scala 项目的构建软件

Expand All @@ -111,8 +147,8 @@ sdk install sbt
sudo apt install gtkwave
# fedora/centos
sudo dnf install gtkwave
# arch/manjaro
paru gtkwave
# arch
sudo pacman -Sy gtkwave
# opensuse
sudo zypper in gtkwave
# windows
Expand All @@ -121,25 +157,47 @@ winget install gtkwave
brew install gtkwave
```

如果 windows/mac 作为宿主系统,应该是在 windows/mac 中安装 gtkwave,然后在 windows 打开 `.vcd` 文件。
如果 windows/mac 作为宿主系统,应该是在 windows/mac 中安装 gtkwave,然后在 windows/mac 打开 `.vcd` 文件。

但是 mac 实际上使用 gtkwave 会有点问题(无法双击打开)。但是可以在 shell 中 `gtkwave <.vcd>`打开。
但是 mac 实际上使用 gtkwave 会有点兼容问题(无法双击打开)。但是可以在 shell 中 `gtkwave <.vcd>`打开。

如果是 ssh 连接的 linux,可以使用 CyberDuck 或者是 MountainDuck(付费)或者是 sshfs 挂载目录,然后在 宿主机上 `gtkwave <.vcd>` 或者是双击打开。(笔者就是用的这种方式)

## 创建 chisel 项目
## chisel(scala) IDE 的选择

chisel 只是 scala 中的一个库。因此,只要 IDE 能支持 scala ,那么自然也是支持 chisel 了。
但是一些 IDE 如 vscode/IDEA 会对 chisel 语法有更加好的 highlight 支持。

经观察:对于稍微大一些的 chisel 项目 (小学期级别), VSCode + Metals 会很卡, 建议使用 JetBrain IDEA

### vscode 对 chisel(scala) 的支持

下面是笔者使用的 vscode 插件

- Chisel Syntax
- Scala (Metals)
- Scala Snippets
- Scala Syntax (official)

### vscode 对 chisel(scala) 的支持

下面是笔者使用的 JetBrain IDEA 插件

- Scala

## example

下面这个例子可以在:https://github.com/KINGFIOX/chisel-verilator-example 这里找到

### 创建 chisel 项目

chisel 是 scala 的一个库并且目前为止并没有一个真正的 chisel IDE。我们可以通过官方的 chisel-template 创建我们的项目。

```sh
git clone https://github.com/chipsalliance/chisel-template.git <my-chisel-project>
```

然后在 vscode 中打开我们的 chisel 就行了。当然也可以使用 IDEA 等。

经观察:对于稍微大一些的 chisel 项目 (小学期级别), VSCode + Metals 会很卡, 建议使用 JetBrain IDEA

## 编写 chisel 代码
### 编写 chisel 代码

chisel-template 项目下天然的提供了一个 GCD 硬件 module 。

Expand Down Expand Up @@ -227,16 +285,10 @@ module GCD(
endmodule
```

这里是 scala 语法的教程: https://docs.scala-lang.org/zh-cn/

## vscode 对 chisel(scala) 的支持

- Chisel Syntax
- Scala (Metals)
- Scala Snippets
- Scala Syntax (official)
- 这里是 scala 教程: https://docs.scala-lang.org/zh-cn/
- 这里是 chisel 教程: https://www.chisel-lang.org/docs/cookbooks/cookbook

## 使用 verilator c++ 调试 chisel 生成的 verilog
### 使用 verilator c++ 调试 chisel 生成的 verilog

下面是一个 c++ 下的 testbench

Expand Down

0 comments on commit 467398b

Please sign in to comment.