Kuzmi4 0 19 апреля, 2021 Опубликовано 19 апреля, 2021 · Жалоба Здравствуйте, Давно использую DPI-C для симуляции HDL+SW проекта, всегда обходился одним потоком для тестового приложения. Но тут встала задача сделать тестовое приложение (Zynq) где запускаются несколько SW потоков через pthread + DPI-C в них. И тут встал вопрос стека потоков: Quote # ** Fatal: (vsim-177) A possible stack overflow is detected!! The stack pointer (0x7ffff07fe670) is outside the specified stack limit of 8388608 bytes. The current stack usage is 260053392 bytes starting from stack top at 0x7fffffffe000. The current call stack is the following: # # Task axi_write ../src/tb//tb_dpi.sv(121) # C Function axi_write # C Function reg_wr # C Function test_func # C Function start_thread Потоки в тестовом приложении запускаются через: Quote pthread_attr_init pthread_create У меня в SV так: Quote // DPI-C export / AXI export "DPI-C" task axi_write; В хедере так: Quote DPI_LINK_DECL int axi_write(int addr_i, int data_i); Собственно проблема понятна: Quote ulimit -a | grep stack stack size (kbytes, -s) 8192 При попытке быстро порешать вопрос (авось прокатит): Quote ulimit -Ss unlimited Получаю такой отлуп от VSIM: Quote # ** Fatal: (vsim-4) ****** Memory allocation failure. ***** # Attempting to allocate 117281258307624 bytes # Please check your system for available memory and swap space. # ** Fatal: (vsim-4) ****** Memory allocation failure. ***** # Attempting to allocate 117281258307584 bytes # Please check your system for available memory and swap space. # ** Fatal: (SIGSEGV) Bad handle or reference. # Time: 34849646 ps Iteration: 2 Process: /testcase/tb/#INITIAL#63(MAIN) File: ../src/tb//tb_dpi.sv # ** Fatal: (vsim-4) ****** Memory allocation failure. ***** # Attempting to allocate 117281258311720 bytes # Please check your system for available memory and swap space. # ** Fatal: (vsim-4) ****** Memory allocation failure. ***** # Attempting to allocate 117281258311680 bytes # Please check your system for available memory and swap space. Что по ходу при детальном рассмотрении как бы выглядит логично. Попытка сделать какой то адекватный размер стека в консоли, исходя из цифр из первого Fatal-сообщения, приводит к аналогичной Fatal-проблеме, только цифры меняются в сторону величения. Собственно я нашёл временное решение, но там такая связка DPI-C import/export что при любом изменение тестовой апликухи прийдётся изменять эту "связку" - это не выглядит хорошо. Возможно кто то уже сталкивался с такой проблемой или около, но если нет - буду признателен за идеи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться