多数FPGA开发者都习惯图形化界面(GUI)。GUI方式简单易学,为小项目提供了一键式流程。然而,随着FPGA项目越来越复杂,在很多情况下GUI工具就阻碍了工作效率。因为GUI工具不能对整个开发过程提供足够的灵活性和控制。另一方,GUI工具本身会占用很大一部CPU资源和内存。

脚本语言的选择

在IC和FPGA的最常用的是TCL,Perl以及Shell。除此之外,还有可能用到其他的脚本语言。比如,Xilinx工具脚本语言还有Ruby和Python。

TCL

顾名思义,Tool Command Language,它的工具交互性要好些,可以很好地运用于书写工具命令脚本。尤其是目前很大一部分EDA工具是支持TCL语言的,应该说它们的母语就是TCL。综合功能的EDA软件都采用TCL语言,比如,DC、Vivado、quartus、Synplify等。TCL是面向ASIC和FPGA设计工具的一种近乎标准的脚本语言。EDA工具都按这种格式下约束(Vivado的时序约束和管脚物理约束),TCL本身就是为了配合工具使用的,没有太大的独立价值。TCL语法不同于其他脚本语言,许多开发者很难习惯。TCL具有良好的文档和团队支持。Xilinx在Vivado的安装中附带了一个自定义的TCL——xtclsh。如果要启动TCL输入:

$ xtclsh –v #display TCL version。

Perl

Perl 是一种流行的脚本语言,广泛应用于EDA等工具中,特别是在ASIC的验证和后端设计中。Perl用来做一些极其强大的文字处理,减少重复性工作。比如修改ECO,将小design整合成大design,自动跑各种随机化的仿真,极其有用。Vivado也附带了自定义的Perl解释器xilperl。perl在文本处理上应该是无人能及,寥寥几行代码就可以做到别的代码很多行才能处理好的文本。但Perl脚本的可读性比较差。

Shell

Linux的发行版默认的一般都是bash。Unix发行版比如,FreeBSD默认的shell是csh。因为早期EDA软件都是运行在Unix操作系统上,而且csh的脚本语言类似于C语言,所以,ASIC开发中会用到很多csh脚本。然而,bash 除了拥有csh 的很多特性外,还能提供shell 函数,命令行编辑,过程处理等特性。所以bash在Linux发行版中占有很大的份额。

维特根斯坦说:“我的语言界限便是我世界的界限。”不存在完美的语言描述这个世界,每种语言都其特定的用途。选择何种语言会考虑很多因素,如现有项目设置、设计团队的经验、熟悉的工具和脚本、灵活性以及与其他工具的定制和集成。如果偏处理文本学perl,偏工具交互学tcl。一方面,语言都是相通的,只要有C语言基础,学什么都快。另一方面,我们选学习哪儿语言是因为我们不想学习所有这些语言。实际的开发中除了脚本语言会极大地提高工作外,许多开发者也喜欢用make 工具进行FPGA编译,因为make能够是自动跟踪检查。

语言的存在是为了解决问题,而工业社会的特点是分工,效率。所以,选择合适语言解决合适的问题才是王道。

参考文献:

[1] Perl等脚本语言在IC设计中有哪些用处?https://www.zhihu.com/question/29692226.

[2] Evgeni Stavinov. 在命令行模式下使用Xilinx工具. FPGA高手设计实战真经100则. 电子工业出版社. 2013,10.

