今天,随着集成电路的大力发展,没有谁会怀疑芯片在经济和社会发展过程中的重要性吧。没错,芯片确实很重要,而最近它又多了一个政治属性。大多数人对芯片的第一反应是神秘,高端,是一个集成度很高的集成电路或者硬件。不为人知的,芯片除了那些硬邦邦的属性外,也会涉及到软件层面(驱动层),我们今天能在手机上看视频,图片和电影,全都要依赖这些软件驱动层支持的库来实现。接下来,我以一名曾经在芯片设计公司担任芯片驱动测试工程师(SQA,下同)的身份为大家讲解芯片驱动层测试中小秘密。
1 芯片驱动层是什么?
芯片中的驱动层,介于底层硬件与上层应用之间,这层主要负责与硬件层通信,同时把硬件层的结果经过处理后传递到上层应用。这一层主要是用于对于各种库的支持,比如GPU芯片中常用的OpenCL、OpenCV、OpenGL,OpenVG,OpenGLES,WebGL等等,编程语言主要是C或C++写成的源码经编译后形成二进制文件。
2 芯片驱动层测什么及怎么测?
那么,芯片驱动层测试什么呢?答案很明显,就是要确保对第1节提到的这些库的支持。测试类型包括单元测试,压力测试,性能测试和回归测试。
- 对于单元测试而言,主要是针对每个库中所包含的函数进行各种全遍历测试。比如对于OpenCL库来说,它里面包含诸如printf,math等库函数,针对printf函数,要测试int,string,char,double,uint类型等进行全面测试。只有当这些库函数的测试用例全部通过,才能确保这款芯片支持该库。
- 对于压力测试,主要是在每款芯片的后台同时运行几个库函数的二进制文件保持24小时或者36小时,保证每个测试用例在规定时间内都能正常运行,这才算通过了压力测试;
- 对于性能测试,主要是针对OpenGL,OpenGLES和OpenVG等库函数,测试每个用例性能参数,如fps,响应时间等参数。我们平常使用安兔兔测试手机GPU或CPU等性能,会出来一些性能参数,这些参数的值就代表了芯片的性能。
- 对于回归测试来说,由于这些库函数一般不怎么变化,所以特别适合