fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

Arnold Enginegger

Arnold Enginegger

رفتن به کانال در Telegram

Тоже хочу в блогеры

نمایش بیشتر
207
مشترکین
+324 ساعت
+47 روز
+1530 روز
آرشیو پست ها
В продолжение предыдущего поста. Кусочек кода из микрософтовского проекта cheriot-ibex с комментарием. Наверное тоже внезапно
В продолжение предыдущего поста. Кусочек кода из микрософтовского проекта cheriot-ibex с комментарием. Наверное тоже внезапно столкнулись с беспощадностью стандарта и необязательностью его исполнения 🙂

Залипал на ютубе и наткнулся на интересный канал про электронику и радиосвязь. Рекомендую.

Очередная gotcha в SystemVerilog. По стандарту, как известно, always_ff не разрешает multidrive. Я это давно знал, но не знал, что это касается и initial. Вот на такой код большинство симуляторов (Modelsim, XSIM, VCS, Xcelium) ругается:
  logic r;
  initial r = 1'b1;
  always_ff @(posedge clock) r <= ~r;
Но не все, Icarus и Verilator не ругаются. Однако, следующий код для Modelsim и XSIM уже корректный (для VCS и Xcelium по-прежнему нет):
  logic [7:0] ram[256];
  initial $readmem("init.mem", ram);
  always_ff @(posedge clock) ram <= ...;
При этом, все синтезаторы, которые у меня есть (Yosys, Vivado и Quartus Std) оба этих примера кушают не давясь.

Добавил в бенчмарк скрипты для запуска разных симуляторов и результаты тестов. К сожалению, у меня нет возможности запустить VCS и Xcelium локально, по этому пришлось обратиться к людям. К счастью, нашелся человек, прогнавший тесты на этих симуляторах, но по причине NDA попросил не раскрывать версии и железо, на которых они запускались. Как результат - табличка с относительным временем выполнения бенчмарка разными симуляторами. Тест, конечно, немного однобокий, т.к. не использует высокоуровневые конструкции SV и несинтезируемое подмножество, но какое-никакое представление даёт.

Пока писал скрипт на баше, нашел классную штуку для линтинга shell-скриптов. За одно есть её онлайн версия, чтобы по-быстрому копипастом проверить скрипт. Тул проверяет не только синтаксис, но и семантику. Например, предлагает более правильные конструкции, или предупреждает о deprecated.

Запилил небольшой бенчмарк для HDL симуляторов. Пока минималистично, и скрипты для запуска только на Icarus, Verilator и ModelSim/QuestaSim. Надеюсь люди добавят запуск других симуляторов.

Вышел Qucs-S 1.1.0, в который добавили возможность симуляции чисто цифровых схем при помощи Icarus Verilog или FreeHDL. Кто т
Вышел Qucs-S 1.1.0, в который добавили возможность симуляции чисто цифровых схем при помощи Icarus Verilog или FreeHDL. Кто тут хотел схемки мышевозить?

Копался в своих исходниках и нашёл такую конструкцию в тестбенче:
seq #("-__-_--____-__") seq0 (clock, s0);
Конструкция генерит последовательность по "временной диаграмме" в виде строки. Интересная идея. Я её где-то подсмотрел, но забыл где. Можно сделать более универсальный модуль, с какой нибудь умной генерацией, с условиями, остановками и пр. Для простых линейных тестбенчей было бы наверное полезно.

Пока одни закрываются (ДКО Электронщик), другие открываются. Пришло письмо от Резонита: Рады сообщить, что мы запустили онлайн сервис по закупке комплектации из наших складских запасов — магазин электронных компонентов shop.rezonit.ru. Номенклатура, представленная в магазине, формируется из компонентов, которые остаются от технологических запасов на нашем контрактном производстве и остатков складских программ. Это позволяет нам предложить инженерам-разработчикам и небольшим контрактным производителям электронные компоненты по цене значительно ниже среднерыночной — со скидками до 50%.

