0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

多级调试方法的硬件仿真

KOKOKO123 来源:嵌入式计算设计 作者:Lauro Rizzatti 2022-07-09 07:59 次阅读

芯片设计调试是一门困难的学科,而片上系统 (SoC) 设计则更是如此。这就像众所周知的大海捞针。对于 SoC 设计,它是两个大海捞针,一个用于软件,另一个用于硬件。软件开发团队经常将集体矛头指向硬件团队,声称这是一个硬件错误,而硬件团队则迅速回击,声称这是一个软件错误。如果没有有效的验证工具来查明问题,就很难知道谁是对的。这就是硬件仿真的用武之地。

硬件仿真对于调试硬件和测试 SoC 设计中硬件和软件的集成非常重要,远远早于第一个芯片。当工程组的两个不同部分(硬件设计师和软件开发人员)使用仿真时,他们能够共享相同的系统和设计表示。SoC 设计的组合软件和硬件视图使它们能够协同工作以调试硬件和软件交互。

作为大多数 SoC 验证流程的基础,硬件仿真允许工程团队更有策略地进行规划并实施基于多个抽象级别的调试方法。工程团队不必彼此独立地钻进两个干草堆。相反,他们可以跨嵌入式软件和底层硬件之间的边界跟踪错误,以确定问题出在软件还是硬件上。

实现基于多个抽象级别的调试方法从最高级别的嵌入式软件开始,然后在抽象级别向下移动以跟踪各个硬件元素的行为。事实上,从包含数十亿个时钟周期的数据库开始,软件调试器可以将问题定位到几百万个时钟周期内。在这个级别,软件开发人员可以识别软件代码中的源代码,或者他们的硬件设计同行可以使用软件感知硬件调试方法来专注于较低的抽象级别。该方法要求通过硬件事务器实现监视器、检查器和断言,以避免速度下降并帮助将问题缩小到几千个周期。

一旦审查了这两个级别收集的数据,硬件仿真允许工程组向下移动到信号级别。它可以通过所识别时间段的寄存器传输电平(RTL)波形分析信息,并追踪其可能的来源。要么发现了硬件错误,要么清除了硬件故障。如果是后者,它会迫使决定回到软件环境。

导航多个级别的调试抽象

在不同的抽象级别之间导航——从软件到硬件再到后面——避免了长时间的模拟运行和大量的详细数据。

软件模拟器无法实现多级调试方法,因为它们太慢而无法有效执行嵌入式软件。实际上,它们将运行数月来处理数十亿个设计周期,这些设计的大小达到数亿个专用集成电路ASIC) 等效门。对于消费电子设备或任何其他电子设备的供应商来说,这是一个不可接受的时间限制。

虽然仍被广泛使用,但在验证场景中推动其成功的原始仿真风格的在线仿真 (ICE) 模式现在在基于事务的验证中面临着可行的替代方案。从概念上讲,这个想法很简单。测试是在高级抽象上编写的,从高级命令到位级信号的转换从测试台转移到称为事务器的专用实体中。通过将事务处理器映射到硬件仿真器上,与基于仿真的验证相比,可以轻松实现 5 或 6 个数量级的加速。

工程组使用事务处理程序来构建虚拟测试环境,而不是 ICE 物理目标系统,方法是用一组等效的事务处理程序替换一组基于 I/O 协议的速度适配器。

基于事务的加速简化了设计调试。通过完全控制并非由硬件测试台提供的设计时钟,调试变得更加容易和高效。通过控制时钟频率,可以停止仿真的被测设计 (DUT) 模型、读取其内存内容、强制某些寄存器或转储波形。

传统上,在 ICE 环境中调试需要由来自目标系统的不可控时钟驱动的硬件逻辑分析仪。该设置导致了不确定的行为并损害了调试 DUT 的能力。硬件仿真供应商最近通过将其转换为确定性行为的方法解决了 ICE 外围设备的随机行为。

多层次的协同验证视角

一旦软件设计人员和硬件开发人员使用硬件仿真体验了基于事务的验证,他们的整个验证视角就会发生变化。无需繁琐的 ICE 硬件即可快速设置强大的测试环境的能力意味着更容易和更有效的调试。目标可能是相同的——在更短的时间内做出更好的设计——但现在的体验可能会变得不那么具有挑战性。

工程团队发现现代硬件仿真器是测试硬件和在 SoC 设计中集成硬件和软件的必要条件。它使他们能够更有策略地进行规划并成功实施硬件/软件联合验证。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47802

    浏览量

    409170
  • 嵌入式
    +关注

    关注

    4983

    文章

    18286

    浏览量

    288494
  • soc
    soc
    +关注

    关注

    38

    文章

    3746

    浏览量

    215694
