带你秒懂STIL文件

STIL?这是什么鬼?我为什么要谈这玩意儿?相信很多工程师,特别是刚入行或准备入行的兄弟们或多或少听过测试相关的东西。如果你想做DFT工程师的,测试工程师的,而对于设计/验证工程师们如果能了解下这个玩意儿,在和DFT/测试工程师聊技术聊测试pattern的时候就不会一脸懵逼了。

好了,言归正传。STIL就是Standard Test Interface Language (标准测试接口语言),IEEE1450.x标准就是专门说的她,语法上很有内涵的赶脚。但很明显,这就是用来描述测试pattern用的语言(Synoposys会采用STIL来描述扫描测试的过程,也就是SPF),就像verilog是用来描述硬件电路的语言一样,会有很多语法规则滴。那我们来好好详谈语法规则吧,你肯定晕菜,我也会晕的......所以放弃吧。

通常STIL格式的pattern文件都是工具生成出来的,自己要像用verilog写设计一样写一个完整的pattern文件,这个......你还是让我回家种地吧。

其实对这门语言的了解不需要很深入,只需要能够读懂,然后能依葫芦画瓢的做点小修改就够用了。好了,下面就跟着我来看看应该怎么快速读懂一个STIL描述的pattern文件。

请看这个例子,图1:

图1

这是一个比较简短的扫描测试STIL格式的pattern文件,从左往右基本显示了主要的几个部分。看到这样一个文件,感觉无数草泥马在眼前飞奔有木有?

我们这时需要思考一个问题,那就是这样一个文件记载的究竟是什么逻辑?既然是测试用的pattern文件,显然它最主要的功能就是描述测试所需要用到的输入输出管脚信号名,以及测试的过程。这个过程就包含如何给激励和给什么激励,以及最后期望得到什么输出和如何判断比较输出。从这个角度出发看待这个文件的话,其实就不难了。首先看看测试用的输入输出管脚怎么描述的,见图2。

图2

(1) 这个有点复杂。是定义后面WaveFormTable和vector里给的值的含义。注意这里这个定义是针对双向IO的,”0X”就表示给’0’输入激励同时不做任何输出期望,在vector中就用’0’来完全表示,即有这样的映射定义”0X->0”。0就是输入0,1就是输入1,Z就是高阻输入,N就是没有输入,X表示不期望输出,H表示期望输出高,L表示期望输出低,T表示三态输出。

管脚信号的定义有了,那下面就该是定义这些管脚的输入输出的时序波形了,这个定义模块就是Timing里的WaveFormTable了。这个很重要,基本看懂了这个,就看懂了这个STIL文件的一半。在讲解这个时序波形定义之前,需要普及以一个小概念,不然理解要讲的东西就费劲了。这个概念就是测试波形的周期化。简单说来就是测试过程中,所有信号的激励都是按照时钟的周期一个周期一个周期给的,对输出的期望也是一个周期一个周期进行对比检查的。所以测试pattern在波形上是很有规律性的,而这个规律性就是通过下面WaveFormTable来定义的,见图3。

图3

(2)波形表的命名的字符串是被后面给定激励向量时声明调用的。用来指定下面所给的激励向量要使用的波形是什么样的。

在上面这个定义中,细心的你肯定发现对信号组”_default_In_Timing_”定义了四次,分别针对可能的四种输入激励(0,1, Z和N)。其实如果四种输入激励给定的时间点是一样的话,是可以结合成一个定义语句的。像上例这样定义四次,却是可以调节任意一个输入激励的给定时间点,因而可能为仿真和基台上的测试调试提供便利性。

这样的WaveformTable是可以定义很多个的。在一个典型的扫描测试pattern里,一般可以分别给”test setup”,”shift”和”capture”三个过程各自定义不同的波形。见图1中的”_shift_WFT_”,”_capture_WFT_”和”_setup_WFT_”三个WaveformTable,都大同小异。

读懂了波形的定义,还差点什么就可以了解整个扫描测试的波形时序了呢?那就是下面的”Procedures”定义:图4

图4

这个扫描测试过程定义中的”load_unload”过程就是定义常说的”shift”过程,因为在”shift”过程中,既有扫描输入(load)又有扫描输出(unload)。另外这里有四个(怎么又是四???别想太多,纯属巧合,如有雷同。。。)”*_capture”过程的定义,这个是为不同的pattern类型准备的。在后面具体的pattern里会有调用声明要用哪个capture过程。

有没有发现,其实STIL文件里也是一套套一套,套路相当深啊。有点晕了......容本宝宝晕一会儿先。。。。。。

到这里,其实我们已经差不多可以在脑子里对这个扫描测试的波形有概念了,基本可以画出个大概的波形图了。你不信???本宝宝就画给你看:图5

图5

具体的波形就要依据定义在Pattern模块里的vector赋值给TMS, TDI和 PAD1了。TDO和PAD2是输出,实际输出波形是依赖内部电路逻辑的,可以说不可知,但是我们可以对他们的输出作期望值比较,这个在Pattern模块里也是有给定的。见下图6:

