exponenta event banner

importhdl

Импорт кода Verilog и создание модели Simulink

Описание

importhdl импортирует и анализирует указанные файлы Verilog ® для создания соответствующей модели Simulink ®.

пример

importhdl(FileNames) импортирует указанные файлы Verilog и создает соответствующую модель Simulink, удаляя при этом неподключенные компоненты, которые не вносят непосредственного вклада в вывод.

пример

importhdl(FileNames,Name,Value) импортирует указанные файлы Verilog и создает соответствующую модель Simulink при удалении несвязанных компонентов, которые не вносят непосредственного вклада в вывод, с опциями, заданными одним или несколькими аргументами пары имя-значение.

Примеры

свернуть все

В этом примере показано, как можно импортировать файл, содержащий код Verilog, и создать соответствующую модель Simulink™.

Указать входной файл Verilog

Убедитесь, что входной файл HDL не содержит синтаксических ошибок, является синтезируемым и использует конструкции, поддерживаемые импортом HDL. В этом примере показан код Verilog компаратора.

edit('comparator.v')

Импорт файла Verilog

Чтобы импортировать файл HDL и создать модель Simulink™, передайте имя файла в виде символьного вектора в importhdl функция.

importhdl('comparator.v')
### Parsing <a href="matlab:edit('comparator.v')">comparator.v</a>. 
### Top Module of the source: 'comparator'. 
### Identified ClkName::clk. 
### Identified RstName::rst. 
### Hdl Import parsing done. 
### Creating Target model comparator
### Generating Dot Layout...
### Start Layout...
### Working on hierarchy at ---> 'comparator'.
### Laying out components.
### Working on hierarchy at ---> 'comparator/comparator'.
### Laying out components.
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Setting the model parameters.
### Generated model as C:\Temp\examples\examples\hdlcoder-ex77699673\hdlimport\comparator\comparator.slx.
### HDL Import completed.

Импорт HDL анализирует входной файл и отображает сообщения процесса импорта в окне команд MATLAB™. Импорт обеспечивает связь с созданной моделью Simulink™. comparator.slx. Созданная модель использует то же имя, что и верхний модуль во входном файле Verilog.

Проверка созданной модели Simulink™

Чтобы открыть созданную модель Simulink™, выберите ссылку. Модель сохраняется в hdlimport/comparator путь относительно текущей папки. Можно моделировать модель и наблюдать за результатами моделирования.

addpath('hdlimport/comparator')
open_system('comparator.slx')
sim('comparator.slx')

В этом примере показано, как можно импортировать несколько файлов, содержащих код Verilog, и создать соответствующую модель Simulink™.

Укажите входной файл Verilog

Убедитесь, что входные файлы HDL не содержат синтаксических ошибок, являются синтезируемыми и используют конструкции, поддерживаемые при импорте HDL. Например, в этом коде показаны три файла Verilog, использующие экземпляр модуля для формирования иерархической структуры. Один модуль example1.v реализует простую последовательную схему на основе условия if-else. Другой модуль example2.v реализует простое комбинационное арифметическое выражение.

edit('example1.v')
edit('example2.v')

Верхний модуль, содержащийся в файле example.v создает экземпляры двух модулей в example1.v и example2.v

edit('example.v')

Импорт файлов Verilog

Чтобы импортировать файл HDL и создать модель Simulink™, передайте имена файлов в виде массива ячеек векторов символов в importhdl функция. По умолчанию импорт HDL идентифицирует верхний модуль и пакет синхросигналов при анализе входного файла.

importhdl({'example.v','example1.v','example2.v'})
### Parsing <a href="matlab:edit('example.v')">example.v</a>. 
### Parsing <a href="matlab:edit('example1.v')">example1.v</a>. 
### Parsing <a href="matlab:edit('example2.v')">example2.v</a>. 
### Top Module of the source: 'example'. 
### Identified ClkName::clk. 
### Hdl Import parsing done. 
### Creating Target model example
### Generating Dot Layout...
### Start Layout...
### Working on hierarchy at ---> 'example'.
### Laying out components.
### Working on hierarchy at ---> 'example/example'.
### Laying out components.
### Working on hierarchy at ---> 'example/example/example1'.
### Laying out components.
### Applying Dot Layout...
### Drawing block edges...
### Working on hierarchy at ---> 'example/example/example2'.
### Laying out components.
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Setting the model parameters.
### Generated model as C:\Temp\examples\examples\hdlcoder-ex56732899\hdlimport\example\example.slx.
### HDL Import completed.

