EDN China > 技术文章 > EDA工具与服务 > IC设计与设计服务 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

扩大ARM SoC的验证覆盖缩短仿真时间

来源:电子设计应用 / 作者:Mentor Graphics Jim Kenney?? 2006年09月13日 ?? 收藏0

?????? 验证复杂的SOC设计要耗费极大的成本和时间。据证实,验证一个设计所需的时间会随着设计大小的增加而成倍增加。在过去的几年中,出现了很多的技术和工具,使验证工程师可以用它们来处理这类问题。但是,这些技术中很多基于动态仿真,并依靠电路操作来发现设计问题,因此设计者仍面临为设计创建激励的问题。

?????? 设计者可以使用运行在处理器上的固件作为验证仿真激励的一部分,这也是目前通常采用的方法----使用全功能处理器模型。与在HDL中编写激励相比,固件作为激励速度更快,并且更容易创建。在一个全功能处理器模型上执行代码的缺点是模型运行较慢,因此只有少量软件会使用这个技术执行。很多固件执行由取指令操作和内存读写周期组成,验证价值很低。在逻辑仿真器中屏蔽这些低价值操作,而继续执行寄存器和内存映射I/O周期,可以在最低限度减少验证覆盖率的同时,显著提高执行速度。

?????? 在仿真环境中能够更快速地执行代码主要有

两个好处。首先,快速仿真意味着功能验证仿真可以使用更多的代码。诊断程序、驱动程序、固件以及某些情况下部分应用程序代码都可用于验证问题。其次,因为仿真运行速度加快,因此能够执行更多的验证。很多设计者会选择运行附加测试,而不是运行较少的CPU仿真时间。大多数验证都受到能够用于运行仿真的CPU时间的限制。如果固件用来作为验证的一部分,它将对设计起推动作用。这个激励将是切合实际的,它通过典型的操作使设计得到测试。为设计创建激励的挑战之一是如何估算出典型的设计操作,并将其在测试平台上编码。使用实际的软件可为验证工程师排除这个问题。但是,运行作为测试平台的代码不可能提供大量激励,特别是不能覆盖大部分验证空间。因此,设计者需要使用其它的技术提供额外激励,以遍历设计的所有边界情况。

?????? 设计者使用传统的直接测试和其它验证技术能够增加用固件作激励源的情况。内存分区可用于过滤仿真过程中不必要的总线周期,从而提高性能。本文将介绍一个设计实例,使用作为激励的代码和基于断言的验证,通过该实例来描述使用传统验证技术无法发现的设计错误。

?????? 解决验证挑战

?????? 目前,电子工程师面临的验证挑战不断加剧。为了更好地阐明这些挑战,本文中介绍了一个简单的实例。该实例是一个在250×250像素矩阵上显示RGB数值的图形输出设备。它包括一个映射到处理器的寄存器接口。相关寄存器有:“行”—包含待描绘像素行地址信息的一个8位寄存器;“列”—包含待描绘像素列地址信息的一个8位寄存器;“像素”:----包含待描绘像素RGB值的一个8位寄存器;“大小”----包含待描绘像素矩形大小的一个8位寄存器(其中1表示写入单个像素,2表示描绘一个2×2的正方形,以此类推最大值为16);“状态”---能够读取和返回设备状态信息的一个8位寄存器。

?????? 使用直接测试

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

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


?????? 使用断言揭露早期问题

?&nbs;

上一页123下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

SOC? ARM? 验证? 仿真?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