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

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

3天内不再提示

芯片验证过程中遇到的仿真器挂死的情形

路科验证 来源:路科验证 作者:路科验证 2022-06-02 14:39 次阅读

本文主要分析总结芯片验证过程中遇到的仿真器挂死(就是通常所说的hang)的情形。给出的解决方案都是基于Cadence仿真工具incisive(当然利用xcelium也是没有问题的)和debug工具simvision(当然利用更强大的indago也是没问题的),需要指出来的一点是如果利用xcelium和indago联合调试,需要注意版本兼容问题,利用simvision来debug就不存在这个问题,因为simvision是位于incisive或xcelium的安装目录下的,并不需要单独的license。由于这类问题比较普遍,而且scenario也比较复杂,所以我打算把它做成一个系列。今天是开篇,先列出所有的场景和类型,后续有对应的具体的解决方案。

一、仿真器卡在无限循环或者hang住的场景有很多,原因也各不相同。但大致可以分为如下几类:

1.1:rtl/netlist(网表)无限循环;

1.1.1signal glitches(信号毛刺)

使用irun/xrun的-delay_trigger这个option可以过滤掉毛刺,能够使得仿真进行下去。

1.1.2无限deltacycles

当仿真时间不能往前推进,但是delta cycle无限增加的情形下。可以在仿真开始时,使用如下tcl命令,可以使得delta cycle增加到一定数量后,让仿真自动停下来(注意这时候仿真并未中断,这时候可以继续操作仿真器)。它跟gateloopwarn这个option有点类似。

stop -delta 5000 -timestep -delbreak 1

一旦仿真停下来,我们就可以使用以下tcl命令debug该循环了:

>run -step//单步调试,注意这有一个前提就是要确保-linedebug这个option是事先打开的

>drivers -active //对应跨越verilog和VHDL边界的网络就该使用drivers -effective命令

1.1.3zero-delay gate level无限循环

如果是gate level的仿真,注意要用-gateloopwarn这个option,其他参考1.1.2的做法

1.1.4错误的使用timescale/time-precision

可以使用

>xrun -timescale 1ns/1ps -override_timescale//在elaborate阶段使用即可

1.1.5设计中有组合逻辑环

可以使用toggle coverage来检测是否有组合逻辑环。当然也可以用HAL, 还可以用profiler,甚至还可以用高大上的JasperGold,工具如此之多,是不是有点懵逼,哈哈

1.2与仿真器(incisive)接口的C/C++代码内部的无限循环,比如PLI/VPI/DPI等;

这个足够展开成一个专题了,这里就不展开了。

1.3仿真环境中的复杂随机约束导致的仿真器挂死(hang)

简单来讲就是启用仿真器的心跳功能,

如果使用命令行启用是这样的

>xrun -xceligen heartbeat

如果通过Tcl命令启用是这样的:

xcelium>xceligen -heartbeat

如果通过环境变量启用是这样的

Setenv XCELIGEN_HEARTBEAT=[value]

BTW,如果想看求解器是如何迭代或被stuck的,可以使用-utrace这个选项。

1.4for循环的最大值不确定导致的无限循环

类似这种:for(int i=0; i!=var;i++) //如果var是X的话for循环就会进入死循环(循环终止条件不确定)

1.5low power仿真中的hang(仿真挂起);

这也可以展开成一个专题了,在这里就不展开了。

二、上面说的如此抽象,有装逼的嫌疑,那到底该如何实现呢?别急后续结合具体的小例子慢慢展开,保证有图有真相,敬请期待……

审核编辑 :李倩

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

    关注

    452

    文章

    50134

    浏览量

    420444
  • 仿真器
    +关注

    关注

    14

    文章

    1011

    浏览量

    83580

原文标题:如何debug设计中的无限循环(仿真器hang)系列(1)开篇

