Современная электроника №1/2022

ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 59 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 1 2022 Рис. 2. Автодополнение Verilog-кода в зависимости от контекста Рис. 3. Дополнение кода в зависимости от введённых символов Рис. 4. Запуск моделирования HDL-проекта Рис. 5. Панель «Журналы» с отладочной информацией Рис. 6. Осциллограф Delta Design Simtera Отрисовка поведенческого модели- рования во временно ′ й области доступ- на в осциллографе и в списке наблю- дения. Данные могут быть отображены в цифровом и аналоговом видах. Во временно ′ й области доступна расста- новка курсоров, в нижней части курсо- ра отображается дельта времени меж- ду текущим и «нулевым» курсорами, а в верхней части – абсолютное значение времени (рис. 6). Поведенческий синтез. Проверка на синтезируемость HDL-язык, и язык Verilog в частно- сти, используется для описания пове- дения схемы во времени и запуска соот- ветствующего моделирования. Однако воплощение реализующей такое пове- дение цифровой аппаратуры (т.е. логи- ческих элементов и соединяющих их проводников) возможно не всегда. Логический синтез —перевод поведен- ческой модели в набор цифровых ком- понентов —может быть выполнен при использовании некоторого подмноже- ства языка Verilog, который называется Synthesizable Verilog (синтезируемый). Вполне корректный с точки зре- ния моделирования код может содер- жать несинтезируемые конструкции, и сообщение об этом должно быть выда- но пользователю только при запуске модуля синтеза, а не при общей про- верке кода на отсутствие синтакси- ческих или семантических ошибок. При этом обнаружение несинтезиру- емых конструкций следует выполнять раньше, чем будет запущен трудоём- кий процесс логического синтеза. Это выполняется путём добавления к про- верке семантики дополнительных пра- вил, следование которым проверяется сразу же при запуске синтеза, и в слу- чае их нарушения выдаётся ошибка, а процесс синтеза не стартует. В качестве примера работы системы на проверку синтеза рассмотримVerilog- код, в которомиспользуется несинтези- руемая конструкция event . Verilog-код: module dff(clk,r_data,q); input clk; input r_data; output reg q; event e_data; always@(posedge(clk)) begin if(clk)->e_data; end always @(e_data) q = r_data; endmodule

RkJQdWJsaXNoZXIy MTQ4NjUy