exponenta event banner

Методы описания RTL

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

2. Рекомендации по комбинированной логике

2.A.A Комбинаторные логические условные обозначения

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

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

Кодер HDL включает пакет в каждом объекте в сгенерированный код VHDL.

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

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

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

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

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

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

Verilog: Check using RTL parsing tool for error prevention.

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

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

2.A.B Условные обозначения функций

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

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

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

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

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

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

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

2. B.4
Ошибка

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

Кодер HDL не использует в коде Verilog конструкции tasks или fork-join.

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

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

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

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

2. B.5
Ошибка

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

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

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

2. B.6
Ошибка

VHDL: Specify range for std_logic_vector.

Кодер HDL соответствует этому правилу, поскольку созданный код 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 принудительно устанавливает соответствие типов, чтобы соответствовать этому правилу.

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

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

При создании кода VHDL кодер HDL определяет порты IN, OUT или INOUT и не использует буфер или соединение.

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

2. C.3
Ошибка

Verilog: Use concatenation when assigning to multiple signals.

Кодер HDL соответствует этому правилу.

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

VHDL: Port mode must be explicitly specified.

При формировании кода VHDL кодер HDL указывает порты «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 генерирует код Verilog, соответствующий этому правилу.

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

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

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

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

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

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

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

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

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

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

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

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

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

2.A.E Условные условные обозначения

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

Verilog: Ensure that conditional expressions evaluate to a scalar.

Кодер HDL соответствует этому правилу.

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

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

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

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

Конструкция содержит векторы, LSB которых имеет ненулевое значение.

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

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

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

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

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

2. F.5
Ошибка

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

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

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

2.A.G Соглашения о назначении

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

VHDL: Direct assignment must be used for aggregates.

Кодер HDL непосредственно присваивает агрегаты в сгенерированном коде без выполнения каких-либо промежуточных операций.

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

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

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

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

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

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

2. H.2
Ссылка

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

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

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

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 соответствует этому правилу.

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

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 соответствует этому правилу.

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

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 не использует пользовательские атрибуты в созданном коде. Если в проекте задаются свойства блока HDL, например 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.

Если в проекте используются инструкции loop, это предупреждение генерируется кодером HDL.

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

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 соответствует этому правилу.

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

2.В Руководящие принципы для "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 не создает защелки.

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

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 генерирует код, соответствующий использованию этих конструкций внутри process блок (VHDL) или always блок (Verilog).

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

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

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

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

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

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

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

VHDL: Do not use wait constructs.

Кодер HDL не использует конструкции ожидания.

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

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

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

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

С помощью 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 соответствует этому правилу.

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

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

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

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

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

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 использует передний фронт или задний фронт часов, но не использует оба фронта часов.

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

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

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

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

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

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

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

Verilog/VHDL: Do not use asynchronous reset signals.

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

Чтобы избежать этого нарушения, используйте синхронные сигналы сброса. В диалоговом окне «Параметры конфигурации» установите для параметра «Тип сброса» значение 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 block в помощнике по рабочим процессам HDL.

Эту проверку правил можно отключить с помощью 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 соответствует этому правилу.

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

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 не создает защелки в сгенерированном коде.

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

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 не создает комбинированных циклов. Если алгоритм 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 не создает в сгенерированном коде защелки или тристатные буферы.

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

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

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

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 не подключает входные или выходные порты непосредственно к двунаправленным портам.

В модели Simulink, в свойствах блока HDL для входного или выходного порта, если для параметра BidirecedPort установлено значение onсгенерированный код HDL может непосредственно подключаться к портам ввода или вывода.

В модели Simulink в свойствах блока HDL для входного или выходного порта задайте для параметра BidirecedPort значение off.

2.E.B Ограничения подключения

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

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

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

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

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 Руководство по описанию заявления «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 описывает все возможные случаи в операторе случая, чтобы средство синтеза не выводило защелку.

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

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 не использует сигнал, которому присвоено значение по умолчанию.

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

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

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

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

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

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

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

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

2.I.B Непостоянные эксплуатационные ограничения

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

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

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

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

2.I.C Выйти из ограничений

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

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

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

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

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

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

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

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

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

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

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

Если в конструкции используются неизвестные константы или константы с высоким импедансом, кодер HDL выводит предупреждение.

Обновите модель 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 соответствует этому правилу. Если модель Simulink использует выходные сигналы ОЗУ с блоком коммутатора или мультипортового коммутатора, сгенерированный код HDL может использовать эти конструкции.

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

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

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

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

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

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

2.J.C Реляционные операторские ограничения

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

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

Кодер HDL обеспечивает соответствие типов данных операндов в реляционном или логическом выражении.

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

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 соответствует этому правилу.

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

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 соответствует этому правилу.

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

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

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

Кодер HDL не использует функцию To_stdlogicvector в коде.

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

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

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

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

Кодер HDL соответствует этому правилу.

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

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

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

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

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

Это правило можно настроить с помощью MultiplierBitWidth свойство объекта настройки стандарта кодирования HDL.

2.J.G Общие ограничения подэкспрессии

Правило/серьезностьСообщениеПроблемаРекомендации
2. J.G.2
Предупреждение
Verilog/VHDL: common operational expressions should be described separately.

Кодер HDL идентифицирует общие рабочие выражения и описывает их отдельно.

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

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

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

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.

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

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

См. также

Свойства

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

Подробнее