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 Подсистема, один из входа портов не соединен. Рекомендуется избегать неотключенных выходов путем добавления блока Terminator.

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

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

open_system('top/top/NG1')

open_system('top/top/rconst')

В этом примере показано, как можно импортировать файл, содержащий код Verilog, и вывести блоки оперативной памяти в Simulink™ модели, которая генерируется. Можно импортировать код Verilog, который выводит любую из различных ОЗУ в библиотеке HDL RAM, включая hdl. Блоки RAM System-Object и блоковые 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');

Если вы перемещаетесь по модели, вы видите блок Simple Dual Port RAM.

open_system('SimpleDualPortRAM/SimpleDualPortRAM')

Входные параметры

свернуть все

Имена файлов для импорта для генерации модели 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-коде, заданное как вектор символов. Это имя становится именем Subsystem верхнего уровня, из которого 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. Блок Subsystem, который импортируется как BlackBox, использует входные и выходные порты, которые вы предоставляете определению модуля. Внутри Подсистемы входные порты соединяются с Terminator блоками, Constant блоки со значением zero соединяются с портами выхода. Используйте эту возможность для импорта IP-адресов конкретного поставщика в качестве подсистем BlackBox в вашей модели.

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

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

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

Введенный в R2018b