FPGA开发中的脚本语言
多数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开发中的脚本语言的更多相关文章
- 第七节 JBPM 中的脚本语言
1.JPDL表达式 2.动作:数据库操作例子 3.路由:transaction一个流程之间的指向 4.BeanShell脚本语言 例子: 发布到数据库中才能做一个测试类
- 关于.net中的脚本语言使用
基于.net中drl框架的脚本现在有很多,最近也由于工作的需要,目前有lua.python.ruby.javascript的.net实现,对ruby不怎么了解,python.lua.js就成了试验的对 ...
- ios开发中的C语言学习—— 结构体简介
在开发过程中,经常会需要处理一组不同类型的数据,比如学生的个人信息,由姓名.年龄.性别.身高等组成,因为这些数据是由不同数据类型组成的,因此不能用数组表示,对于不同数据类型的一组数据,可以采用结构体来 ...
- [iOS]怎样在iOS开发中切换显示语言实现国际化
1.在Project设置,加入中英两种语言: 2.新建Localizable.strings文件,作为多语言相应的词典,存储多种语言,点击右側Localization,勾选中英: watermark/ ...
- U3D开发中关于脚本方面的限制-有关IOS反射和JIT的支持问题
U3D文档中说明了,反射在IOS是支持的,除了system.reflection.emit空间内的,其它都支持.JIT是不支持的. 本质上来说即是:只要不在运行时动态生成代码的行为都支持,reflec ...
- 在delphi中嵌入脚本语言--(译)RemObjects Pascal Script使用说明(1)(译)
翻譯這篇文章源於我的一個通用工資計算平台的想法,在工資的計算中,不可避免的需要使用到自定義公式,然而對於自定義公式的實現,我自己想了一些,也在網上搜索了很多,解決辦法大致有以下幾種: 1. 自己寫代碼 ...
- Java学习笔记--脚本语言支持API
Java语言的动态性之脚本语言支持API 随着Java平台的流行,很多的脚本语言(scripting language)都可以运行在Java虚拟机啊上,其中比较流行的有JavaScript.JRuby ...
- FPGA开发流程1(详述每一环节的物理含义和实现目标)
要知道,要把一件事情做好,不管是做哪们技术还是办什么手续,明白这个事情的流程非常关键,它决定了这件事情的顺利进行与否.同样,我们学习FPGA开发数字系统这个技术,先撇开使用这个技术的基础编程语言的具体 ...
- FPGA开发流程
需求说明:Verilog设计 内容 :FPGA开发基本流程及注意事项 来自 :时间的诗 原文来自:http://www.dzsc.com/data/2015-3-16/1080 ...
随机推荐
- poj 2185 Milking Grid(next数组求最小循环节)
题意:求最小的循环矩形 思路:分别求出行.列的最小循环节,乘积即可. #include<iostream> #include<stdio.h> #include<stri ...
- java类成员访问权限总结(private,default,protected,public)
- javascript之递归得DOM文本
var tag=document.getElementsByTagName('body')[0]; function findChild(tag){ var child=tag.childNodes ...
- H.264(MPEG-4 AVC)级别(Level)、DPB 与 MaxDpbMbs 详解(转载)
转自:http://www.cnblogs.com/zyl910/archive/2011/12/08/h264_level.html 对于H.264(MPEG-4 AVC)而言,级别(Level)是 ...
- hdoj1728【搜索的两种写法】
以前的一道题目,现在拿到总觉得是DFS,然后T掉就没什么想法了,很狗的看了以前的写法(以前还是看题解的AC的),是BFS,每次都要转弯,但是之前你的达到一种他走到了死路,所以才是不得不转弯,写法也是非 ...
- 纯拓扑排序一搞poj2367
/* author: keyboarder time : 2016-05-18 12:21:26 */ #include<cstdio> #include<string.h> ...
- mongodb 安装问题
重新安装一台机器时出现头疼的问题,老是说什么 dbpath 不存在 结果最后发现是没有写 mongodb.log 这个log文件名 1. 创建 datas 文件夹 e:\mongodb\datas ...
- bzoj 2626: JZPFAR【KD-tree】
和3053差不多,把pair first做成负数就可以用大根堆维护了 注意:要开long long:比较的时候因为编号也占权重所以要比较pair:编号不是mid!不是mid!是初始输入的那个编号!搞混 ...
- bzoj 5210: 最大连通子块和【动态dp+树剖+线段树+堆】
参考:https://www.cnblogs.com/CQzhangyu/p/8632904.html 要开longlong的 首先看dp,设f[u]为必选u点的子树内最大联通块,p[u]为不一定选u ...
- 洛谷 P2519 [HAOI2011]problem a
传送门 考虑转化为求最多说真话的人数 设$f(i)$表示排名前$i$的人中最多说真话的人的数量,考虑转移,如果由$j$转移而来,可以设$[j,i]$之间的人全都分数相等,那么式子就是$f[i]=f[j ...