文章出处:【微信号:Rocker-IC,微信公众号:路科验证】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    仿真器的使用方法有哪些

    仿真器是一种用于模拟和测试电子系统、软件或硬件的工具。它可以帮助工程师在实际硬件或软件部署之前,对设计进行验证和调试。 仿真器的基本概念 仿真器是一种软件或硬件工具,用于模拟和测试电子
    的头像 发表于 08-22 09:16 564次阅读

    芯片测试和芯片验证的区别

    这是芯片在设计过程中的一个环节,主要通过EDA(电子设计自动化)工具进行仿真检验。它的主要目的是在芯片生产之前,验证
    的头像 发表于 05-08 16:52 1697次阅读

    在EXTI9_5仿真过程中PR是什么时候挂起和解的?

    在EXTI9_5仿真过程中,EXTI->PR什么时候是挂起的,什么时候是解的? 今天晚上我练习了下5.6.7号中断线的使用。首先产生中断EXTI9_5,进入中断函数后,通过判断
    发表于 04-19 06:23

    fpga前仿真和后仿真的区别

    FPGA的前仿真和后仿真芯片设计和验证过程中扮演着不同的角色,各自具有独特的特点和重要性。
    的头像 发表于 03-15 15:29 1843次阅读

    fpga仿真器是什么?它有哪些优势?

    FPGA仿真器是一种用于模拟FPGA(现场可编程门阵列)硬件行为的软件工具。它通过模拟FPGA内部的逻辑电路、时序和接口等,帮助工程师在FPGA设计过程中进行功能验证和性能测试。FPGA仿真器
    的头像 发表于 03-15 15:15 1458次阅读

    fpga原型验证平台与硬件仿真器的区别

    FPGA原型验证平台与硬件仿真器芯片设计和验证过程中各自发挥着独特的作用,它们之间存在明显的区别。
    的头像 发表于 03-15 15:07 990次阅读

    fpga仿真器接口定义

    FPGA(Field-Programmable Gate Array,现场可编程门阵列)仿真器接口的定义主要依赖于仿真器的具体设计和所支持的通信协议。在FPGA的设计和仿真过程中,接口
    的头像 发表于 03-15 14:01 1104次阅读

    利用UDE仿真器调试QSPI读写EEPROM过程中发现仿真器中观察到的全局变量值不对,没有读到数据怎么解决?

    在利用UDE仿真器调试QSPI读写EEPROM过程中发现,单步运行能够读取到数据,如果全速运行,示波器读取数据正确,但仿真器中观察到的全局变量值不对,没有读到数据。请问有人
    发表于 02-18 08:14

    UCB配置错误导致TC365芯片意外锁怎么解决?

    是,板子复位灯常亮,无法连接仿真器。有大佬遇到过这种问题吗?芯片这种情况是不是一定要更换芯片才能解决了?
    发表于 02-02 13:00

    NVIC_SystemReset()导致系统怎么解决?

    %的概率会。添加的代码如下: int main() { UART_START(); printf(\"resetrnrn\"); Cy_SysLib_Delay(5000); NVIC_SystemReset(); ..... } 请问 NVIC_SystemRese
    发表于 02-01 07:38

    光耦仿真器的优势有哪些

    光耦仿真器与业内最常见的光耦合引脚对引脚兼容,有助于无缝集成到现有设计,同时提供相同的信号行为。
    的头像 发表于 01-30 15:07 509次阅读

    如何通过Jlink查看GD32芯片跑飞后程序在哪里?

    相信小伙伴们都会遇到这样的场景:芯片程序跑着跑着就异常了,这个时候又不能仿真,因为一旦仿真程序就会重新download,异常现象就消失了。现在就来教大家如何使用Jlink
    的头像 发表于 01-26 09:49 2156次阅读
    如何通过Jlink查看GD32<b class='flag-5'>芯片</b>跑飞后程序<b class='flag-5'>死</b>在哪里?

    技术分享 | 验证入门黄金组合:数字仿真器与调试系统

    数据和图表、游戏和地图,这两款工具也几乎是验证工程师们的入门级必修课。 本期的技术视频,将基于芯华章的数字仿真器GalaxSim和调试系统Fusion Debug和大家分享: 在目前的超大规模芯片设计
    的头像 发表于 12-18 13:00 427次阅读

    仿真器和烧录的区别

    仿真器和烧录的区别  仿真器和烧录是电子技术领域中常见的两种设备,它们在电子系统的开发和调试过程中起着重要的作用。尽管它们都是用于调试电
    的头像 发表于 12-07 15:48 4895次阅读

    JTAG仿真器接口设计

    电子发烧友网站提供《JTAG仿真器接口设计.pdf》资料免费下载
    发表于 11-27 10:05 2次下载
    JTAG<b class='flag-5'>仿真器</b>接口设计