Правила описания RTL и проверки

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

2. Инструкции для комбинационной логики

2. Соглашения комбинаторной логики A.A

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.A.A.1
Ссылка

VHDL: Package IEEE.std_logic_1164 must be included in each entity.

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

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

2.A.A.2
Предупреждение

Verilog: A function description must assign return values to all possible states of the function.

HDL Coder не генерирует функции для DUT.

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

2.A.A.3
Предупреждение

Verilog: Check using RTL parsing tool for error prevention.

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

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

2. Соглашения функции A.B

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

Verilog: Function statement should not be used for asynchronous reset line logic in an always construct for FF inference.

HDL Coder не генерирует функции для DUT.

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

VHDL: Use std_logic or std_logic_vector data types to describe ports of an entity.

При вводах и выводах HDL Coder использует std_logic или std_logic_vector, чтобы описать порты.

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

2.A.B.2–3
Ошибка

Verilog: Do not use nonblocking assignment, or input argument as input in function description.

Сгенерированный HDL-код выполняет это правило для Verilog.

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

VHDL: Use range specification for integer types.

По умолчанию HDL Coder указывает диапазон для целочисленных типов в сгенерированном коде.

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

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

Verilog: Task constructs should not be used in the design.

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

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

VHDL: Do not use bit and bit vector data types in the design.

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

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

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

Verilog: Clock edges should not be used in a task description.

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

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

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

VHDL: Specify range for std_logic_vector.

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

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

2. Соглашения соответствия ширины бита A.C

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

Verilog: Ensure that bitwidth of function arguments matches that of corresponding function inputs, and bitwidth of function return value matches that of assignment destination signal.

При инстанцировании модуля HDL Coder осуществляет соответствие типа, так, чтобы это выполнило это правило.

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

VHDL: Use only 'in', 'out', and 'inout' ports. Do not use buffer and linkage.

При генерации кода VHDL HDL Coder задает ‘IN’, ’OUT’ или порты ‘INOUT’, и не использует буфер или рычажное устройство.

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

2.A.C.3
Ошибка

Verilog: Use concatenation when assigning to multiple signals.

HDL Coder выполняет это правило.

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

VHDL: Port mode must be explicitly specified.

При генерации кода VHDL HDL Coder задает ‘IN’, ’OUT’ или порты ‘INOUT’ и не использует буфер или рычажное устройство.

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

2.A.C.4–5
Ошибка

Verilog: In function description, do not assign global signals, and return value assignment must be the last statement.

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

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

VHDL: Input port must not be described with initial value.

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

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

2. Нашей эры соглашения операторов

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.A.D.5
Сообщение

Verilog: Bit-wise operators must be used instead of logical operators in multi-bit operations.

В сгенерированном коде Verilog HDL Coder выполняет это правило для многоразрядных операторов.

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

2.A.D.6
Сообщение

Verilog: Reduction of a single-bit or large expression should not be performed.

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

Обновите свой проект так, чтобы не было никаких вызовов битных операций сокращения.

2. Соглашения условного оператора A.E

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.A.E.3
Сообщение

Verilog: Ensure that conditional expressions evaluate to a scalar.

HDL Coder выполняет это правило.

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

2. Массив A.F, вектор, матричные соглашения

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

Verilog/VHDL: LSB of vectors/memory should be zero.

Ваш проект содержит векторы, LSB которых имеет ненулевое значение.

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

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

Verilog/VHDL: Index variable width should not be too short.

HDL Coder осуществляет соответствие типа и гарантирует, что ширина индексной переменной не слишком коротка.

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

2.A.F.5
Ошибка

Verilog/VHDL: Do not use x and z for an array index.

В сгенерированном коде HDL Coder не использует x или z для индекса массива.

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

2. Соглашения присвоения A.G

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.A.G.1
Ошибка

VHDL: Direct assignment must be used for aggregates.

HDL Coder непосредственно присваивает, агрегируется в сгенерированном коде, не выполняя прошедших операций.

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

2. Соглашения возвращаемого значения функции A.H

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.A.H.1
Ссылка

VHDL: Constrained arrays should not be used as sub-program description.

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

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

2.A.H.2
Ссылка

VHDL: Specify range for return values in function description when return type is array.

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

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

2.A.H.4–6
Ошибка

VHDL: In a sub-program description, use only OTHERS clause when specifying aggregates, not use or call a nested subprogram description, and not read Global signals.

HDL Coder выполняет это правило.

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

2.A.H.9–10
Предупреждение

VHDL: A function must have a return statement, return a valid value in all possible states, and not have any other statement following the return statement.