收藏 人收藏

    评论

    相关推荐

    方法|如何为开发板调试新的触摸屏

    方法|如何为开发板调试新的触摸屏
    的头像 发表于 11-30 11:30 479次阅读
    <b class='flag-5'>方法</b>|如何为开发板<b class='flag-5'>调试</b>新的触摸屏

    Vivado Design Suite 用户指南:编程和调试

    《Vivado Design Suite 用户指南:编程和调试》 文档涵盖了以下设计进程: 硬件、IP 和平台开发 : 为硬件平台创建 PL IP 块、创建 PL 内核、功能仿真以及评
    的头像 发表于 10-25 16:15 444次阅读
    Vivado Design Suite 用户指南:编程和<b class='flag-5'>调试</b>

    硬件仿真开课啦!国产EDA技术公开课等你来

    面对复杂的设计代码,确保其准确性至关重要,功能验证就是非常重要的一环。通常使用的验证方法包括软件仿真硬件仿真和原型验证等。虽然软件仿真易于
    的头像 发表于 09-13 08:28 427次阅读
    <b class='flag-5'>硬件</b><b class='flag-5'>仿真</b>开课啦!国产EDA技术公开课等你来

    基于IAR for arm9.30.1在VS Code调试仿真RA

    基于IAR for arm9.30.1在VS Code调试仿真RA
    的头像 发表于 08-26 08:07 251次阅读
    基于IAR for arm9.30.1在VS Code<b class='flag-5'>调试</b><b class='flag-5'>仿真</b>RA

    C语言中多级指针的概念和使用方法

    多级指针在C语言中是一种特殊的指针类型,它可以指向其他指针的指针。
    发表于 08-16 16:16 308次阅读

    有什么软件或方法能对hdl语言描述的riscv内核进行仿真,同时接入gdb+openOCD对其进行调试吗?

    我现在没有开发板,请问有什么软件或方法能对hdl语言描述的riscv内核进行仿真,同时接入gdb+openOCD对其进行调试吗?
    发表于 08-12 07:59

    调试硬件的连接指南

    对于嵌入式系统开发,通常需要将目标硬件连接到主机执行调试。Arm提供JTAG和串行线调试(SWD)连接通过一系列调试探针,这些探针被调整以适应系统的需要: •DSTREAM和DSTRE
    发表于 08-08 07:45

    基于OmniArk芯神鼎硬件仿真系统和QEMU的混合验证平台

    软件仿真(Simulation),原型验证(Prototyping),以及硬件仿真 (Emulation),是当前主要的三种有效的验证方法,在芯片前端设计的功能性验证阶段起到了关键的作
    的头像 发表于 07-27 09:57 376次阅读
    基于OmniArk芯神鼎<b class='flag-5'>硬件</b><b class='flag-5'>仿真</b>系统和QEMU的混合验证平台

    教程 8:调试方法

    教程 8:调试方法
    发表于 07-06 19:46 0次下载
    教程 8:<b class='flag-5'>调试</b><b class='flag-5'>方法</b>

    MINICUBE2设置手册 带编程功能的片上调试仿真

    MINICUBE2 设置手册 带编程功能的片上调试仿真
    发表于 06-26 19:17 0次下载
    MINICUBE2设置手册 带编程功能的片上<b class='flag-5'>调试</b><b class='flag-5'>仿真</b>器

    硬件简单的日志打印方法

    相信大多数嵌入式开发者都会碰到对程序进行调试或者查找BUG的情况,常见的两种方法都是仿真和通过日志进行的。 有条件仿真的是更好,单是在编写嵌入式软件程序过程中,并不是所有的
    的头像 发表于 06-22 10:08 377次阅读
    <b class='flag-5'>硬件</b>简单的日志打印<b class='flag-5'>方法</b>

    FPGA在线调试方法简单总结

    Xilinx被AMD收购的事情把我震出来了,看了看上上一篇文章讲了下仿真的文件操作,这篇隔了很久远,不知道该从何讲起,就说说FPGA的在线调试的一些简单的操作方法总结。
    发表于 06-19 15:52 1400次阅读
    FPGA在线<b class='flag-5'>调试</b>的<b class='flag-5'>方法</b>简单总结

    软件仿真硬件仿真、原型验证是如何工作的?

    面对复杂的设计代码,我们如何确保其准确性?功能验证就是这场战斗的关键过程。工程师们通常使用的验证方法包括软件仿真硬件仿真和原型验证等。这些不同的验证
    的头像 发表于 06-11 14:24 535次阅读
    软件<b class='flag-5'>仿真</b>、<b class='flag-5'>硬件</b><b class='flag-5'>仿真</b>、原型验证是如何工作的?

    Xilinx FPGA远程调试方法(二)

    上篇主要是分享了Vivado编译软件远程调试方法。杰克使用Vivado软件进行远程连接,主要是用于固化程序以及FPGA(PL端)的异常排查。而本篇主要内容是对使用Vitis软件远程调试方法
    发表于 05-25 14:36 1787次阅读
    Xilinx FPGA远程<b class='flag-5'>调试</b><b class='flag-5'>方法</b>(二)

    MINICUBE2设置手册 带编程功能的片上调试仿真

    MINICUBE2 设置手册 带编程功能的片上调试仿真
    发表于 05-05 19:26 0次下载
    MINICUBE2设置手册 带编程功能的片上<b class='flag-5'>调试</b><b class='flag-5'>仿真</b>器