TURBO51嵌入式微处理器功能验证
经完成了时序设计, 寄存器定义及全部块级测试的完全覆盖,比如在寄存器重命名中多种寻地方式下对同一物理地址写入的重命名, 乱序发射, 精确例外。一般说来,越是文档级描述的错误越容易修改, 越是硬件级的错误越难于发现,修改量很大且容易引入其他错误。
这个阶段可以较容易用排列组合等进行形式验证进行完全的情况覆盖, 排除了绝大部分严重错误,而且用于仿真的手工编写的测试程序也用于此后的验证中。RTL不过是文档的一个V erilog 描述的翻译过程, 因此RTL并不是TURBO51设计最重要的地方,只是要按功能设计文档和代码检查的要求可很快完成,但期间要用综合结果指导对流水线负载平衡并在细节上进一步调整, 但每一处与原功能设计文档描述不同的RTL修改首先是修改功能及验证文档,再次审核通过后才能改动RTL 代码。仿真和RTL编写是一体的, 在Turbo51 验证中分为模块、宏模块、系统级3个阶段。只有在一个阶段的设计和验证及文档完全达到计划要求,即代码检查和代码覆盖率后才能再开始下一阶段工作, 这样使得错误得以快速收敛。这期间把错误分为高风险区错误和低风险区错误。出现不正常时首先从影响程序运行走向的高风险区开始排查,排除高风险区的错误后再去找低风险区错误。模块级RTL 模拟仿真完成后就是宏模块级, 指令流水线, LOAD /STORE, Cache等, 再下来是系统级RTL 仿真。在Turbo51 的设计验证中, 只有在TURBO51 整个的RTL代码规范检验代码覆盖率达到RTL模拟仿真对覆盖率的要求并通过设计描述文档与验证文档相结合的审议通过后才可以再进行FPGA 验证。所以TURBO51设计验证的底线是在FPGA 硬件原形验证前至少排除全部会引起死机或兼容性的这类严重错误。TURBO51的设计验证不是依赖下一阶段测试发现本应在上个阶段发现并解决的错误,而是只用下阶段确认上阶段目标的完成。FPGA 验证的目的是用于测试长时间在真实环境下运行应用程序, 因为毕竟很多对外部信号的响应不易在RTL 仿真中模拟, 而不是用来发现调试应在仿真中排除的问题。
3 形式验证
形式验证的好处是它能遍历全部状态空间, 可以实现验证的完备。它在设计行为描述规格书中就开始使用,用于高风险区的存贮访问, 高速缓存, 分支预测, 动态执行, 例外处理中最高风险组合的完备性证明。比如在TURBO51 的片内一级指令高速缓存的替换策略设计时,必须要处理每个可能的状态,吞则可能会出现状态机死锁。在这里首先就是对是否有且仅有的几种状态进行数学证明, 然后再开始编写功能行为描述和验证计划。这种方式可以使出错影响大但状态空间不大的逻辑达到完全正确,而且后来的事实也证明, 通过形式的设计在此后的所有测试激励下没有出现异常。
形式验证在TURBO51 验证中的另一个地方是在进行RTL代码风格检查的时候用形式验证工具对修改前后的RTL进行功能比较, 另外类似的做法也用于物理网表与前端网表的等价性比较。
4 RTL模拟仿真和覆盖率及代码风格检查
4. 1 RTL仿真
在功能时序文档和制定RTL 模拟仿真计划时,RTL编写和模拟仿真在每个子模块, 宏模块, 系统级设计功能行为描述和验证计划完成后才开始, 每个子模块RTL编码完成后放入用行为级描述的模型进行仿真, 再用EDA 工具提供的代码检查工具作RTL代码检查, 再仿真直到达到代码覆盖率, 然后层层向上做宏模块和系统级的RTL 代码检查和基于代码覆盖率的仿真。验证的主要排错和测试在这个阶段进行, 包括检查是否与8051标准完全兼容的验证, 高风险区的验证和运行操作系统及应用程序。
这里面使用了两个标准, 即由EDA工具给出的测试激励对已设计逻辑的代码覆盖率和自己定义的临界功能覆盖率。
在模拟仿真中, 对临界指令组合采用手工汇编语言编写激励。在兼容性测试中, 包括指令集测试,位寻址空间遍历,上电测值测试, 寄存器文件读写遍历, LS变量RAM 遍历, 代码空间分页切换,中断控制, 8051标准外设, 定计, IO, 扩展外设验证, SOC 总线读写, PWM 脉宽调制, 在线程序烧入, 基础应用:
软件I2C读写, 从外部读取64KB 数据和系统测试,基于操作系统的遥控按键解码和对片上其它器件的参数读龋在此期间使用闪存的仿真模型,对于指令集测试, 在现有商用软件开发环境下创建测试激励, 对全部111条指令, 按 标准8051手册上对每条指令的执行结果值, 按分支目标, 分支方向, 对标识位的影响这几个方面进行测试。先在基准平台上进行单步运行,记下每条指令的每种状态值, 再将这些值作为正确依据, 执行完一项比较一项结果, 如
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