HDL Coder выполняет это правило.

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

2. A.I встроенные соглашения атрибута

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.A.I.4–5
Ошибка

VHDL: Do not use user-defined attributes, or built-in attributes except range, length, left, right, high, low, reverse_range, and event.

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

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

2. VHDL A.J определенные соглашения

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

VHDL: In a design, do not use block statements, objects of type record, shared variables, while-loop statements, procedures, or selected signal assignments.

Если ваш проект использует инструкции циклов, HDL Coder генерирует это предупреждение.

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

2.A.J.8–13
Ошибка

VHDL: In a design, do not use access types, alias declarations, bus and register signals, disconnect specifications, waveforms, and attributes that are defined in Synopsys library.

HDL Coder выполняет это правило.

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

2. B Инструкции для “Always” Построения комбинационной логики

2. Ограничения фиксатора B.A

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.B.A.2
Ссылка

Verilog/VHDL: Check latch creation from RTL lint checker and synthesis tools; Design should not have latches.

HDL Coder не создает фиксаторы.

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

2. Ограничения сигнала B.B - я

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.B.B.2–3
Сообщение

Verilog/VHDL: In the senstivity list of a process or always block, do not define constants, use wait statements, or include a signal that is not read inside that block.

HDL Coder генерирует код, который выполняет использование этих построений в process блокируйтесь (VHDL) или always блокируйтесь (Verilog).

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

Verilog: Do not describe multiple event expressions with always constructs.

HDL Coder не описывает больше чем одно выражение события в always создать.

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

2. Ограничения сигнала B.C - II

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.B.C.1–2
Ошибка

Verilog: Do not use nonblocking assignments in combinational always blocks, or when assigning initial values in always constructs of sequential blocks.

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

Обновите свой MATLAB® алгоритм или Stateflow® спроектируйте так, чтобы сгенерированный код Verilog не использовал эти построения.

2.B.C.3
Сообщение

Verilog/VHDL: Do not assign a signal more than once in an always construct for sequential circuits.

В always создайте для последовательных схем, HDL Coder не выполняет несколько присвоений на сигнал.

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

2. C инструкции для триггерного вывода

2. Ограничения присвоения C.A

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.C.A.1–2c
Ошибка

Verilog/VHDL: In flip-flop description, do not use quasi-continuous assignments, deassign statements, blocking assignments, variable assignment statements, or stable attribute.

HDL Coder не вводит дополнительных данных или добавляет эти построения при генерации триггеров в process блоки (VHDL) или always блоки. (Verilog)

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

2.C.A.4–5b
Предупреждение

Verilog/VHDL: Only flip-flop data paths can have delays. The delay values must be integral and non-negative.

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

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

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

Verilog/VHDL: Check the logic level of the reset signal as specified in the sensitivity list of the always block.

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

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

2.C.A.7
Сообщение

Verilog/VHDL: A flip-flop should not have two asynchronous resets. Do not use functions in the asynchronous reset description.

HDL Coder не генерирует несколько асинхронного сброса. Сгенерированный код может содержать несколько синхронного сброса.

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

2.C.A.8
Ошибка

VHDL: Do not use wait constructs.

HDL Coder не использует, ожидают построения.

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

2.C.A.9
Ошибка

VHDL: Functions 'rising_edge' or 'falling_edge' should not be used in the design.

По умолчанию HDL Coder использует синтаксис события для событий часов.

При помощи UseRisingEdge свойство, можно задать, использовать ли rising_edge или falling_edge обнаружить переходы часов.

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

2. C.B блокирующиеся ограничения оператора

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.C.B.1–2
Предупреждение

Verilog/VHDL: Use blocking assignment in flip-flop description. Do not use blocking and nonblocking assignments together in the same always block.

HDL Coder выполняет это правило.

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

2.C.B.4
Ошибка

VHDL: Variables, if used, must be assigned to a signal before the end of the process.

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

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

2. Ограничения часов C.C

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.C.C.1–2b
Ошибка

Verilog/VHDL: Do not use edges of multiple clocks or both edges of the same clock in an always block. Do not describe multiple clock edges in a single process/always block for same edge of a single clock.

HDL Coder использует возрастающее ребро или падающее ребро часов, но не использует оба ребра часов.

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

2.C.C.4–5
Ошибка

Verilog/VHDL: Minimize, and if possible, remove clock enable signals and reset signal on networks.

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

Минимизировать часы включает в сгенерированном HDL-коде в HDL, кодирующем стандартные свойства индивидуальной настройки, включите свойство MinimizeClockEnableCheck.

