Нуждается ли модульное тестирование SystemC в разветвлении?

Я начинаю с использования SystemC и изучаю пример, упомянутый в Использование существующих фреймворков модульного тестирования с СистемаC

Я не очень понимаю, зачем нужен форк, особенно когда один форк только ждет другого. Есть ли что-то в ядре, которому нужна такая многопоточность (особенно обработка событий)? (другими словами: нужен ли мне этот тип обработки ТОЛЬКО тогда, когда мне нужно параллельное тестирование, или также в более простых случаях)

Другой вопрос, что в связанном ответе я вижу логотип в начале

 SystemC 2.2.0 --- Feb 24 2011 15:01:50
        Copyright (c) 1996-2006 by all Contributors
                    ALL RIGHTS RESERVED
Running main() from gtest_main.cc

в то время как в моем случае логотип находится в конце вывода

Running main() from gtest_main.cc
[==========] Running 0 tests from 0 test cases.
[==========] 0 tests from 0 test cases ran. (0 ms total)
[  PASSED  ] 0 tests.
Hello World.

        SystemC 2.3.1-Accellera --- Mar 28 2017 21:08:36
        Copyright (c) 1996-2014 by all Contributors,
        ALL RIGHTS RESERVED

Это просто из-за разных версий или это ожидаемое своевременное поведение?


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


Ответы (2)


То, как ядро ​​SystemC разработано в его текущей форме, не полностью поддерживает динамическое создание/удаление модулей моделирования, после того как вы запустили моделирование SystemC с помощью sc_start() и остановили моделирование с помощью sc_stop(), вам необходимо полностью уничтожить контекст моделирования SystemC.

Пожалуйста, посмотрите обновленный ответ для лучшего решения здесь.
Примечание: рекомендуется чтобы иметь отдельный исполняемый файл для другого контекста моделирования, поскольку симулятор не гарантирует результатов моделирования в такой среде, см. SystemC LRM для более подробной информации.

Что касается различий в логотипах SystemC, то они связаны с различной буферизацией stdout, stderr в вашей системе. Вы увидите разные результаты для каждого выполнения двоичного файла. (Если это непротиворечиво, возможно, тестовая среда Google обрабатывает потоки stdout и stderr внутри.)

person AmeyaVS    schedule 05.04.2017

Я бы пошел с использованием шаблона проектирования реестра. Я уже писал, как это можно сделать с помощью SystemC и GoogleTest, в статье Использование существующих фреймворков модульного тестирования с SystemC.

person tymonx    schedule 18.11.2017