关于验证soc芯片中cpu代码问题的讨论
时间:10-02
整理:3721RD
点击:
在soc系统级验证的时候,既然是一个soc项目,那肯定验证的soc芯片中就有一个cpu,系统验证时cpu代码不知道是怎么来的,我觉得可以有以下几种方式:(1) 公司固件部门提供cpu的代码,然后加载到rom中进行系统验证,这样的话,验证必须需要固件部门的代码,才能验证,这样如果代码有问题比较麻烦。
(2) 验证人员自己维护c的代码(仅用来验证)来进行系统验证,这样代码出了错,可以自己修改,不需要找固件部门的人。但是这样的话,感觉不是很好debug,并且速度比较慢,而且对于不同cpu平台,还有c代码移植的问题
(3)把cpu换成验证用的virtual cpu, cpu使用system verilog 描述出cpu的接口,中断等,c代码通过dpi接口直接调用virtual cpu 的接口信号操作函数,然后virtual cpu再调用不同的c模块函数组成整个main,其中包括对中断的模拟,(这样的virtual cpu 除了外部接口信号的操作(如读取寄存器等),c语言中的算术计算,状态转换等不消耗时钟周期),实现virtual cpu的功能,这样的话,比较好debug,而且还可以很容易控制rtl中的各种信号,对于不同项目不一样virtual cpu的移植,只需要进行接口的外部转换。
不知道大家在验证中怎么进行的呢,欢迎大家积极讨论,我也好好学习一下
(3)把cpu换成验证用的virtual cpu, cpu使用system verilog 描述出cpu的接口,中断等,c代码通过dpi接口直接调用virtual cpu 的接口信号操作函数,然后virtual cpu再调用不同的c模块函数组成整个main,其中包括对中断的模拟,(这样的virtual cpu 除了外部接口信号的操作(如读取寄存器等),c语言中的算术计算,状态转换等不消耗时钟周期),实现virtual cpu的功能,这样的话,比较好debug,而且还可以很容易控制rtl中的各种信号,对于不同项目不一样virtual cpu的移植,只需要进行接口的外部转换。
这个主意不错, 对于不同的mcu, 8051 或是 arm 仿真模型的编写是否有区别
不用考虑CPU模块的内部代码,把CPU那些代码当做一个黑盒就行。在外设完好的情况下,跑固件看系统以及各模块的行为!
我也不太懂,随便说说!
还有就是,好多购买的处理器核有些代码加密了!
可以直接做接口转换一下,应该就可以吧
Before time we use a cross compiler to compile the C code into binary code. And then load the binary code into SRAM model in simulation.