Чтобы удалить сигналы сброса в сетях, в HDL, кодирующем стандартные свойства индивидуальной настройки, включают установку RemoveResetCheck.

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

Verilog/VHDL: Do not use asynchronous reset signals.

Ваш Simulink® проект модели или код MATLAB используют асинхронные сигналы сброса.

Чтобы избежать этого нарушения, используйте синхронные сигналы сброса для своего проекта. В диалоговом окне Configuration Parameters, набор Reset type к Synchronous.

2. Ограничения начального значения C.D

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.C.D.1
Ошибка

Verilog/VHDL: Do not specify flip-flop or RAM initial value using initial construct.

Сгенерированный HDL-код для вашего проекта содержит несинтезируемый initial оператор.

Отключите Initialize block RAM или опцию Initialize all RAM blocks в HDL Workflow Advisor.

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

2. C.F смешанные ограничения синхронизации

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.C.F.1–2a
Предупреждение

Verilog/VHDL: Do not use multiple resets or mix descriptions of flip-flops with and without asynchronous reset in the same process/always block.

HDL Coder выполняет это правило.

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

2. D инструкции для описания фиксатора

2. Ограничения модуля D.A

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

Verilog/VHDL: Latch descriptions should not have asynchronous set or asynchronous reset, or be mixed with other descriptions in the same module.

HDL Coder не создает фиксаторы в сгенерированном коде.

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

2.D.A.4–5
Ошибка

Verilog/VHDL: Do not use combinational loops that contain latches or level two latches in the same phase clock.

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

Обновите свой код MATLAB так, чтобы сгенерированный HDL-код не содержал комбинационных циклов.

2. E инструкции для буфера с тремя состояниями

2. Ограничения модуля E.A

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

Verilog/VHDL: Tristate descriptions must not be mixed with other descriptions in the same module and should not contain logic in tristate enable conditions.

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

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

2.E.A.4–5b
Ссылка

Verilog/VHDL: Tristate bus must not be driven by more than specified number of drivers. A net that is not tristated or a signal without a resolution function must not have multiple drivers.

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

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

2.E.A.6–9
Ошибка

Verilog/VHDL: Inout port should not be directly connected to input/output. Do not use tristate output in an if conditional expression or in the selection expression of a case statement that assigns a fixed value in others choice.

По умолчанию HDL Coder не соединяет порты ввода или вывода непосредственно с двунаправленными портами.

В вашей модели Simulink, на свойствах блока HDL для порта ввода или вывода, если вы устанавливаете BidirectionalPort на on, сгенерированный HDL-код может непосредственно соединить inout с портами ввода или вывода.

В вашей модели Simulink, на свойствах блока HDL для порта ввода или вывода, устанавливает BidirectionalPort на off.

2. Ограничения возможности соединения E.B

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

Verilog/VHDL: Logic directly driven by tristate nets should be in a separate module.

HDL Coder не имеет сетей с тремя состояниями в сгенерированном HDL-коде.

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

2. F инструкции для Always/Process Создайте со структурой схемы во внимание

2. Ограничения F.B на количество условных операторов

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.F.B.1
Ошибка

Verilog/VHDL: Do not describe more than one statement (if/case/while/for/loop) separately within a single always or process block.

Сгенерированный HDL-код для вашего проекта содержит больше чем один условный оператор (если еще, случай и циклы), который описан отдельно в блоке процесса для VHDL код или always блокируйтесь для Verilog код.

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

Можно настроить это правило при помощи ConditionalRegionCheck свойство HDL, кодирующего стандартный объект индивидуальной настройки.

2.F.B.1.a
Ошибка

Verilog/VHDL: Do not write to same signal for VHDL or register for Verilog in multiple cascaded conditional (if/case) regions within the same process block for VHDL code or always construct for Verilog code.

Сгенерированный HDL-код для вашего проекта содержит тот же сигнал для VHDL код или регистр для Verilog код, записанный в в нескольких каскадных условных областях (таких как if/case области) в том же процессе блокируются для VHDL код или всегда создает для Verilog код.

Обновите свой проект так, чтобы сигнал или регистр не были записаны в несколько раз в каскадных условных областях в том же блоке процесса, или всегда создавайте. Для получения дополнительной информации смотрите Каскадные Условные Присвоения Переменной области.

Можно настроить это правило при помощи CascadedConditionalAssignmentCheck свойство HDL, кодирующего стандартный объект индивидуальной настройки.

2.F.B.2
Ошибка

