首页>国芯集团 > 第86章 启明二号终极验证决战035微米

第86章 启明二号终极验证决战035微米

目录

对于启明芯的“启明二号”

(phoenix)项目组来说,是黎明前最后的黑暗,也是冲刺阶段最严峻的考验。

设计工作虽然在名义上已经完成,但距离真正能够按下那个象征着“发射”

的tape-out按钮,还有一道道被称为“终极验证”

的、极其严苛的关卡需要闯过。

这些关卡,如同芯片设计流程中的“炼狱”

,旨在将所有隐藏的、潜在的、可能导致流片失败的“魔鬼”

都暴露出来,并彻底消灭。

验证中心的气氛,比之前任何时候都要凝重。

工程师们不再有时间闲聊,甚至连去茶水间冲咖啡的脚步都带着风。

每个人的屏幕上都运行着不同的验证工具,消耗着海量的计算资源,也考验着工程师们的智慧和耐心。

“全芯片功能仿真(full-chip

functional

simulation)发现新问题!”

负责系统级验证的小组长突然喊道,声音中带着一丝焦虑,“在模拟高负载usb传输的同时,进行复杂的音频解码和文件系统操作时,有极低概率出现数据总线死锁(deadlock)!”

这个问题如同投入平静水面的一颗炸弹,立刻引起了所有相关工程师的注意。

总线死锁是soc设计中最难调试的问题之一,它往往不是由单一模块的逻辑错误引起,而是多个模块在特定时序和并发请求下,相互等待资源而导致的系统“卡死”

这种错误在模块级仿真中很难发现,只有在全芯片协同工作的仿真中才可能暴露出来。

陈家俊立刻召集了负责arm核、dsp、usb控制器、dma控制器以及系统总线设计的核心工程师,围在仿真结果前,开始逐帧分析波形,试图找出死锁发生的根源。

“看这里,usb的dma请求和dsp的内存读取请求几乎同时发出,总线仲裁器似乎陷入了一个循环等待状态……”

“检查一下各个master模块的优先级设置和总线协议实现……”

“会不会是某个模块在异常状态下没有正确释放总线?”

……

经过整整两天两夜的排查、争论和反复仿真验证,他们终于定位到了问题所在——是dma控制器在处理一个极其罕见的、带有错误校验码的usb传输数据包时,其内部状态机进入了一个未定义的异常状态,导致它未能及时释放总线控制权,从而引发了与其他模块的死锁。

“找到了!”

负责dma模块的工程师如释重负地喊道,立刻开始修改rtl代码,增加对这种异常状态的处理逻辑。

这个bug的修复,避免了一次数百万美元的潜在损失。

与此同时,后端团队也在进行着同样艰苦卓绝的工作。

门级仿真(gate-level

simulation,

本章未完,点击下一页继续阅读



返回顶部