Python CADI: 助力Fast Model用于软件自动化测试
- UID
- 1066743
|
Python CADI: 助力Fast Model用于软件自动化测试
熟悉Fast Model的同学都知道Fast Model的CADI与MTI接口为Fast Model提供了虚拟原型特有的调试与分析记录功能。今天想跟大家聊的是Fast Model的Python CADI接口,又称为PyCADI,可以看作是Fast Model提供的类似CADI功能的一套python组件。
Python CADI可以用于Fast Model在batch mode下运行控制的一个简单方便的接口,比如可以基于Python方便实现如下诸多功能:
1) 仿真控制,包括程序加载,断点设置与管理,单步执行,阻塞与非阻塞运行,停止,复位等。
2)模型信息读取与设置,包括target信息,模型参数等。
3)寄存器访问,非侵入性读写访问(不修改模型与软件代码本身)。
4)存储器访问,非侵入性读写访问(不修改模型与软件代码本身)。
5)异常报告,如安全异常,超时异常等。
由上述Python CADI的功能简要描述我们可以看出,Python CADI这个强大的接口可以使Fast Model更好的有效使用在基于虚拟原型方案的软件测试场景中,而不仅仅是我们以往经常提到虚拟原型用于早期软件开发的使用模式。简单的说,虚拟原型的自动化测试方案可以以极低的代价准确高效的实现各种测试场景:
1) 实际硬件系统中很难实现但对于安全性系统又非常重要的故障注入测试,比如汽车电子中的电磁干扰引起芯片数据失效的场景。
2) 复杂软件开发流程中引入的连续集成测试—— Continuous Integration Test,复杂的版本管理带来的软件迭代自动化测试需求,
3)产品量产质量保证所需的大量测试向量的regression回归等等。
长话短说,这么好的功能怎么使用?我这里以一个简单例子来说明。
首先确定我们的Fast Model环境和Python环境没有问题,Python CADI使用的是Python 2.7.*版本。设置好Fast Model环境后,检查PYTHONPATH环境变量:
export PYTHONPATH=$PVLIB_HOME/lib/python2.7PYTHONPATH
其次准备Fast Model仿真,编译并执行任一Fast Model安装目录下的例子(包括FVP),执行仿真带上-S,-p选项以启动CADI server并打印端口号。
然后编辑一个基于Python CADI的文件,在Python 2.7环境中执行(同时确保PYTHONPATH环境变量有效 )。如下:
在此我们通过NetworkModel方式连接至Fast Model,再获取CPU并加载镜像,再加入打印、设置、读取模型参数,存储器读写,仿真控制等等操作。 Python 窗口中执行结果如下:
Fast Model 执行窗口可以看到软件运行的semihost输入输出:
详细的功能可以参考Python CADI的相关文档,在安装目录下: $PVLIB_HOME/Docs/DUI0851B_fast_models_py_dbg_rm.pdf 同时Fast Model安装目录也提供了Python CADI的使用范例参考: $PVLIB_HOME/examples/python/
由此可见,Fast Model的Python CADI仿真控制,对目标模型的访问接口等功能良好的支持了前述的各种测试需求。最关键的是区别于传统的基于硬件原型或最终产品的测试方案,虚拟原型可以使开发测试团队在产品设计早期就提前开始测试工作。这样做的好处是,将可能的问题尽可能早地发现并解决它,从而缓解工程师的交付压力,提高产品质量,并缩短上市时间。理解这一点并不难,因为在一个工程越到后期或者系统越来越复杂时候,发现并解决一个bug的代价可能是早期的数倍之多。
|
|
|
|
|
|