Перейти к содержанию

myq

Свой
  • Публикаций

    208
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о myq

  • Звание
    Местный
  • День рождения 20.08.1981

Контакты

  • Сайт
    http://www.electronix.ru
  • ICQ
    0

Информация

  • Город
    World wide
  1. В команду очень не хватает FPGA/ASIC RTL-инженеров. Проект новый, legacy кода нет. Необходимо знать максимально из списка: Verilog/SV (VHDL тоже пойдёт, если готовы быстро переучиться) AXI4-Stream / Avalon-ST AXI3/AXI4/whatever DDR IP Core (Xilinx MIG) PCIe Endpoint Stream data processing Используем Git, Confluence, Jira. Синтез - Vivado. Симулятор - по желанию. Можно брать модуль и разрабатывать его как black-box, можно тесно взаимодействовать. Можно tb писать, можно не писать - напишут другие. Нам требуется максимальная утилизация FPGA. Максимальные частоты, максимально памяти, вычислений, DDR и PCIe bandwidth. Если вы - ASIC RTL-инженер, вы тоже подходите. Вы можете взять часть работы, которая не зависит от платформы (fpga vendor/asic), а через некоторое время появятся задачи для ASIC Design Engineer. У нас отличный офис, топовые development kits (Virtex Ultrascale+, Zynq MPSoC). Работа в офисе - да. Место - Москва, Волгоградский пр-т, около м. Текстильщики. Возможность удалёнки - сейчас уточняется. ДМС, чай/кофе - да. Печенек нет - вредно. Если вы - мидл/профи - вы нам подходите, найдём подходящую часть задачи. Если вы - джуниор, который желает быстро и многому научиться - тоже найдём задачи. Зарплатная вилка официально не объявлена, любая разумная цифра - обсуждаема. mike-fpga@ яндекс.ру
  2. Выглядит, вроде, нормально. Тут каждая функция необратима. Только нет смысла усложнять. Просто SHA m раз. m равно общему числу хэширований в вашей схеме, примерно n*n / 2 (арифм. прогрессия).
  3. Цитата(Timmy @ Nov 3 2017, 17:33) В этом случае вы не будете точно знать фазу медленного клока, а как повезёт при сбросе. Для точного определения фазы можно в медленном клок домене запустить однобитовый счётчик, а в быстром - синхронно выделять фронты на его выходе, в результате не придётся заводить клок непосредственно на логические входы. Да, была такая проблема, решил оставить на потом. Хорошее решение!
  4. Задача по большей части решилась, при условии, что в домене удвоенной частоты писать не if (clk), а if (tff) а tff - переключается каждый такт по удвоенной частоте. т.е. tff равен либо clk либо ~clk, но это обычный триггер, а не клок. Проект собрался с clk_x2 = 714 MHz на Ultrascale+ (период 1.4ns). Без Post-route PhysOpt - -0.02ns, PhysOpt вывел слаки в плюс.
  5. Добрый день, коллеги. Основная логика работает на базовой частоте, а небольшая выделенная часть, например, BlockRAM - на удвоенной или утроенной. Как это лучше реализовать, если учесть, что [высокая] частота BRAM близка к максимальной для данного ПЛИСа. Про идею можно почитать тут: https://cpufpga.files.wordpress.com/2016/04...s_isca_2016.pdf слайд 74 https://www.xilinx.com/support/answers/68595.html http://citeseerx.ist.psu.edu/viewdoc/downl...p1&type=pdf Вопросы/требования: 1) оба клока (clk, clk_x2) должны быть выходами PLL или необязательно? 2) надо обойтись без синхронизаторов и async fifo 3) надо ли дополнительно констрейнить или САПР сам правильно всё понимает? По клокам, я предполагаю, что снаружи надо генерить более высокую частоту с низким джиттером (т.е. clk_xN), а внутри - делить её уже на N. Как достоверно определять 1-й такт из N? Кодalways @ (posedge clk_xN) begin   if (clk) blablabla; end - выглядит не очень, и тут надо знать точно как соотносятся моменты перепада clk и clk_xN.
  6. https://s24.postimg.org/a1pa8bo51/vivado_bu...39-50_small.png
  7. Цитата(faa @ Apr 20 2017, 15:38) Ни шашечек, ни ехать Проект перестал жить. В 2016.3/2016.4 жил, а тут: синтез с бубном - корки перестал цеплять, имплемент не идет - в корках (родных от хилых) в лутах (внутри корки) входы отвалились, срцсканер в себя уходит и с трудом возвращается. Это в проект-моде. Нон-проект-моду еще не проверяли. Подтверждаю. Не цепляет опции "-generic" в Runs, не видит некоторые корки (некоторые - видит). У меня -generic и -verilog_define задают опции сборки. Например пишет: IP-ядро такое-то не найдено. На самом деле в проеке оно есть, САПР считает, что оно в проект не входит (т.к. это определяется -generic и -verilog_define, а он их игнорирует). Простой какой-нибудь счётчик V2017.1 собрать может. Мой проект - нет.
  8. Коллеги, а у вас нет проблем с лицензией?
  9. Цитата(Dr.Alex @ Mar 9 2017, 18:03) Так вы сами себе и ответили. Если очевидно, что фифо это большая конструкция, включающая в себя "синхронизаторы" и "грея" как малые части, то почему родился такой наивный вопрос? Так я же в начале написал, что у меня была долгая дискуссия с одним рук-лем проекта, по asic'ам. И он утверждал, что async dcfifo - штука в asic'е ненадёжная, и что надо писать проверяющий модуль снаружи. Чем меня здорово удивил.
  10. Цитата(Dr.Alex @ Mar 9 2017, 17:23) Можно узнать что значит Async FIFO? Фифо с независимыми клоками? Ответ на 1й вопрос в 1м посте: Цитата(myq @ Mar 7 2017, 16:22) ... Async dual clock FIFO ... Да, с двумя независимыми клоками. На что это ещё похоже? Цитата(Dr.Alex @ Mar 9 2017, 17:23) Вообще же вопрос на уровне "достаточно ли иметь голову и 4 конечности чтобы быть человеком". Не понял, поясните. Цитата(Dr.Alex @ Mar 9 2017, 17:23) Фифо это чуть больше чем счётчик грея и синхронизаторы, которые в любом случае есть всегда. Спасибокэп.
  11. Цитата(Shivers @ Mar 7 2017, 18:52) И все же, вопрос непонятен. Что значит - достаточно или недостаточно? 1. Для начала, любая память глубоко внутри полностью асинхронна. Компилятор памяти может ее упаковать по Вашему желанию - с триггерами по адресу, триггерами по входу данных, триггеру по выходу данных, либо вообще безо всяких триггеров. Кроме того, память бывает многопортовая. В Вашем случае, речь видимо идет о двупортовой памяти с двумя взаимо-асинхронными синхронными интерфейсами. Итак, когда с памятью стало понятно, следующий вопрос - управление этой памятью 2. Поскольку контроллер записи в память работает на одном клоке, а контроллер чтения на другом, получаем два асинхронных клоковых домена. Для них справедливо правило - ставить два триггера на любой сигнал, пересекающий границу доменов. В общем случае, это статусы FIFO_Full и FIFO_Empty, но в зависимости от реализации могут быть и другие сигналы. Делаю вывод, что вопрос касался пункта 2 - сколько триггеров ставить на пересинхронизацию сигналов управления между клоковым доменом записи, и клоковым доменом чтения. Ответ - в общем случае достаточно 2 триггеров, но если частоты под гигагерц, то лучше ставить 3. Согласен с доводами, считаю ваш ответ -- "достаточно" Цитата(Alex11 @ Mar 7 2017, 19:16) Без претензии на теорию, мегафункции FIFO от Altera у меня глючили на CYCLONE 3 постоянно - то не успевают, то двоят, занимают вдвое больше памяти, чем требуется, то еще что-нибудь. Пришлось написать свой без претензий на общность, но на тех же принципах - код Грея в счетчиках, пересинхронизация на 2 триггерах - и о чудо - никаких сбоев и все влезает по объему. Так что, вопрос - что имелось ввиду при разговоре о "достаточно". В старые и не очень времена у обоих вендоров было много косяков. С DDR-контроллером, PLLями, трансиверами, да бог знает с чем ещё, возможно и с FIFO. Я вот нашёл Sim-Syn mismatch для Xilinx FIFO последних версий (годичной давности). Но в целом я про то, надо ли вводить доп. контроль или нет. Прихожу к выводу, что нет.
  12. Цитата(_Ivan_33 @ Mar 7 2017, 16:44) Михаил, привет! https://habrahabr.ru/post/321674/ вот этот пост интересен, там еще народ в комментариях нашел ошибку у автора и приводит кучу аргументов и ссылок Лексика не понравилась. Resync - правильно, Reclock - допустимо, Retact - это уже какой-то язык с Брайтон-Бич ("Вам чиз как - послайсить или целым писом?" - отвратно же). И потом они утонули, обсуждая изобретённый автором велосипед вместо кода Грея. То ли он про него не знает, то ли знает и не применяет, не охото в это погружаться. Это как начать решать систему уравнений и погрязнуть в дискуссиях о формуле дискриминанта. "Запись в FIFO одновременно со сбросом...." - а нафига расставлять себе грабли и потом удивляться... Надо просто аккуратно писать код. p.s. Надо читать знаменитые 2 pdf от Клиффорда Саммингса, вот код на примере его статей: http://subversion.assembla.com/svn/ecpe-29...ll_async_fifo.v Так вот, мой вопрос - этого достаточно для ASIC, или надо что-то ещё. Мой визави утверждает, что _недостаточно_, и надо мониторить FIFO на предмет дублирования и пропадания данных на выходе. Моё короткое мнение - это чушь собачья, т.к. FIFO - это не трёхрегистровый синхронизатор.
  13. Привет, коллеги. Возникла в уменя дискуссия с ASIC'овцем про Async FIFO. Утверждает, что стандартного Async dual clock FIFO c счётчиками Грея и синхронизаторами недостаточно для стабильной работы. Моё мнение - достаточно, а если что, надо брать более длинные синхронизаторы. Что посоветуете, где правда? Речь, разумеется, не идёт про rad grade и всё такое.
  14. Цитата(gin @ Mar 7 2017, 14:08) Всем добрый день! Есть следующий вопрос - в проекте имеется 2 клоковых домена. Между ними происходит обмен данными. Как задать в TimeQuest условие, чтобы он не учитывал пути между этими доменами в расчете? Как я понимаю, есть команда set_false_path : set_false_path -from [get_clocks __sourceClock] -to [get_clocks __destinationClock] но как в ней описать клоки, которые формируются на внутренних PLL? Почитайте нашего коллегу с форума http://www.kit-e.ru/articles/plis/2010_10_54.php А вообще - это команда, использовать которую *нельзя*. Надо сетфальспасить только конкретные пути. Это приходит с опытом, поэтому убеждать не буду.