Основные практики кодирования

HDL Coder™ соответствует следующим соглашениям о присвоении имен и основным руководствам по кодированию, а также проверяет конструкции моделирования, которые нарушают эти правила. HDL Coder сообщает о потенциальных нарушениях правил в отчете стандарта кодирования HDL. Чтобы избежать этих нарушений, смотрите рекомендации правила.

1.A Общие соглашения об именовании

1.A.A проекта и соглашения об именовании верхнего уровня

Правило/серьезностьСообщениеПроблемаРекомендации
1.A.A.1
Предупреждение

Verilog: Source file name should be same as the name of the module in the file.

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

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

VHDL: File names containing entities should have the extension .vhd or .vhdl.

Имя исходного файла должно использовать определенные рекомендуемые соглашения об именовании и расширения файлов.

Используйте VHDL file extension option в HDL Workflow Advisor или VHDLFileExtension свойство из командной строки.

1.A.A.2
Сообщение
Verilog/VHDL: Identifiers and names should follow recommended naming convention.

Имя в проекте не начинается с буквы или содержит символ, отличный от числа, буквы или подчеркивания.

Обновите имена в вашем проекте так, чтобы они начинались с буквы алфавита (a-z, A-Z) и содержат только буквенно-цифровые символы (a-z, A-Z, 0-9) и подчеркивания (_).

1.A.A.3
Сообщение
Verilog/VHDL: Keywords in Verilog-HDL(IEEE1364), SystemVerilog(v3.1a), and keywords in VHDL(IEEE1076.X) must not be used.

Есть Верилог®, SystemVerilog или VHDL® ключевые слова в именах в вашем проекте.

Обновляйте имена в проекте так, чтобы они не содержали ключевых слов Verilog, SystemVerilog или VHDL.

Можно отключить проверку этого правила при помощи HDLKeywords свойство объекта стандартной индивидуальной настройки HDL-кодирования.

1.A.A.3vb
Сообщение
VHDL: Do not use standard VHDL names.

HDL Coder не использует стандартные имена VHDL.

Никаких действий не требуется.

1.A.A.4
Ошибка

Verilog/VHDL: Do not use names starting with VDD, VSS, VCC, GND or VREF.

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

Обновите имена в вашем проекте так, чтобы они начинались с буквы алфавита (a-z, A-Z) и содержат только буквенно-цифровые символы (a-z, A-Z, 0-9) и подчеркивания (_).

1.A.A.5
Ошибка

Verilog/VHDL: Do not use case variants of name in the same scope.

Два или более имен в вашем проекте, в пределах одной возможности, идентичны, кроме случая.

Для примера имена foo и Foo не может находиться в одной возможности.

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

Можно отключить проверку этого правила при помощи DetectDuplicateNamesCheck свойство объекта стандартной индивидуальной настройки HDL-кодирования.

1.A.A.6
Предупреждение

Verilog: Primary port names or module names must follow recommended naming convention.

HDL Coder генерирует код, который соответствует этому правилу для Verilog и VHDL.

Никаких действий не требуется.

VHDL: Component name should be same as its corresponding entity name.

1.A.A.9
Предупреждение
Verilog/VHDL: Top-level module/entity and port names should be less than or equal to 16 characters in length and not be mixed-case.

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

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

Вы можете настроить это правило с помощью ModuleInstanceEntityNameLength свойство объекта стандартной индивидуальной настройки HDL-кодирования.

1.A.B именования модулей

Правило/серьезностьСообщениеПроблемаРекомендации
1.A.B.1–1b
Ошибка

Verilog: Module and Instance names should be between 2 and 32 characters in length. The instance names including hierarchy should be less than or equal to 128 characters in length.

Имя модуля, образца или сущности в сгенерированном коде составляет менее 2 символов или более 32 символов.

Обновите указанное имя в проекте так, чтобы оно составляло от 2 до 32 символов в длину.

Вы можете настроить это правило с помощью ModuleInstanceEntityNameLength свойство объекта стандартной индивидуальной настройки HDL-кодирования.

VHDL: Entity names and instance names should be between 2 and 32 characters in length. The instance names including hierarchy should be less than or equal to 128 characters in length.

1.A.C именования сигналов

Правило/серьезностьСообщениеПроблемаРекомендации
1.A.C.3
Ошибка

