SystemVerilog изменение типа порта с провода на логику дает ошибку при использовании default_nettype none

Я конвертирую свой дизайн из Verilog в SystemVerilog, и по умолчанию у меня есть директива 'default_nettype none. Вот мой дизайн:

`default_nettype none

module my_design 
#(
parameter INPUT_WIDTH  = 16,
parameter OUTPUT_WIDTH = 2*INPUT_WIDTH
)
(
    input  wire signed [INPUT_WIDTH-1 : 0 ]  x_in,
    input  wire signed [INPUT_WIDTH-1 : 0 ]  y_in,
    output wire signed [OUTPUT_WIDTH-1 : 0]  z_out
);

Которая компилируется без каких-либо проблем. Однако, когда я меняю провод на логику, как показано ниже:

module my_design 
#(
parameter INPUT_WIDTH  = 16,
parameter OUTPUT_WIDTH = 2*INPUT_WIDTH
)
(
    input  logic signed [INPUT_WIDTH-1 : 0 ]  x_in,
    input  logic signed [INPUT_WIDTH-1 : 0 ]  y_in,
    output logic signed [OUTPUT_WIDTH-1 : 0]  z_out
);

Я получаю следующую ошибку для всех сигналов моего порта:

ERROR: [VRFC 10-1103] net type must be explicitly specified for 'x_in' 
when default_nettype is none

Это очень странно для меня, поскольку я явно декалировал все порты. Я использую Vivado Simulator 2018.2. Я использую следующую команду для компиляции приведенных выше кодов:

xvlog --sv -f files.f

А files.f содержит только мой дизайн и тестовый файл.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
2 511
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Входные порты неявно относятся к сетевым типам wire с неявным типом данных logic. SystemVerilog выбрал эти значения по умолчанию для обеспечения обратной совместимости с Verilog.

Итак, ваше исходное объявление ввода Verilog было явным wire с неявным типом данных logic. Вы изменили его на неявный сетевой тип wire с явным типом данных logic. Но функционально результат тот же. Вам нужно снова добавить ключевое слово wire.

Следующие элементы функционально эквивалентны:

 input signed [INPUT_WIDTH-1 : 0 ]  x_in, // implicit wire logic
 input logic signed [INPUT_WIDTH-1 : 0 ]  x_in, // implicit wire
 input wire signed [INPUT_WIDTH-1 : 0 ]  x_in, // implicit logic
 input wire logic signed [INPUT_WIDTH-1 : 0 ]  x_in, // explicit

Вы хотите сменить порт с логики на провод? или default_nettype от none к проводу? потому что изменение default_nettype на провод, похоже, тоже работает.

maskarih 05.09.2018 16:06

Если вы измените default_nettype на wire, вы потеряете проверку на типографические ошибки.

dave_59 05.09.2018 18:46

@ dave_59 Q1: Означает ли это, что мы должны сохранить default_nettype none и явно указать сетевой тип в коде Verilog (например, input wire some_signal) ?, Q2: Под опечатками вы имеете в виду орфографические ошибки в ключевых словах Verilog? Если да, то не будет ли Modelsim обнаруживать такие ошибки независимо от настроек default nettype?

vineeshvs 13.07.2020 06:56

Оставьте default_nettype none. Я имею в виду опечатки в названиях сигналов, а не в ключевых словах.

dave_59 13.07.2020 17:16

Другие вопросы по теме