前言:代码下载:https://gitee.com/liangkangnan/tinyriscv。以及作者的官方文档:https://liangkangnan.gitee.io/2020/04/29/%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E5%86%99RISC-V%E5%A4%84%E7%90%86%E5%99%A8/。作者的官方文档可能逻辑性不是那么强,但是入门时还是建议看一下,毕竟了解作者的思路还是比较重要。
一:代码调试:方法有两种,首先我们可以参考文档中readme的做法,以B站UP主Rong晔,小脚冰凉的星星,这两位up主都做了比较详细的介绍,如何进行调试以及查看波形。
另一种方法比较暴力,我使用的是cadence下的nc-verilog,其他同样的软件也可以进行类似的操作应该都是可以调试的。所以以此为例:我们将文档中所有.v文件全部复制到一个文件夹上,如图1里core,debug,perips,soc,untils文件夹内所有文件复制到一个文件夹下如图2。
图1
图2
然后在文件夹下右键进行open in terminal,输入 nclaunch -new & 之后 创建工程,不了解操作的可以百度nc-vrilog操作。注意的是因为本文件夹有define头文件所以运行时,要从tools下打开verilog compiler图3,图4。
图3
图4.
加载define.v的路径(我这里的路径就是/home/asiclab/tiny-risc-v/rtl/)至include directories然后点击apply→ok。这里编译完成后,找到tb文件图5,依次按照顺序elaborator后对snapshots里的工程进行simulator(仿真顺序不明白可以找我)。
图5
就可以进入里面查看所有的波形,我们可以依次查看里面所有的文件。这里新手都可以直接不管外设,直接看core代码,也就是u_tinyriscv以及u_rom和u_ram三个文件。(运行所有代码是因为如果不行加其他代码可能会导致报错,无法运行,所以为了省事将所有代码添加,因为tb文件中是将所有都加进去了)如图6。也可以单独进某一个子模块仿真,只需要某一个子模块,然后操作步骤如图6一样。波形如图7。
至此,波形调试就完成了。个人觉得这样做比较方便,不需要做一个调一个只需要。第一次调试完之后,就可以在需要的时候直接打开查看即可。
图6
图7