Недавно я создал интерфейс между средой моделирования и хост-системой. Различные симуляторы hdl имеют разные интерфейсы, и заставить симулятор НЕ думать в пакетном режиме, традиционная имитационная модель, вместо того, чтобы работать вечно, как настоящий проект, - это половина проблемы.
Затем с хоста, использующего C (или что-то еще), вы можете создавать абстракции, которые могут или не могут позволить вам писать свое прикладное программное обеспечение для любой цели (в зависимости от того, какой у вас язык и возможности компилятора). Например, вы можете создать общую функцию «тыкать и заглядывать», и на конечной цели они действительно «тыкают» и «заглядывают» в память или ввод / вывод, но для моделирования через абстракцию вы общаетесь с тестовым стендом в симуляции, которая имитирует тот же цикл памяти.
Я пошел еще дальше и использовал сокеты (Беркли) между хостом и тестовым стендом, чтобы симуляция могла продолжаться, пока хост-приложения останавливаются и запускаются. Это мало чем отличается от реального процессора с ОС, в которой вы запускаете приложения и запускаете их до конца, а затем запускаете другую. По крайней мере, для тестовых приложений для доставки у вас, вероятно, есть только одно приложение.
Создавая эти уровни абстракции, я могу писать реальные приложения, которые будут использоваться на целевом объекте при его создании. Попутно вы можете сначала использовать программное моделирование логики, а затем, если вам нравится создавать fpga с интерфейсом абстракции (выбросить логику), скажите, например, uart. Замените прокладку между уровнем абстракции приложений и симулятором на интерфейс uart или что-то еще. Затем, когда вы объединяете процессор и логику в том же чипе или на той же плате, снова замените уровень абстракции прямыми вызовами тех интерфейсов, которые у них всегда есть, хотя они разговаривали. Если что-то сломается, и вы сохранили уровень абстракции, вы можете вернуть приложение в имитационную модель и получить доступ ко всем внутренним компонентам вашей логики.
В частности, на этот раз я использую cdl цикличности на языке hdl, который находится на sourceforge, документация нуждается в некоторой помощи, но примеры могут помочь вам в работе, и он создает синтезируемый verilog, так что вы получаете дополнительную победу. Я выбросил весь пакет сценариев, кроме минимума, необходимого для подключения и запуска имитационной модели C. Итак, мой тестовый стенд находится на C (ну, технически C ++), слой сокетов был там. На выходе могут быть файлы .vcd, которые использует gtkwave. По сути, вы можете выполнять большую часть своего HDL-дизайна, используя программное обеспечение с открытым исходным кодом без лицензий и т. Д. Добавив одну или две строки кода в часть моделирования CDL, я смог запустить его как бесконечный цикл, который, я могу сказать, работает. неплохо, утечек памяти и т. д. похоже не было.
и modelsim, и cadence имеют стандартизованные способы подключения хост-программ на C к миру моделирования, и оттуда вы можете использовать IPC для доступа к хост-приложениям, взаимодействующим с api уровня абстракции.
это, вероятно, перебор для картинки, я все равно отказался от картинок ради более быстрых и дружественных к C микропроцессоров. Существует / был открытый основной рисунок, который вы могли бы просто включить в свою симуляцию, хотя это не то, что вы пытаетесь сделать здесь.
person
old_timer
schedule
16.01.2009