Win10 WSL + Linux 开源 EDA(三)

2020-11-25 15:22:26 浏览数 (2)

Win10 WSL Linux 开源 EDA(一)

Win10 WSL Linux 开源 EDA(二)

上一篇我们安装了开源 Verilog 仿真器 EpicSim。既然是仿真,就会有通过波形 debug 的需求。这篇我们来安装一款开源的 VCD 波形查看器, GTKWave。

首先要解决 Win10 WSL 2下的 Gui App 运行的问题。思路是在 Win10 上安装一个 X11 Server,然后在 WSL 2 内部运行 Gui App,以 Win10 的一个窗口显示出来。

Win10 的 X11 Server 的选择有很多,例如 Xming,X410(X for Win10),VcXsrv 等等。我们选用老牌的自由软件 Xming。

官方下载地址在 https://sourceforge.net/projects/xming/,但国内访问速度比较慢,大家自己想办法就好。下载和安装过程略去不提,和安装普通 Windows 软件类似。

第一次运行时,记得选择允许穿过防火墙。这个挺重要的,需要的话可以如下图所示确认和更改。

在开始菜单里可以找到 XLaunch 这个软件进行 X Server 的配置,记得在下面的窗口上选中 No Access Control。如果您的显示器也是 1920x1080 分辨率,可以在绿色框中输入 -dpi 110,这样稍后显示出来的窗口看起来会比较舒服,图标和文字不至于过小。

下一步可以保存这些配置到一个 xlaunch 文件,下次就可以直接用这个配置文件启动 Xming。这里我们保存为 wsl2.xlaunch。

启动 Xming 的方式如下,首先在 Win10 任务栏的右下角找下 X 字样的图标,如果有就右键点击退出。然后从开始菜单中,右键点击 XLaunch,找到刚才保存的配置文件左击,就会启动我们所需的 X Server 了。

到这里,Win10 端的 X Server 工作就结束了。

下面我们回到 WSL 2,准备安装 GTKWave,方法很简单。

代码语言:javascript复制
sudo apt-get install gtkwave

接下来特别重要的是,需要配置好 WSL 2 的 DISPLAY 环境变量。和 WSL 1 的虚拟化方式不同, WSL 2 是一个独立的虚拟化平台,有不同于 Win10 Host 的 IP 地址,所以我们需要做到每次启动 WSL 2 都要动态解析出这次新分配的 IP。听起来麻烦,实际做起来很简单,只需要在 ~/.bashrc 里加一句。

代码语言:javascript复制
export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0.0

这一次需要执行下 source ~/.bashrc,下次就不需要了。

然后执行 gtkwave & ,一切正常的话,就可以看到 GTKWave 以一个 Win10 的窗口形式显示出来。

接下来,我们需要准备一个可以产生 VCD 波形的 Verilog 测试文件,来看一下 GTKWave 显示波形的效果。例如类似这样的。

代码语言:javascript复制
//vcd_test.v
`timescale 1ns/100ps
module vcd_test;
reg     rstn;
reg     clk;
integer cnt;

initial begin
        rstn    = 1'b0;
        clk     = 1'b0;
        #100;
        rstn    = 1'b1;
        #1000;
        $finish;
end

always #5 clk = ~clk;

always @ ( posedge clk or negedge rstn) begin
        if (~rstn) begin
                cnt     <= 0;
        end
        else begin
                cnt     <= cnt   1'b1;
        end
end

initial begin
        $dumpfile("vcd_test.vcd");
        $dumpvars(0, vcd_test);
end

endmodule //vcd_test

其实最关键的就是最后一个 initial 过程里的两句,指定 VCD 波形的 dump 层次和文件名。

同样执行编译命令,会有 VCD task 执行的提示。

代码语言:javascript复制
icsoc@LAPTOP-L491MNVH:/mnt/d/wsl2/verilog$ epicsim vcd_test.v
VCD info: dumpfile vcd_test.vcd opened for output.

一切正常的话, 就可以在当前目录看到生成的波形文件 vcd_test.vcd 了。

然后我们在 GTKWave 里打开这个波形。点击 File - Open New Tab,按路径找到刚才生成的 VCD 文件。

然后单击左上方的顶层 module 名字,可以在左下方看到信号名。全部选中,点击 Append 按钮,就可以在右边的波形窗口看到波形了。

常用的快捷键,可以看菜单 Time - Zoom。鼠标右键按下拖动可以水平放大波形。

到这里,我们已经准备好了 Verilog 仿真器,以及图形化的波形调试工具 GTKWave,而且全部都是开源或者自由的软件,已经可以自由的开展一些有趣的 Verilog 学习和探索了。

0 人点赞