FPGA 原型验证专题 22:Gate 域信号采集——ILA/trace/探针带宽、深度权衡与只认 GateID 的硬件事实
更新时间:2026-09-12。本文是「ASIC FPGA 原型验证系统」专题 06~25 深体系列分册,对应阶段 5(采集 Gate 域数据)。插桩见 14 可观测性插桩 dont_touch/probe/可见性预算,trace 硬件见 专家 45,回映见 23 Gate→RTL 数据回映 查表/聚合/SAIF。
这一篇在链路里的位置
阶段 5 的输出是"仿真运行波形、内部信号 dump、翻转统计、日志、功能结果"。关键事实:比特流里没有任何 ID,硬件只认物理网线,所以采集结果只关联 GateID。这是 Gate 域的最后一站,紧接着阶段 6 才把它翻译回 RTL。
本文要回答的问题
- 采集有哪几条路径:在线 ILA、片上 trace/缓冲、高速导出/外采?各自带宽/深度/扰动?
- 存储深度 × 信号宽度 = 片上 RAM,这个三角权衡如何管理(信号选择、采样时钟、限定存储)?
- 触发系统:触发电平/边沿/序列、状态机触发、存储限定、pre/post 触发窗口?
- 多片 FPGA 的信号怎么做时间对齐(共同时钟、触发分发、时间戳)?
- 采集本身对设计的扰动:probe 扇出、ILA 时钟、布线拥塞如何改变时序/频率?
- 采到的原始数据长什么样(GateID + 时间戳/翻转),为什么此刻还读不懂?
- 连续长时间活动统计(用于功耗)与短时波形调试(用于找 bug)在采集上的不同设计?
- 采集配置如何与 info_table/插桩清单对应,为回映做准备?
一、再强调一次硬件事实
阶段 2 的插桩(14 可观测性插桩 dont_touch/probe/可见性预算)让信号在网表中保留并连到采集网络,阶段 4 把它们布进了比特流;到运行时,片上只有物理网线和物理触发器。采集引擎采到的每一位,键是槽位/探针物理编号,经 .ltx/网表网名对应到 GateID——仅此而已。它不知道这一位是 core.alu.fsm.state 还是 dma.buf[7],那个映射在服务器的 info_table 里(17 info_table 映射表 GateID↔RTLID/回溯/版本)。所以本篇所有采集配置和数据格式都以 GateID(槽位)为键,语义归属推迟到 23 Gate→RTL 数据回映 查表/聚合/SAIF。
二、三条采集路径
| 路径 | 机制 | 带宽 | 深度 | 扰动 | 典型用途 |
|---|---|---|---|---|---|
| 在线 ILA(22 ILA/VIO) | 片上嵌入式逻辑分析仪核,JTAG 交互式上传 | 低(JTAG 限速) | 浅(数千~数万样本) | 中(插核即重编译) | 交互式定位、单 bug 抓取、VIO 激励 |
| 片上 trace/环形缓冲(45) | 自研 trace IP:探针→汇聚网络→片上 RAM/URAM 环形缓冲,触发后窗口落盘 | 中高(片内总线宽度大、可压缩) | 中(按 RAM 预算) | 低~中(网络常驻) | 非交互长时间录制、死锁现场、事务 trace |
| 高速导出/外采 | trace 流经 SerDes/PCIe/专用口实时送到主机盘阵列或外部逻辑分析仪 | 最高(GB/s 级) | 无限(主机存储) | 低(但占跨片/IO 资源) | 长活动统计、全系统启动 trace、覆盖率/SAIF 录制 |
三者共用同一套 probe 汇聚网络(14 可观测性插桩 dont_touch/probe/可见性预算 的可见性预算),区别只是末端接 ILA、RAM 还是高速口。实战中常驻 trace IP + 按场景切换末端,比每查一个 bug 就重综合一个 ILA 工程高效得多。
三、带宽—深度三角:永远在做的算术
片上存储预算:
存储位数 = 探针信号总宽度 W × 录制深度 N(样本数)
录制时间 = N / 采样时钟频率- W=4096 位、采样 20 MHz、想录 1 秒 → 需要 4096 × 20M = 约 1 GB 采样位——片上 BRAM 不可能,必须高速导出或压缩;
- 同样的 20 Mb BRAM 预算,4096 位宽只能存约 600 个样本(30 µs),64 位宽可存约 4 万个样本(2 ms)。
管理手段:
- 信号分级:常开的粗粒度探针(状态机枚举、事务级 valid/ready、性能计数)+ 按需打开的细粒度探针(总线全位宽、内部中间值),细粒度探针靠 mux 复用同一采集槽(14 可观测性插桩 dont_touch/probe/可见性预算 的动态 mux),换观测对象不必重编译;
- 采样限定:不是每时钟都存——事务 valid、时钟使能、分采样(1/16 周期采样用于粗活动率);
- 压缩:只存翻转(transition dump:时间戳+新值)、宽总线差分/字符压缩,活动稀疏时压缩比可达数十倍;
- 活动计数器模式:不存波形,每个探针挂翻转计数器/周期 T0T1 累加器,几百个周期读一次,极少量带宽即可支撑长时活动统计(SAIF 只需要 T0/T1/TC,25 真实激励驱动 ASIC 签核 SAIF 反标/边界)。
四、触发、限定与窗口
无触发地 dump 没有意义(1 秒里关键事件可能只占 1 µs)。触发能力按复杂度分层:
- 基本触发:探针比较(等于/掩码/边沿)、多条件 AND/OR;
- 序列/状态机触发:A 发生后 B 在 N 拍内发生→触发;计数器到阈值触发(第 100 万次仲裁失败);
- 存储限定(storage qualifier):触发条件之外,只把满足限定的周期写入缓冲(如只存总线 valid 周期);
- 窗口:pre-trigger(环形缓冲天然保留触发前 N 样本)+ post-trigger 深度比例可调;死锁类问题要大 pre-trigger(看怎么死的),协议违例要看大 post-trigger(看后果);
- 多级触发:一级粗触发(某个状态机进异常态)启动二级细采集(打开对应模块的细粒度 mux),兼顾全局常开与局部细节。
触发条件本身以 GateID/槽位配置,配置文件从 probe 清单编译生成(14 可观测性插桩 dont_touch/probe/可见性预算),人在界面上选的是 RTL 信号名,工具翻译成槽位——但翻译必须经过当次构建的 info_table 版本校验(20 比特流烧录与四方版本一致 manifest/门禁),防止拿旧清单配新比特流。
五、多片时间对齐
多 FPGA 上一个事务横跨数片,没有公共时间轴的 trace 无法阅读:
- 同源时基:所有片用同源时钟(13 跨 FPGA 互联与 TDM SerDes/跨片同步/降频)驱动 trace 逻辑,各自维护一个同步清零的周期计数器(time stamp counter);
- 触发分发:任一片命中触发经跨片触发线(普通跨片信号或专用 trace 链路)广播,所有片在约定延迟内同时冻结/标记窗口;延迟值标定后写入配置,回映时按标定值补偿;
- 时间戳入流:每个 trace 块头带片号 + 周期计数,主机侧按计数器归并(不是按到达顺序——到达受导出带宽影响);
- 跨片 TDM 的时间还原:割边信号在物理上 R 拍才出现一次(19 原型频率与时序收敛 TDM 降频/关键路径),trace 中其跳变时刻要标注 TDM 时隙位置,回映阶段换算成逻辑周期(23 Gate→RTL 数据回映 查表/聚合/SAIF);
- 异步时钟域之间的 trace 不做「同周期」对齐,只按各自时基记录、在交叉事件(握手)处建立对应关系。
六、观测的扰动:探针会改变被观测者
采集不是免费的,它扰动设计本身:
- 布线/扇出:probe 给被观测网增加一个负载,长距离汇聚线可能把原本布得下的设计变成拥塞、频率下降;跨时钟域信号接入同一采集核还要配套同步器与假路径约束(18 原型约束体系 SDC/XDC/跨片时序/例外),否则采集结果本身有亚稳风险;
- BRAM/资源占用:trace 存储吃 BRAM 预算,可能挤掉 DUT 的 BRAM 替身或迫使其重映射(水位见 19 原型频率与时序收敛 TDM 降频/关键路径);
- 海森堡效应:加了采集逻辑后时序变化,可能让一个频率边缘 bug 时隐时现。纪律:性能/活动数据用「常驻轻量 trace」版采集(扰动固定且已计入时序收敛),重 ILA 版只用于功能调试,两类数据不可混用;比特流头注明 instrumentation level。
七、两类数据:短而细 vs 长而粗
| 调试波形 | 活动/翻转统计 | |
|---|---|---|
| 形态 | 周期级 0/1 波形(VCD/FSDB 原料) | TC(总周期)、T0/T1、翻转次数、事件计数 |
| 时长 | µs~ms 级窗口 | 秒~小时级整段负载 |
| 带宽/存储 | 高(压缩后仍大) | 极低(周期读计数器) |
| 用途 | 找 bug、根因回放(24 活动覆盖率与性能调试闭环 热点/瓶颈/回放) | SAIF/功耗(25 真实激励驱动 ASIC 签核 SAIF 反标/边界)、热点、覆盖率 |
| 采样 | 全周期/事务限定 | 全周期计数或稀疏采样+置信修正 |
| 对扰动的态度 | 可接受重插桩的调试版 | 必须在固定插桩的代表性版本上采 |
长时活动统计还有一个工程要点:计数器读回不能停 DUT(用影子寄存器/硬件原子快照),读窗口之间的翻转才连续;多片计数器在同一触发/屏障时刻快照,活动数据才可跨片相加。
八、原始数据格式与交接
交给阶段 6 的采集产物(每个文件/流):
文件头: build_id, 片号, 采样时钟周期(freq/时钟ID), 采集模式(wave/activity),
probe 槽位→GateID 映射版本指针, TDM 时槽表指针, 触发条件, 时间基标定值
数据体: [周期戳/时间戳, 槽位号, 值/翻转] 或 [周期窗, 槽位号, T0, T1, toggles]
事件流: 触发、屏障、溢出/丢包计数、模式切换标记文件里只放 GateID 和槽位,不放 RTL 名字——语义全部在阶段 6 用同 build_id 的 info_table 注入。交接检查:头中 build_id 可读且与 manifest 一致(20 比特流烧录与四方版本一致 manifest/门禁)、无未声明溢出、槽位号都在当版 probe 表内、多片时间戳能归并。满足这些,23 Gate→RTL 数据回映 查表/聚合/SAIF才能开始。
九、探针基础设施的工程化:从临时拉线到可复用采集网络
很多团队的采集能力长期停留在「debug 某个问题时临时在 RTL 里引几根线、例化一个 ILA、问题关了就删掉」的阶段,下一个问题再重拉一遍。阶段 5~7 要支撑持续的活动分析和签核供数,必须把探针从一次性手艺升级为随设计一起构建、可配置、可复用的基础设施。这一节讲它的工程化形态。
核心思想是**「汇聚网络 + 可切换末端」的分层结构**。在设计内部预先规划一张探针汇聚网(probe fabric):各个功能模块把内部关键信号连到标准的观测点(probe point),观测点经一套复用器/时分网络汇聚到若干条「探针槽位」(物理上对应固定数量的 trace 数据线和 BRAM/导出端口)。平时大部分观测点不占资源或只占极小的连接面,调试时通过配置选择「这次把哪些信号、在什么条件下接到哪些槽位」,末端再按需挂三种采集器之一——交互式 ILA、常驻 trace 环形缓冲,或高速导出口。这样新增一次观测通常不必重新综合整个 DUT 结构(理想情况下在实现网表上做 mux 选择),编译开销从天级降到小时级,这正是「三条采集路径共用网络、只切末端」在工程上的价值。
观测点要和设计规范一起定义,而不是事后补。 成熟做法是在 RTL 编码规范里规定哪些信号「默认可观测」:状态机当前态、关键 FIFO 的水位与空满、握手的 valid/ready/state、仲裁授权、错误与中断、跨域同步器前后、以及主要流水级的数据有效与控制。用统一的命名和打包宏(如可综合的 probe wrapper)暴露它们,并通过配置宏在不同 build 里裁剪。这样一来,任何一块逻辑交付时都自带一组「标准体检信号」,bring-up 时不必反复找作者问「这个状态在哪」。观测点覆盖度本身应成为设计评审的一项检查项。
资源与扰动必须被显式预算和管理。 探针不是免费的:mux 网络增加负载、trace BRAM 挤占存储、导出口占用 SerDes/引脚,重插桩还会改变布局布线和时序。工程化的做法是分档:常驻轻量档(少量活动计数器、最关键状态,纳入时序收敛、可用于性能/活动供数)、中等 trace 档(较多槽位和较深缓冲,单独 build,结论只用于功能调试)、重 ILA 档(临时、最大可见性,明确不得用于任何定量结论)。每个 build 的比特流头写明 instrumentation level 和资源占用,下游(67 回映、69 签核)据此判断数据能不能用——这从源头杜绝了「拿调试版的活动率去算功耗」这类污染。
配置与语义解耦是可复用的关键。 人始终按 RTL 信号名提出观测需求(「我要看 u_core/u_fifo 的 wr_ptr」),但真正写进比特流的是槽位号/GateID;中间的翻译由当版编译产生的映射表完成,并带版本校验。这样采集脚本、调试用例可以长期用稳定的 RTL 名书写、跨 build 复用,而不必每次重新面对网表编号;一旦信号因重命名/优化消失,翻译阶段明确报错而不是静默采错。把「观测点规范、汇聚网络、可切末端、插桩分档、RTL 名到槽位的版本化映射」五件事做成随 RTL 一起版本管理的基础设施,采集就从个人技巧变成团队资产,也为后面回映与签核提供了稳定的数据入口。
十、采集侧的安全与保密:调试基础设施是把双刃剑
让信号「看得见」的同一套基础设施,也可能成为泄露设计机密和产品数据的后门。原型承载的往往是流片前最敏感的 RTL,而调试网络又天然提供了一条从主机(经 JTAG/PCIe/以太网)直达芯片内部信号和存储的通路。阶段 5 的采集设计必须同时回答「怎么看得见」和「怎么不让不该看的人看见」。
风险面首先来自接口本身。 JTAG 口在很多原型平台上是无认证的:物理上能接触下载器,就能读内部状态、甚至回读比特流;PCIe/以太网调试通道若沿用 bring-up 阶段的开放配置,部署到共享机房或外场后,任何能访问该网络的人都可能连上原型、dump trace、改写寄存器。跨多片系统的调试网络把这个面进一步放大——攻破一个节点可能路由到整组 FPGA。因此要明确区分「实验室开放构建」和「受限/外场构建」:后者关闭或熔断未使用的调试口、对必须保留的通道加认证与加密、比特流本身启用加密和防回读。
其次是数据外发的内容管控。 trace 和活动数据在回映前处于 Gate 域,但结合 info_table 就能还原出完整的 RTL 行为,其敏感度等同于源码;高速导出通道若不加密,链路上抓包即可获得大量内部数据。工程上要做到:采集配置(选哪些信号)走审批,能接触 RTL 信号名与 GateID 映射的人限于授权团队;导出数据按机密级管理、与映射表分开存放(只有 GateID 的原始 trace 单看是无意义的,两者分开存放可降低单点泄露价值);多租户共享的原型资源要在每次租借前后彻底清配置、确保上一个用户的比特流和 trace 不可被下一个用户恢复。
还要防「观测影响安全属性」。 错误注入、强制时钟、强制触发、绕过仲裁这类调试能力若在量产或交付环境里可被触达,就是功能安全漏洞。正确做法是把侵入式控制锁在独立的权限域后(解锁钥匙、仅调试 build 使能、硬件跳线/熔丝控制),并在设计时就保证「移除调试 IP」是一个干净的编译选项而非到处散落的条件编译——安全评审需要看到一份明确的清单:哪些观测点存在于交付配置、它们能到达什么、由谁授权。把可观测性按「实验室/共享/外场」分档管理,和按「轻量/中等/重 ILA」分插桩等级一样,都是成熟采集体系不可或缺的一维。
十一、典型采集故障的诊断手册:从现象到根因
阶段 5 的采集系统出问题时,现象往往经过了三层翻译(物理链路、采集硬件、回映软件),不按固定套路排查极易在错误的层级上空转。这一节给出一份按现象分类的诊断手册,核心方法是「沿数据流逐段插入已知模式,把故障空间二分」。
现象一:采到的数据全零或恒定。 先在 DUT 输入注入已知翻转图案(如步行位或递增数),沿「DUT 内部节点→观测点→mux 汇聚网→槽位→片上缓冲→导出文件」逐段检查。若 DUT 内部确认翻转而槽位数据恒定,问题在探针连接或 mux 选择配置(选错槽位、使能未开、信号被配置成另一组);若槽位有数据而导出文件恒定,问题在导出通路或位拼接顺序。还要排除一种「假故障」:该时钟域确实处于门控关闭状态——先确认 ICG 未关、时钟在翻转,再怀疑采集链路。
现象二:数据有翻转但与预期波形对不上。 最常见根因是时间基准错误:采样时钟配错(采到了相邻域时钟)、跨片时间戳未归并、TDM 时槽表版本与比特流不匹配,表现为波形「形状对但被拉伸/压缩或周期性错位」。第二类根因是位映射错误:总线拼接顺序、高低位颠倒、槽位宽度与信号宽度不符,表现为数值「有规律地错」。第三类是亚稳态污染:异步信号未在握手事件处对齐而是被直接采样,表现为偶发毛刺和不稳定值。诊断时先用同域固定分频时钟信号做「标尺」验证时间轴,再用计数器输出验证位拼接,最后才查复杂业务信号。
现象三:长运行后数据丢段或缓冲溢出。 先看出厂计数器:丢包计数、溢出计数、采集丢拍(backpressure stall)计数分别指示导出带宽不足、缓冲深度不足、主机消费太慢。短窗口正常而长运行丢数,几乎都是平均导出带宽低于活动数据产生速率,对策是降低采样率、增大片上缓冲、提高压缩率或缩短采集窗口,而不是盲目重试。跨片采集时若只有部分片丢段,要检查多片同屏障快照逻辑是否有片提前启动。
现象四:每次运行结果不稳定、不可复现。 先确认是否在确定性模式:激励种子是否固定、真实外设输入是否隔离或已录制回放、触发是否来自异步事件导致窗口起点漂移。若确定性模式下仍不稳定,排查跨时钟域采样点和多片触发广播的标定延迟是否随温度/布线变化(这通常意味着相关路径时序余量不足或未纳入时序收敛)。把「同一配置连跑三次、逐字节比对输出」作为采集链路自检项,任何不稳定都应在业务调试之前先解决,否则后续所有结论都建立在流沙上。
现象五:加了探针后 DUT 行为改变(海森堡故障)。 观测点引入的负载和插桩改变了布线与时序,原本临界的路径开始违例,或探针缓冲挤占导致存储/时钟资源变化。验证方法是对比插桩版与干净版的时序报告和资源差异,确认所有插桩路径已纳入收敛、且定量数据只在固定轻量插桩版上采集。这类问题的纪律意义在于:功能调试可以用重插桩版,但活动率、性能等数字绝不能来自它——两版数据混用会产生看似精确实则无法重现的结论。
把这五类故障连起来看,诊断的共性始终是三条:先验证物理与时间基准,再验证映射,最后才怀疑业务逻辑;在数据通路每一段都准备一个已知良好的测试图案;所有诊断动作和计数器读数都通过前面讲的调试寄存器可访问、可记录。 采集系统自身要被当成一个需要 bring-up 和回归的产品来对待,而不是调试时临时搭就的脚手架。
十二、从采集到决策:带宽经济学与采集规划
在真实项目里,采集永远是预算受限的活动:槽位有限、片上存储有限、导出通道有限、重新综合的时间有限。成熟团队不会「能采多少采多少」,而是像做芯片面积规划一样做采集规划,在信息价值和成本之间做显式取舍。这一节给出规划的思维框架。
先给信号分级,再分配槽位。 不是所有信号都值得采。第一级是架构关键信号:顶层状态机、跨模块握手、仲裁结果、错误与中断——它们数量少但解释力强,应常驻、几乎永远在默认观测集里。第二级是数据面摘要:FIFO 水位、valid/ready 时间序列、活动计数器——它们用极少位数概括大量行为,性价比最高。第三级才是完整数据通路的逐位波形:只在追查具体数据损坏 bug 时临时接入、用完释放。按这个梯度分配固定槽位,能保证任何一次构建都自带基础可观测性,而不必为每个新问题重综合。
理解带宽经济学的三个兑换关系。 一是「深度换宽度」:存储位数固定时,减少同时观察的信号数就能成倍延长采集窗口,排查偶发问题时宁可少看几路、看长一点。二是「摘要换原始」:在片上把原始翻转聚合成计数、直方图、最小最大值,导出数据量可降几个数量级,且多数性能与活动问题本来就只需要统计量;原始波形只在需要因果细节时短时采集。三是「时间换空间」:时分复用同一组槽位,在不同时间窗观察不同模块,适合排查轮流出现的问题,但牺牲同时性——跨模块相关的事件必须保证在同一窗口内,否则会错误地推断因果。
采集规划应跟随验证计划。 在项目早期就列出「最可能出问题的接口和场景」清单(新设计的模块、跨时钟域边界、与外部芯片的接口、性能瓶颈候选点、错误恢复路径),让默认观测集覆盖它们;随着验证推进,按实际发现的问题动态调整——这与 68 篇讲的覆盖率反哺插桩是同一个循环。规划文档要回答:每个计划中的调试问题,需要哪些信号、多长窗口、多高采样率、触发条件是什么。事先想清楚这些,上板后大部分常见问题都能用现有槽位直接查,只有极少数才需要为加探针而重新构建。
触发本身就是一种信息过滤。 无触发的连续录制把带宽浪费在大量正常周期上;好的触发条件(错误标志、水位越限、特定状态序列、性能计数器超阈)让片上存储只保留有信息量的窗口。多级触发更进一步:轻量条件常驻监视,命中后才启动细粒度采集,平时几乎零存储开销。把「异常检测」做进片上(简单比较器和小状态机成本很低),是高槽位利用率的关键设计。
最后把成本算进项目计划。 每次为加观测点重新综合实现,付出的是数小时到数天的机器时间和可能引入的扰动;因此采集基础设施的一次性投入(汇聚网络、标准观测点、分级槽位、可配置触发)回报极高——它把「发现问题→等重编译→再复现」的昂贵循环,变成「改配置→重跑场景」的廉价循环。以带宽经济学的视角做规划,采集系统就不再是调试时的被动补丁,而是阶段 5~7 整条数据供应链的第一道产能设计。
知识脉络

