coKiller (P567)支持两人对拍,mars对拍两种,支持自己写测试点等很多新功能

hanz

目前仅新增了异常的测试,中断还未完工,欢迎大佬提供建议!

感谢异常部分数据生成器作者:郝梓翔

感谢陈睿正同学的修改版mars

修改版mars原文地址

下载新版本coKiller后运行,跟随提示操作即可

coKiller5.1存档

数据生成器下载地址(随时会更新)下载后请自行替换掉internal文件夹中的同名文件

dataMaker.jar存档

数据生成器源码仓库链接,欢迎大佬提出修改建议

dataMaker源码

评测机相关的python源码下载

评测机python源码存档

下面是写评测机时用到的相关学习网站

计组教程《自动化测试》

如何将java文件打包为jar存档

如何使用pyinstaller将py文件打包为exe存档

Pyinstaller的Spec文件用法存档


李同学 回复 hanz

感谢大佬,但是里面的指令好像和今年的不一样(其中一次出现了addu),其他一切正常


hanz 回复 李同学

同学你好,这个应该是用来测试RI的异常的


瑜瑜不吃鱼鱼 回复 hanz

同学好,coKiller确实会对addu正常输出,没有跳转0x4180。非常感谢同学的测评机!orzorz


hanz 回复 瑜瑜不吃鱼鱼

同学你好,感谢你的指出!貌似mars在运行的时候有些问题,已对数据生成器做出修改,在原文最后处下载即可。

或者也可以使用两人对拍模式!


hanz 回复 hanz

秦子奇 回复 hanz

Q.png 首先感谢您的评测机,对我计组debug有很大的帮助! 但是我有一些疑惑:如图,在报错之前,我们对Timer0第0个寄存器写入了值c4d8,但课程组给的代码
wire [31:0] load = Addr[3:2] == 0 ? {28'h0, Din[3:0]} : Din;
意思为当存第0个寄存器时只保留[3:0]位,所以报错处读出的数据应该为00000008,但标准显示c4d8(貌似没有做一些处理?)


hanz 回复 秦子奇

同学你好!计时器方面mars的行为和计组要求好像是有一定差距的(见讨论区置顶帖)同学可以试试两人对拍


hanz

支持自己写测试点,并进行mars或两人对拍,操作方法如下:

  1. 将自己写的测试点复制进result文件夹中的testcode.asm
  2. 在选择测试次数的时候输入1 ,即测试一次
  3. 之后随提示操作即可

SaBaH

同学你好,非常感谢你开源的评测机!

使用的时候遇到了两点问题:

  1. 使用addu作为RI时,其实MARS会执行但是我们的CPU应该跳转到0x4180异常处理
  2. 有时会出现跳转到一个处于正常PC范围,但是由于testcode长度不够,未定义IM的地址部分,此时PC处于正常范围但是会读出XXXXXXXX,这个对于不同的RI判定实现会造成评测的差异

hanz 回复 SaBaH

确实 已尝试修复 请同学在dataMaker的下载链接重新下载试一试


qzx

同学你好,感谢你制作的评测机!

我在使用的时候发现了一个问题:测试数据开头并不会打开 IE(全局中断使能),这就导致我的 CPU 不能响应任何中断和异常,无法与魔改 Mars 进行对拍。


郝梓翔 回复 qzx

同学你好,全局中断使能是不影响异常的响应的,本评测机还未实现中断的检测


qzx 回复 郝梓翔

全局中断使能不影响异常的响应???

看到这句话我真的很惊讶。教程中说:

全局中断使能,该位置 1 表示允许中断,置 0 表示禁止中断。

答疑帖中助教对此的解释:

对于此处的“全局中断使能”,其含义不是全局中断的使能,而是全局的中断使能;更准确的解释为(源自 MIPS32® 4K® Processor Core Family Software User’s Manual):

Interrupt Enable. Acts as the master enable for software and hardware interrupts.

一种比较形象化的理解是:如果 SR 寄存器的 IM 域为分开关,那么 IE 域就是总控开关。

不过修改了以后确实多过了两个点。谢谢你的帮助。


hanz 回复 qzx

同学你好,首先感谢你的题问,请你再看一下计组教程中和讨论区答疑帖中,对“中断”,“异常”,“外部中断”三个名词的解释。

我的理解是,IE,即SR[0],是全局中断使能,若其为0,则不再接受来自timer0,timer1,interrupt的三个中断信号。而并不影响对异常的判断。即IE即使为0,若程序中出现异常,仍有可能进入异常处理程序

若我的理解有误,欢迎指正。

0%