Импорт HDL анализирует входной файл и отображает сообщения процесса импорта в окне команд MATLAB™. Импорт обеспечивает связь с созданной моделью Simulink™. example.slx. Созданная модель использует то же имя, что и верхний модуль, который содержится во входном файле Verilog example1.v.

Проверка созданной модели Simulink™

Чтобы открыть созданную модель Simulink™, выберите ссылку. Модель сохраняется в hdlimport/example путь относительно текущей папки. Можно моделировать модель и наблюдать за результатами моделирования.

addpath('hdlimport/example')
open_system('example.slx')

Чтобы избежать деления на ноль, можно подавить диагностику предупреждения перед моделированием.

Simulink.suppressDiagnostic({'example/example/example2/Div'}, ...
                                'SimulinkFixedPoint:util:fxpDivisionByZero')
sim('example')

Можно просмотреть иерархию подсистем, реализующих код Verilog, использующий экземпляр модуля.

open_system('example/example/example1')

open_system('example/example/example2')

В этом примере показано, как можно импортировать несколько файлов, содержащих код Verilog, и создать соответствующую модель Simulink™. При импорте нескольких файлов, если требуется запутать код HDL или если файлы содержат код HDL для IP-адресов конкретных поставщиков, можно импортировать код HDL как модуль BlackBox с помощью importhdl функция.

Укажите входные файлы Verilog

Убедитесь, что входные файлы HDL не содержат синтаксических ошибок, являются синтезируемыми и используют конструкции, поддерживаемые при импорте HDL. Например, в этом коде показаны три файла Verilog, использующие экземпляр модуля для формирования иерархической структуры. Один модуль sequentialexp.v реализует простую последовательную схему на основе условия if-else. Другой модуль comditionalcomb.v реализует простое комбинационное арифметическое выражение.

edit('conditionalcomb.v')
edit('sequentialexp.v')
edit('intelip.v')

Увидеть, что sequentialexp.v модуль создает экземпляр IP-адреса Intel ®, который реализует сумматор с плавающей запятой с одинарной точностью.

Верхний модуль top содержится в файле blackboxtop.v создает экземпляры двух модулей в conditionalcomb.v и sequentialexp.v

edit('blackboxtop.v')

Импорт файлов Verilog

Чтобы импортировать файл HDL и создать модель Simulink™, передайте имена файлов в виде массива ячеек векторов символов в importhdl функция. По умолчанию импорт HDL идентифицирует верхний модуль и пакет синхросигналов при анализе входного файла.

importhdl({'blackboxtop.v','conditionalcomb.v','sequentialexp.v','intelip.v'}, ...
                            'topModule','top','blackBoxModule','intelip')
### Parsing <a href="matlab:edit('blackboxtop.v')">blackboxtop.v</a>. 
### Parsing <a href="matlab:edit('conditionalcomb.v')">conditionalcomb.v</a>. 
### Parsing <a href="matlab:edit('sequentialexp.v')">sequentialexp.v</a>. 
### Parsing <a href="matlab:edit('intelip.v')">intelip.v</a>. 
### Top Module of the source: 'top'. 
### Identified ClkName::clk. 
### Hdl Import parsing done. 
### Creating Target model top
### Generating Dot Layout...
### Start Layout...
### Working on hierarchy at ---> 'top'.
### Laying out components.
### Working on hierarchy at ---> 'top/top'.
### Laying out components.
### Working on hierarchy at ---> 'top/top/u_comb'.
### Laying out components.
### Applying Dot Layout...
### Drawing block edges...
### Working on hierarchy at ---> 'top/top/u_seq'.
### Laying out components.
### Working on hierarchy at ---> 'top/top/u_seq/u_intelip'.
### Laying out components.
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Setting the model parameters.
### Generated model as C:\Temp\examples\examples\hdlcoder-ex63017378\hdlimport\top\top.slx.
### HDL Import completed.

Импорт HDL анализирует входной файл и отображает сообщения процесса импорта в окне команд MATLAB™. Импорт обеспечивает связь с созданной моделью Simulink™. top.slx. Созданная модель использует то же имя, что и верхний модуль, который содержится во входном файле Verilog conditionalcomb.v.

Проверка созданной модели Simulink™

Чтобы открыть созданную модель Simulink™, выберите ссылку. Модель сохраняется в hdlimport/top путь относительно текущей папки. Можно моделировать модель и наблюдать за результатами моделирования.

addpath('hdlimport/top')
open_system('top.slx')
set_param('top','SimulationCommand','update')

Чтобы избежать деления на ноль, можно подавить диагностику предупреждения перед моделированием.

Simulink.suppressDiagnostic({'top/top/u_seq/Div'}, ...
                                'SimulinkFixedPoint:util:fxpDivisionByZero')
sim('top')

Можно просмотреть иерархию подсистем, реализующих код Verilog, использующий экземпляр модуля.

open_system('top/top/u_comb')

При открытии подсистемы, реализующей последовательный канал, можно открыть u_intelip Подсистема для просмотра реализации blackbox.

open_system('top/top/u_seq')

open_system('top/top/u_seq/u_intelip')

В этом примере показано, как можно импортировать код Verilog, содержащий следующие операторы, и создать соответствующую модель Simulink™:

  • Арифметика

  • Логичный

  • XOR

  • Bitwise

  • Условный

  • Относительный

  • Связь

Указать входной файл Verilog

Убедитесь, что входной файл HDL не содержит синтаксических ошибок, является синтезируемым и использует конструкции для различных операторов. Например, этот код Verilog показывает различные операторы.

edit('VerilogOperators.v')

Импорт файла Verilog

Чтобы импортировать файл HDL и создать модель Simulink™, передайте имя файла в виде символьного вектора в importhdl функция.

importhdl('VerilogOperators.v')
### Parsing <a href="matlab:edit('VerilogOperators.v')">VerilogOperators.v</a>. 
### Top Module of the source: 'VerilogOperators'. 
### Hdl Import parsing done. 
### Creating Target model VerilogOperators
### Generating Dot Layout...
### Start Layout...
### Working on hierarchy at ---> 'VerilogOperators'.
### Laying out components.
### Working on hierarchy at ---> 'VerilogOperators/VerilogOperators'.
### Laying out components.
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Generated model as C:\Temp\examples\examples\hdlcoder-ex29847655\hdlimport\VerilogOperators\VerilogOperators.slx.
### HDL Import completed.

Импорт HDL анализирует входной файл и отображает сообщения процесса импорта в окне команд MATLAB™. Импорт обеспечивает связь с созданной моделью Simulink™. VerilogOperators.slx. Созданная модель использует то же имя, что и верхний модуль во входном файле Verilog.

Проверка созданной модели Simulink™

Чтобы открыть созданную модель Simulink™, выберите ссылку. Модель сохраняется в hdlimport/VerilogOperators путь относительно текущей папки. Можно моделировать модель и наблюдать за результатами моделирования.

addpath('hdlimport/VerilogOperators')
open_system('VerilogOperators.slx')
sim('VerilogOperators.slx')

В этом примере показано, как можно импортировать несколько файлов, содержащих код Verilog, которые выполняют неявные преобразования типов данных и создают соответствующую модель Simulink™. Импорт HDL может выполнять неявное преобразование типа данных, например, в арифметических операциях, преобразовании типа данных, выборе битов и конкатенации битов.

Укажите входной файл Verilog

Убедитесь, что входные файлы HDL не содержат синтаксических ошибок, являются синтезируемыми и используют конструкции, поддерживаемые при импорте HDL. Например, в этом коде показаны три файла Verilog, использующие экземпляр модуля для формирования иерархической структуры. Модули NG1_implicit.v и round_const.v выполнить неявное преобразование типа данных.

edit('NG1_implicit.v')
edit('round_constant.v')

Верхний модуль, содержащийся в файле example.v создает экземпляры двух модулей в NG1_implicit.v и round_constant.v.

edit('implicit_top.v')

Импорт файлов Verilog

Чтобы импортировать файл HDL и создать модель Simulink™, передайте имена файлов в виде массива ячеек векторов символов в importhdl функция. По умолчанию импорт HDL определяет верхний модуль при анализе входного файла.

importhdl({'implicit_top.v','NG1_implicit.v','round_constant.v'})
### Parsing <a href="matlab:edit('implicit_top.v')">implicit_top.v</a>. 
### Parsing <a href="matlab:edit('NG1_implicit.v')">NG1_implicit.v</a>. 
### Parsing <a href="matlab:edit('round_constant.v')">round_constant.v</a>. 
### Top Module name: 'top'. 
Warning: Unused input port 'i' in 'rconst' module. 
### Hdl Import parsing done. 
### Creating Target model top
### Generating Dot Layout...
### Start Layout...
### Working on hierarchy at ---> 'top'.
### Laying out components.
### Working on hierarchy at ---> 'top/top'.
### Laying out components.
### Working on hierarchy at ---> 'top/top/NG1'.
### Laying out components.
Configurable Subsystem block 'simulink/Ports & Subsystems/Configurable Subsystem' must be converted to a Variant Subsystem block. Variant subsystems offers enhanced capabilities while maintaining equivalant functionality. Support of Configurable Subsystem will be removed in a future release.
 
