科锐时高级语言全数字仿真测试工具CRESTS/TESS
科锐时全数字仿真(虚拟样机)平台工具CRESTS/TESS是一个面向高级语言嵌入式软件全寿命周期的全数字仿真平台。CRESTS/TESS提供一个全数字虚拟目标机及其外部输入输出,可完成对高级语言源程序的静态结构分析和包括单元级、部件级、系统级动态过程仿真,从而支持嵌入式软件先期验证、开发实现、静动态测试、运行维护等阶段的全寿命周期全过程仿真。CRESTS/TESS为使用者提供包括软件质量、结构、功能、性能及过程参数等方面技术指标的分析报告。
CRESTS/TESS广泛适用于各种场合,可改进研发过程、提高效率、保证质量、减少投入
• 软硬件需要且可以并行开发;
• 每个软件开发人员可以有一套与真实硬件环境一致的模拟开发平台;
• 减少硬件复杂时需要硬件工程师长时间现场配合测试软件;
• 可以隔离软件和硬件的错误;
• 提供硬件无法产生的外围激励;
• 可以进行超实时或欠实时仿真;
• 可以提供难以在真实环境或半物理仿真环境下产生的一些故障注入;
• 完成在真实或半物理仿真环境下软件难以追踪、测试的任务;
• 比较在各种硬件仿真环境系统级环境下的各种先期验证方案。
CRESTS/TESS特点
• 全数字仿真:CRESTS/TESS以全数字方式完成对目标机及外围激励的模拟,可方便地实现实时仿真、超实时仿真、欠实时仿真,易于搭建环境仿真;
• 非干预:CRESTS/TESS无需插桩,因此不产生代码膨胀;
• CRESTS/TESS同时支持白盒和黑盒测试,应用GPS原理精确定位故障点;
• 图形化的分析结果输出:CRESTS/TESS以图形化的方式自动产生程序调用(被调用)图、控制流图及轮廓图,以对控制流图自动着色的方式直观表示语句、分支、路径的覆盖;
• 支持各级别、全过程测试:CRESTS/TESS支持单元级、部件级、系统级的测试以及软件全寿命周期各阶段的回归测试,测试结果的自动累加;
• 支持多CPU虚拟机:CRESTS/TESS与CRESTS/CoSim一起配合可完成对多CPU目标机、多子系统的全数字仿真。
CRESTS/TESS主要功能
虚拟目标机
• CPU仿真:对目标机的指令集、寄存器、高速缓存及CPU时钟的数字模拟;
• I/O端口仿真:虚拟I/O端口地址及虚拟I/O端口寄存器。通过修改I/O端口寄存器的值模拟端口的输入输出;也可以运用TCL脚本语言编程实现I/O端口输入输出模拟;
• 中断仿真:模拟中断的激发、响应、处理与返回。通过改变中断寄存器的值及其它中断诸元的状态完成中断机制的仿真,也可运用TCL脚本语言编程来实现外部中断事件模拟;
• 内存仿真:虚拟目标程序及其数据的存储区。通过建立虚拟地址空间与物理地址空间的映射关系完成内存仿真;
• 时序仿真:模拟所有指令的时序。依据宿主机主频调整仿真指令的指令周期,以达到与目标机运行相同的时序效果。
静态结构分析
• 编码规则检查:编码规则符合性检查;
• 结构分析:控制流、数据流、接口特性分析;
• 复杂性分析:Line、Macabe、Halstead复杂度分析;
• 执行路径:代码执行路径分析、不可达代码标识。
动态过程仿真
• 前期验证阶段:在需求分析阶段支持对软件需求要素的验证;在设定某种软件运行环境的硬件结构条件下,提供软件原型验证、软件功能验证、软件结构验证手段;
• 开发实现阶段:提供断点设置、清除、列表等功能,支持程序运行过程强行中断;支持step in、step over与step out等单步执行,支持代码连续执行;支持对内存、寄存器、调用栈的观察与修改;
• 动态测试阶段:支持覆盖测试:语句覆盖、分支覆盖、路径覆盖、调用覆盖;支持边界测试、过程接口测试、功能测试、性能测试;支持回归测试;提供故障注入手段;
• 运行维护阶段:对运行维护阶段发现的软件故障,CRESTS/TESS可提供典型故障模式,实现精确故障定位;对软件完善性维护、变更性维护提供强力支持。
TCL脚本应用
• 仿真环境上下文场景设置;
• CPU端口I/O值设置;
• 设置中断相关诸元;
• 修改指定内存单元对访问数据设置;
• 修改指定寄存器值设置中断或程序操作;
• 设置通讯协议;
• 模拟故障注入。
分析报告
• 图形化输出:控制流图、调用(被调用)图、轮廓图;
• CRESTS/TESS输出包括静态分析与动态仿真结果的分析报告。