2015-04-13 4 views
0

Я работаю над проектом проверки. Некоторые компоненты тестовой среды записываются в c, которые вызываются через DPI, c-процедуры обширны, и мне сложно найти, какую процедуру вызывается кем. Чистая программа C может быть я могу использовать cachegrind для этой задачи. В этом случае это не main(), который выполняет вызов, а запускается на события. Любой метод, с помощью которого я мог бы получить представление о последовательности вызовов, выполняемых во время моделирования? Используется инструмент Cadence Incisive.Могу ли я получить график вызовов подпрограмм C, которые вызываются через вызов DPI из системы verilog testbench

ответ

0

журнала вызывающий и журнал вызываемого абонента с точной отметкой времени, а затем сравнить

+0

Не могли бы вы рассказать о своем решении? Регистрируясь, вы имеете в виду, что в каждой из функций C есть инструкции отображения/печати? Я не хочу идти и взламывать компонент C, если это не единственный способ. – Gautam

+0

Если проще изменить системные файлы verilog, вы можете вызвать вызовы DPI для регистрации вызываемой функции до ее запуска. –

+0

Способ создания компонента C заключается в том, что он сначала создает структуру данных, которая длится всего времени моделирования. Функции вызываются через dpi на основе события, и каждая функция сама может вызвать ряд других функций для обновления/создания структур данных. Как я уже упоминал, этот компонент обширен. Однократный вызов на основе тэгов приводит к числу вызовов функций C, поэтому, если вы говорите, что это так, то мне придется поместить печать во все конструкторы функций/классов и т. Д., Этого я надеюсь избежать. – Gautam

0

Google, "gperftools" даст вам граф вызовов для горячих точек производительности и если установить порог для сбора данных достаточно низкого, вы получите столько же деталь, как вы можете обращаться:

enter image description here

вы также можете поручить ему сосредоточиться на конкретных функциях, когда она генерирует GraphViz графика, чтобы заточить в конкретных путях коды. Я лично использовал google perftools на тестовом стенде чипа. Работает как чемпион.