STDF-Viewer 数据管理指南:让千万条测试记录与界面始终同步 📅 2026/8/21 19:54:18 STDF-Viewer 数据管理指南让千万条测试记录与界面始终同步【免费下载链接】STDF-ViewerA free GUI tool to visualize STDF (semiconductor Standard Test Data Format) data files.项目地址: https://gitcode.com/gh_mirrors/st/STDF-ViewerSTDF-Viewer 是一款免费桌面工具用于可视化和分析 STDF半导体标准测试数据格式测试文件。这篇文章的核心是它的数据管理方式界面里的曲线、表格、统计量如何始终与文件里的测试数据保持一致。答案浓缩成三句话——只解析一次数据落到一个 SQLite 数据库三层代码单向依赖每一次界面更新都由信号驱动。为什么每次直接读文件走不通一个 STDF 文件动辄几百 MB包含几万到几百万条 DUT待测器件记录。如果每个面板都直接打开文件看一次晶圆图解析一遍切到趋势图再解析一遍。界面会卡死不同面板还可能读到不一致的中间结果。STDF-Viewer 的做法是解析只做一次之后所有查询走数据库。文件读取被压缩到解析层——支持不解压直接打开的 ZIP、GZ、BZIP 格式也在这里处理界面进程不碰原始文件。解析一次把 STDF 测试数据存进单一 SQLite 数据库解析完成后记录写入一个 SQLite 数据库文件形式的关系型数据库查询它远比重新解析文件快。界面要显示的每个数字都从这个数据库取。解析本身由 Rust 模块 deps/rust_stdf_helper 完成界面进程在解析结束后不再接触文件。连接点在 deps/DatabaseFetcher.pyself.connection sqlite3.connect(dataBasePath)就这一行。此后所有数据访问都走同一个连接单一数据源的好处很直接两个面板显示同一个测试项拿到的永远是同一组数字不存在各存各的副本造成的偏差。会话缓存也挂在同一个地基上。Utilities 里的 Save Session 把解析结果存成会话文件下次打开只需重连数据库文件不再被读一遍。三层分离让界面只问数据、不碰数据数据访问路径分三层依赖关系严格单向UI → DataInterface → DatabaseFetcher。DatabaseFetcherSQL 的唯一出口这一层负责写 SQL、取回原始数据测试项清单、DUT 计数、bin 分布、晶圆坐标。每个方法对应一次明确查询它不知道任何窗口和控件的存在界面逻辑改坏了也不会污染查询层。DataInterface给界面留一个只读窗口deps/DataInterface.py 是状态只读的落点类注释写得很直白class DataInterface: provides APIs for STDF-Viewer UI to retrieve data from database... The main purpose is to decouple IO code from GUI logicUI 只许问不许拿——整个类没有写数据的方法。原始数据取回后均值、标准差、Cpk过程能力指数衡量数据离规格限还有多远等统计量在这一层算完交给界面的是图表能直接画的成品。信号驱动屏幕上没有一个像素无缘无故移动界面的所有变化都由 Qt 信号事件机制触发。加载线程解析完发出信号主窗口收到 DataInterface 后才逐个刷新面板Fail Marker 把失败测试项标红、Cpk 低于阈值的标橙这些着色结果全部在数据层算好表格只负责接收和绘制。这带来变更可追踪性屏幕上哪个数字不对沿信号链倒着查就能定位到是哪一次查询出了问题。让加载过程可见请求中、成功、失败三态打开大文件是长任务界面不能装死。STDF-Viewer 把过程映射成三个状态请求中加载窗口显示进度条后台线程的updateProgressBar回调逐步刷新它成功sendDataInterface把数据接口交给主窗口各面板依次加载自己的数据失败About 下的调试面板能查看完整错误日志记录类型分析器能定位触发问题的记录文件相关的报错可以按步骤提交。重活全部跑在 QThreadQt 的后台线程上主线程只负责绘制。Fail Marker 扫描、报表生成都走这个模式导出线程甚至用互斥锁加条件变量线程间的同步机制逐步把数据交回界面生成报表时主窗口不冻结。大文件下的四个坑 别把全部 DUT 一次塞进表格。一个文件常有几千个 DUTDUT Summary 表格默认只装载首批数据确需全量时右键选 Fetch All Rows 再拉取。这是大文件不拖慢界面的第一道防线。别在主线程上解析。解析、扫描、导出都是后台任务界面只负责呈现请求中、成功、失败三种状态。别让同一个文件被解析两遍。会话缓存保存解析结果重新打开就是重连数据库。别给每个控件发一份数据副本。所有表格和图表共用同一个 DataInterface筛选条件变化如切换 head 或 site时走同一条查询路径重取两个面板永远不会显示互相矛盾的数字。想看原始记录留了后门统计视图会隐藏大部分细节。确需核对原始记录时工具给了两条退路Utilities 里的 Converter 把 STDF 记录逐条倒进 xlsx 表格调试面板的记录分析器扫描文件并输出结果。这个后门只用于核对——如果它成了日常工具说明常规视图的结果已经不可信该回头查数据链路里是哪一层出了偏差。【免费下载链接】STDF-ViewerA free GUI tool to visualize STDF (semiconductor Standard Test Data Format) data files.项目地址: https://gitcode.com/gh_mirrors/st/STDF-Viewer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考