Как запустить Qt-интерфейс моделирования SystemC

Я пишу графический интерфейс на Qt, где у меня есть:

  QApplication app(argc, argv);

который вызывается:

 app.exec();

Что возвращается только после завершения работы приложения.

Для выполнения симуляции SystemC внутри приложения мне нужно вызвать:

sc_start(...);

Что также возвращается только после завершения моделирования.

Должен ли я взломать Qt или SystemC, чтобы обойти проблему, или есть какой-нибудь трюк, который я могу использовать? Как я могу избежать взаимоблокировки двух блокирующих вызовов?


person katang    schedule 05.11.2018    source источник


Ответы (1)


Вы должны запускать их внутри двух разных потоков или процессов. И разработать механизм связи для обмена данными между симуляцией и графическим интерфейсом.

Другой распространенной идеей, используемой отладчиками SystemC и интерактивными программами просмотра сигналов, является запуск SystemC под GDB и использование протокола GDB-MI для управления симуляцией из графического интерфейса пользователя.

person random    schedule 06.11.2018
comment
Спасибо. Первая идея, кажется, лучше для релизной версии. Вторая идея более привлекательна, потому что я тоже планирую интерактивную работу. Можете ли вы намекнуть на какой-нибудь источник? - person katang; 06.11.2018
comment
Вы можете начать с исходного кода QtCreator, он уже имеет реализацию GDB-MI. Мне не известны какие-либо инструменты графического интерфейса с открытым исходным кодом, специфичные для systemc. - person random; 07.11.2018