在综合的时候,内存溢出,导致综合失败、报如下错误日志:
Start Cross Boundary and Area Optimization
---------------------------------------------------------------------------------
Abnormal program termination (EXCEPTION_ACCESS_VIOLATION)
Please check 'XXXXX/YYY/YYY.runs/synth_1/hs_err_pid25628.log' for details
查看hs_err_pid25628.log,如下:
#
# An unexpected error has occurred (EXCEPTION_ACCESS_VIOLATION)
#
Stack:
no stack trace available, please use hs_err_<pid>.dmp instead.
参考1中提到,在Flow Navigator->Synthesis(点击鼠标右键)->Synthesis Setting...->Settings->Synth Design(vivado)中将-flatten_hierarchy由rebuilt改为none,如下图:
但是这种方法也有缺点,可能会造成时序的不优化。
参考3中提到了两种解决方法,一种就是将所用所有IP由OOC综合改为Global综合,一种和参考1中提到的相同。
抱着死马当作活马医的思路,试了下“将所用所有IP由OOC综合改为Global综合”,综合通过了,没有内存溢出。查了下综合日志,内存最高峰值达到了13.59G字节。
Vivado Synthesis Crash Debugging Guide (xilinx.com)
官方一个比较全面的指南。
内存溢出,可能在综合或者执行的不同阶段出现,出现的时刻不同,处理方法不同。
EXCEPTION_ACCESS_VIOLATION (xilinx.com)
set_param route.ignoreLocalClocks true
Just skipping a minor optional step in routing stage. If the final timing closure can be achieved, it can be accepted.
EXCEPTION_ACCESS_VIOLATION (xilinx.com)
As per the debugging, there are two potential workarounds for the issue-
1- Synthesize all the IPs globally instead of OOC.
2- use flatten_hierarchy none in synthesis settings if all the IPs should be synthesized OOC.
The issue is fixed in the future release Vivado 2020.1.
This has been seen with Vivado version 2014.1 and later.
There appears to be an issue with FlexNet Licensing Service 64.
To work around the issue, follow the steps below:
(Before following these steps, close all anti-virus and other applications, specifically those that use Flex licensing).
- Open msconfig.exe. You can open it from the start menu.
- Select the services tab, then disable "FlexNet Licensing Service 64" by unchecking the select box.
- Restart the system.
- Invoke Vivado without invoking any other applications.