Также как и в HDL файлах, вы можете устанавливать точки останова и пошагово исполнять файлы SystemC в окне Source. В случае с SystemC, ModelSim использует С отладку, основанную на интерфейсе открытого кода gdb отладчика. Обратитесь к главе "Отладка С" в руководстве пользователя за подробной информацией.
1. Прежде чем устанавливать точку останова, вы должны запретить средство Auto Lib Step Out, разрешённое по умолчанию. Если вы пошагово исполняете стандартный заголовочный файл C++ или SystemC (
а. Выберите Tools > C Debug > Allow lib step в основном меню.
2. Установка точек останова.
а. Дважды кликните на test_ringbuf в окне Structure для открытия исходного файла.
б. В окне Source:
Verilog: перейдите к линии 150 в test_ringbuf.h.
VHDL: перейдите к линии 155 в test_ringbuf.h.
в. Кликните в столбце номера строки рядом с красным номером строки (рис. 6-8):
Verilog: bool var_dataerror_newval = actual.read()...
VHDL: sc_logic var_dataerror_newval = acutal.read ...
Внимание! ModelSim распознаёт содержание в файле кода SystemC и автоматически запускает С отладку. Это может добавить небольшую задержку, поскольку открывается С отладчик, прежде чем устанавливается точка останова.
После того, как отладчик запущен, ModelSim размещает красные шары рядом с номером строки (рис. 6-8).
3. Запуск и пошаговое исполнение кода
а. Введите run 500 в VSIM> запрос команды.
Когда симуляция достигнет точки останова, она остановится, выделив линию синей стрелкой в окне Source (рис. 6-9), и выдаст сообщение в окне Transcript:
# C breakpoint c.1
# test_ringbuf::compare_data (this=0x27c4d08) at test_ringbuf.h:151
б. Кликните на иконку Step на панели инструментов.
Этим симуляция шагнёт к следующему оператору. Поскольку следующий оператор – это вызов функции, ModelSim шагнёт в фукнцию, расположенную в отдельном файле sc_signal.h (рис. 6-10).
в. Кликните на иконку Continue Run на панели инструментов.
Точка останова в test_ringbuf.h снова будет достигнута.