多数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能够是自动跟踪检查。
语言的存在是为了解决问题,而工业社会的特点是分工,效率。所以,选择合适语言解决合适的问题才是王道。
『本文转载自网络,64体育的版权归原作者所有,如有侵权请联系删除』