Потыкал палкой плату Maixduino с нейропроцессором Kendryte K210. Просто охренительная штука за 3к рублей. Внутри два ядра Ris
Потыкал палкой плату Maixduino с нейропроцессором Kendryte K210. Просто охренительная штука за 3к рублей. Внутри два ядра RiscV, аудиопроцессор (пока не смотрел, что он умеет), аппаратный FFT и ускоритель сверточных сетей на 1TOPs. Программировать можно на голом Си (есть SDK) или на MicroPython, который выдаёт консоль прямо в последовательный порт. В сети много примеров, типа распознавания объектов, детектирования лиц и пр. Один из них я потестил. Результат на картинке :) В общем, я под впечатлением. Пятнадцать лет назад для детектирования лиц с помощью каскадов Хаара нужен был неслабый такой комп, чтобы обрабатывать видеопоток в реальном времени. Сейчас это делает хреновинка с пол пачки сигарет вообще не напрягаясь.

В комментах на хабре упомянули опенсорсную библиотеку GRLIB с большим набором IP кор. Написана VHDL, но т.к. Yosys теперь умеет VHDL через GHDL, то можно пользоваться :)

Феранек пригласил на стрим товарища, который показал пример DC симуляции печатной платы (кусочка) с помощью опенсорсных тулов.

Осилил наконец поддержку плагина SV для Yosys в SymbiYosys. Для успешной компиляции в скрипте sby нужно написать вот такие строки:
plugin -i systemverilog
read_systemverilog -formal -defer source.sv
read_systemverilog -link

Причём, если при синтезе можно обойтись только read_systemverilog без —defer (если один исходник), то тут никак. Теперь sby поддерживает очень большую часть стандарта SV. А ещё говорят, что в плагин скоро завезут SVA. Такие дела.

Интересно, возможно ли сделать полностью оптическую нейросеть на голографических структурах с применением нелинейной интерференции? Прямо как позитронный мозг в известных романах 🧠

Всегда говорил "констрейны" и даже не замечал, что некоторые люди пишут "констрейнты", пока на конференции не услышал это сло
Всегда говорил "констрейны" и даже не замечал, что некоторые люди пишут "констрейнты", пока на конференции не услышал это слово от докладчика. Немного удивился и задумался, может я тупой и неправильно пишу? Ведь правильно действительно "констрейнты". Но оказалось, не один я такой. Более того, нас большинство :)

Мне тут пришло письмо от Элитана, что после шестилетнего перерыва они возобновляют продажу компонентов физлицам. На картинке
Мне тут пришло письмо от Элитана, что после шестилетнего перерыва они возобновляют продажу компонентов физлицам. На картинке предложение по GW1N-UV2QN48C6.

Запомните это хорошо! 😖
Запомните это хорошо! 😖

Геннадий Зеленко (и Сергей Попов, инженеры и преподаватели, которые разработали Микро-80 и Радио-86РК) говорит, что все эти ваши Мили и Муры устарели и нормальному инженеру вообще не нужны. Так-то.

Наверное все использовали или видели такую конструкцию для генерации случайного числа в нужном диапазоне (в данном случае от 0 до 123): a = $urandom % 123 Но не все обращают внимание на то, что такое выражение выдаст случайное число не с равномерным распределением (не всегда). Конкретно в этом случае вероятность получения чисел от 0 до 36 будет выше, чем всех остальных. При этом, чем меньше отношение интервала к максимальному случайному числу, тем больше будет неравномерность. Функция $urandom выдаёт 32-битное число, т.е. максимальное значение 2^32 и неравномерность в примере выше будет настолько маленькая, что ни в каких реальных применениях вы её не заметите. Однако, если интервал сделать, например, 0.1 от максимального случайного числа, то неравномерность будет заметна уже на тысячах выборок. Как можно догадаться, чтобы распределение не ломалось, нужно выбирать интервал равный степени двойки, чтобы весь интервал случайных чисел делился на него нацело.

В SV можно описать модуль с неопределенным (generic) интерфейсом (IEEE 1800-2005, стр.353). Но там же написано, что такой порт можно описывать только в стиле SV, т.е. в скобочках после имени модуля, а в стиле V95 нельзя. Первый раз встречаю отсутствие обратной совместимости в SV.