HDL Coder™ соответствует следующим правилам описания RTL и проверяет конструкции моделирования, которые нарушают эти правила. HDL Coder сообщает о потенциальных нарушениях правил в отчете стандарта кодирования HDL. Чтобы избежать этих нарушений, смотрите рекомендации правила.
2.A.A комбинаторных логических соглашений
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.A.A.1 Ссылка |
| HDL Coder включает пакет в каждую сущность в сгенерированный VHDL код. | Никаких действий не требуется. |
2.A.A.2 Предупреждение |
| HDL Coder не генерирует функции для DUT. | Никаких действий не требуется. |
2.A.A.3 Предупреждение |
| HDL Coder генерирует VHDL и Verilog код с правильным синтаксисом и соответствует этому правилу. | Никаких действий не требуется. |
2.A.B функций
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.A.B.1 Ошибка |
| HDL Coder не генерирует функции для DUT. | Никаких действий не требуется. |
| На входах и выходах HDL Coder использует std_logic или std_logic_vector для описания портов. | Никаких действий не требуется. | |
2.A.B.2–3 Ошибка |
| Сгенерированный HDL-код соответствует этому правилу для Verilog. | Никаких действий не требуется. |
| По умолчанию HDL Coder задает область значений для целых типов в сгенерированном коде. | Никаких действий не требуется. | |
2.A.B.4 Ошибка |
| HDL Coder не использует в коде Verilog задачи или конструкции. | Никаких действий не требуется. |
| HDL Coder не использует типы данных bit или bit vector в сгенерированном коде. | Никаких действий не требуется. | |
2.A.B.5 Ошибка |
| При генерации кода Verilog HDL Coder не использует ребра синхроимпульса в описании задачи. | Никаких действий не требуется. |
2.A.B.6 Ошибка |
| HDL Coder соответствует этому правилу, поскольку сгенерированный VHDL- кода задает область значений, который std_logic_vector использует. | Никаких действий не требуется. |
2.A.C соответствия ширины бита соглашениям
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.A.C.1–2 Ошибка |
| При создании экземпляров модуля HDL Coder обеспечивает соответствие типов, так что оно соответствует этому правилу. | Никаких действий не требуется. |
| При генерации кода VHDL HDL Coder задает порты «IN», «OUT» или «INOUT» и не использует буфер или редактирование. | Никаких действий не требуется. | |
2.A.C.3 Ошибка |
| HDL Coder соответствует этому правилу. | Никаких действий не требуется. |
| При генерации кода VHDL HDL Coder задает порты «IN», «OUT» или «INOUT» и не использует буфер или редактирование. | Никаких действий не требуется. | |
2.A.C.4–5 Ошибка |
| HDL Coder генерирует код Verilog, соответствующий этому правилу. | Никаких действий не требуется. |
| В сгенерированном коде VHDL HDL Coder не задает начальное значение для порта входа. | Никаких действий не требуется. |
2.A.D операторов
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.A.D.5 Сообщение |
| В сгенерированном коде Verilog HDL Coder соответствует этому правилу для мультибитовых операторов. | Никаких действий не требуется. |
2.A.D.6 Сообщение |
| По умолчанию HDL Coder не уменьшает ни одно, ни большое выражение. Если ваш проект выполняет операции сокращения битов, полученный HDL-код может выполнить сокращение большого выражения. | Обновите свой проект так, чтобы не было никаких вызовов операций сокращения битов. |
2.A.E условных Операторов соглашений
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.A.E.3 Сообщение |
| HDL Coder соответствует этому правилу. | Никаких действий не требуется. |
2.A.F соглашений о массивах, векторах, матрицах
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.A.F.2 Предупреждение |
| Ваш проект содержит векторы, чья LSB имеет ненулевое значение. | Обновите свой проект так, чтобы сгенерированный код содержал векторы или память, значение LSB которой равняется нулю. |
2.A.F.4 Предупреждение |
| HDL Coder обеспечивает соответствие типов и гарантирует, что ширина индексной переменной не слишком коротка. | Никаких действий не требуется. |
2.A.F.5 Ошибка |
| В сгенерированном коде HDL Coder не использует x или z для индекса массива. | Никаких действий не требуется. |
2.A.G назначения соглашения
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.A.G.1 Ошибка |
| HDL Coder непосредственно присваивает агрегаты в сгенерированном коде, не выполняя никаких промежуточных операций. | Никаких действий не требуется. |
2.A.H о возврате значения функции
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.A.H.1 Ссылка |
| В сгенерированном коде HDL Coder не использует ограниченные массивы в описании подпрограммы. | Никаких действий не требуется. |
2.A.H.2 Ссылка |
| В описании функции, когда тип возврата является массивом, HDL Coder задает область значений для значений возврата в функции в сгенерированном коде. | Никаких действий не требуется. |
2.A.H.4–6 Ошибка |
| HDL Coder соответствует этому правилу. | Никаких действий не требуется. |
2.A.H.9–10 Предупреждение |
| HDL Coder соответствует этому правилу. | Никаких действий не требуется. |
2.A.I встроенных соглашений об атрибутах
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.A.I.4–5 Ошибка |
| По умолчанию HDL Coder не использует определяемые пользователем атрибуты в сгенерированном коде. Если вы задаете свойства блоков, такие как DSPStyle в проекте, сгенерированный код использует директивы синтеза. | Чтобы исправить эту ошибку, в вашем проекте очистите свойство HDL- блока, заданное для использования директивы синтеза в сгенерированном коде. |
2.A.J конкретных конвенций VHDL
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.A.J.1–6 Предупреждение |
| Если ваш проект использует операторы цикла, HDL Coder генерирует это предупреждение. | Чтобы избежать этого предупреждения, обновите проект так, чтобы не было операторов циклов. |
2.A.J.8–13 Ошибка |
| HDL Coder соответствует этому правилу. | Никаких действий не требуется. |
Always
"Конструкции комбинационной логики2.B.A ограничения фиксации
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.B.A.2 Ссылка |
| HDL Coder не создает защелки. | Никаких действий не требуется. |
2.B.B сигнала - I
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.B.B.2–3 Сообщение |
| HDL Coder генерирует код, который соответствует использованию этих конструкций внутри | Никаких действий не требуется. |
| HDL Coder не описывает более одного выражения события в | Никаких действий не требуется. |
2.B.C сигнала - II
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.B.C.1–2 Ошибка |
| Ваш проект использует конструкции, которые генерируют код Verilog с неотключающими назначениями в комбинационных | Обновите MATLAB® алгоритм или Stateflow® разработайте так, чтобы сгенерированный код Verilog не использовал эти конструкции. |
2.B.C.3 Сообщение |
| В | Никаких действий не требуется. |
2.C.A ограничения назначения
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.C.A.1–2c Ошибка |
| HDL Coder не вводит никаких дополнительных данных и не добавляет эти конструкции при генерации триггеров в | Никаких действий не требуется. |
2.C.A.4–5b Предупреждение |
| HDL Coder не генерирует код, который использует | Никаких действий не требуется. |
2.C.A.6 Ошибка |
| HDL Coder использует | Никаких действий не требуется. |
2.C.A.7 Сообщение |
| HDL Coder не генерирует несколько асинхронных сбросов. Сгенерированный код может содержать несколько синхронных сбросов. | Никаких действий не требуется. |
2.C.A.8 Ошибка |
| HDL Coder не использует конструкции ожидания. | Никаких действий не требуется. |
2.C.A.9 Ошибка |
| По умолчанию HDL Coder использует синтаксис события для событий синхроимпульса. При помощи | Чтобы исправить эту ошибку, вы можете управлять |
2.C.B блокирующих ограничений оператора
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.C.B.1–2 Предупреждение |
| HDL Coder соответствует этому правилу. | Никаких действий не требуется. |
2.C.B.4 Ошибка |
| Сгенерированный HDL-код не содержит мертвого кода, поэтому HDL Coder соответствует этому правилу. | Никаких действий не требуется. |
2.C.C тактовых импульсов
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.C.C.1–2b Ошибка |
| HDL Coder использует восходящее ребро или падающее ребро часов, но не использует обоих ребер часов. | Никаких действий не требуется. |
2.C.C.4–5 Ошибка |
| Если ваш проект генерирует код, который использует синхроимпульсы и сигналы сброса в сетях, HDL Coder генерирует ошибку. | Чтобы минимизировать значения часов в сгенерированном HDL-коде, в стандартных свойствах индивидуальной настройки HDL-кодирования включите свойство MinimizeClockEnableCheck. Чтобы удалить сигналы сброса в сетях, в свойствах стандартной индивидуальной настройки HDL-кодирования, включите настройку RemoveResetCheck. |
2.C.C.6 Предупреждение |
| Ваш Simulink® проект модели или код MATLAB использует сигналы асинхронного сброса. | Чтобы избежать этого нарушения, используйте сигналы синхронного сброса для вашего проекта. В диалоговом окне Параметров конфигурации установите Reset type равным |
2.C.D ограничений начального значения
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.C.D.1 Ошибка |
| Сгенерированный HDL-код для вашего проекта содержит несинтезируемое | Отключите опцию Initialize block RAM или Initialize all RAM blocks в HDL Workflow Advisor. Можно отключить проверку этого правила при помощи |
2.C.F ограничений смешанного таймирования
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.C.F.1–2a Предупреждение |
| HDL Coder соответствует этому правилу. | Никаких действий не требуется. |
2.D.A модульных ограничений
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.D.A.2–3 Предупреждение |
| HDL Coder не создает защелки в сгенерированном коде. | Никаких действий не требуется. |
2.D.A.4–5 Ошибка |
| По умолчанию HDL Coder не создает комбинационных циклов. Если ваш алгоритм MATLAB содержит комбинационные циклы, сгенерированный HDL-код может использовать комбинационные циклы. | Обновите код MATLAB так, чтобы сгенерированный HDL-код не содержал комбинационных циклов. |
2.E.A модульных ограничений
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.E.A.1–2 Предупреждение |
| HDL Coder не создает защелки или тристатные буферы в сгенерированном коде. | Никаких действий не требуется. |
2.E.A.4–5b Ссылка |
| HDL Coder не создает защелки или тристатные буферы в сгенерированном коде. | Никаких действий не требуется. |
2.E.A.6–9 Ошибка |
| По умолчанию HDL Coder не соединяет входные или выходные порты непосредственно с двунаправленными портами. В модели Simulink, на HDL- блока свойствах для порта входа или выхода, если вы задаете BidirectionalPort | В модели Simulink, на блок HDL для порта входа или выхода, установите BidirectionalPort на |
2.E.B ограничений на связь
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.E.B.1 Предупреждение |
| HDL Coder не имеет тристатных сетей в сгенерированном HDL-коде. | Никаких действий не требуется. |
Always
/ Process
Конструкция со структурой схемы в счет2.F.B ограничений на количество условных операторов
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.F.B.1 Ошибка |
| Сгенерированный HDL-код для вашего проекта содержит более одного условного оператора (if-else, case и циклы), который описывается отдельно в блоке процесса (for | Обновите свой проект так, чтобы было не более одного условного оператора, который описан отдельно в блоке процесса. Вы можете настроить это правило с помощью |
2.F.B.2 Ошибка |
| HDL Coder не изменяет переменные в списке чувствительности, включая часы, сброс и разрешающие сигналы. | Никаких действий не требуется. |
2.G.B общие ограничения субэкспрессии
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.G.B.2 Предупреждение |
| Сгенерированный HDL-код не содержит мертвого кода или приводит к невыполненным условиям. | Никаких действий не требуется. |
2.G.C зависимости глубины вложения
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.G.C.1a-b Сообщение |
| Код MATLAB содержит | Изменение Для примера выполните следующее if ... if ... if ... else else else Вы можете настроить это правило с помощью |
2.G.C.1c Сообщение | Verilog/VHDL: Chain of if...else if constructs must not be exceed default number of levels. | Сгенерированный HDL-код содержит | Изменение Для примера выполните следующее if ... elseif ... elseif ... else Вы можете настроить это правило с помощью |
2.G.D ограничения Begin-End Decorator
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.G.D.2–3 Сообщение |
| Сгенерированный HDL-код соответствует этим конструкциям кода. | Никаких действий не требуется. |
|
2.H.A структурных ограничений CASE
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.H.A.3–5 Ссылка |
| Сгенерированный HDL-код соответствует этим конструкциям для операторов case и не использует директиву full_case. | Никаких действий не требуется. |
2.H.C ограничений значение по умолчанию
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.H.C.3 Предупреждение |
| HDL Coder описывает все возможные случаи в операторе case, так что инструмент синтеза не выводит защелку. | Никаких действий не требуется. |
2.H.C.4 Сообщение |
| HDL Coder не использует сигнал, которому присвоено значение по умолчанию. | Никаких действий не требуется. |
2.H.C.5 Предупреждение |
| Чтобы избежать вывода защелки, HDL Coder описывает все возможные случаи, включая предложение по умолчанию. | Никаких действий не требуется. |
2.H.C.6–7 Сообщение |
| HDL Coder не использует значения don 't care, и исследует все пространство n-битного сигнала выбора. | Никаких действий не требуется. |
2.H.D не заботитесь об ограничениях
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.H.D.1-4 Сообщение |
| HDL Coder не генерирует casex или casez конструкции, так что он соответствует этому правилу. | Никаких действий не требуется. |
2.H.E дополнительные ограничения CASE
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.H.E.1–4 Сообщение |
| HDL Coder не использует | Никаких действий не требуется. |
2.I.A цикла тел
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.I.A.2a-b Сообщение |
| HDL Coder не генерирует casex или casez конструкции, так что он соответствует этому правилу. | Никаких действий не требуется. |
2.I.A.2c-e Сообщение |
| HDL Coder генерирует конструкции правого цикла и соответствует этому правилу. | Никаких действий не требуется. |
|
2.I.B ограничения, накладываемые на непостоянные операции
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.I.B.4 Ошибка |
| HDL Coder использует отдельные для циклов в сбросной и логической частях описаний триггеров. | Никаких действий не требуется. |
2.I.C выходных ограничений
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.I.C.1 Ошибка |
| Сгенерированный код содержит для циклов только тогда, когда HDL Coder знает количество итераций. Когда цикл выполняется, HDL Coder не выходит из цикла for, | Никаких действий не требуется. |
2.J.A сравнения и ограничения приоритета
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.J.A.4a-c Сообщение |
| По умолчанию HDL Coder не генерирует код, содержащий эти конструкции. Если ваша модель Simulink использует Constant блоков с Architecture значением | Обновите проект модели Simulink, чтобы блоки Constant не использовали эти конструкции, когда Architecture установлено на |
2.J.A.4v Ошибка |
| По умолчанию HDL Coder не использует | Обновите проект модели Simulink, чтобы сгенерированный HDL-код не использовал конструкции, которые задает 2.J.A.4a-c правила. |
2.J.A.5–6 Предупреждение |
| Если в вашем проекте используются неизвестные или высокоимпедансные константы, HDL Coder выводит предупреждение. | Обновите свою модель Simulink или алгоритм MATLAB, чтобы не было высокоимпедансных констант. |
| |||
2.J.A.7–8 Сообщение |
| По умолчанию HDL Coder соответствует этому правилу. Если ваша модель Simulink использует выходные сигналы оперативной памяти с Switch или Multiport switch блоком, сгенерированный HDL-код может использовать эти конструкции. | Обновите свою модель Simulink, чтобы не было выходных сигналов ОЗУ для Switch или Multiport switch блоков. |
2.J.B векторных операторов
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.J.B.3 Сообщение |
| HDL Coder не выполняет логическое отрицание для векторов. | Никаких действий не требуется. |
2.J.C ограничений реляционных операторов
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.J.C.1–6 Ошибка |
| HDL Coder обеспечивает соответствие типов данных операндов в реляционном или логическом выражении. | Никаких действий не требуется. |
|
2.J.D сигнал со знаком, ограничения типа данных
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.J.D.3–5 Предупреждение |
| HDL Coder соответствует этому правилу. | Никаких действий не требуется. |
2.J.D.6 Предупреждение |
| HDL Coder соответствует этому правилу. | Никаких действий не требуется. |
2.J.D.8 Предупреждение |
| HDL Coder не использует функцию | Никаких действий не требуется. |
2.J.E количества ограничений повторения оператора
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.J.E.5 Предупреждение |
| HDL Coder соответствует этому правилу. | Никаких действий не требуется. |
2.J.F точности данных
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.J.F.5 Предупреждение | Verilog/VHDL: Large multipliers must not be described using the multiplication operator with RTL. | Сгенерированный HDL-код содержит оператор умножения ( | В вашем проекте реализуйте умножения с помощью алгоритма shift-and-add или убедитесь, что размер данных выхода умножения не требует битовой ширины 16 или больше. Вы можете настроить это правило с помощью |
2.J.G общие ограничения субэкспрессии
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.J.G.2 Предупреждение | Verilog/VHDL: common operational expressions should be described separately. | HDL Coder определяет общие операционные выражения и описывает их отдельно. | Никаких действий не требуется. |
2.J.H ограничений оператора деления
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.J.H.1 Сообщение | Verilog/VHDL: Do not use arithmetic and logical expressions in the right and left sides of the division or modulus operator. | HDL Coder гомогенизирует оператор деления в отдельный оператор и соответствует этому правилу. | Никаких действий не требуется. |
2.J.H.2–3 Сообщение | Verilog/VHDL: Keep the left side of the division or modulus operator within 12 bits. If right side of the division or modulus operator is not a power of two, keep it within 8 bits. | В вашем проекте левая сторона модуля или операции деления больше 12 битов, или правая сторона не является степенью двойки и больше восьми биты. | Обновите проект так, чтобы количество бит в операндах операции деления или модуля находилось в пределах, заданных правилом. |
2.K.A переходов между состояниями
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.K.A.4 Предупреждение | Verilog/VHDL: Number of states of an FSM should be within 40. | Ваш проект модели содержит Chart или State Transition Table Stateflow, которая использует более 40 состояний. | Обновите свой проект модели так, чтобы было не более 40 состояний. |
2.K.C логических ограничений разделения
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.K.C.1 Ссылка | Verilog/VHDL: Ensure that sequential and combinational parts of an FSM are in separate always block. | По умолчанию HDL Coder помещает последовательные и комбинационные части конечной конечной машины (FSM) в отдельные | Никаких действий не требуется. |
2.K.E ограничения кодирования
Правило/серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.K.E.2 Предупреждение | VHDL: Do not assign state encoding by attaching attributes to the state variable which is declared as a type. | HDL Coder не присоединяет атрибуты к переменным состояния в сгенерированном коде. | Никаких действий не требуется. |