Verilog: Signal names, port names, parameter names, define names and function names should be between 2 and 40 characters in length.

Сигнал, порт, параметр, задайте или имя функции в сгенерированном коде менее 2 символов или более 40 символов в длину.

Обновите имена функции или подсистем в проекте так, чтобы они составляли от 2 до 40 символов.

Вы можете настроить это правило с помощью SignalPortParamNameLength свойство объекта стандартной индивидуальной настройки HDL-кодирования.

VHDL: Signal names, variable names, type names, label names, and function names should be between 2 and 40 characters in length.

1.A.D именования файлов, пакетов и параметров

Правило/серьезностьСообщениеПроблемаРекомендации
1.A.D.1
Предупреждение

Verilog: Include files must have extensions that match ".h", ".vh",".inc", and ".h", ".inc", "ht", ".tsk" for testbench.

Сгенерированные файлы включения совпадают с этими расширениями для testbench.

Никаких действий не требуется.

VHDL: Package file name should be followed by "pac.vhd".

По умолчанию сгенерированный файл пакета postfix _pkg.

В диалоговом окне Configuration Parameters, на HDL Code Generation> Global Settings> General панель, определяют Package postfix к _pac.

1.A.D.4
Предупреждение

Verilog: Macros defined outside a module must not be used in the module.

HDL Coder не генерирует макросы в коде Verilog и не переопределяет константы в коде VHDL.

Никаких действий не требуется.

VHDL: Constants should not be redefined.

1.A.D.9
Предупреждение

Verilog: Bit-width must be specified for parameters with more than 32 bits.

HDL Coder не задает в сгенерированном коде ширину бита более 32 бит.

Никаких действий не требуется.

VHDL: Generic must not be used at top-level module.

Если вы используете дженерики в модуле верхнего уровня или если у вас есть параметры маски в проекте и установите MaskParameterAsGeneric свойство, HDL Coder сообщает об этом нарушении.

Если у вас есть параметры маски в проекте, установите MaskParameterAsGeneric на off.

1.A.E именования регистров и синхроимпульсов

Правило/серьезностьСообщениеПроблемаРекомендации
1.A.E.2
Предупреждение

Verilog/VHDL: Clock, Reset, and Enable signals should follow recommended naming convention.

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

В диалоговом окне Configuration Parameters на панели HDL Code Generation > Global Settings с помощью параметров clock input port, reset input port и clock enable input port обновляйте имена часов, сбрасывайте и активируйте сигналы соответственно. Имена тактовых сигналов должны содержать clk или ck, имена сигналов сброса должны содержать rstx, resetx, rst_x, или reset_x, и имена сигналов включения синхроимпульса должны содержать en.

1.A.F именования архитектуры

Правило/серьезностьСообщениеПроблемаРекомендации
1.A.F.1
Предупреждение

VHDL: Architecture name must contain RTL.

В сгенерированном коде VHDL имя архитектуры не содержит RTL.

Во вкладке <reservedrangesplaceholder3>> <reservedrangesplaceholder2>> <reservedrangesplaceholder1> обновите VHDL architecture name, чтобы использовать имя архитектуры, которое содержит RTL.

1.A.F.4
Предупреждение

VHDL: An entity and its architecture must be described in the same file.

По умолчанию HDL Coder описывает сущность и архитектуру кода VHDL в том же файле.

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

Задайте SplitEntityArch чтобы HDL Coder описывал сущность и архитектуру VHDL- кода в том же файле.

1.B Общие руководящие принципы для синхроимпульсов и сбросов

1.B.A тактовых импульсов

Правило/серьезностьСообщениеПроблемаРекомендации
1.B.A.1
Сообщение

VHDL: Design should have only a single clock and use only one edge of the clock.

Ваш проект использует несколько ребра синхроимпульса или содержит более одного синхроимпульса.

Если вы задаете свойство ClockInputs равным multiple или использовать TriggerAsClock чтобы использовать триггерный сигнал для триггируемой подсистемы в качестве синхроимпульса, HDL Coder генерирует это сообщение.

Обновите свой проект, чтобы использовать один синхросигнал. На панели HDL Code Generation > Global Settings установите Clock inputs Single, и Clock edge к Rising или Falling.

1.B.A.2
Ошибка

