当前位置:首页 > 工业控制 > 电子设计自动化

本文针对FPGA实际开发过程中,出现故障后定位困难、反复修改代码编译时间过长、上板后故障解决无法确认的问题,提出了一种采用仿真的方法来定位、解决故障并验证故障解决方案。可以大大的节约开发时间,提高开发效率。  FPGA近年来在越来越多的领域中应用,很多大通信系统(如通信基站等)都用其做核心数据的处理。但是过长的编译时间,在研发过程中使得解决故障的环节非常令人头痛。本文介绍的就是一种用仿真方法解决故障从而减少研发过程中的编译次数,最终达到准确定位故障、缩短解决故障时间的目的。文例所用到的软件开发平台为Altera公司的Quartus II,仿真工具为ModelSim。  问题的提出  系统开发在上板调试过程中,有时候出现的bug是很极端的情况或很少出现的情况,而现在通常的做法是:在故障出现的时候通过SignalTap 把信号抓出来查找其问题的所在、修改程序;在改完版本后,先要对整个工程进行重新编译,然后再上板跑版本进行验证,看看故障是否解决。  这样就会出现三个问题:  ①有时候故障很难定位,只知道哪个模块出错,很难定位到具体的信号上,给抓信号带来麻烦。如果故障定位不准确,漏抓了关键信号,则需要重新在 SignalTap里添加信号、编译版本并再次上板定位故障,浪费时间。  ②故障定位后,修改代码还需要再编译一次产生新版本的下载文件,修改后若还有问题则要重复这一过程,这样从故障定位到修改完成需要很多次编译。  ③上板重新进行验证时,如果这个bug的出现的几率很小,短时间内不再复现,并不能说明在极端情况下的故障真的被解决了。  举例说明:  例如在一个基带系统的FPGA逻辑版本中,输出模块调用了一个异步FIFO,某一时刻FIFO已空的情况下多读了一个数据,产生了bug,如图 1所示。图1 SignalTap抓出的bug出现时的数据  该输出模块的功能是判断FIFO中是否有大于4个数据可读出,若大于则连续输出4个数据作为一组。系统中采用异步FIFO的内部读数据指针来做判断,而异步FIFO读写数据需要跨时钟域,需要至少2个时钟周期的握手时间,导致数据指针不准确。在判断的时钟沿,虽然显示有超过4个的数据可读,但是因为握手时间的延迟实际上FIFO中可能只有3个数据。  图1中rdreq为FIFO的读使能信号,在4个时钟周期内有效,但是只读出了3个数(数据0D2086C9F被读了两次),因为FIFO在第 4个时钟周期已经读空。这里应该改成同步FIFO,由于同步FIFO数据的读写只在一个时钟域内进行,就没有这个握手时间延迟的问题了。  定位这个故障的时候我们可以很容易知道是哪个模块出了问题,但是具体是其内部的哪个信号还需要下些功夫,如果出错信号隐藏的很深,很难一次就抓到需要的信号;而且即使我们抓到了正确的信号,如果故障在改完之后没有解决,则还需要重新修改、再进行编译,耗费时间;即使改过之后故障不再复现,也有可能是因为bug出现的条件苛刻,无法证明故障真的解决了。  针对这三个问题,笔者提出如下想法:  虽然定位具体的出错信号很困难,但是定位是哪个模块出错很容易,在bug出现的时候我们可以抓出这个模块的全部输入信号,考虑是否可以利用这些信号在仿真环境下重建bug出现的条件,利用仿真环境具体定位错误信号的位置。  定位好错误信号的具体位置后,修改代码,再用相同的条件进行仿真。这样可以通过对修改前后输出数据的对比,很直观的验证修改是否成功,从而在修改成功后只需编译一次即可,节省时间。  上板后bug不复现也可以排除是由于极端情况很难满足造成的,去除了后顾之忧,彻底解决了故障。  仿真解决故障的方法  通过对这个异步FIFO问题的解决,可以证明这种通过所抓信号建立bug存在条件,定位、清除bug的方法是可行的。步骤如下:  ①将bug出现时SignalTap抓的信号保存成文档文件  Quartus II 平台用SignalTap抓到信号的界面如图2所示。图2 SignalTap抓信号界面  在信号名称上单击右键,选择图2所示Create SignalTap II List File选项,生成如图3格式界面。图3 SignalTap II List File界面  图3中界面上半部分显示的是list对信号个数及信号名的描述,下半部分是采样点所对应的信号值,带h的表示是十六进制数值。  将list file另存为文本格式文件即可,如图4所示。图4 “另存为”选项界面 此后可以把这个文本文件中无用的描述删掉,只留SignalTap抓出来的数据(空格、h等符号也要删掉),另存为.dat文件供仿真使用。  有了故障出现时的输入数据,我们就可以在仿真环境下构建故障出现的条件。  ②利用.dat文件建立bug出现的条件  用verilog语言编写仿真文件(testbench),使用语句$readmemh或$readmemb将.dat文件中的数据存储到一个设定的ram中,如:$readmemh(“s.dat”,ram)。  注意$readmemh读取是按照十六进制数据进行(认为.dat文件中的数据都是十六进制数),会自动将其转换为4位二进制数存入ram中,所以设定的ram位宽要是.dat文件中数据位宽的4倍;使用$readmemb时,存储SignalTap所抓信号时,信号都要先设定为binary类型,ram位宽就是.dat文件数据的位宽。ram的深度为.dat文件中数据的个数。  然后在程序里把ram中数据按照所对应时钟沿输出到一个寄存器变量中,ram地址累加即可。  always@(posedge clk)  begin  data<=ram[addr];  addr<=addr+1'b1;  end  复现bug存在条件时,需将模块的输入信号与ram中的数据位相对应,仿真文件调用模块时,将寄存器data对应位作为输入接入即可。  在仿真环境中复现bug波形如图5所示。图5 ModelSim环境下复现的出错数据  把图5和图1进行比较,可见通过这种方法我们在仿真环境下建立了bug出错时的环境,得到相同的输出出错数据。  ③修改程序后在仿真环境验证修改是否成功  修改程序后,我们只要使用同样的环境进行仿真,并且有针对性的观察bug是否解决。本例中出现bug的原因是使用了异步FIFO,改成同步 FIFO后,问题应该就会解决,我们可以通过仿真验证。修改程序后仿真的波形如图6所示。图6 修改程序后相同条件下的输出数据  由图6可见,修改后相同的条件FIFO读出4个数,说明没有读空,符合要求,bug解决。图7为版本编译后上板使用SignalTap抓取的信号波形,以作比较。图7 修改程序后SignalTap抓的信号  比较后易见,波形完全相同,说明方法可行。  总结  文中描述的方法可针对各种的故障的解决。在故障出现时,只需定位出错的模块,这些模块内嵌一些子模块也无妨;抓信号时将故障模块的输入输出信号抓出即可;利用输入信号重建故障环境,若仿真输出信号和所抓输出信号相同,说明故障环境建立正确;用这个仿真平台就可以具体定位是哪个子模块、哪个信号出错,而不需要在SignalTap中把这些信号抓出来;并且在修改代码后可以验证是否修改成功,节省时间,很明确的证明故障真的被解决了,事半功倍。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

