我正在使用python的子进程来启动modelsim可执行文件。在 CLI 中,我输入 quit -f -code<-5>。这应该退出模型im,退出代码为 -5。我已经尝试了多个不同的子进程,例如调用/运行/check_call/检查输出,但它们都返回 0,就好像它成功运行一样。如果 modelsim 以非零退出代码退出,子进程不应该返回非零返回代码并引发 CalledProcessError 吗?
例如:
在 CLI 中status = subprocess.call([r"C:......vsim.exe", "-c", "-do"])
在 python 脚本quit -f -code<non-zero integer>
CLI
中python example.py
与其退出,不如尝试"exit -f -code 5"。
注意 Modelsim 使用 1 到 231 作为他们自己的错误消息,所以我会使用大于 256 的数字。
补充:退出和退出似乎对我来说都很好,可能是版本问题?我使用了Modelsim 2019.4和Python 3.7.1。这是我使用的代码:
蟒蛇代码:
' 导入系统
导入子流程
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