### Applying Dot Layout...
### Drawing block edges...
### Working on hierarchy at ---> 'top/top/rconst'.
### Laying out components.
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Generated model file C:\TEMP\Examples\hdlcoder-ex12503110\hdlimport\top\top.slx.
### Importhdl completed.

Импорт HDL анализирует входной файл и отображает сообщения процесса импорта в окне команд MATLAB™. Импорт обеспечивает связь с созданной моделью Simulink™. implicit_top.slx. Созданная модель использует то же имя, что и верхний модуль, который содержится во входном файле Verilog implicit_top.v.

Проверка созданной модели Simulink™

Чтобы открыть созданную модель Simulink™, выберите ссылку. Модель сохраняется в hdlimport/example путь относительно текущей папки. Можно моделировать модель и наблюдать за результатами моделирования.

addpath('hdlimport/top');
open_system('top.slx')

В rconst Подсистема, один из входных портов не подключен. Рекомендуется избегать непроверенных выходов путем добавления блока терминатора.

addterms('top');
sim('top');

Можно просмотреть иерархию подсистем, реализующих код Verilog, использующий экземпляр модуля.

open_system('top/top/NG1')

open_system('top/top/rconst')

В этом примере показано, как можно импортировать файл, содержащий код Verilog, и определить блоки ОЗУ в создаваемой модели Simulink™. Можно импортировать код Verilog, который выводит любой из различных RAM в библиотеке RAM HDL, включая HDL. Блоки на основе системных объектов RAM и блоки RAM.

Указать входной файл Verilog

Убедитесь, что входной файл HDL не содержит синтаксических ошибок, является синтезируемым и использует конструкции, поддерживаемые импортом HDL. В этом примере показан код Verilog.

edit('simple_dual_port_ram.v')

Импорт файла Verilog

Чтобы импортировать файл HDL и создать модель Simulink™, передайте имя файла в виде символьного вектора в importhdl функция.

importhdl('simple_dual_port_ram.v')
### Parsing <a href="matlab:edit('simple_dual_port_ram.v')">simple_dual_port_ram.v</a>. 
### Top Module name: 'SimpleDualPortRAM'. 
### Identified ClkName::clk. 
### Hdl Import parsing done. 
### Creating Target model SimpleDualPortRAM
### Generating Dot Layout...
### Start Layout...
### Working on hierarchy at ---> 'SimpleDualPortRAM'.
### Laying out components.
### Working on hierarchy at ---> 'SimpleDualPortRAM/SimpleDualPortRAM'.
### Laying out components.
Configurable Subsystem block 'simulink/Ports & Subsystems/Configurable Subsystem' must be converted to a Variant Subsystem block. Variant subsystems offers enhanced capabilities while maintaining equivalant functionality. Support of Configurable Subsystem will be removed in a future release.
 
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Setting model parameters.
### Generated model file C:\TEMP\Examples\hdlcoder-ex67646187\hdlimport\SimpleDualPortRAM\SimpleDualPortRAM.slx.
### Importhdl completed.

Импорт HDL анализирует входной файл и отображает сообщения процесса импорта в окне команд MATLAB™. Импорт обеспечивает связь с созданной моделью Simulink™. SimpleDualPortRAM.slx. Созданная модель использует то же имя, что и верхний модуль во входном файле Verilog.

Проверка созданной модели Simulink™

Чтобы открыть созданную модель Simulink™, выберите ссылку. Модель сохраняется в hdlimport/SimpleDualPortRAM путь относительно текущей папки. Можно моделировать модель и наблюдать за результатами моделирования.

addpath('hdlimport/SimpleDualPortRAM');
open_system('SimpleDualPortRAM.slx');
sim('SimpleDualPortRAM.slx');

При навигации по модели отображается блок простого двухпортового ОЗУ.

open_system('SimpleDualPortRAM/SimpleDualPortRAM')

Входные аргументы

свернуть все

Имена файлов HDL, импортируемых для создания модели Simulink. По умолчанию importhdl импортирует файлы Verilog. Для импорта:

  • Один HDL-файл, укажите имя файла как символьный вектор.

  • Несколько HDL-файлов, укажите имена файлов как массив ячеек символьных векторов.

  • Для всех HDL-файлов в папке укажите имя папки в виде символьного вектора.

  • Несколько папок и комбинаций файлов и папок, указанных как массив ячеек векторов символов. Можно также использовать подпапки, содержащие рекурсивные папки.

