Вадим Н. 1 12 ноября, 2022 Опубликовано 12 ноября, 2022 · Жалоба Кто-нибудь может поделиться примерами автоматизации тестирования модулей verilog? (имеется ввиду этап симуляции в modelsim) Реально ли использовать в разработке модулей на verilog подход "test first"? Реально ли отказаться от визуального контроля в режиме "Wave" в пользу консольного вывода наподобие Test::Simple ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_eight_seven 3 12 ноября, 2022 Опубликовано 12 ноября, 2022 · Жалоба Есть целая профессия для этого. Верификация. Верификаторы с изумлением смотрят на то, что разглядывание вейвформ считается тестом, и с неподдельным интересуются, умеет ли смотрящий на картинки читать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slkhome 0 14 ноября, 2022 Опубликовано 14 ноября, 2022 · Жалоба On 11/12/2022 at 7:37 AM, Вадим Н. said: Реально ли отказаться от визуального контроля в режиме "Wave" в пользу консольного вывода наподобие Test::Simple ? На начальном этапе создания RTL все равно придется посмотреть глазками, а затем уже автоматизировать. Например UART Tx как RTL, UART Rx как эталон. Затем известные передаваемые вектора, напирмер из файла, принимаются тоже в фейл и файлы сравниваются. И результат сравнения выводится уже как сообщение в консоль или еще как. Обычно на качественные тесты с покрытием, времени или людей не бывает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 14 ноября, 2022 Опубликовано 14 ноября, 2022 · Жалоба modelsim, насколько я помню, не годится для верификации - в нем нет рандомизации и (по-моему) асершинов то есть надо на questаsim переходить. --------------------- а так подходов полно (я сам не верификатор просто маску нашел смотрю что они делают) - как встроеных в тулзы, так и сторонних Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Вадим Н. 1 14 ноября, 2022 Опубликовано 14 ноября, 2022 · Жалоба угу. значит не избежать думать головой ) и метода test-first не годится хотя бы потому что заточена на какие-то статические вещи "если на входе то, то на выходе должно быть это". А здесь у нас процессы, параллельное выполнение, обратная связь, зависимость от предидущего состояния.. слишком много надо городить чтобы хотя бы входной сигнал сгенерировать. Хотя на простом примере попробовать можно. Подход с файлами, с входными и выходными векторами, по крайней мере на каких то задачах попытаюсь применить. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 14 ноября, 2022 Опубликовано 14 ноября, 2022 · Жалоба 1 hour ago, yes said: modelsim, насколько я помню, не годится для верификации - в нем нет рандомизации и (по-моему) асершинов Вообще-то годится и modelsim. Просто подходы и методика верификации будет другой, не основанной на рандомизации или асершинах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 14 ноября, 2022 Опубликовано 14 ноября, 2022 · Жалоба 3 hours ago, RobFPGA said: Вообще-то годится и modelsim. Просто подходы и методика верификации будет другой, не основанной на рандомизации или асершинах. когда-то и Verilog-XL всем хватало 🙂 я так понял, что у автора все работает и код не особо сложный, но хочется попробовать "взрослые подходы". поэтому нужны UVM, автоматическая сборка регрессионных тестов, генерация отчетов по комиту и т.д. по-моему, навык очень полезный, как и при поиске работы, так и вообще, но чтоб все это поднять с 0 нужно много энтузиазма (наверно для маленького проекта смысла в этом не много, но потренироваться) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_eight_seven 3 14 ноября, 2022 Опубликовано 14 ноября, 2022 (изменено) · Жалоба 7 hours ago, Вадим Н. said: угу. значит не избежать думать головой ) и метода test-first не годится хотя бы потому что заточена на какие-то статические вещи "если на входе то, то на выходе должно быть это". А здесь у нас процессы, параллельное выполнение, обратная связь, зависимость от предидущего состояния.. слишком много надо городить чтобы хотя бы входной сигнал сгенерировать. Хотя на простом примере попробовать можно. Подход с файлами, с входными и выходными векторами, по крайней мере на каких то задачах попытаюсь применить. Спасибо! Нет. По всем вашим предположениям, кроме думать головой. Ну или, наоборот, - вы правы во всём, но это если не думать головой Изменено 14 ноября, 2022 пользователем one_eight_seven Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 15 ноября, 2022 Опубликовано 15 ноября, 2022 · Жалоба В качестве примера такого теста, посмотрите корку EthMAC 10/100 от Игоря Мохора на опенкоресах, да, она очень старая, но зато написана в plain Verilog, с планами тестирования, автоматической верификацией, переборкой тестов и т.д. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Вадим Н. 1 15 ноября, 2022 Опубликовано 15 ноября, 2022 · Жалоба народ, спасибо за проявленное участие к этой драме. Да - как верно предположили - проекты у меня не сложные. Пару лет назад слова ПЛИСка в моём лексиконе вообще не было. Но есть задача, и закон диалектики (или чего там) о переходе количества в качество уже вот-вот прилетит по башке. des00, спасибо за наводку, уже вытянул с github-а. А вообще захотелось супер быстро изготовить модуль. Уже далеко не десятый, так что надо прям по щелчку. Типа, сначала тест. Он и будет спецификацией. А потом уже модуль. Тест проходит, следовательно удовлетворяет спецификации - и фсё! - Понятно, в общем... Я ещё может сюда его закину, если получится быстро что-нибудь сгородить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zversky 16 19 ноября, 2022 Опубликовано 19 ноября, 2022 · Жалоба В 15.11.2022 в 09:40, Вадим Н. сказал: народ, спасибо за проявленное участие к этой драме. Это не драма, а нормальный инженерный подход. Все когда-то такими были, и нам же растить тех, кто пойдёт вслед за нами (я не слишком пафосно сказал?). ЕМНИП, мы уже общались в личке? Напишите ещё раз, и мы решим эту вашу и не драму и не проблему даже ASAP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Вадим Н. 1 22 ноября, 2022 Опубликовано 22 ноября, 2022 · Жалоба по поводу ethermac: Из всего что там есть, модуль wb_bus_mon.v вроде бы понял как работает. Он прикручен к "шине" в тестбенче. Пишет в лог все противоестественные сочетания значений на шине. Сам лог, вроде бы, дальше не анализируется. У меня в проекте ни каких шин таких нет, хотя в гораздо меньшем объёме тоже можно прикрутить сбоку к выходным сигналам такой монитор. Сейчас я ради этого в modelsim в wave.do добавляю сигнал: quietly virtual function -install /testbench/uut -env /testbench/uut { (k[1] && k[4]) || (k[2] && k[3])} comm Вроде бы, если я правильно понял, для основных тестов используется целая нервная система из событий, "симофоров" и двух уровней отладочных модулей. На одном уровне описан план тестирования а другой уровень изображает из себя интерфейс и выполняет задачи отправки данных через "устройство". Такое можно в рамках целого проекта поддерживать, но не для каждого модуля. А всё-таки каждый модуль тоже нуждается в формальной проверке. Мне кажется, в Quartus, что что-то подобное предпологается. Вот в настройках проекта / EDA Tool Settings / Simulation / Test Benches... / Edit / Run simulation until all vector stimuli are used Vector stimuli это что латынь? Что имели ввиду авторы? Кто нибудь видел tutorial с данным подходом? Я только нашёл что Quartus под это дело генерирует шаблон: Spoiler // Verilog Test Bench template for design : adder_sats // // Simulation tool : ModelSim-Altera (Verilog) // `timescale 1 ns/ 1 ps module adder_sats_vlg_tst(); // constants // general purpose registers reg eachvec; // test vector input registers reg [7:0] adc_data; reg adc_data_valid; reg areset; reg clk; reg set; // wires wire [7:0] abs; wire sgn; wire [20:0] sum; wire [11:0] tot; wire valid; // assign statements (if any) adder_sats i1 ( // port map - connection between master ports and signals/registers .adc_data(adc_data), .adc_data_valid(adc_data_valid), .areset(areset), .clk(clk), .abs(abs), .sgn(sgn), .sum(sum), .tot(tot), .valid(valid), .set(set) ); initial begin // code that executes only once // insert code here --> begin // --> end $display("Running testbench"); end always // optional sensitivity list // @(event1 or event2 or .... eventn) begin // code executes for every event on sensitivity list // insert code here --> begin @eachvec; // --> end end endmodule в этом шаблоне имеется регистр eachvec. Видимо, дальше всё супер-просто, но где пример )) кто нибудь видел пример от intel/altera/mentor_graphics, объясняющий концепцию? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 22 ноября, 2022 Опубликовано 22 ноября, 2022 · Жалоба эмм, может быть вам литературу по методологии верификации почитать, если уж вам настолько это надо? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Вадим Н. 1 24 ноября, 2022 Опубликовано 24 ноября, 2022 · Жалоба вообще то, мне это обсуждение помогло, (за что я очень признателен всем причастным) Testbench, вот сейчас рисую. Он выглядит более структурировано чем предидущие. И главное, в нём прописано, что собственно хотелось бы проверить на каждом этапе. Более осознанный подход )) но проверять предполагается по-прежнему визуально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 25 ноября, 2022 Опубликовано 25 ноября, 2022 · Жалоба Это и есть верификация, и для этого надо пользоваться несинтезируемыми конструкциями Verilog для упрощения работы. Более того, есть SystemVerilog Вот у меня в подписи ссылки хорошие, надо по ним учиться, никакого визуального высматривания не надо, но первоначально оно пригодится для создания и отладки тестов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться