Современная электроника №3/2023
ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 13 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА • № 3 / 2023 Рис . 1. Типичная структура HDL- тестбенча Рис . 2. Тест проверки правильности выполнения верифицируемой САПР операции с разрядами векторов ции проектов на ПЛИС . В настоящее время использовать Simtera можно как отдельно , если мы говорим о про - ектировании конфигурации ПЛИС и архитектуры микросхем , так и в составе Delta Design – здесь этот модуль мож - но использовать для моделирования цифровых блоков в составе проекти - руемого радиоэлектронного изделия . Одним из важнейших требований к системам , подобным Simtera, является отсутствие ошибок – параметр , зави - сящий в том числе от полноты тести - рования ( верификации ) и устойчиво - сти в работе . Библиотека тестов Объём работ , связанных с разработ - кой библиотек тестов для верифика - ции HDL- систем цифрового модели - рования , можно проиллюстрировать параметрами коммерческой библиоте - ки BEACON компании InterraSystems [2], представленными в табл . 1. Если считать , что в среднем каждый тест содержит 10–20 строк HDL- кода , то общий объём таких библиотек 200 000– 400 000 строк . Следует учесть , что обыч - но отдельный простой тест проверя - ет САПР на реализацию только одной из конструкций языка . Соответствен - но , необходимы наборы более слож - ных тестов , проверяющих реализацию совокупности конструкций языков , контролирующих предельные разме - ры HDL- описаний , объём занимаемой моделями памяти инструментальных ЭВМ и т . п . Что касается самих тестов , то кро - ме обычных требований простоты и наглядности HDL- описаний , нали - чия как позитивных , так и негативных тестов , полноты покрытия конструк - ций языка и т . п . также учитывает - ся требование возможности интегра - ции тестов в тестовые наборы , так называемые регрессионные тесты , простоты настройки на изменения стандартов языка и др . Как пример , в табл . 2 представлены параметры набора Verilog- тестов Beacon-2k1 ком - пании InterraSystems. Типичная структура HDL- тестбенча – модуля , реализующего проверку тести - руемого объекта , представлена на рис . 1. Она включает модель источника входных сигналов , модель тестируе - мого объекта и компаратора . Простые тесты Простейший тест , используемый для верификации системы моделирования , обычно не содержит отдельный блок – источник входных сигналов , а состоит из операторов , включающих исследу - емую на реализуемость конструкцию языка и модель компаратора – блока проверки совпадения выходов тести - руемого объекта с эталоном . Такой подход к организации тестов реализован , например , в свободно рас - пространяемом наборе Verilog- тестов IVLTests, использовавшемся при раз - работке системы моделирования IcarusVerilog [3]. Набор содержит при - мерно 2000 тестов , что гораздо меньше , чем в наборе Beacon-2k1. Тесты органи - зованы как одномодульные тестбенчи , внутри которых все компоненты пред - ставлены последовательностями HDL- операторов . Каждый тест – это отдель - ный файл , название которого отражает проверяемую конструкцию языка и её вариант . Как пример , ниже приведён один из файлов библиотеки IVLTests – файл bitsel2.v. Это тест проверки правиль - ности выполнения верифицируемой САПР операции с разрядами векто - ров . Разряды четырёхразрядного век - тора a = 1100 в обратном порядке долж - ны быть переписаны в вектор b , и в результате b должно быть равно 0011 . Если результат не такой , на консоль выдаётся сообщение FAILED , значе - ние b и происходит останов моделиро - вания , иначе в конце моделирования выдаётся сообщение PASSED ( рис . 2). Результаты прогона теста bitsel2.v на Simtera с временн ы́ ми диаграмма - ми ( осциллограф ) и данными на кон - соли ( справа ) представлены на рис . 3. Для верификации самих HDL- тестов разработчиками Simtera в основном Таблица 2. Набор тестов библиотеки Beacon-2k1 Проверяемые наборами блока Beacon-2k1 конструкции языка Verilog Количество тестов в наборе ANSI Style Ports 73 AUTO Width Extension 16 Multy Dimension Arrays 446 Continuous Assignments without Net Declarations 30 Attributes 537 Event Control 32 Combination of Constructs 1773 Con fi guration 221 Constant Functions 65 Combined port/data 221 Disable Default Net 8 Compiler Directives 15 Command Parsing 14 SDF File Supports 3 VCD Enhancement 18 File IO 50 Generate Statement 367 Instance Array 30 Negative Pulse Detection 37 Arithmetic Operators 53 PLA Modeling 25 Parameters 492 Indexed Part Select 442 Pulse Error Propagation 20 Signed Arithmetic 53 Reentrant Task/ Functions 28 Timing Checks 44 Variable Declaration Assignments 62 Verilog 2005 196 Суммарное количество тестов 5254 `Ɵmescale 1ns / 100 ps module test ; reg [ 1:4 ] a ; reg [ 4:1 ] b ; integer i ; iniƟal begin a = 4'b1100 ; for ( i = 1 ; i <= 4 ; i = i + 1 ) begin # 1 ; b [ i ] = a [ i ]; end $display ( "a=%b, b=%b" , a , b ); if ( b !== 4'b0011) begin $display ( "FAILED -- b == %b" , b ); $finish ; end # 10 ; $display ( "PASSED" ); end endmodule
RkJQdWJsaXNoZXIy MTQ4NjUy