6

У меня есть тестовый стенд на основе verilog, сопряженный с источником C с использованием DPI. Теперь, используя DPI, я планирую написать всю прошивку. Для этого мне нужно 3 вещейЭкспорт задач в 'C с использованием DPI

  • Регистрация пользователь
  • Регистрации Написать
  • обработчика
  • прерывания Как я понимаю, регистр чтение и записи являются задачами, которые мне нужно экспортировать из RTL тестового стенда. И обработчик прерываний (я реализовал импорт функции из «C»).

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

На всякий случай кто-то знает об этом, был бы признателен за их помощь.

+1

Что происходит с апострофом перед C? Является ли этот язык отличным от C? – unwind

ответ

3

На самом деле я понял, что это такое.

//--From RTL --- 
export "DPI" task reg_read; 

task reg_read; 
    input int nAddr; 
    output int nVal; 

// -- read implementation -- 

endtask 

// -- From C code 
extern void reg_read (int nAddr, int *pVal); 

void test_read (void) 
{ 
    int nRegVal; 

    // Dummy checking !! 
    reg_read (0x100, &nRegVal); 
} 

// -- Again in RTL -- 
import "DPI" context task test_read(); 

Это работает для меня, используя ncverilog.

2

Прохладный ... Я на самом деле написал статью по этой теме. link

Бумага на самом деле экспортирует записи и записи в регистре, а также через DPI, а затем добавляет к нему TCL-интерпретатор, чтобы вы могли использовать TCL для управления вашим симом. Это было то, что любители лаборатории любили, поскольку все их инструменты уже находятся в Tcl.

Вы можете просто следовать инструкциям по интеграции вызовов функций с C на SV по DPI, а затем прекратить работу, когда начнется игра TCL.

+0

Данная ссылка недействительна. –

+1

Huh ... похоже, IC Journal больше не существует. Вот ссылка на обзор того, как она работает, но ее довольно высокий уровень: https://www.eejournal.com/article/20080826_vmm/ Если я могу найти оригинальную статью, опубликованную где угодно, я вернусь и оставьте ссылку здесь. – SDGator