造成xelab.exe停止工作的一种原因

太长不看:某块代码中出现了一群for,直接导致仿真崩溃,改掉后就好了。    

过程:

    最近博主迫于某些压力不得不去跑某个古老的仿真,(很久以前在2014.4和小霸王电脑上能跑),然而放在2018.2上却直接把xelab.exe跑崩了。

    Run simulation,然后elaborate步骤直接蹦出xelab.exe已停止工作的 弹窗,点去后报simulation  fail:

造成xelab.exe停止工作的一种原因

    查看tcl,只告诉我“Please check that the file has the correct 'read/write/execute' permissions and the Tcl console output for any other possible errors or warnings.  ”

    绝望的谷歌一下,有人说扔linux里跑也许就好了,于是在我的小霸王虚拟机里跑了一边仿真,仍然失败,但是报的是“ERROR:[ XSIM 43-3312] Signal SIGABRT received.

    又经历了一轮谷歌,只查到模棱两可的回答,印象深的就是有人说可能是语法原因导致的崩溃。最后我没办法了,只能逐步排除模块看看部分代码能不能跑仿真,结果就逐渐确定到了某个模块的某个子模块。点开这个子模块的代码,看到了一群for循环在always中冲我挥手,眼前一黑,这是谁写的代码啊……把所有的for都替换掉,在跑仿真就好了……

吐槽:

    因为不是自己写的代码,所以调式过程比较漫长(从下午到半夜),而且十分令人崩溃(因为根本不知道哪里可能有问题)。明明工程都能生出正确的bit流,但却因为那一群for而不能仿真,幸亏只是一小段代码出了问题,要不然得查到猴年马月去了。

再后续吐槽:

    仿真没问题了确定就是那群for的问题。但是!这个鬼工程一共28个流程,前两个就跑了12分钟(当初小霸王跑前两个跑了40分钟,扶额),这跑完一遍怕不是要跑两个小时去了。