RobFPGA 35 29 декабря, 2021 Опубликовано 29 декабря, 2021 · Жалоба 2 minutes ago, Leka said: Мой ответ такой (если сравнивать симуляцию и синтез, то речь идет только о синтезируемом Верилоге). ... Поэтому, если промежуточные значения внешней переменной не используются внутри блока, правильным будет код с неблокирующим присваиванием, как точно отражающий и поведение, и синтез. Какя-то сложная логика с кучей допущений. С моей точки зрения правильный код одинаково ведет себя и в симе и в синтезе. Ваш "правильный" код этого не делает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 1 29 декабря, 2021 Опубликовано 29 декабря, 2021 · Жалоба 13 minutes ago, RobFPGA said: Какя-то сложная логика с кучей допущений. Никаких допущений нет. Чтобы опровергнуть всю цепочку моих рассуждений, достаточно привести хотя-бы один пример кода на синтезируемом Верилоге, в котором промежуточные значения внешней переменной были-бы видны в других процедурных блоках (без явных присваиваний промежуточных значений другим внешним переменным). Или привести хотя-бы один вариант скрытого кода, в котором q1 и q2 получат разные значения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 29 декабря, 2021 Опубликовано 29 декабря, 2021 · Жалоба 5 minutes ago, Leka said: Или привести хотя-бы один вариант скрытого кода, в котором q1 и q2 получат разные значения. Нет смысла угадывать. Даже тот код который я уже привел (во втором варианте) ведет себя по разному в симе и синтезе. Соответственно считать его правильным нельзя. Так как вы не можете использовать такой код для проверки поведения вашей логики. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 1 29 декабря, 2021 Опубликовано 29 декабря, 2021 (изменено) · Жалоба 10 minutes ago, RobFPGA said: Нет смысла угадывать. А нечего угадывать - по стандарту Верилога, не существует кода, в котором q1 и q2 получат разные значения. Доказать это сложно, а опровергнуть можно одним лишь примером существования такого кода. 10 minutes ago, RobFPGA said: Даже тот код который я уже привел Он не интересен, там переменные a и q используются только внутри процедурного блока - нет никакого смысла делать их внешними. С внутренними же переменными никаких логических противоречий в Верилоге нет. Изменено 29 декабря, 2021 пользователем Leka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 8 29 декабря, 2021 Опубликовано 29 декабря, 2021 · Жалоба 1 hour ago, Leka said: Доказать это сложно, а опровергнуть можно одним лишь примером существования такого кода. а что этим будет опровергнуто? что симулятор не соответствует стандарту? в описании (стандарте) верилог симулятора есть очень четкое описание какие события происходят и когда (в систем верилоге это посложнее, но тоже описано в стандарте, а верилоговский RTL остался таким же как в 95-ом году, если я правильно помню). есть квант времени (дельта-цикл) и соответственно переменная (lvalue) получает значение либо в текущем, либо в следующем дельта-цикле (это как раз <=). ну и этот цикл продолжается пока все события (то есть все =), которые происходят в этом цикле не совершатся. ну а когда все дельта-циклы закончатся - увеличивается время порядок исполнения блоков always / initial в дельта-цикле стандартом симулятора не определяется - то есть тут возможно и разные результаты в разных тулах и разные значения переменной, которая в разных блоках lvalue для =, поэтому можно намудрить с _тестбенчами_ . и в систем верилоге добавили сложности/правил в порядок исполнения, чтобы по возможности убрать такое из тестбенчей. но наделать неоднозначности в RTL если пользоваться <= нельзя - поэтому и формулируются простые правила: пользуйтесь <= чтобы и симулятор и синтез поняли чего надо сделать однозначно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 30 декабря, 2021 Опубликовано 30 декабря, 2021 · Жалоба Вся HDL-кухня по самой идеологии ПЛИС изначально параллельна. Для последовательного исполнения принимают особенные меры. Их и стоит изучать особенно внимательно. В процессе практики это усваиваешь быстро, да и нет там особых сложностей! Рекомендую тупо посмотреть на симуляторе разные варианты, чтобы разрешить внутренние коллизии понимания. Это один из важных пунктов, который мешает программисту микроконтроллеров "въехать" в HDL. Ломку наблюдал неоднократно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SII 0 30 декабря, 2021 Опубликовано 30 декабря, 2021 · Жалоба 1 hour ago, Мур said: Это один из важных пунктов, который мешает программисту микроконтроллеров "въехать" в HDL. Ломку наблюдал неоднократно... В том числе и потому, что программирование ПЛИС (или, шире, проектирование любой цифровой электроники) -- это ни разу не программирование в смысле написания программы для выполнения процессором. Текст на Верилоге, ВХДЛ и т.д. -- это НЕ программа (хотя внешне выглядит очень похоже на программу), это описание логики работы аппаратуры. И вот программистам в это въехать достаточно сложно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 30 декабря, 2021 Опубликовано 30 декабря, 2021 · Жалоба 24 minutes ago, SII said: В том числе и потому, что программирование ПЛИС (или, шире, проектирование любой цифровой электроники) -- это ни разу не программирование в смысле написания программы для выполнения процессором. Текст на Верилоге, ВХДЛ и т.д. -- это НЕ программа (хотя внешне выглядит очень похоже на программу), это описание логики работы аппаратуры. И вот программистам в это въехать достаточно сложно... Солидарен. Ставлю в тупик оппонентов простой фразой,- а где тут программный счетчик? Хоть формально я считаюсь инженером-программистом, считаю себя архитектором- конфигуратором... Теперь существует ветвь в проектировании, которая по праву может считаться программированием. Это определенный круг задач по регулярным структурам массовых вычислений. Даю отличную ссылку на мастера в это деле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 30 декабря, 2021 Опубликовано 30 декабря, 2021 · Жалоба 4 hours ago, SII said: В том числе и потому, что программирование ПЛИС (или, шире, проектирование любой цифровой электроники) -- это ни разу не программирование в смысле написания программы для выполнения процессором. Текст на Верилоге, ВХДЛ и т.д. -- это НЕ программа (хотя внешне выглядит очень похоже на программу), это описание логики работы аппаратуры. И вот программистам в это въехать достаточно сложно... Я бы сказал не столь категорично. Текст на Verilog может быть как программой (в смысле похожести на аналог на обычных языках), так и описанием. Тем более с учетом того что этот текст работает (и часто по разному) как в симе так и в синтезе. Поэтому это надо понимать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 30 декабря, 2021 Опубликовано 30 декабря, 2021 · Жалоба 6 hours ago, Мур said: Вся HDL-кухня по самой идеологии ПЛИС изначально параллельна. Да @Leka прекрасно это знает. Тролит он всех просто, конвертер своего "chisel" пилит. От того и такие вопросы. Язык на котором только @Leka пишет и который никто не видел и не пробовал) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 1 30 декабря, 2021 Опубликовано 30 декабря, 2021 · Жалоба 12 minutes ago, des00 said: Тролит он всех просто, конвертер своего "chisel" пилит. От того и такие вопросы. Да, пилю конвертер, но никакого троллинга нет. Обсуждения мне реально помогают, наводят на мысли/идеи, которые иначе могли вообще не прийти в голову. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 30 декабря, 2021 Опубликовано 30 декабря, 2021 · Жалоба 6 hours ago, Leka said: Да, пилю конвертер, но никакого троллинга нет. В некоторых ваших вопросах действительно нет, но вот подобный тому что вы задали, ответ на который находится в главе стандартов про работу очередей событий и может быть изучен с помощью функции $strobe, ну явный треп ради трепа. @RobFPGA правильно сказал про одинаковость моделирования и синтеза. 6 hours ago, Leka said: Обсуждения мне реально помогают, наводят на мысли/идеи, которые иначе могли вообще не прийти в голову. ну так и сделайте проект на гитхабе, выложите описание вашего языка, конвертор и народ потянется. Вырастет база тестирования, может кто активно подключится к разработке, попробует использоват ваш язык для своих проектов. Может даже ядро риск-5 на вашем языке появится) Есть же на чисел супер пупер риск5 молотилка. ЕМНП впервые вы эту тему, в редких сообщениях, начали освещать лет 12 назад. Но с тех пор, кроме вас, этот язык никто не видел и не щупал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 1 31 декабря, 2021 Опубликовано 31 декабря, 2021 (изменено) · Жалоба 3 hours ago, des00 said: ну явный треп ради трепа Нет, пришла очень интересная идея, и уже реализована в конвертере. Без "трепа" наверняка не пришла бы. Это непонятно, откуда вообще возникают идеи. 3 hours ago, des00 said: впервые вы эту тему, в редких сообщениях, начали освещать лет 12 назад Да. Если все было-бы просто - давно кто-нибудь реализовал бы "плисдуино" (по аналогии с ардуино). Сам давно пишу, проверяя на практике свои идеи. И время от времени существенно меняю концепцию (недавно опять поменял - в связи с удачным опытом лаконичного описания конвейеров и встроенных блоков памяти/умножителей, и уже почти переписал конвертер). Основные моменты не меняются: 1) тип присваивания должен определяться типом переменной, а не типом операции, 2) не должно быть деления кода на комбинационные и регистровые блоки . 3 hours ago, des00 said: Есть же на чисел супер пупер риск5 молотилка. Вот когда аналог Algodoo и тп напишут на HDL, тогда можно будет говорить, что HDL вышел на новый уровень (именно HDL, а не высокоуровневый синтез). Изменено 31 декабря, 2021 пользователем Leka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 31 декабря, 2021 Опубликовано 31 декабря, 2021 · Жалоба 15 minutes ago, Leka said: И время от времени существенно меняю концепцию (недавно опять поменял - в связи с удачным опытом лаконичного описания конвейеров и встроенных блоков памяти/умножителей, и уже почти переписал конвертер). Это говорить о том что концепция не совершенна и решает какие-то узкие, частные задачи. 11 minutes ago, Leka said: Вот когда аналог Algodoo и тп напишут на HDL, тогда можно будет говорить, что HDL вышел на новый уровень (именно HDL, а не высокоуровневый синтез). С таким же успехом можно говорить что когда на Algodoo смогут написать рабочий 10G контроллер (и чтобы сразу в нетлист, а не простая генерилка Verilog) то тогда Algodoo (и другие высокоуровневые ЯП) выйдут на новый уровень и сравняются с Verilog . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 1 31 декабря, 2021 Опубликовано 31 декабря, 2021 · Жалоба 5 hours ago, RobFPGA said: Algodoo (и другие высокоуровневые ЯП) Algodoo, это не язык программирования, это программа физического моделирования с графическим редактором (сам смотрел только первую версию, phun). https://ru.wikipedia.org/wiki/Phun 5 hours ago, RobFPGA said: узкие, частные задачи 10G контроллер - это как раз самая что ни есть "узкая, частная задача". Для физических интерфейсов можно оставить Верилог, для всего остального это слишком специализированный инструмент. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться