Современная электроника №1/2022
ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 60 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 1 2022 В нём присутствует несинтезируемая конструкция событие . В Delta Design Simtera компиляция проходит без ошибок, но при провер- ке синтезируемости кода также выда- ётся ошибка – рис. 7. Поведенческий синтез в Delta Design Simtera Синтез RTL (Register transfer level) по коду Verilog реализован в наибо- лее простом варианте. В первом при- ближении для реализации синтеза в системе присутствует построение схем связей высокоуровневых элемен- тов: переменных (портов, локальных переменных, чисел, параметров); бло- ков выполнения унарных, бинарных и имеющих большее число аргумен- тов операций; блоков осуществления комбинационной и синтезируемой последовательностной логики (защё- лок, мультиплексоров, D-триггеров и их разновидностей, шифраторов/ дешифраторов), а также, если перемен- ная представляет собой массив, обе- спечение работы с его частями. При этом оптимизация выполняется толь- ко над используемыми высокоуровне- выми элементами, то есть, например, сумматор в текущем варианте пред- ставляет собой «чёрный ящик», и его внутренние элементы И/ИЛИ/НЕ не являются компонентами синтезиро- ванной схемы и не участвуют в опти- мизации. Синтезатор Synplify, как наиболее известный по оптимизации ресурсов «кремниевый компилятор», осущест- вляет довольно глубокую оптимиза- цию уже на уровне создания принци- пиальной схемы. И, зачастую, даже в представлении схемы с высокоуровне- выми компонентами проведена опти- мизация. В ней явно видимые из кода компоненты заменены другими— обе- спечивающими более оптимальное представление всей схемы на уровне И/ИЛИ/НЕ (соответственно и в RTL). Delta Design Simtera по функциональ- ным возможностям можно сравнить с инструментом синтеза с открытым исходным кодом Yosys. Ниже приве- дены сравнительные результаты рабо- ты поведенческого синтеза систем Delta Design Simtera, Yosys и Synopsys Synplify. Примеры работы Булева функция Простые логические операции над булевыми переменными: module top(input logic a, b, c, output logic y); assign y = (~a & ~b & ~c) | (a & ~b & ~c) | (a & ~b & c); endmodule Результат работы Yosys представля- ет собой все операции в графической форме. Можно увидеть, что все три бло- ка 2, 6 и 11 представляют собой отри- цание одной и той же переменной b, 4 и 8 — отрицание c, а 7 и 12 каждый соответствуют (a & ~ b) (рис. 8). В Delta Design Simtera на настоящий момент реализована процедура повторного использования уже созданных бло- ков, что приводит лишь к однократному появлению отрицаний каждой из пере- менных. Кроме того, блоки И и ИЛИ на схеме изображаются от трёх операн- дов, как и записано в коде (рис. 9). Ника- кой минимизации здесь не проводит- ся: лишь повторное использование уже созданных блоков. Для примера пока- жем работу Synplify, который путём минимизации записанной функции снизил число операторов до 5 (отри- цание a, например, вовсе не понадоби- лось) (рис. 10). Защёлки и мультиплексоры Комбинационная логика, описывае- мая условными операторами, реализу- ется с помощьюмультиплексоров (осу- Рис. 7. Предупреждение системы проверки на синтезируемость Рис. 8. Результаты поведенческого синтеза в Yosys Рис. 9. Результаты поведенческого синтеза в Delta Design Simtera Рис. 10. Результаты поведенческого синтеза в Synopsys Synplify
RkJQdWJsaXNoZXIy MTQ4NjUy