仿真技术带来了诸多便利与优势。 仿真技术具有成本低、适应范围广和提供丰富信息的优势。首先,其成本相对较低。进行仿真时,无需制作实体模型或购买昂贵的测量设备,大大节省了资源和时间。同时,仿真模型的大小可随心所欲地调整,无论...

关键字: 互联网 仿真技术

在现代工业生产与日常生活中,电机作为关键的动力转换设备,广泛应用于各个领域。从工厂的大型机械设备到家用的小型电器,电机的稳定运行直接关系到整个系统的性能与可靠性。然而,电机进水故障却频繁发生,严重影响了电机的使用寿命与工...

关键字: 电机 故障 气密检测

在 COMSOL 主题日油气专场活动中,众多行业精英汇聚一堂,与会的专家和学者们深入探讨了多物理场仿真技术在油气领域的前沿应用及独特优势。 上海 2025年5月22日 /美通社/ -- 全球领先的仿真软件提供商C...

关键字: COMSOL 仿真软件 仿真技术 新能源

基于使用困难报告系统(SDRS)对钻石DA20飞机的故障数据进行分析 。基于SDRS系统收集到的数据 , 结合故障分类方法 ,对钻石DA20飞机的不同故障进行研究 ,并提出相应的解决措施 ,有利于提高钻石DA20飞机机队...

关键字: SDRS DA20飞机 故障 数据

真空冷冻干燥技术在制药领域有重要应用 ,对于粉剂生物制品的冻干生产 ,冻干机的稳定运行至关重要。制冷系统是冻干机核心部件 ,直接影响生产。现以LYO-20型冻干机为例 , 列举制冷系统中常见的故障 ,提出相应的维修方法...

关键字: 冻干机 压缩机 制冷 故障 维修

对海洋铺管船铺管装备支撑结构的特点及类型进行了简单分析 ,对带有法兰眼板(180 mm的钢锻件)的支撑铰座的焊接质量控制要点进行了详细阐述 , 最终获得满足工艺要求的产品 ,可为高端海工项目的监造提供参考。

关键字: 钢锻件 焊接检验 质量控制 海工装备 方法

COMSOL 2024年度中国区用户年会汇聚了COMSOL 软件的广大用户群体。众多领域的专家学者和工程师深入探讨了多物理场仿真技术在各行业中的创新应用和如何通过仿真推动技术突破的独到见解,为与会者提供了宝贵的洞见和启发...

关键字: COMSOL 仿真技术 微信 仿真模拟

在铁路货车超偏载装置的运行过程中 , 由于产品质量 、安装条件 、日常管理和外界环境等因素的影响 , 可能会出现多种故障 。根据相关规定 ,结合具体故障情况 ,对超偏载装置发生的几例典型故障进行了详细分析 ,并提出了判断...

关键字: 铁路货车 超偏载装置 故障

COMSOL主题日清洁能源专场汇聚行业精英,共同探讨多物理场仿真技术在清洁能源领域的前沿应用与优势。与会专家和学者深入解析如何使用多物理场仿真赋能清洁能源技术的创新与突破。 上海2024年9月25日 /美通社/ --...

关键字: 清洁能源 COMSOL 仿真技术 APP

在COMSOL主题日系列活动光学专场中,多位行业专家分享了多物理场仿真技术在光学领域的广泛应用及其所展现出的领先优势,深入剖析了如何使用多物理场仿真助力光学领域的技术创新与突破。 上海2024年8月22日 /美通社/...

关键字: 光学 COMSOL 仿真技术 仿真软件
关闭