Методы описания 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 не использует типы данных bit или bit vector в сгенерированном коде.

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

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.A.D операторов

Правило/серьезностьСообщениеПроблемаРекомендации
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 не использует определяемые пользователем атрибуты в сгенерированном коде. Если вы задаете свойства блоков, такие как DSPStyle в проекте, сгенерированный код использует директивы синтеза.

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

2.A.J конкретных конвенций VHDL

Правило/серьезностьСообщениеПроблемаРекомендации
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 сигнала - I

Правило/серьезностьСообщениеПроблемаРекомендации
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 блоки. (Верилог)

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

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 использует сигналы асинхронного сброса.

Чтобы избежать этого нарушения, используйте сигналы синхронного сброса для вашего проекта. В диалоговом окне Параметров конфигурации установите 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-код для вашего проекта содержит более одного условного оператора (if-else, case и циклы), который описывается отдельно в блоке процесса (for VHDL код) или always блок (для Verilog код).

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

Вы можете настроить это правило с помощью ConditionalRegionCheck свойство объекта стандартной индивидуальной настройки 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 ограничения Begin-End Decorator

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

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

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

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

Verilog: Do not use fork-join constructs.

2.H Руководство по описанию оператора «CASE»

2.H.A структурных ограничений CASE

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

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

Сгенерированный HDL-код соответствует этим конструкциям для операторов case и не использует директиву 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 описывает все возможные случаи в операторе case, так что инструмент синтеза не выводит защелку.

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

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 не использует значения don 't care, и исследует все пространство n-битного сигнала выбора.

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

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 или casez конструкции, так что он соответствует этому правилу.

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

2.H.E дополнительные ограничения CASE

Правило/серьезностьСообщениеПроблемаРекомендации
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.I Руководство по описанию оператора «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 или casez конструкции, так что он соответствует этому правилу.

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

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 использует отдельные для циклов в сбросной и логической частях описаний триггеров.

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

2.I.C выходных ограничений

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

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

Сгенерированный код содержит для циклов только тогда, когда 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 использует выходные сигналы оперативной памяти с Switch или Multiport switch блоком, сгенерированный HDL-код может использовать эти конструкции.

Обновите свою модель Simulink, чтобы не было выходных сигналов ОЗУ для Switch или Multiport 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-код содержит оператор умножения (*), где выход умножения имеет битовую ширину 16 или более.

В вашем проекте реализуйте умножения с помощью алгоритма shift-and-add или убедитесь, что размер данных выхода умножения не требует битовой ширины 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 или 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) в отдельные 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 не присоединяет атрибуты к переменным состояния в сгенерированном коде.

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

См. также

Свойства

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

Подробнее о