我正在使用python的子进程来启动modelsim可执行文件。在CLI中,输入quit -f -code 。这应该以退出代码-5退出modelsim。我尝试了多个不同的子过程,例如call / run / check_call / checkoutput,但是它们都返回0,就好像它成功运行一样。如果modelsim以非零退出码退出,那么子流程不应该返回非零返回码并引发CalledProcessError吗?
例如:CLI中的python example.py
python脚本中的status = subprocess.call([r"C:\...\...\vsim.exe", "-c", "-do"])
CLI中的quit -f -code<non-zero integer>
而不是退出,请尝试“退出-f-代码5”。
注意,Modelsim使用1到231来表示自己的错误消息,所以我将使用大于256的数字。
补充:退出和退出对我来说似乎都可以,可能是版本问题?我使用了Modelsim 2019.4和Python 3.7.1。这是我使用的代码:
Python代码:
`导入系统导入子流程
def main(argv):
status = subprocess.call([r"vsim.exe", "-c", "-do", "run.do"])
print("vsim returned",status)
sys.exit(status)
if __name__ == '__main__':
main(sys.argv[1:])`
run.do文件:
vsim top
run 1 us
quit -f -code 34
CMD批处理文件:
python callvsim.py
@echo Python returned %ERRORLEVEL%
和输出:
Errors: 0, Warnings: 0
vsim returned 34
Python returned 34
祝你好运,
汉斯
www.ht-lab.com