RISC-V技术论坛
直播中

李晓鹏

8年用户 1365经验值
私信 关注
[经验]

利用蜂鸟内核实现指令的仿真模拟

现在我们组在进行浮点扩展,既然要进行扩展,我们必须能够检验扩展的正确性,因此本篇文章介绍一下自己编写指令,并通过仿真观察指令结果的正确性。
RSIC-V指令架构

首先在编写指令前,我们必须先大概介绍一下RISC-V的指令架构,在RSIC-V中主要有以下6种指令格式:

因此,我们在对于一条指令进行分析时,我们首先要知道其的指令类型,以及对应操作码,然后对应这个格式,我们便可以分析出一个二进制对应的汇编指令。
指令编写

在我们了解完,RSIC-V中的指令架构后,我们便可以编写对应的指令。由于我们在测试中,只需要检验一条特定的指令的正确性,因此我们只需要直接写出对应指令的二进制形式。在这里,我测试的指令是:
addi r1 r0 8

该指令是I型指令,根据图可以看到OPCODE是0010011,FUN3是000,imm[11:0]为000000001000,rs1是00000,rd是00001。
因此可以知道该指令对应的二进制代码是:00000000100000000000000010010011。
指令存储

在E203关注的指令系统中,指令基本上是存储在ITCM中的,相关介绍可以参考我的这篇文章。另外值得一提的是:

可以看出指令是以十六进制进行存储的,因此对于上述的指令,我们必须转换为十六进制,即为00800093,又因为蜂鸟E203是小端格式。所以存储时应该为93 00 80 00。
仿真验证

写好测试文件中的指令后,我们便可以运行仿真,首先可以看到TCL中输出:

说明指令成功存入ITCM中。
然后我们再看仿真结果:

可以看到当指令运行到0x8000_0004时,r1的值改为了8,由于r0的值始终为0,所以该结果与我们预期结果相符合。

更多回帖

发帖
×
20
完善资料,
赚取积分