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

VoltageCurrent

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
    Участник

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. Отлично. Второй вопрос: возможно ли без вписывания руками при запуске (то есть автоматически) из макроса на Verilog узнать, чем компилируется/синтезируется его код (и соответственно, подставить различные значения в зависимости от конкретного инструмента)?
  2. Возможно ли из макроса на Verilog узнать, чем компилируется/синтезируется его код (и соответственно, подставить различные значения в зависимости от конкретного инструмента)?
  3. Как известно, в UART могут быть один, полтора или два стоп-бита. Если оговорена передача с одним стоп-битом, то всё относительно просто. При длине символа N (5...8 бит) устройство считывает N+1 бит по середине каждого бита и далее возможно два варианта: 1. Если до этого в символе передавались в том числе единицы, то это - ошибка передачи. 2. Если до этого в символе были только нули это - break frame. С двумя стоп-битами уже не совсем ясно. Считывается N+2 бита по середине каждого из них, а далее варианты: 1. Если оба стоп-бита единицы, то успех. 2. Если оба стоп-бита нули - это, вероятно, break frame. 3. Если первый стоп-бит - единица, а второй ноль, является ли это ошибкой передачи (если все биты в символе равны нулю)? 4. Если первый стоп-бит - ноль, а второй единица, является ли это ошибкой передачи (если все биты в символе равны нулю)? И, наконец, полтора стоп-бита. Если биты будут считываться в середине интервала, то считав N+1 бит устройство не отличит передачу с полутора стоп-битами от передачи с одним стоп-битом. Если производить считывание не только в середине битов, но и, так скажем, на их стыках, то это тоже не будет особо информативным: то есть устройство увидит середину первого стоп-бита, его "стык" с половинкой стоп-бита и конец этой половинки. Предположим, устройство считало "...xxx110", значит ли это, что полтора стоп-бита произошли и всё отлично? Получается, для надёжной обработки ошибок конца символа следует производить чтение 4 раза за бит, но такой подход кажется перетяжелённым. Как же наилучшим образом следует в теории производить проверку корректности полутора битов?
  4. Предположим, имеется мост USB-UART со встроенным LDO 5,0->3,3. Предположим, есть задача сделать на его основе автономную платку-переходник. Также, предположим, есть требование, что на плате должна быть отдельная микросхема TVS - диодная сборка для защиты линий D+/D- USB. Каким напряжением следует питать TVS? 1. Если 5,0В, то если Vf=0,7 - диоды не защитят от всплеска в 5,5В, который теоретически может выбить входы. С другой стороны - может выбить, а может - и нет. А от короткого импульса в 1кВ TVS спасёт гарантированно. 2. Если 3,3В, то к встроенному LDO не рекомендуется присоединять ничего, кроме самого моста, так как он маломощный. С другой стороны - выходные конденсаторы LDO вполне могут засосать короткий импульс так, что LDO ничего не почувствует. Кстати, что произойдёт с керамическим конденсатором (рассчитанным на 25В, к примеру), присоединённым к линии питания TVS при импульсе в несколько кВ, который сам TVS попробует выкинуть в питание?
  5. Здравствуйте, LexaryStyle, есть ли у вас возможность посмотреть личные сообщения?
  6. Куплю демоплату FUTUREM2GL-EVB с ПЛИСом IGLOO2.
  7. Неа (( Synplify синтезирует всё до конца и кастомных ошибок не выбрасывает. Может я, конечно, что-то не так в нём делаю, но если у кого есть Synplify - можете подтвердить или опровергнуть.
  8. Что же, тогда большое спасибо за проверенное опытом решение! Теплится надежда, что @makc подскажет решение, основанное на ассертах, но согласно тому, что я про них читал, этот механизм применим лишь к стадии симуляции.
  9. Спасибо большое, но чую, иные синтезаторы могут залезть внутрь if-а вне зависимости от значения его условия. И обнаружить ошибку. Думаю, как бы покрасивей вызывать костылеобразное деление на ноль - это могло бы быть более кросплатформенно. Надо будет попробовать и то и другое на различных синтезаторах.
  10. Не вполне понимаю, как это сделать. module test_module #(parameter TEST_PARAM = 1) (input some_in, output some_out); <что-то, что должно вызвать ошибку, если тест_парам равен единице>//TEST_PARAM must be zero assign some_out = some_in; endmodule Что нужно вписать в код, чтобы он упал на синтезе при TEST_PARAM=1 и не упал при, скажем, TEST_PARAM=0 ? Что-нибудь типа такого: module test_module #(parameter TEST_PARAM = 1) (input some_in, output some_out); parameter dummy = 10/(TEST_PARAM-1);//TEST_PARAM must be zero assign some_out = some_in; endmodule Предположим, что она есть. Как ею воспользоваться для решения данной задачи?
  11. Если так, то это офигенно! Не, я просто не пойму Synopsys, это же не ООП реализовать в синтезатор! Это же просто... сообщения! Подобный код не то, что второкурсник - продвинутый 10-классник написал бы. И в дополнение к этому, так милы советы: "Не, а вот нужно параметризовывать модули. Вот вы параметризуете, отладите, натычете туда дефайнов и познаете мудрость бытия, счастье и (возможно) богатство!" Да-да, можно обпараметризоваться, а потом нафигачить дичь в самих параметрах и всё пойдёт по ммм... по коричневой субстанции. Потому, что за 15 лет в синтезаторе не реализовали выполнение $error. А я ещё ругался на Альтеру за неполную поддержку SV. Да подразделение Квартуса - чёртовы герои СистемВерилога!
  12. Аа. Не, я поковырял Гугл изрядно. В том числе, нашёл на electronix тему 12-летней давности Verilog. Создание сообщений об ошибках, где нет внятных ответов. А также, нашёл практически эталонный образец творчества в духе "Тем, кто и так знает, всё будет кристально ясно. Те, кто сталкиваются в первый раз - не поймут ничего" про ассерты (код выполнен в виде картинок, лайк!). Потом уже попробовал метод тыка (в Quartus всё получилось именно благодаря ему). А уже потом написал сюда.
  13. Нет, в документе Synopsys Synplify Pro for Microsemi Edition User Guide по слову "$error" не находится ни одного совпадения. Стесняюсь спросить, а почему вы спрашиваете?
  14. Хочу, чтобы внутри моего библиотечного модуля происходила проверка входных параметров. И если они не удовлетворяют определённым условиям, то на стадии синтеза выдавалась бы осмысленная ошибка с указанием на то, какие параметры и как именно не удовлетворяют условиям. В Quartus для этой цели я сделал проверку параметров в блоке initial: module test_module #(parameter TEST_PARAM = 1) (input some_in, output some_out); initial begin if(TEST_PARAM == 1) $error("TEST_PARAM must be zero"); end assign some_out = some_in; endmodule ...и Quartus исправно выдаёт данную ошибку. Пробую делать тоже самое в Synplify, он игнорирует $error, собирает проект и лишь выдаёт предупреждение, что: При попытке вставить условие непосредственно в тело модуля, Synplify выдаёт такую ошибку: А при попытке написать так: module test_module #(parameter TEST_PARAM = 1) (input some_in, output some_out); assert (TEST_PARAM == 1) $error("TEST_PARAM must be zero"); else $error("good!!"); assign some_out = some_in; endmodule ...Synplify всё собирает, не выдаёт никаких ошибок и не выводит мои сообщения. Вопрос: как в Synplify на стадии синтеза вывести кастомное сообщение об ошибке? P.S. Есть известный анекдот, в котором турист идёт по горам/лесам, встречает пожилого местного жителя и спрашивает его: - Добрый день, уважаемый! Скажите пожалуйста, не знаете ли вы, чем здесь так неприятно пахнет, прямо скажем, воняет? - О-о-о, молодой человек! Как-то раз один юноша из соседнего села... <далее идёт длинная-длинная история в духе Ромео-и-Джульетты> ...жили они долго и счастливо и/или умерли в один день! - А-а. Ясно. А пахнет-то чем? - Да фиг его знает, нагадил кто-то, наверное. Разбираясь с ассерт-ассет, кавер-фигавер и методологиями верификации, я понял, что про них написано очень много и очень заумно. И в первую очередь они нужны для симуляции, а к синтезу относятся весьма косвенно. Поэтому, хотелось бы пропустить все истории про Ромео-и-Джульетту и понять чем воняет, как решить типовую (как мне представляется) задачу вывода ошибки в зависимости от значения параметров на этапе синтеза. То есть: 1) может ли Synplify это делать? 2) И если да, то при помощи каких конкретно слов?
×
×
  • Создать...