图6

到此为止,相信你已经也可以比较轻松的看懂这个STIL格式的扫描pattern文件了吧。是不是突然发觉其实也不难嘛,有木有?J

额外说一句,与STIL格式类似的还有WGL格式,在理解波形上,本宝宝可以负责任的说思路是一致的,在语法上也是有很多相通的地方。

带你秒懂STIL文件相关推荐

  1. 一图秒懂 - MD文件语法标签,最简单的markdown入门

    代码-效果图 https://rudon.blog.csdn.net/article/details/104272292 (完整代码在本文最下面) 实时查看MD文件效果 - 在线Markdown预览 ...

  2. python打开setting_Django自带日志 settings.py文件配置方法

    Django settings.py文件配置部分: # logging配置 log_file = '/home/nagain/learn/log' log_file_path = os.path.jo ...

  3. windows环境实现批量加密文件,并创建加密文件同名(不带后缀)的文件夹,然后把加密文件和图片和文本放入这个文件夹。

    1. 需求 我想把资源文件先加密成压缩文件,然后同时创建每个加密压缩文件同名的文件夹,同时需要把这个加密文件拷贝到这个同名的文件夹,然后还需要把一个图片和一个文本文档同时放进这个文件夹,然后在不加密压 ...

  4. php 拖拽 上传文件 进度,在Vue中如何实现带进度条的文件拖动上传功能

    这篇文章主要介绍了Vue实现带进度条的文件拖动上传功能,本文通过实例代码给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下 1. 基本界面 content="width=devic ...

  5. 使用Windows自带的工具计算文件的 MD5 SHA1 SHA256

    使用Windows自带的工具计算文件的 MD5 SHA1 SHA256 很多网站会提供下载文件的校验码信息,在下载文件之后,如何方便地计算MD5 SHA1 SHA256等校验和呢?之前我常用的工具是H ...

  6. 用VSCode打开带图片的.md文件

    最近自学python发现一个特别好的教程,里面文档都是.md文件并且带图片的,我用sublime,UE等都能打开 不能显示图片,所以就找到用VSCode打开. 把大象放进冰箱分三步,打开带图片的.md ...

  7. 将HTML文件转换为PDF文件(Thymeleaf模板转换,简单解决中文问题, 解决HTML带图片转换PDF文件问题)

    将HTML文件转换为PDF文件 一.导入依赖 <!-- itext生成Pdf --> <dependency><groupId>com.itextpdf</g ...

  8. python图片保存为txt文件_python实现对文件中图片生成带标签的txt文件方法

    在深度学习中经常需要生成带标签的图片名称列表,xxxlist.txt文件,下面写一个简单的python脚本生成该文件列表. import os def generate(dir,label): fil ...

  9. Python+pywin32批量读取带密码的Excel文件数据导出为CSV文件

    好消息:"Python小屋"编程比赛正式开始 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社, ...

最新文章

  1. 下一代零售技术:物联网、人工智能和5G将如何影响购物体验
  2. Hyperledger Fabric Java SDK最新教程
  3. oracle cube排序,Oracle命令CUBE
  4. ret2dlresolve归纳
  5. Linux 学习笔记 (四)Ubuntu14.04 解决上网问题安装无线网卡驱动
  6. DEV、SIT、UAT、PRD的意思
  7. 飞机订票系统- c语言课程设,C语言课程设计飞机订票系统设计
  8. 模型预测控制(MPC)解析(一):模型
  9. 一文详解工业相机和镜头选取
  10. 常用的条形码类型以及如何选择条码类型、条形码字体和条形码控件
  11. java数字转中文_java阿拉伯数字转中文数字
  12. Pr入门系列之二:导入与管理素材
  13. 字体单位 html,CSS字体单位
  14. hypermesh闪退启动解决(最全!!!)
  15. idea 启动参数设置
  16. HDU 5761 多校联合 Rower BO
  17. Zbush建模笔记_036_Zsketch 创建初始模型(与Z球建模配合使用)
  18. 用Python端对端数据分析识别机器人“僵尸粉”
  19. iOS中static静态全局变量
  20. leetcode系列-206.反转链表

热门文章

  1. MinIO实现分布式文件服务
  2. SAP归档操作(客户主数据)
  3. 苹果usb设置在哪里_一款PC操控手机的神器,安卓/苹果都能用
  4. C#【高级篇】 C# 多线程
  5. CAD初学者笔记AutoCAD2008版本
  6. 巫妖易语言+js逆向+安卓逆向
  7. SpringBoot项目打包部署到其他电脑或者服务器上运行
  8. 邮件客户端用IMAP还是POP3,为什么?Thunderbird 雷鸟和免费腾讯企业邮箱
  9. android初学者错误,iMobile9DforAndroid的入门错误
  10. Android手机部分名词浅谈