Pull to refresh

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. Назвался груздем - полезай в кузов.

Также были люди (например практикант из Стенфорда), которого я этому научил с нуля.

О! С козыря пошли :-)

Master driver верифицируется против reference slave, а они оба верифицируются пассивным монитором (все в рамках одного 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 нужен, это медицинский факт.

Sign up to leave a comment.

Articles