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

相关推荐
Bathwind-w6 小时前
FOC开发工具学习
学习
Coder_Boy_6 小时前
DDD从0到企业级:迭代式学习 (共17章)之 四
java·人工智能·驱动开发·学习
deng-c-f7 小时前
Linux C/C++ 学习日记(49):线程池
c++·学习·线程池
HyperAI超神经7 小时前
【vLLM 学习】Prithvi Geospatial Mae
人工智能·python·深度学习·学习·大语言模型·gpu·vllm
TL滕9 小时前
从0开始学算法——第十八天(分治算法)
笔记·学习·算法
思成不止于此9 小时前
【MySQL 零基础入门】MySQL 约束精讲(一):基础约束篇
数据库·笔记·sql·学习·mysql
小黄人软件10 小时前
【过度滥用眼】真正的理解,从闭眼开始:如何把“眼睛视觉依赖”降到最低,把大脑效率提到最高。【最少用眼的工作与学习体系】
学习
老华带你飞10 小时前
建筑材料管理|基于springboot 建筑材料管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习·spring
L.fountain11 小时前
图像自回归生成(Auto-regressive image generation)实战学习(一)
人工智能·深度学习·学习·计算机视觉·图像自回归
TL滕11 小时前
从0开始学算法——第十八天(分治算法练习)
笔记·学习·算法