随着系统复杂程度的提高,cshell脚本势必越来越复杂。而cshell能力有限,光凭它很难胜任。现代的脚本应该是一个融合cshell, perl 和makefile的综合体。
我们需要重新认识一下他们各自的特点,擅长做什么,不擅长做什么。
cshell和操作系统贴的更近,适合设置环境变量,调用命令; perl 适合处理并生成文本,并且适合进行命令行参数解析; makefile适合进行程序编译。
所以我们的环境应该是这样
1. cshell作为总的脚本,负责传入参数,设置环境变量,调用现成的命令和脚本,如下:
run
===============================================
source set_env
GenRunScript.pl $*
Source RunScript
Report.pl
===============================================
2. GenRunScript.pl,
负责处理run传入的参数
根据已有的verilog file list生成最终的file list以及debussy file list
生成cshell的脚本 RunScript
GenRunScript.pl
================================================
GetOptions
generate verilog/debussy file list
generate the RunScript
================================================
3. RunScript 的大致模样
============================================
调用make 对程序进行编译(注意make命令行也可传入变量)
调用vcs对文件进行编译
simv
============================================
4. makefile
makefile负责编译程序,一开始就需要,通常是第一步就要做得事情。它是一般不由perl产生
它应该尽量简单, 不适合做复杂的shell命令调用以及处理(这些工作应该尽量给cshell和perl去做),
make可以传入变量如 make Testfile=xxxx , cshell/perl 处理好后通过命令行变量传给make
makefile自生带有目标,由cshell/perl调用。