一生一芯学习记录(一):简单介绍 + Verilator + Nvboard
一开始先来简单讲述下我的个人情况,研一在读,目前C阶段结束,然后想简单记录一下做一生一芯中遇到的困难和想法,以便后人学习。我学习的版本是2306的版本,所以2407我就不做了,2407据说是给大一或者更小年纪的人平滑的学习一生一芯所用的版本,简单看了看,感觉对于时间紧张的研究生来说有点没必要。我并不会Markdown,所以可能博客写的会很丑,后面慢慢学应该会好看点,前面先别喷我😭。本人的github主页:https://github.com/yuweijie-20030124/ysyx-workbench
所用的系统:Windows10上使用WSL2的Ubuntu22.04,并且用vscode进行远程连接。
预学习阶段其实当时还是过了很久的,可能也得将近一年吧,然后完成C也用了两个月,所以之前东西可能忘了,多多包涵。
-
如何科学的提问:这个其实就是告诉你如何高效的寻求他人帮助,很简单,这里不再赘述。
-
Linux系统安装和使用:对于linux初学者和并不想那么折腾的人来说,我的建议是使用Ubuntu,下载东西直接用sudo apt install下载即可,只要找到合适的源。所以现在选择要么就是虚拟机,要么就是wsl,我的选择是wsl,可以根据你电脑的内存大小来进行选择。我电脑只有512G,之前使用过Linux,所以选择了wsl,wsl的优点就是运行速度快,缺点就是没有图形化界面。虚拟机优点就是有图形化界面,缺点就是内存占比会比较大,运行速度会慢一点,但是对于现代电脑来说也不会慢到哪里去了,看你电脑内存吧。
-
C语言:纯看教程,这个我觉得还挺重要的,因为后面nemu和C阶段都会涉及大量的C语言知识,你看不懂nemu如何运行你就写不了NPC了,所以其实还是非常重要。2407有两个章节要求学C,我的建议是没啥必要,没必要吧太多时间花费在C语言上,你可以先去看nemu是如何跑起来,如何执行一条指令的去一边学C一边用C,不会了再去前面看教程,效率会高一点,这里针对的是时间比较短的同学来说,如果你0基础或者大一那我建议你可以老老实实按照他的要求来,你们的时间还好多呢😭。
-
搭建verilator仿真环境:前期就是简单写一个让你仿真与门的一个建议testbench,等到C阶段,你自己写出你的RTL代码后要把这个RTL代码放到你类似NEMU的仿真环境下去跑,此时verilator就很重要了,会大量使用DPI-C功能,等你C就知道了,这里不赘述,总之预学习会先告诉你需要学什么,后面慢慢学精通就可以完成任务了。
来简单讲述下Verilator,首先我们来看官方手册的定义:
官方手册连接:https://verilator.org/guide/latest/overview.html
The Verilator package converts Verilog 1 and SystemVerilog 2 hardware description language (HDL) designs into a C++ or SystemC model that, after compiling, can be executed. Verilator is not a traditional simulator but a compiler.
翻译过来就是会将硬件描述语言转换为C++或者SystemC语言,编译之后会生成可执行文件,以此来达到仿真的行为,由此可见他是一个编译器,而非模拟器。
运行示例:照抄这里的C++ Example即可
仿真代码:
点击查看代码
#include "Vour.h" #include "verilated.h" int main(int argc, char** argv) { VerilatedContext* contextp = new VerilatedContext; contextp->commandArgs(argc, argv); Vour* top = new Vour{contextp}; while (!contextp->gotFinish()) { top->eval(); } delete top; delete contextp; return 0; }
.V文件代码:
点击查看代码
module our; initial begin $display("Hello World"); $finish; end endmodule
别忘了更新环境变量
之后输入
verilator --cc --exe --build -j 0 -Wall sim_main.cpp our.v
上述操作没错的话就会生成一个build文件,其中会有一个可执行文件,运行它就会打印hello world出来。
评论