与系列及现有篇目的衔接
- 插桩:14 可观测性插桩 dont_touch/probe/可见性预算;trace 硬件:45 片上 trace 系统、22 ILA/VIO
- 下一步:23 Gate→RTL 数据回映 查表/聚合/SAIF
- 活动用于功耗:24 活动覆盖率与性能调试闭环 热点/瓶颈/回放、25 真实激励驱动 ASIC 签核 SAIF 反标/边界、23 功耗签核 SAIF
总结
一句话总结:片上运行时只有物理网线和触发器,采集到的每一位以探针槽位为键、最多对应到 GateID,RTL 语义全在服务器的 info_table 中,因此所有采集配置和数据都以 GateID/槽位为键、语义归属推迟到回映阶段;采集有三条路径——交互式 ILA(JTAG 带宽低、深度浅,适合单 bug)、自研片上 trace 环形缓冲(常驻、可压缩、非交互录窗口)、经 SerDes/PCIe 高速导出到主机(带宽 GB/s、深度无限,适合长活动统计),三者共用阶段 2 建好的 probe 汇聚网络、只切换末端;永远受「存储位数=信号宽度×采样深度」的三角约束,对策是探针分级+动态 mux 复用槽位、存储限定、翻转压缩和只累加 T0/T1/翻转计数的活动计数器模式;触发体系从比较/边沿到序列状态机触发、存储限定、可调 pre/post 窗口和多级粗触发启细采集,触发配置由人选 RTL 信号名、工具按当版 info_table 翻译成槽位并做版本校验;多片对齐靠同源时钟+同步清零周期计数器、跨片触发广播与标定延迟补偿、trace 块带片号和时间戳由主机按计数器而非到达顺序归并,割边信号按 TDM 时隙位置在回映时还原逻辑周期,异步域只在握手事件处建立对应;观测本身有扰动(负载、拥塞、BRAM 挤占、跨时钟亚稳、频率边缘 bug 的海森堡效应),所以性能/活动数据只能在固定轻量插桩且扰动已计入收敛的版本上采集,重 ILA 调试版数据不得混用,比特流头须注明 instrumentation level;数据分短而细的调试波形和长而粗的活动统计两类,后者用原子快照计数器不停 DUT、多片同屏障快照后才能相加;交接文件头包含 build_id、片号、时钟周期、采集模式、probe/GateID 表版本指针、TDM 时槽表和丢包计数,数据体只放 GateID 与时间值,经版本一致性、溢出、槽位有效性、时间戳可归并四项检查后才允许进入回映。