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 не использует типы данных битового или битового вектора в сгенерированном коде. | Никакое действие не требуется. | |
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. Нашей эры соглашения операторов
Управляйте / Серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
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 не использует пользовательские атрибуты в сгенерированном коде. Если вы устанавливаете свойства блока HDL, такие как DSPStyle в вашем проекте, сгенерированный код использует директивы синтеза. | Чтобы зафиксировать эту ошибку, в вашем проекте, очищают свойство блока HDL, которое вы установили для использования директив синтеза в сгенерированном коде. |
2. VHDL A.J определенные соглашения
Управляйте / Серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
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 - я
Управляйте / Серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
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 используют асинхронные сигналы сброса. | Чтобы избежать этого нарушения, используйте синхронные сигналы сброса для своего проекта. В диалоговом окне Configuration Parameters, набор 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-код для вашего проекта содержит больше чем один условный оператор (если еще, случай и циклы), который описан отдельно в блоке процесса для | Обновите свой проект так, чтобы был не больше чем один условный оператор, который описан отдельно в блоке процесса. Можно настроить это правило при помощи |
2.F.B.1.a Ошибка |
| Сгенерированный HDL-код для вашего проекта содержит тот же сигнал для | Обновите свой проект так, чтобы сигнал или регистр не были записаны в несколько раз в каскадных условных областях в том же блоке процесса, или всегда создавайте. Для получения дополнительной информации смотрите Каскадные Условные Присвоения Переменной области. Можно настроить это правило при помощи |
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 начинать-конца
Управляйте / Серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.G.D.2–3 Сообщение |
| Сгенерированный HDL-код выполняет эти построения кода. | Никакое действие не требуется. |
|
2. Ограничения выбирающей структуры H.A
Управляйте / Серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.H.A.3–5 Ссылка |
| Сгенерированный HDL-код выполняет эти построения для операторов выбора и не использует full_case директиву. | Никакое действие не требуется. |
2. Ограничения значения по умолчанию H.C
Управляйте / Серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.H.C.3 Предупреждение |
| HDL Coder описывает все возможные случаи в операторе выбора так, чтобы инструмент синтеза не выводил фиксатор. | Никакое действие не требуется. |
2.H.C.4 Сообщение |
| HDL Coder не использует сигнал, который присвоен, не заботится о значении в пункте по умолчанию. | Никакое действие не требуется. |
2.H.C.5 Предупреждение |
| Чтобы избежать вывода фиксатора, HDL Coder описывает все возможные случаи, включая пункт по умолчанию. | Никакое действие не требуется. |
2.H.C.6–7 Сообщение |
| HDL Coder не использует, не заботятся о значениях, и исследует целый пробел сигнала выбора n-bit. | Никакое действие не требуется. |
2. H.D не заботятся об ограничениях
Управляйте / Серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.H.D.1-4 Сообщение |
| HDL Coder не генерирует casex или построения случаев, так, чтобы это выполнило это правило. | Никакое действие не требуется. |
2. H.E дополнительные ограничения СЛУЧАЯ
Управляйте / Серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.H.E.1–4 Сообщение |
| HDL Coder не использует | Никакое действие не требуется. |
2. Ограничения тела цикла I.A
Управляйте / Серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.I.A.2a-b Сообщение |
| HDL Coder не генерирует casex или построения случаев так, чтобы это выполнило это правило. | Никакое действие не требуется. |
2.I.A.2c-e Сообщение |
| HDL Coder генерирует правильные построения цикла и выполняет это правило. | Никакое действие не требуется. |
|
2. I.B непостоянные ограничения операции
Управляйте / Серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.I.B.4 Ошибка |
| HDL Coder использует отдельные циклы for в сбросе и логических частях триггерных описаний. | Никакое действие не требуется. |
2. Выходные ограничения I.C
Управляйте / Серьезность | Сообщение | Проблема | Рекомендации |
---|---|---|---|
2.I.C.1 Ошибка |
| Сгенерированный код содержит циклы for только, когда 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 использует выходные сигналы RAM с блоком Switch или Multiport switch, сгенерированный HDL-код может использовать эти построения. | Обновите свою модель Simulink так, чтобы не было никаких выходных сигналов RAM с блоками Multiport switch или 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 или гарантируйте, что размер данных выхода умножения не требует bitwidth 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 Stateflow или State Transition Table, который использует больше чем 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 не присоединяет атрибуты к переменным состояния в сгенерированном коде. | Никакое действие не требуется. |