sealy 项目中BOOT ROM 遇到的问题

来源:互联网 发布:linux run sh 编辑:程序博客网 时间:2024/06/09 22:58

一   FPGA 通过 ASIC 过不了

 

1. asic model 和实际的 物理model 不匹配

 

2. 对x态的处理。 仿真中出现X态会导致X态的传导,从而使得core或者某个模块fail或者死锁。

    1) 基于此,我们希望在处理器的interface上或者复杂模块,以及重要模块,譬如存储设备上检测X和Z态出现与否,并进行报警。

    2) 有时堆栈溢出,访问到了某个不该访问的地址,FPGA可能能过去,但是ASIC过不了(设备未初始化,没有response,或者response为X)。

    3) 有时候FPGA测试是program的流程不对,但是也能侥幸通过。譬如FPGA读某个位进行判断。由于flow 不对,这个位可能是随机的一个值,因此有可能侥幸通过。

    4) 好多CPU或者module中都没有reset。在reset后cpu的通用寄存器处于x状态。执行这样的code就有问题 XOR r0, r0. 实际FPGA没有这个问题。

 

3. FPGA运行的很快,asic simulation很慢。等不起。需要修改model的timing。 譬如flash erase等。

 

4. FPGA和实际的ASIC不一致。譬如MTP,FPGA只能用sram 模仿一下。要在asic环境中测试。

 

 

二   执行二级启动代码

 

    一般是直接修改link register,然后branch到link register指定的地址。从而实现了长跳转。不过跳转以后stack point 要预留几个word。否则有可能会溢出。

 

三  把代码当数据拷贝的某个区域,然后跳转的这个区域执行可采用的方法。

   1.  编译代码的时候用最终执行地址link。 然后load到某个存储设备上。用以上执行二级代码的方法。

 

    2. 用overlay方式进行link。

 

 

 

原创粉丝点击