WGL波形生成语言—新手入门学习(例子篇1)

目录

1、wgl实例一:

(1)文件头信息

[(2)Modification History 和命令行](#(2)Modification History 和命令行)

(3)波形定义

(4)时间周期定义

(5)信号状态标记格式

(6)双向信号

[(7)PWM、QSPI、I²C 信号](#(7)PWM、QSPI、I²C 信号)


1、wgl实例一:

cpp 复制代码
{MD5Code : aced97d3f8aab323bf79d855d923f4a6}
{userDataSize:2559}
{******************************************************}
{}
{All Rights Reserved}
{}
{Project Name     : }
{File Name        : data/VIHL_R01_HIBOXSTERV100.wgl}
{Date             : 2022-02-09  14:53:04}
{AutoJtag version : 2020-01-07 No.1 V2.6.12}
{vParser  version : 2015-04-15 No.1}
{Author           : }
{Email            : }
{}
{Module Name      : DIG_TOP}
{Abstract         : }
{Called By        : }
{}
{Modification History}
{------------------------------------------------------}
{$Log: $}
{}
{}
{}
{******************************************************}

{CmdLine : jtag_test -bsdl bsdl/DIG_TOP.bsdl -wgl data/VIHL_R01_HIBOXSTERV100.wgl -tb data/vihl_tb.v -config cfg/jtagbsdl.cfg -mincycle 41666ps -replace -check_acpin_loopback off -check_inout_loopback off -nlegbc off -accept_clock -use_old_single_die_case on -testcase ViHL -project_name DIG_TOP}
{    bsdl/DIG_TOP.bsdl : mtime=2021-09-02,21:19:31; md5code=afbec5db6afc17416bc8259f0083b9f7}
{    cfg/jtagbsdl.cfg : mtime=2021-06-11,11:42:37; md5code=efaac2924c0619fb0e0e7f4e9770393b}

waveform DIG_TOP
    signal
        SFC_CLK  : input;
        SFC_HOLD  : input;
        SFC_DIN  : input;
        SFC_DOUT  : output;
        SFC_WP  : input;
        AD_TEST_DIG  : bidir;
        BIST_EN  : bidir;
        CLK_ATE_REF  : bidir;
        ERROR_FLAG  : bidir;
        QSPI_CLK  : bidir;
        QSPI_CS_N  : bidir;
        QSPI_D2  : bidir;
        QSPI_D3  : bidir;
        QSPI_DIN  : bidir;
        QSPI_DOUT  : bidir;
        SCL_SLV  : bidir;
        SDA_SLV  : bidir;
        SFC_CSN  : bidir;
        TEST_PWM0  : bidir;
        TEST_PWM1  : bidir;
        TEST_PWM2  : bidir;
        TEST_PWM3  : bidir;
        TEST_PWM4  : bidir;
        TEST_PWM5  : bidir;
        TEST_PWM6  : bidir;
        TEST_PWM7  : bidir;
        TEST_PWM8  : bidir;
    end

    timeplate timeplate_1 period 41666ps
        SFC_CLK := input[0ps:D,15000ps:S,35000ps:D];
        SFC_HOLD := input[0ps:P,1000ps:S];
        SFC_DIN := input[0ps:P,1000ps:S];
        SFC_DOUT := output[0ps:X,9000ps:Q,10000ps:X];
        SFC_WP := input[0ps:U,15000ps:S,35000ps:U];
        AD_TEST_DIG := input[0ps:P,1000ps:S];
        AD_TEST_DIG := output[0ps:X,9000ps:Q,10000ps:X];
        BIST_EN := input[0ps:P,1000ps:S];
        BIST_EN := output[0ps:X,9000ps:Q,10000ps:X];
        CLK_ATE_REF := input[0ps:P,1000ps:S];
        CLK_ATE_REF := output[0ps:X,9000ps:Q,10000ps:X];
        ERROR_FLAG := input[0ps:P,1000ps:S];
        ERROR_FLAG := output[0ps:X,9000ps:Q,10000ps:X];
        QSPI_CLK := input[0ps:P,1000ps:S];
        QSPI_CLK := output[0ps:X,9000ps:Q,10000ps:X];
        QSPI_CS_N := input[0ps:P,1000ps:S];
        QSPI_CS_N := output[0ps:X,9000ps:Q,10000ps:X];
        QSPI_D2 := input[0ps:P,1000ps:S];
        QSPI_D2 := output[0ps:X,9000ps:Q,10000ps:X];
        QSPI_D3 := input[0ps:P,1000ps:S];
        QSPI_D3 := output[0ps:X,9000ps:Q,10000ps:X];
        QSPI_DIN := input[0ps:P,1000ps:S];
        QSPI_DIN := output[0ps:X,9000ps:Q,10000ps:X];
        QSPI_DOUT := input[0ps:P,1000ps:S];
        QSPI_DOUT := output[0ps:X,9000ps:Q,10000ps:X];
        SCL_SLV := input[0ps:P,1000ps:S];
        SCL_SLV := output[0ps:X,9000ps:Q,10000ps:X];
        SDA_SLV := input[0ps:P,1000ps:S];
        SDA_SLV := output[0ps:X,9000ps:Q,10000ps:X];
        SFC_CSN := input[0ps:P,1000ps:S];
        SFC_CSN := output[0ps:X,9000ps:Q,10000ps:X];
        TEST_PWM0 := input[0ps:P,1000ps:S];
        TEST_PWM0 := output[0ps:X,9000ps:Q,10000ps:X];
        TEST_PWM1 := input[0ps:P,1000ps:S];
        TEST_PWM1 := output[0ps:X,9000ps:Q,10000ps:X];
        TEST_PWM2 := input[0ps:P,1000ps:S];
        TEST_PWM2 := output[0ps:X,9000ps:Q,10000ps:X];
        TEST_PWM3 := input[0ps:P,1000ps:S];
        TEST_PWM3 := output[0ps:X,9000ps:Q,10000ps:X];
        TEST_PWM4 := input[0ps:P,1000ps:S];
        TEST_PWM4 := output[0ps:X,9000ps:Q,10000ps:X];
        TEST_PWM5 := input[0ps:P,1000ps:S];
        TEST_PWM5 := output[0ps:X,9000ps:Q,10000ps:X];
        TEST_PWM6 := input[0ps:P,1000ps:S];
        TEST_PWM6 := output[0ps:X,9000ps:Q,10000ps:X];
        TEST_PWM7 := input[0ps:P,1000ps:S];
        TEST_PWM7 := output[0ps:X,9000ps:Q,10000ps:X];
        TEST_PWM8 := input[0ps:P,1000ps:S];
        TEST_PWM8 := output[0ps:X,9000ps:Q,10000ps:X];
    end

(1)文件头信息

cpp 复制代码
MD5Code : aced97d3f8aab323bf79d855d923f4a6
userDataSize:2559
Project Name :
File Name : data/VIHL_R01_HIBOXSTERV100.wgl
Date : 2022-02-09  14:53:04
AutoJtag version : 2020-01-07 No.1 V2.6.12
vParser  version : 2015-04-15 No.1
  • **MD5Code:**文件内容的校验码,用于验证文件是否被篡改。
  • **userDataSize:**用户数据区大小,2559 字节。
  • AutoJtag version 和 **vParser version:**生成工具和解析工具的版本信息。
  • **Date:**生成日期。

(2)Modification History 和命令行

cpp 复制代码
CmdLine : jtag_test -bsdl bsdl/DIG_TOP.bsdl -wgl data/VIHL_R01_HIBOXSTERV100.wgl ...
  • 这是用 AutoJTAG 工具生成波形的命令行。
  • **-bsdl**指定 BSDL 文件,这是一个标准边界扫描描述文件(芯片的 I/O 定义)。
  • **-wgl**指定输出波形文件(你贴的这个文件)。
  • **-tb**指定 testbench 文件,用于仿真。
  • -config 指定配置文件。

(3)波形定义

cpp 复制代码
waveform DIG_TOP
    signal
        SFC_CLK  : input;
        SFC_HOLD  : input;
        SFC_DIN  : input;
        SFC_DOUT  : output;
        ...
        TEST_PWM8  : bidir;
    end
  • waveform DIG_TOP 表示这个波形文件是针对 DIG_TOP 模块的。
  • **signal:**定义了所有信号和方向:
  • **input:**输入信号(由测试系统驱动芯片)
  • **output:**输出信号(芯片输出到测试系统)
  • **bidir:**双向信号(可能既是输入又是输出,如 I²C、QSPI 等接口)
  • 这里包括:
  • **SFC_* 系列:**可能是 Flash/SFC 控制信号
  • **QSPI_* 系列:**QSPI 接口信号
  • **SCL_SLV / SDA_SLV:**I²C 信号
  • **TEST_PWM*:**测试用 PWM 信号
  • **ERROR_FLAG:**测试错误标志
  • **BIST_EN:**内建自测试使能信号

(4)时间周期定义

cpp 复制代码
timeplate timeplate_1 period 41666ps
  • **timeplate_1**是这个时间标记表的名字。
  • period 41666ps 表示这个波形的一个完整周期是 41666 皮秒 ≈ 41.666 ns
  • 这通常对应芯片的测试时钟周期。

(5)信号状态标记格式

cpp 复制代码
SFC_CLK := input[0ps:D,15000ps:S,35000ps:D];
  • **SFC_CLK**是信号名。
  • input示信号在测试中作为输入驱动芯片。
  • [0ps:D,15000ps:S,35000ps:D] 表示 信号在周期中的状态变化
    • 0ps:D → 在 0ps 时,状态为 D(下降沿/低电平?)
    • 15000ps:S → 在 15000ps 时,状态变为 S(高电平/稳定?)
    • 35000ps:D → 在 35000ps 时,状态变回 D

注:状态字母(P、S、D、U、X、Q)是 AutoJTAG 的内部符号,通常代表:

  • P → 使用之前的状态值(Previous format shape),即保持之前周期的值不变。
  • S → 从 pattern 强制替换(Force logic substituted from pattern),即使用 pattern 中给定的值。
  • D→ 低电平(0)或下降沿状态(具体看工具定义,一般表示逻辑 0)。
  • U →高电平(1)或未定义/未驱动状态(具体看工具定义,一般表示逻辑 1)。
  • X → 未知或不关心(Don't care)。
  • Q → 输出有效(通常表示输出被采样或已经稳定)。

实际意义可能需要参考 AutoJTAG 文档。

(6)双向信号

AD_TEST_DIGBIST_ENQSPI_* 等信号,同时有 input 和 output:

cpp 复制代码
AD_TEST_DIG := input[0ps:P,1000ps:S];
AD_TEST_DIG := output[0ps:X,9000ps:Q,10000ps:X];
  • 输入阶段:驱动芯片。
  • 输出阶段:采集芯片输出。
  • 这正是边界扫描测试常用的 驱动/采样切换

(7)PWM、QSPI、I²C 信号

  • **TEST_PWM0~8:**测试用 PWM 信号,周期内状态变化被明确标记。
  • **QSPI_*:**QSPI 总线时序,包括 CLK、CS、数据线。
  • **SCL_SLV/SDA_SLV:**I²C 总线信号。

每个信号都有 input/output 状态,说明 JTAG 测试会在不同时间点对这些信号 驱动采样

相关推荐
西岸行者6 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意6 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码6 天前
嵌入式学习路线
学习
毛小茛6 天前
计算机系统概论——校验码
学习
babe小鑫6 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms7 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下7 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。7 天前
2026.2.25监控学习
学习
im_AMBER7 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J7 天前
从“Hello World“ 开始 C++
c语言·c++·学习