Как правило, этот вид интеграции выполняется в другом направлении, что означает вызов процедур C / C ++ из Verilog.Конечно, это имеет смысл только для компонентов проверки, очевидно, что их невозможно синтезировать.Наиболее вероятной средой для выполнения того, что вам нужно, является косимуляция SystemC / Verilog, но это подразумевает как использование симулятора Verilog (который вам явно не нужен), так и модель C с использованием SystemC.
Симуляторыв поисках высокой производительности часто генерируют C или нативный код.Я не знаю ни одного способа извлечь определенные функции из сгенерированного кода в VCS (симулятор, с которым я больше всего знаком), но это возможно сделать с помощью одного из симуляторов с открытым исходным кодом.Любой коммерческий (то есть лицензированный) симулятор вряд ли будет поддерживать генерацию кода, который вы можете запускать без лицензии.Я не уверен, что ваше желание использовать функции Verilog независимо от симулятора обусловлено лицензированием, накладными расходами времени выполнения, нагрузкой при установке инструмента или чем-то еще.
Я предполагаю, что вы не поддерживаетеПроцедуры SystemVerilog, поэтому может быть невозможно изменить способ их реализации.Однако, если это возможно, одна общая стратегия, когда требуется функциональность как в C, так и в Verilog, заключается в написании генераторов кода, которые могут преобразовать одно определение в реализации C и Verilog.
Другая более эзотерическая возможность - синтез SystemC.,Он является относительно новым, и у меня нет опыта работы с ним, но если у вас есть доступ к инструментам, и они работают для ваших функций, это позволит вам повторно использовать реализацию C для моделей C, аппаратного моделирования и синтеза.