Comments 15
следы этого решения даже просочились в BFM для open-source RISC-V проекта.
В какой именно если не секрет ?
Вот он https://github.com/taichi-ishitani/tvip-axi
Этот инженер работал в PEZY, японской компании, которая лицензировала у MIPS пакет, в котором была и моя BFM, которая, судя по определнным решениям в коде, оказала на этого товарища влияние
Например запись событий в транзакции https://github.com/taichi-ishitani/tvip-axi/blob/master/src/tvip_axi_item.svh
Возможно только я такой, но "тьюториал" читается очень тяжело.
В русском ИТ-сленговом уже давно (я лет 30 вижу) спокойно пишут "туториал". На худой конец слово "руководство" совсем не испортит материал. Ну или "мануал", хотя это и немножко про другое (не "мэньюэл" же в любом случае).
у ~80% кандидатов наступала агония - они как ужи на сковородке пытались натянуть сову на глобус
….
Базовую идею я впервые увидел еще в 1990-е годы, когда я работал в Mentor Graphics
Интересно, а что бы сам интервьюер делал в этой ситуации
До того, как я понял как это должно работать, я точно так же натягивал сову на глобус, например пробовал сделать конечные автоматы для таких транзакций. Но в то время вообще не было никаких туториалов и такого рода знания передавались лично.
Тут надо отметить, что я давал такое упражнение на собеседовании только людям, которые писали в резюме, что они понимают верификацию и знакомы с AXI. Назвался груздем - полезай в кузов.
Также были люди (например практикант из Стенфорда), которого я этому научил с нуля.
А как верифициоровать VIP?
Вы задаёте одно такое задание или несколько разных? И ещё- не выполнив или выполнив на 20% это задание - человек провалился и нет у него никакого шанса? Спасибо.
Заданий я давал несколько - начинал с тривиальных вопросов, а потом такое задание. На основе него я видел процесс мышления человека - как он пытается решать задачу, видит ли подводные камни, с чем он знаком итд. То есть определял его уровень.
Понятно, что если человек студент и решить такого не может, но OK по другим параметрам, то его можно доучить.
Но если человек работал в данной части индустрии скажем 15 лет и не может адекватно решать таких задач - то это означает, что он везде делал что-то кондовое, то есть имеет не "15 лет опыта", а "опыт в 1 год 15 раз" - тогда его нанимать бессмысленно.
Интересный подход. Правда я так до конца не понял почему нельзя сделать форк всех 5 процессов в драйвере и работать с 5 очередями?
Ну и справедливости ради, ARM IHI 0022E сигнал WID (необходим для data interleaving) убран из AXI4 (останется только в AXI3). Соответственно в последней версии AXI4 нет поддержки данные перед адресом и данные должны приходить в том же порядке, что и адреса (A5.4 Removal of write interleaving support). Следовательно для адреса и данных должна быть блокирующая проверка очередности, а вот ответы могут приходить в любом порядке.
Правда я так до конца не понял почему нельзя сделать форк всех 5 процессов в драйвере и работать с 5 очередями?
Там может возникнуть race condition между записью в очередь в одной ветви fork-а и проверкой на пустоту этой очереди в другой ветви. Потому что запись в очередь - это как блокирующее присваивание, у него эффект сразу. И если симулятор делает скедьюлинг fork-ов в другом порядке, это может менять результаты симуляции от симулятора к симулятору, добавлять ненужные пропуски тактов итд.
Вообще, я не настаиваю на единственности моего решения, но пять псевдо-параллельных процессов в данном случае ничего не покупает.
Соответственно в последней версии AXI4 нет поддержки данные перед адресом и данные должны приходить в том же порядке, что и адреса (A5.4 Removal of write interleaving support). Следовательно для адреса и данных должна быть блокирующая проверка очередности, а вот ответы могут приходить в любом порядке.
В принципе, wid не обязательно иметь для данных перед адресом. Даже если сначала выпускается wd1, wd2, wd3, а потом aw1, aw2, aw3, слейв может складировать все эти wd в каком-нибудь FIFO, дожидаясь пока прийдут aw1, aw2, aw3 чтобы разобраться что писать куда. Это работает даже если идет смесь из burst разной длины - если конечно их длина фиксирована. Потом приходит aw1, aw2, aw3 и мы разбираемся сколько вытолкнуть из FIFO чтобы обработать каждый write.
А вот для interleave-а WID нужен, это медицинский факт.
Причина агонии студентов во время интервью, или популярно о моделях интерфейсов шины