莫名其妙的仿真问题
./simv -l ./simv.log +UVM_TESTNAME=my_case0
本来是想在运行my_case0的同时输出simv.log文件
这段命令如果直接在命令行运行,能够跟预期一样,输出simv.log文件,但是如果我把这个文件封装到一个文件里(文件名为run_tc_me),运行这个文件的时候,结果就是不输出simv.log文件。
我linux的shell是tcsh,run_tc_me这个文件的头部也加入了 "#! /bin/tcsh"。
感觉见鬼了,大家怎么看
#!/中间不能有空格。
改了还是没用.....
为啥要换行?
什么意思?就这一个命令啊:
./simv -l ./simv.log +UVM_TESTNAME=my_case0
应该是页面的问题,就一行:
./simv -l ./simv.log +UVM_TESTNAME=my_case0
少打了一个 > ?
额,好像不是的,-l 后面可以直接接上log文件的名字。
所有过程截图,包括如何运行脚本,脚本中具体内容
run_tc_me 是脚本的内容
run_tc_me_case 是如何运行脚本
run_tc_me_result 是运行之后的结果,里面没有simv.log和vcs.log文件
run_in_cmd_line 是如何在命令行运行
run_in_cmd_line_result 是运行的结果,里面有simv.log,由于没有单独运行vcs编译的命令,所以没有输出vcs.log
脚本中用的是tcsh,我改成sh或者是bash也都不行~
对了,#!和/bin/tcsh中间有没有空格我也试了,都不行
跑的时候终端没输出东西?
1. 换个简单点的xterm先试试看
2.tcsh 没有export 这种语法的,你确定你的脚本运行到后面了?还是前面的时候就已经出错退出了?用/bin/bash试一下
你这是sh/bash脚本,用#!/bin/bash
然后你的终端是不是自己折腾了一大堆有的没得?看着是不是在emacs/vim里面搞出来的东西,直接简单点开个terminal(xterm/roxterm),把运行整个过程截图出来,看起来你这脚本根本就没跑,猜测你连脚本权限都没设,你这花里胡哨的终端也没给你报错
如果你脚本权限也设了(755),还有一个原因是你的PATH变量没有加入当前目录(.),这个时候你需要
./run_tc_me 而不是 run_tc_me 来执行
同样的,正常终端都会给你报错说'command not found',你这包装过的终端把这错误信息掩盖掉了
总结,可能的两个原因
1) 权限没设好 chmod 755 run_tc_me
2) PATH没社会,我的习惯是不把.加到PATH里面,你可以 ./run_tc_me 运行
3) export 是bash/sh的语法,不要用tcsh/csh
本来这些终端都会给你报错的,你这个我猜是vim的什么插件把这些错误都给隐藏掉了
目测脚本没有运行吧, tcsh里不支持export吧.
step 1 #! /bin/sh -f
step 2 chmod a+x run_tc_me
setp 3 ./run_tc_me | tee -i run.log
把run.log 内容贴出来看看?
运行的过程我没有截图
应该是你分析的第二点错误,就是没有用./run_tc_me,导致用了另一个bin下的脚本。
你的分析给了我很多启发,3Q~
是运行了另一个bin下的run_tc_me了,3Q
BTW:1、在tcsh里面应该用什么达到bash里面的export的功能?
2、如何才能优先运行当前目录下的脚本?当前目录下的脚本我设置成750的。
csh里用setenv
用centos或redhat跑EDA工具比较好
基本的linux知识一定要扎实,否则严重影响工作效率
OK,谨记~
thx~linux要学的东西好多,可惜平时工作太忙,只能晚上加班回去补一补