FPGA开发中的脚本语言的更多相关文章

  1. 第七节 JBPM 中的脚本语言

    1.JPDL表达式 2.动作:数据库操作例子 3.路由:transaction一个流程之间的指向 4.BeanShell脚本语言 例子: 发布到数据库中才能做一个测试类

  2. 关于.net中的脚本语言使用

    基于.net中drl框架的脚本现在有很多,最近也由于工作的需要,目前有lua.python.ruby.javascript的.net实现,对ruby不怎么了解,python.lua.js就成了试验的对 ...

  3. ios开发中的C语言学习—— 结构体简介

    在开发过程中,经常会需要处理一组不同类型的数据,比如学生的个人信息,由姓名.年龄.性别.身高等组成,因为这些数据是由不同数据类型组成的,因此不能用数组表示,对于不同数据类型的一组数据,可以采用结构体来 ...

  4. [iOS]怎样在iOS开发中切换显示语言实现国际化

    1.在Project设置,加入中英两种语言: 2.新建Localizable.strings文件,作为多语言相应的词典,存储多种语言,点击右側Localization,勾选中英: watermark/ ...

  5. U3D开发中关于脚本方面的限制-有关IOS反射和JIT的支持问题

    U3D文档中说明了,反射在IOS是支持的,除了system.reflection.emit空间内的,其它都支持.JIT是不支持的. 本质上来说即是:只要不在运行时动态生成代码的行为都支持,reflec ...

  6. 在delphi中嵌入脚本语言--(译)RemObjects Pascal Script使用说明(1)(译)

    翻譯這篇文章源於我的一個通用工資計算平台的想法,在工資的計算中,不可避免的需要使用到自定義公式,然而對於自定義公式的實現,我自己想了一些,也在網上搜索了很多,解決辦法大致有以下幾種: 1. 自己寫代碼 ...

  7. Java学习笔记--脚本语言支持API

    Java语言的动态性之脚本语言支持API 随着Java平台的流行,很多的脚本语言(scripting language)都可以运行在Java虚拟机啊上,其中比较流行的有JavaScript.JRuby ...

  8. FPGA开发流程1(详述每一环节的物理含义和实现目标)

    要知道,要把一件事情做好,不管是做哪们技术还是办什么手续,明白这个事情的流程非常关键,它决定了这件事情的顺利进行与否.同样,我们学习FPGA开发数字系统这个技术,先撇开使用这个技术的基础编程语言的具体 ...

  9. FPGA开发流程

    需求说明:Verilog设计 内容       :FPGA开发基本流程及注意事项 来自       :时间的诗 原文来自:http://www.dzsc.com/data/2015-3-16/1080 ...

随机推荐

  1. HDU1495 非常可乐 —— BFS + 模拟

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 非常可乐 Time Limit: 2000/1000 MS (Java/Others)    M ...

  2. YTU 2429: C语言习题 学生成绩输入和输出

    2429: C语言习题 学生成绩输入和输出 时间限制: 1 Sec  内存限制: 128 MB 提交: 1897  解决: 812 题目描述 编写一个函数print,打印一个学生的成绩数组,该数组中有 ...

  3. 网站页面打开浏览器table中显示图片

    就类似博客园这种:

  4. select下拉带图片-模拟下拉

    <style> /*下拉列表*/ ul,dl,ol,li {list-style: none;} .dropdown { float: right; position: relative; ...

  5. iOS 堆和栈的区别和联系

    堆和栈的区别主要有以下五点: 1.管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制:对于堆来讲,释放工作由程序员控制,容易产生memory leak(内存泄露). 2.申请大小: 栈是向低地 ...

  6. python-----windows下安装face_recognition库

    如果直接在cmd命令界面 输入:pip install face_recognition 如下图所示: 如果第一次就会出现一系列的问题,解决此问题就安装如下步骤: 一.如果你本机没有安装vistual ...

  7. ndoejs后台查询数据库返回的值-进行解析

    JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON.stringify(jsonobj); //可以将json对象转换成json对符串

  8. zz MBR,EBR

    http://hi.baidu.com/net5x/item/12d5243d86416bd76d15e993

  9. k8s-部署dashboard1.10.1-十七

    一.获取镜像和填坑 我的k8s是1.13.1,这里dashboard用的1.10.1: 由于国内不能访问Google,而且大部分人可能也没有其他途径访问:只能在阿里云或者其他镜像网站上获取了: 镜像获 ...

  10. HDU 5879 Cure (数论)

    题意:给定n,求前 n 项 1/(k*k) 的和. 析:由于这个极限是 PI * PI / 6,所以我们可以找到分界点,然后计算就好. 代码如下: #pragma comment(linker, &q ...