本帖最后由 fourwave 于 2020-1-5 22:45 编辑
做一个好的cpu真不容易,看看人家严谨的测试方法,我确信国内的大多数设计都是有bug的
====================================
https://microcorelabs.wordpress.com/page/2/
MCL51测试方法
2016年4月30日MicroCore实验室
MicroCore Labs MCL51经过三个阶段的测试:
在第一阶段中,用汇编代码编写了一组详尽的测试,它们将练习每个8051操作码,然后观察结果。检查PSW标志是否指令改变了状态,并清除并重新检查了所有四个寄存器组,以确保操作码不会影响预期目标之外的寄存器或存储器。每个布尔指令都在支持位映射操作的多个内存范围上运行,而数学和字符串指令则针对所有可能的数据值运行。
开发这些测试后,它们将针对多种仿真工具(其中一些是主要供应商)运行。我很感兴趣地发现,某些工具并不是每条8051指令都100%正确!
谁是供应商?错误是什么?我没说 (楼主评价:外国人也很滑头哈)
一旦针对多个供应商模拟器对测试进行了验证,我便连接了一个系统,以在真实的芯片上运行测试。我选择了40个封装的无ROM 8051变体,并具有3.3V IO。这允许将其直接连接到FPGA测试面板
当测试代码出现故障时,它使用简单的循环,因此可以轻松地运行测试,只需查看范围即可查看它是否在任何无限循环中运行。当它循环到最终地址时,表明所有测试都已成功运行。测试代码接近6KB,因此分为三个部分并进行了独立测试。 在通过已知正确的模拟器和真实的芯片验证了测试代码之后,我准备在Verilog仿真环境中针对MCL51内核运行它。我很高兴,但使用此测试套件纠正了MCL51内核中的一些细微错误,但我现在非常有信心该内核100%兼容并正确实现了8051指令集!
|