Verilog/VHDL: A variable in the sensitivity list is modified inside the same process or always block.

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

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

2. G инструкции для описания оператора “IF”

2. G.B общие ограничения подвыражения

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.G.B.2
Предупреждение

Verilog/VHDL: Avoid describing conditions that will not be executed.

Сгенерированный HDL-код не содержит мертвый код или приводит к условиям, которые не выполняются.

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

2. Ограничения глубины вложения G.C

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.G.C.1a-b
Сообщение

Verilog/VHDL: Nesting in if-else constructs should not be deeper than N levels. Where feasible case statements should be used, rather than if-else statements, if performance is important.

Код MATLAB содержит if-elseif оператор с больше, чем уровнями N вложения. По умолчанию N равняется 3.

Измените if-elseif операторы в вашем коде MATLAB, таким образом, существует N или меньше уровней вложения.

Например, следующий if-elseif псевдокод содержит три уровня вложения:

if ...
   if ...
      if ...
      else
   else
else

Можно настроить это правило при помощи IfElseNesting свойство HDL, кодирующего стандартный объект индивидуальной настройки.

2.G.C.1c
Сообщение
Verilog/VHDL: Chain of if...else if constructs must not be exceed default number of levels.

Сгенерированный HDL-код содержит if-elseif оператор больше чем с семью ветвями.

Измените if-elseif операторы в вашем коде MATLAB так, чтобы количество ветвей равнялось семи или меньше.

Например, следующий if-elseif псевдокод содержит три ветви:

if ...
elseif ...
elseif ...
else

Можно настроить это правило при помощи IfElseChain свойство HDL, кодирующего стандартный объект индивидуальной настройки.

2. Ограничения декоратора G.D начинать-конца

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.G.D.2–3
Сообщение

Verilog/VHDL: Attach begin-end to "if" statements.

Сгенерированный HDL-код выполняет эти построения кода.

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

Verilog: Do not use fork-join constructs.

2. H инструкции для описания оператора “СЛУЧАЯ”

2. Ограничения выбирающей структуры H.A

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.H.A.3–5
Ссылка

Verilog/VHDL: case constructs should not have overlapping clause conditions. Do not use full_case directive.

Сгенерированный HDL-код выполняет эти построения для операторов выбора и не использует full_case директиву.

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

2. Ограничения значения по умолчанию H.C

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

Verilog: Do not use //synposys full_case pragma when all conditions are not described as case clause or the default clause is missing.

HDL Coder описывает все возможные случаи в операторе выбора так, чтобы инструмент синтеза не выводил фиксатор.

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

2.H.C.4
Сообщение

Verilog/VHDL: A signal that is assigned don't care value in a case default clause should not be used in if conditions, ternary and case constructs.

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

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

2.H.C.5
Предупреждение

Verilog/VHDL: Default clause in case construct must be the last clause.

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

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

2.H.C.6–7
Сообщение

Verilog/VHDL: Do not use a signal to which don't care is assigned for selection expression of casex statements or case statements that do not assign 'X' in default clause.

HDL Coder не использует, не заботятся о значениях, и исследует целый пробел сигнала выбора n-bit.

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

2. H.D не заботятся об ограничениях

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.H.D.1-4
Сообщение

Verilog: Design should not use casex or casez constructs. casex or casez constructs must contain a dont-care condition, and not have complex clause conditions. The don't care condition in casex or casez branches must follow proper coding style.

HDL Coder не генерирует casex или построения случаев, так, чтобы это выполнило это правило.

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

2. H.E дополнительные ограничения СЛУЧАЯ

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.H.E.1–4
Сообщение

Verilog: Do not use parallel_case directive. In a case clause condition, do not use fixed values, variables, expressions, and logical, arithmetic, bitwise, or reduction operations.

HDL Coder не использует parallel_case директива и генерирует код, который выполняет эти построения.

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

2. Я инструкции для описания оператора “FOR”

2. Ограничения тела цикла I.A

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.I.A.2a-b
Сообщение

Verilog: Loop variable and terminating condition of "for" construct must have constant initial value.

HDL Coder не генерирует casex или построения случаев так, чтобы это выполнило это правило.

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

2.I.A.2c-e
Сообщение

Verilog: Loop variable of "for" construct must have a constant value inside the construct and must not be used outside the construct.

HDL Coder генерирует правильные построения цикла и выполняет это правило.

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

Verilog: The loop termination condition must not be a constant.

2. I.B непостоянные ограничения операции

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.I.B.4
Ошибка

Verilog/VHDL: Separate for loops must be used in reset and logic parts of flip-flop descriptions.

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

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

