微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 利用软件作为激励来加速SoC系统级验证

利用软件作为激励来加速SoC系统级验证

时间:08-21 来源:互联网 点击:

被测试,如从右上方像素立刻变换为左下方像素。使用类似的方法可测试所有角对组合。还应该测试各种组合中有序和无序增减的行地址和列地址。所有这些测试可以通过编写和编译一个运行在全功能处理器模型上的简单程序来完成,或者使用一个产生总线周期和BFM的简单测试平台。另外还要考虑测试那些可能影响设计的异常条件。测试时可将行地址或列地址设置为一个大于249的值,或是定义一个大小超过硬件支持的像素。

这些都是在接口级完成的明显测试,在内部结构进行的类似验证测试和在接口级实现的验证策略是很类似的。显然,要测试整个验证空间,即使只是一个设计模块的接口,也不可能像前述的样本设备一样简单。可能的操作是250行×250列×224色×16大小,或16.7×1016.所有操作的组合数是这个数值的平方,或大于1034.这里真正的挑战是创建那些能够揭露设计问题的组合,并将这些问题标识为需要立刻关注的区方面。  

使用断言揭露早期问题  

由于对设计驱动了激励,因此断言可以及早发现问题。要添加的断言包括不能超过249(行地址和列地址的最大可能值)的行地址和列地址,以及不能超过16的大小字段。确定断言并采用HDL覆盖分析后,需要对设计驱动激励。这可以通过约束随机测试实现。约束随机测试产生反馈到测试平台的设备处理事务,表明被识别的测试点已被覆盖。如果设计空间非常大,约束随机测试就不能包含测试点没有覆盖的边界条件。这种测试不用创建使用HDL覆盖工具达到100%覆盖的激励。但是,在设计中遍历所有状态并覆盖所有条件并不能保证设备被完全验证。  

软件代码作为激励  

对于一个超过1034个组合的验证空间来说,让实际的设备操作执行所有必需组合是不太可能的。应当把重点放在设备会运行的那些操作上,对那些理论上可能不会使用的操作要减少花费时间。最简单快捷的方法是找到可驱动设备的现有代码。这可能是诊断代码,驱动程序代码或应用程序级算法。每个这样的代码均提供了不同的验证级别,并揭露了不同类型的问题,因此,应当尝试获得和使用所有类型的代码。  

对于新的设计,代码很可能不存在,但对于下一代产品的设计,一些代码常常可以得到。如果这些代码存在,设计的激励在几乎不耗费精力或成本的情况下就可以得到。如果代码不存在,但合作方愿意在设计周期前期创建代码,那么也可以轻松地创建激励。最后,如果验证团队需要创建代码,通过编写C代码来为设计创建复杂多样的激励比使用任何其它语言都更容易。  

假设显示  

使用假设显示,需要运行描绘各种测试模式和色彩组合的诊断代码以确保连接。也可以运行驱动程序代码,它可以连接至一个简单的画图应用程序,该应用程序可使用一些代表样本的像素将驱动程序调整至适当位置。最后,采用最终使用这个设备的应用程序,并画出几幅图像。每种类型的代码会以不同的方式运用设计,从而能发现利用其他方法时不容易检测到的问题。

硬件/软件协同验证  

很多硬件和验证工程师(甚至在某些方面软件工程师)认为,运行应用程序的任何部分不会加快设计验证。毕竟,如果针对设备测试驱动程序,并针对驱动程序测试了应用程序,就无需进行进一步验证。但是这些工程师不会考虑在尚未系统地测试所有软件的情况下发布产品,也不会接受在未经系统测试的情况下发布要去tapeou的硬件设计。系统级协同验证测试全部的可选组件,包括硬件、软件、或两者的组合,从而揭露在分离情况下不会被发现的问题。

软件覆盖范围  

运行软件提供了一个切合实际的激励,但它不可能为验证空间提供足够宽的覆盖范围。软件通常是一遍一遍地重复只具有些微差别的相似操作。因此,这种方法应当结合其它现有验证技术一起使用。同时,运行大量的软件通常不会改善验证效果。在不牺牲验证结果的情况下,通过对软件进行少量修改,能够缩短较长的代码操作。例如,在上述显示设备实例中,向所有位置写数据的诊断程序能够被缩短为只写前3行和最后3行。这样做不会减少覆盖范围,却能使测试速度加快45倍。  

划分内存系统  

将代码作为设计激励运行时,无疑会令人增加对设计被全面验证的总体信心。并且,在大多数情况下,它能暴露其它验证方法遗漏的设计缺陷。但是,在逻辑仿真中运行代码是非常慢的。逻辑仿真器通常以10Hz到100Hz的速度执行操作。在这样的性能水平条件下,只有少量的代码能够运行。  

以执行代码时产生的电路行为为例,连续的九条ARM指令会产生15个总线周期。在这15个总线周期中,只有2个和硬件操作有关。剩余的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top