Verilog/VHDL: Do not create an RS latch or flip-flop using primitive cells such as AND, OR.

HDL Coder не создает защелки и соответствует этому правилу.

Никаких действий не требуется.

1.B.A.3
Ошибка

Verilog/VHDL: Remove combinational loops.

HDL Coder не создает комбинационные циклы.

Никаких действий не требуется.

1.C Инструкции по первоначальному сбросу

1.C.A синхроимпульсов с триггерами

Правило/серьезностьСообщениеПроблемаРекомендации
1.C.A.3
Предупреждение

Verilog/VHDL: Do not use asynchronous set/reset signals other than initial reset.

HDL Coder не использует сигналы асинхронного сброса в качестве сигналов без сброса или синхронного сброса.

Никаких действий не требуется.

1.C.A.6
Ошибка

Verilog/VHDL: Signals must not be used as both asynchronous reset and synchronous reset.

HDL Coder добавляет логику управления сбросом за пределы DUT и не генерирует как асинхронные сигналы сброса, так и синхронные сигналы сброса.

Никаких действий не требуется.

1.C.A.7
Предупреждение

Verilog/VHDL: A flip-flop must not have both asynchronous set and asynchronous reset.

HDL Coder не генерирует код как с сигналами асинхронного набора, так и с сигналами сброса.

Никаких действий не требуется.

1.C.B соглашения о сбросе

Правило/серьезностьСообщениеПроблемаРекомендации
1.C.B.1a
Сообщение

Verilog/VHDL: Asynchronous resets or sets must not be gated.

HDL Coder не логирует сигналы асинхронного набора или сброса.

Никаких действий не требуется.

1.C.B.1b
Сообщение

Verilog/VHDL: Reset must be generated in separate module instantiated at top-level.

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

Никаких действий не требуется.

1.C.B.2
Предупреждение

Verilog/VHDL: Do not use signals other than initial reset for asynchronous reset input of flip-flop.

HDL Coder использует только начальные сигналы сброса для входных входов асинхронного сброса триггера.

Никаких действий не требуется.

1.D-инструкции для синхроимпульсов

1.D.A пакетные ограничения синхроимпульса

Правило/серьезностьСообщениеПроблемаРекомендации
1.D.A.1
Предупреждение

Verilog/VHDL: Clock should be generated in separate module or entity instantiated at top-level.

HDL Coder генерирует код, соответствующий этому правилу, поскольку DUT не содержит экземпляров синхроимпульса.

Никаких действий не требуется.

1.D.C стробирования синхроимпульсов

Правило/серьезностьСообщениеПроблемаРекомендации
1.D.C.2–4
Сообщение

Verilog/VHDL: Do not use flip-flop outputs as clocks of other flip-flops and flip-flop clock signals as non-clock signals.

HDL Coder не использует выход триггеров как синхроимпульсы других триггеров или тактовые сигналы триггера как некратные сигналы.

Никаких действий не требуется.

1.D.C.6
Сообщение

Verilog/VHDL: Do not use flip-flops with inverted edges.

Если ваш Simulink® модель использует блок Triggered Subsystem с поднимающимися и падающими триггерами и имеет TriggerAsClock включено, HDL Coder нарушает это правило.

Отключить TriggerAsClock или не используйте Triggered Subsystem блоки с поднимающимися и падающими триггерами в модели Simulink.

1.D.D иерархии синхроимпульсов

Правило/серьезностьСообщениеПроблемаРекомендации
1.D.D.2
Сообщение

Verilog: One hierarchical level should have a single clock only.

Ваша модель Simulink использует несколько синхросигналов.

Обновите свой проект, чтобы использовать один синхросигнал. На панели HDL Code Generation > Global Settings установите Clock inputs Single.

1.F Руководство по иерархическому проекту

1.F.A основных размеров блоков

Правило/серьезностьСообщениеПроблемаРекомендации
1.F.A.4
Ошибка

Verilog/VHDL: Clock generation, reset generation, RAM, Setup/Hold ensure buffers, and I/O cells must be a module at top-level.

HDL Coder генерирует отдельные модули для контроллера DUT, оперативной памяти, синхронизации, чтобы он соответствовал этому правилу.

Никаких действий не требуется.

См. также

Свойства

Похожие примеры

Подробнее о