本质原因:verilog语法错误
今天在跑一个简单的滤波器仿真工程,使用的工具是Vivado Simulator 2018.1。启动行为仿真后,在elaboration阶段vivado提示“xelab.exe已停止工作”,并且软件提示从elaborate.log获取详细信息。但是经过查看,elaborate.log中没有丝毫有用的信息,只提到一句:
ERROR: [XSIM 43-3294] Signal EXCEPTION_ACCESS_VIOLATION received.
上网查找了一下,这大概率是语法问题导致xelab.exe出现内存溢出之类。但是本人花了很久都没找到哪里有语法错误。最终没办法,把此工程搬到modelsim去仿真想试试会不会有提示信息,果真modelsim提示了语法错误的位置。调用function时不是用[],而是用()。如下代码所示:
reg [clogb2(MEM_SIZE-1):0] data_mem_index=0;
修改完之后,Vivado Simulator成功运行。
总结一下:Vivado Simulator真是太弱了,对各种错误的提示信息太少。这种情况下还是转到modelsim以求提供更详细的错误信息。