本文转自:http://www.eetop.cn/blog/html/28/1561828-3242382.html
为了达到高效完整的验证的目的,我们不仅仅需要SV/UVM这种大规模杀伤性武器,往往还需要使用各种各样的语言和工具来进一步提升效率,正所谓条条大路通罗马,本期就带大家了解一下常用的脚本语言。
首先,什么是脚本语言呢?
脚本通常是以文本(如ASCII)保存,只在被调用时进行解释或编译。例如我们大家基本都学过的C语言,要对源文件进行编译,链接等步骤,它就不属于脚本语言。
那么,既然学会了SV/UVM,为什么还要学习脚本语言呢?它有什么优势?
由于脚本语言是动态解释的,也就省去了编译的步骤,在验证平台中融入脚本语言接口,能提高平台的灵活性。针对脚本部分的更新,无需编译即可立即生效。而且由于脚本是动态解释的,使得它具有很好的可移植性,只要系统安装有解释器,不论是安卓,linux,windows,几乎都可以直接运行平台无关的代码。
脚本易学易用,自带标准库中经常提供一些常用功能,对于实现相同的功能,往往只需要很少的代码量。
简单的说,脚本可以完成,SV/UVM以外的所有工作,包括但不限于log文件处理,图形界面,网络编程等等,
常用脚本语言简介
TCL/TK
TCL是"工具控制语言(Tool Control Language)"的缩写。不是国内的某家电品牌。Tk(Toolkit) 是 Tcl"图形工具箱"的扩展,它提供各种标准的 GUI 接口项,以利于迅速进行高级应用程序开发。
TCL最常用于对工具的控制,不论是VCS还是ModelSim等仿真工具都提供有TCL接口,方便对于仿真过程进行控制。
入门书籍推荐《TCL/TK经典入门》,只需阅读前几章,了解解释器的通用行为,之后针对不同的工具了解所需命令的使用方法既可以完成大部分的工作。
Perl
Perl一般被称为“实用报表提取语言”(PracticalExtractionandReportLanguage),由拉里·沃尔(LarryWall)于1987年12月18日发表。Perl具有强大的文本处理能力,常用于处理log文件。
Perl的中心思想为TMTOWTDI(There's More Than One Way To Do It。提供了超强的灵活性,有很多基于上下文的简便写法,对于同一种功能,初学者与大师之间的实现可以完全不同,甚至是同一个人编写的Perl脚本每次都有可能不尽相同。经常有同事包括小编自己,过一段时间再看以前写过的Perl脚本,都不记得当时是怎么实现的⊙﹏⊙。不利于项目集成与维护。
入门书籍推荐《Perl语言编程》,俗称骆驼书。
Python
Python是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。
设计者开发时总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了。这在由Tim Peters写的python格言(称为The Zen of Python)里面表述为:There should be one-- and preferably only one --obvious way to do it. 这正好和Perl语言的中心思想完全相反。Python的作者有意的设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。其中很重要的一项就是Python的缩进规则。这使得Python非常有利于项目继承与维护,并且Python简单易学易用的特点,大有超越Perl的趋势。
推荐入门书籍《Python 3程序开发指南》,并不推荐使用《Python学习手册》作为入门书籍,学习手册包括太多细节,很容易让初学者觉得枯燥乏味,小编一看这本书就爱打瞌睡。。。。