2. Выходные ограничения I.C

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.I.C.1
Ошибка

VHDL: Exit or next statement must not be used in a for loop.

Сгенерированный код содержит циклы for только, когда HDL Coder знает количество итераций. Когда цикл выполняется, HDL Coder не выходит от цикла for,

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

2. J инструкции для описания оператора

2. Сравнение J.A и отношения предшествования

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.J.A.4a-c
Сообщение

Verilog: Signals must not be compared with X or Z, or values containing X or Z.

По умолчанию HDL Coder не генерирует код, который содержит эти построения.

Если ваш проект модели Simulink использует блоки Constant с набором Architecture к Logic Value и используют эти построения, кодер отображает это сообщение.

Обновите свой проект модели Simulink так, чтобы блоки Constant не использовали эти построения, когда Architecture установлен в Logic Value. В качестве альтернативы измените Architecture в Constant.

2.J.A.4v
Ошибка

Verilog/VHDL: Do not assign X except for the others clause of case statements.

По умолчанию HDL Coder не использует X в других пункт операторов выбора. В определенных случаях, если сгенерированный код не выполняет 2.J.A.4a-c, HDL Coder может присвоить X в других пункт.

Обновите свой проект модели Simulink так, чтобы сгенерированный HDL-код не использовал построения, которые постановляют, что 2.J.A.4a-c задает.

2.J.A.5–6
Предупреждение

Verilog: Do not use values containing 'X' or 'Z'.

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

Обновите свою модель Simulink или алгоритм MATLAB так, чтобы не было никаких констант высокого импеданса.

VHDL: Do not use values including 'X','Z','U''-','W','H','L', or constants that contain the values 'X','Z','U''-','W','H','L'.

2.J.A.7–8
Сообщение

Verilog: Do not use RAM output signals for a conditional expression of if statements, or selection expression of case statements that assign 'x' in the default clause.

По умолчанию HDL Coder выполняет это правило. Если ваша модель Simulink использует выходные сигналы RAM с блоком Switch или Multiport switch, сгенерированный HDL-код может использовать эти построения.

Обновите свою модель Simulink так, чтобы не было никаких выходных сигналов RAM с блоками Multiport switch или Switch.

2. Ограничения оператора вектора J.B

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.J.B.3
Сообщение

Verilog/VHDL: Do not perform logical negation on vectors.

HDL Coder не выполняет логическое отрицание на векторах.

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

2. Ограничения оператора отношения J.C

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.J.C.1–6
Ошибка

Verilog/VHDL: Bitwidths of operands of a relational or logical operator must match.

HDL Coder гарантирует, что типы данных операндов соответствуют в выражении отношения или логическом выражении.

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

Verilog/VHDL: Bitwidths should be specified for conditional expression.

2. J.D сигнал со знаком, ограничения типа данных

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.J.D.3–5
Предупреждение

Verilog/VHDL: Take care when assigning integer to reg or wire, and when comparing negative value reg and integer variables. Integer objects must not be assigned negative values.

HDL Coder выполняет это правило.

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

2.J.D.6
Предупреждение

VHDL: Signed data type must be used in signed operation and std_logic_vector calling std_logic_unsigned package must be used in unsigned operation.

HDL Coder выполняет это правило.

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

2.J.D.8
Предупреждение

VHDL: Function To_stdlogicvector should not be used in the design.

HDL Coder не использует функциональный To_stdlogicvector в коде.

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

2. Количество J.E ограничений повторения оператора

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

Verilog: Do not describe arithmetic operators with conditional operators(?) in assign statement.

HDL Coder выполняет это правило.

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

2. Ограничения точности J.F

Управляйте / СерьезностьСообщениеПроблемаРекомендации
2.J.F.5
Предупреждение
Verilog/VHDL: Large multipliers must not be described using the multiplication operator with RTL.

Сгенерированный HDL-код содержит оператор умножения (*) где выход умножения имеет bitwidth 16 или больше.

В вашем проекте реализуйте умножение при помощи алгоритма shift-and-add или гарантируйте, что размер данных выхода умножения не требует bitwidth 16 или больше.

Можно настроить это правило при помощи MultiplierBitWidth свойство HDL, кодирующего стандартный объект индивидуальной настройки.

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 инструкции для описания конечного автомата

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) в отдельном always блоки.

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

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 не присоединяет атрибуты к переменным состояния в сгенерированном коде.

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

Смотрите также

Свойства

Связанные примеры

Больше о

Для просмотра документации необходимо авторизоваться на сайте