WGL波形生成语言—新手入门学习(一)

📅 2026/8/20 18:22:43
WGL波形生成语言—新手入门学习(一)
笔者也正在学习参考资料并进行个人解读后续应该会添加例子分享如有错误请不吝赐教。WGL波形生成语言—新手入门学习二WGL波形生成语言—新手入门学习三WGL波形生成语言—新手快速入门—导航目录一、介绍二、WGL 的适用场景三、WGL 与 Wavemaker四、WGL 语言规范1、WGL 语法符号规范2、注释3、Identifiers4、Numbers5、Reserved Words6、Strings​​​​​​​1WGLWaveform Generation Language本质一种文本语言ASCII 格式用来描述WDB里的数据。作用可以用文本编辑器修改波形数据库里的内容。能修改 WaveMaker 编辑器看不到的部分比如 ATE 专用字段。可以用来跨平台迁移 WDB 或从 CAE 输出生成 WDB。特点自由格式每行最长 512 个字符。支持宏、include 文件、注释、annotations 等。关键字不区分大小写但用户自定义名字大小写敏感。二进制模式文件中不能有普通注释。简单理解WGL 就像波形数据库的“源码”文本版。2WDBWaveform DataBase本质一个存储波形数据的数据库文件。作用WaveMaker 和 TDS 系统使用它来控制测试波形、信号、时序等。保存信号名称、方向、波形轨迹、TimePlate时序模板、事件数据等信息。特点二进制和文本两种形式通常用 WGL 文本编辑然后再转换成 WDB。不是跨平台可移植的除非通过 WGL 导出/导入。简单理解WDB 是波形数据库的“成品”机器和测试设备直接用它工作。3WaveMaker本质图形化工具/编辑器用来查看、编辑 WDB。作用用图形界面生成、修改波形数据库。可以创建 TimePlate时序模板、定义信号、设置波形轨迹。限制有些 ATE 专用字段或底层属性在 WaveMaker 中看不到。复杂批量修改不方便需要用 WGL 文本编辑。简单理解WaveMaker 是 WDB 的“可视化编辑器”好用但功能有限制。WGL (文本源码) → WGL In Converter → WDB (机器/测试可用)WDB → WGL Out Converter → WGL (可编辑文本)WaveMaker ←→ WDB (可视化编辑)WaveMaker主要是可视化操作适合日常编辑。WGL是底层文本操作适合高级修改、迁移、批量处理。WDB是最终文件直接被测试设备或系统使用。一、介绍Waveform Generation LanguageWGL是一种数据描述语言。它用于表示 Waveform DataBaseWDB中数据的可编辑 ASCII 形式使你能够使用系统的文本编辑器来完全自定义该数据库。二、WGL 的适用场景由于你可以通过 WaveMaker Browser 轻松地将现有的 TDS 标准事件格式SEF数据库转换为 WDB并且可以使用 WaveMaker 的编辑器来编辑新的或已有的数据库因此你可能很少需要直接使用 WGL。然而WGL 能让你修改 WDB 中某些 WaveMaker 编辑器无法访问的部分。使用 WGL 可以做到1、在不同主机平台之间转移 WDB。否则 WDB 本身并不是可移植的。2、查看并编辑 WDB 中与 ATE自动化测试设备相关的部分。这些内容无法通过 WaveMaker 的编辑器访问。3、仅通过 WGL 创建一个 WDB。这样即使用户只有 TDS 的 WaveBridge 模块、但没有 WaveMaker也能使用生成的 WDB 来运行 WaveBridge。4、将 CAE 仿真生成的二进制模式数据作为输入提供给 TDS。更多信息见 2-102 页的Binary WGL。5、使用你喜欢的文本编辑器进行高级文本处理操作例如搜索替换。注意不要编辑包含二进制模式数据的 WGL 文件编辑器可能会删除其中的空值模式位。WGL 被设计成与 TDS 的WGL In Converter和WGL Out Converter模块配合使用。关于如何使用 WGL In Converter 和 WGL Out Converter 的详细说明请参考《In Converters Guide》的第 15 章以及《Out Converters Guide》的第 16 章。三、WGL 与 Wavemaker由于 WGL 用来描述一个 WDB因此它的语言结构必然反映 WDB 的组织方式。如果你曾经使用 WaveMaker 的编辑器查看过 WDB你会很容易看出这种相似性。许多在 WaveMaker 编辑器中可见的实体例如 ATE Pin 和 DUT Pin 字段在 WGL 中都能轻松识别。不过WGL 中也有一些结构与 ATE 相关而这些内容在 WaveMaker 编辑器中是不可见的。WGL 的 Formats 程序块就是这样的一个例子。WaveMaker 编辑器与 WGL 程序结构之间相似性的一个典型例子就是WaveMaker 的 Timing Editor。Timing Editor 允许你编辑一个 TDS 的时序模板TimePlate。TimePlate 中包含若干个槽位用于放置信号以 signal、group 或 bus 名称标识、信号方向指示以及波形轨迹。槽位就是输入信号名称的区域。图 2-1 展示了名为Fetch的 TimePlate 在 Timing Editor 中的样子。你会注意到 TimePlate 的名字、信号名称、信号方向以及波形轨迹所有这些实体都可以通过 WGL 来描述。所谓timing channel是一种抽象实体包含信号、组或总线名称、方向信息以及事件和时序数据。下面的示例展示了 TimePlate Fetch 在 WGL 中的对应描述。请注意TimePlate 的名称、信号名称、方向、波形轨迹以及通道都与 Timing Editor 中显示的实体一一对应。四、WGL 语言规范WGL 程序是 WDB 内容的 ASCII 文本表示形式。该语言是自由格式的多个空白字符会被视为一个空白字符换行符会被忽略并且每行长度限制为512 个字符。WGL 的保留字不区分大小写关键词可以任意大小写混用。但对于用户自定义的名称和 pattern 状态字符大小写是有区别的。该语言使用 ASCII 可打印字符作为合法输入字符。WGL 支持宏、include 文件、行内注释、编译后注释等特性以及许多编程语言常见的操作。格式自由每行最多512个字符关键字不区分大小写1、WGL 语法符号规范在描述 WGL 语法时使用了 Backus-Naur 范式BNF的一种变体两个冒号加等号 (::)表示一个语法类别与其语法规则之间的关系。(::是“被定义为”的意思)双引号“ ”或粗体表示保留字、印刷符号或参数的字面使用。如果要字面使用双引号则用单引号‘ ’将其括起来。尖括号 表示使用用户自定义名称、整数或浮点数。等号表示对 WGL 保留字或词法原语的定义。方括号[ ]表示可选语法出现次数为 0 次或 1 次。花括号{ }表示对括号内语法的不定次数重复0 到 n 次。这种表示法也意味着括号内的语法是可选的因为重复 0 次即表示可选。竖线|表示语法的不同选择。圆括号( )表示语法选项的分组。二进制模式文件使用 WGL 语法表示法同时还包含一些额外的符号表示。详细内容见第 2-107 页的Binary File Format。在文本中对 WGL 语法元素使用斜体表示更高级的 BNF 结构。这些结构会在对应的 BNF 定义中展开为完整定义。例如对FormatDecl的引用将在相应的 BNF 产生式中如下显示用户自定义的标识符例如TDSstate在第 2-134 页的WGL 术语词汇表中有定义。注意不要将 BNF 中使用的大括号{}与 WGL 中的相同符号混淆。BNF 使用大括号表示括号内动作的重复而 WGL 使用大括号来标记数据库注释。2、注释和其他编程语言一样你可以在 WGL 程序中添加解释性注释以增强功能上的清晰性。这些注释以井号#开头并且在运行 WGL In Converter 时不会被包含到 WDB 中。注释可以插入到 WGL 程序的任何部分但不能插入到 WGL 注释中。见第 2-64 页的Annotations。在 WGL 程序中插入注释的方法是输入一个井号#后跟文本字符串。该行中从井号开始直到行结束回车符为止的所有字符都属于注释内容。下面将给出 Comment 特性的完整 BNF 语法表示。WGL 程序中注释的示例二进制模式文件不能包含注释只能包含注释标记annotations。3、Identifiers标识符是信号、总线、组、TimePlate、格式、时序发生器、模式、子程序等的字母数字名称。标识符必须以字母开头并且不能包含空白字符如空格、制表符、换行符或下列分隔符字符以字母为开头不能含有空格和分界符标识符不能与任何 WGL 保留字冲突。任何包含特殊字符或保留字的名称都必须用双引号“ ”括起来作为字符串输入。在本章的 WGL 语法描述中标识符用尖括号 括起。不能和保留字冲突标识符包含在中4、Numbers除非另有说明用户自定义的数值都是整数范围从零到系统架构可表示的最大整数。任何例外情况会在本章相应的 WGL 语法描述中注明。在本章的 WGL 语法描述中用户自定义的数值用尖括号 括起。5、Reserved WordsWGL将其特定词汇保留为专用语言集合数据描述与过程指令均可由此生成。这些保留词汇仅能以符合语法规范的形式出现在WGL语句中。以下为WGL保留字列表与常规编程语言不同WGL无法限制或过滤保留字的使用。若设计中的信号名称或任何其他应用特定名称与WGL保留字冲突则必须将该信号名称用双引号“ ”括起以使其与保留字区分。此操作需在程序中出现该信号名称的所有位置全程执行。当用户定义的标识符和关键字重复时可以用双引号6、Strings字符串是指由双引号“ ”包围的任意字符序列。在字符串中若需使用双引号必须在每个双引号前加上反斜杠\若需使用反斜杠则必须在每个反斜杠前再加一个反斜杠。例如字符串\design“1”\对应的WGL语法为“\\design\“1\”\\”