Пример: importhdl('example') импортирует указанный файл Verilog. Если example является подпапкой в текущей рабочей папке, импорт HDL анализирует экземпляры файлов и модулей в подпапках, а затем создает модель Simulink для всех .v файлы. Если importhdl не удается найти подпапку с именем example, поиск по пути MATLAB ® файлов HDL с именемexample.

Пример: importhdl({'top.v','subsystem1.v','subsystem2.v'}) импортирует указанные файлы Verilog и создает соответствующую модель Simulink.

Пример: importhdl(pwd) импортирует все файлы Verilog в текущей папке и создает соответствующую модель Simulink.

Пример: importhdl('root/example/hdlsrc') импортирует все файлы Verilog по указанному пути и создает соответствующую модель Simulink. Можно указать относительный или абсолютный путь.

Пример: importhdl('subfolder') импортирует все файлы Verilog в указанной подпапке и создает соответствующую модель Simulink. По умолчанию importhdl выполняет разбор вложенных папок, содержащих рекурсивные папки.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: importhdl('root/example/hdlsrc') импортирует все файлы Verilog по указанному пути и создает соответствующую модель Simulink. Можно указать относительный или абсолютный путь.

Язык входного исходного файла, содержащего код HDL, указанный как символьный вектор. Если указан файл VHDL ®, при импорте HDL возникает ошибка.

Пример: importhdl('fifo.v','Language','Verilog') импортирует файл Verilog fifo.v и генерирует соответствующую модель Simulink fifo.slx.

Имя модуля верхнего уровня в коде HDL, указанное как символьный вектор. Это имя становится именем подсистемы верхнего уровня, из которой импорт HDL создает иерархию подсистем в созданной модели Simulink. Если входные файлы HDL содержат более одного верхнего модуля, укажите модуль верхнего уровня, который будет использоваться для создания модели Simulink с помощью TopModule собственность.

Пример: importhdl('full_adder.v','TopModule','two_half_adders') импортирует файл Verilog full_adder.v и генерирует соответствующую модель Simulink full_adder.slx с two_half_adders в качестве подсистемы верхнего уровня.

Имена тактовых, сбросных и разрешающих тактовых сигналов для последовательных каналов, заданных как массив ячеек символьного вектора. Имена по умолчанию для сигналов синхросигналов:

  • Тактовый сигнал - clk, clock

  • Сигнал сброса - rst, reset

  • Сигнал включения синхросигнала - clk_enb, clk_en, clk_enable, enb, enable

Если информация о пакете часов не указана, при импорте HDL используются значения по умолчанию. При анализе входного файла, если импорт HDL идентифицирует имя тактового генератора, отличное от имени тактового генератора, указанного в ClockBundle, при импорте возникает ошибка.

Пример: importhdl('example.v','clockBundle',{'clk','rst','clk_enb'}) импортирует файл Verilog example.v с указанной информацией о пачке синхросигналов.

Имя или имена модулей во входных файлах Verilog, которые будут импортированы как подсистемы BlackBox в созданной модели Simulink. Блок «Подсистема», импортированный как BlackBox, использует входные и выходные порты, предоставляемые определению модуля. Внутри подсистемы входные порты подключаются к блокам терминатора, блоки констант со значением zero подключаются к портам вывода. Используйте эту возможность для импорта определенных поставщиком IP-адресов в качестве подсистем BlackBox в модели.

Пример: importhdl({'example.v,'example1.v','example2.v','xilinxIP.v},'topModule','top','blackBoxModule','xilinxIP') импортирует указанные файлы Verilog с помощью xilinxIP в качестве модуля BlackBox. Соответствующая подсистема в модели Simulink имеет входные порты, соединенные с блоками терминатора, и блоки константы с постоянным нулевым значением, соединенные с выходными портами.

Автоматическое упорядочение блоков в модели Simulink, созданных при выполнении importhdl. По умолчанию autoPlace является on. importhdl затем использует Simulink.BlockDiagram.arrangeSystem для улучшения компоновки модели путем перегруппировки, изменения размеров и перемещения блоков, а также выпрямления сигнальных линий.

Пример: importhdl('example.v','autoPlace','on') импортирует файл Verilog example.v и создает модель Simulink с улучшенной компоновкой модели.

Представлен в R2018b