1. 不只是模块拼图:理解MBIST系统的协同本质
很多刚接触Tessent MBIST的工程师,包括我自己刚入行那会儿,很容易犯一个错误:把BSCAN Interface、Logic Group Def、Controller、BAP这几个模块当成一个个孤立的“黑盒子”。我们花时间去看每个模块的接口文档,研究它们各自的功能,以为这样就掌握了MBIST。但等到真正把整个逻辑集成到SoC里,开始调试的时候,各种奇怪的问题就冒出来了:指令发下去了没反应,测试结果读回来是乱的,或者在某些低功耗模式下测试直接跑飞了。踩过几次坑之后我才明白,真正关键的不是每个模块“是什么”,而是它们“如何一起工作”。这就像你了解了发动机、变速箱、车轮的原理,但如果不清楚它们之间如何传递动力、如何协同变速,你还是开不好这辆车。
Tessent MBIST这套逻辑,本质上是一个为芯片内建自测试量身定制的、基于边界扫描架构的微型片上系统。BSCAN Interface是你的对外“海关”,所有指令和结果都从这里进出;BSCAN Logic Group Def是内部的“行政区划图”,规定了测试资源如何组织和访问;MBIST Controller是“指挥中心”,负责执行复杂的测试算法;而MBIST BAP则是连接“海关”和“指挥中心”的“专用高速通道”。这个系统能顺畅运转,依赖的是一套精密的数据流与控制流协同机制。今天,我就从一个验证工程师的视角,带你深入这套机制的内部,看看数据指令如何流转,控制信号如何握手,以及在实际项目中我们会遇到哪些典型的“堵点”和“坑”。理解了这些,你不仅能更好地集成和调试MBIST,甚至在设计早期就能预判一些潜在问题,提出更优的架构建议。
2. 数据流的旅程:一条测试指令的完整路径
要理解协同,最好的办法就是跟踪一个完整的事务。让我们跟着一条典型的MBIST启动指令,走一遍它在芯片内部的“冒险之旅”。
2.1 起点:BSCAN Interface——标准化的指令接收站
一切始于芯片的JTAG端口。当外部测试设备(ATE或调试器)决定启动一次存储器测试时,它会通过TDI引脚,在TCK时钟的同步下,将一串特定的指令和数据移位进来。这里BSCAN Interface的角色非常清晰:它是一个严格遵守IEEE 1149.1(JTAG)协议的翻译官和路由器。
它做的第一件事是解码。JTAG链上传送的可能是指令寄存器(IR)数据,也可能是数据寄存器(DR)数据。BSCAN Interface内部的TAP控制器状态机,会根据TMS信号精确地识别当前是处于Shift-IR还是Shift-DR状态。当识别到是针对MBIST的专用指令(比如MBIST_RUN)时,它就知道后续通过DR移入的数据,需要交给MBIST逻辑处理。
我在这里踩过一个坑:时钟域的隔离。BSCAN Interface的工作时钟是TCK,这个时钟通常来自外部,频率相对较低(比如10-50MHz),并且与芯片内部的核心时钟core_clk是异步的。如果直接将TCK域下的数据和使能信号送到内部高速时钟域,妥妥的会出现亚稳态问题。因此,一个设计良好的BSCAN Interface内部,必须包含一个异步FIFO或一组同步器,用于安全地将指令、地址、配置数据从TCK域传递到MBIST的系统时钟域。这一步没处理好,指令丢失或数据损坏就是家常便饭。
2.2 路由与寻址:BSCAN Logic Group Def的关键作用
数据从BSCAN Interface出来,准备进入芯片内部,但芯片里可能不止有MBIST逻辑,还可能有其他基于边界扫描的测试结构,比如逻辑BIST、扫描链等。那么,数据怎么知道该去找谁呢?这就是BSCAN Logic Group Definition发挥


207

被折叠的 条评论
为什么被折叠?



