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 测试会在不同时间点对这些信号 驱动采样

相关推荐
不羁的木木2 小时前
【开源鸿蒙跨平台开发学习笔记】Day03:React Native 开发 HarmonyOS-GitCode口袋工具开发-1
笔记·学习·harmonyos
im_AMBER5 小时前
AI井字棋项目开发笔记
前端·笔记·学习·算法
zxguan6 小时前
Springboot 学习 之 下载接口 HttpMessageNotWritableException
spring boot·后端·学习
IT阳晨。7 小时前
【神经网络与深度学习(吴恩达)】神经网络基础学习笔记
深度学习·神经网络·学习
embrace998 小时前
【C语言学习】数据在内存中存储
java·c语言·开发语言·汇编·c++·学习·算法
小刘摸鱼中9 小时前
数电-Verilog HDL学习
学习
LFly_ice9 小时前
学习React-25-React-路由懒加载
javascript·学习·react.js
程序员馨馨10 小时前
git常用命令学习以及冲突解决
git·功能测试·学习
yesyesido17 小时前
AI电脑配置推荐工具:智能匹配需求,一键生成个性化硬件方案
人工智能·科技·学习·程序人生·生活