Модули компилируются до 0 вентилей

Я работаю в Intel Quartus Prime Lite 23.1 над проектом шаблона для Arduino MKR Vidor 4000. В частности, он использует Cyclone 10 LP 10CL016YU256C8G.

Прямо сейчас я пытаюсь написать модуль, который на данный момент просто перенаправляет некоторые провода к набору портов, подключенных к светодиодам, для отладки. Сейчас отправляются только старшие разряды 32-битных часов.

Проблемный модуль TestLeds определяется вместе с объектом модуля верхнего уровня MKRVIDOR4000_top следующим образом:

module TestLeds(
    inout wire  [6:0]  bMKR_A,
    inout wire  [14:0] bMKR_D,
    inout wire  [7:0]  bByte
);

assign bByte = '{bMKR_A[5], bMKR_A[6], bMKR_D[0], bMKR_D[1], bMKR_D[2], bMKR_D[3], bMKR_D[4], bMKR_D[5]};

endmodule

module MKRVIDOR4000_top
(
  // system signals
  input         iCLK,

  // SAM D21 PINS
  inout  [6:0]  bMKR_A,
  inout  [14:0] bMKR_D
);

reg [5:0] rRESETCNT;
reg [31:0] hadcounter;

always @(posedge iCLK) begin
    if (!rRESETCNT[5]) begin
        rRESETCNT <= rRESETCNT+1;
        hadcounter <= 0;
    end else begin
        hadcounter <= hadcounter + 1;
    end
end

wire [7:0]bMKR_LED;

TestLeds leds(
    .bMKR_A(bMKR_A),
    .bMKR_D(bMKR_D),
    .bByte(bMKR_LED));

assign bMKR_LED[7:0] = hadcounter[31:31-7];

endmodule

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

Насколько я понимаю, определения проводов должны обновлять конкретные порты bMKR_A и bMKR_D путем прямого подключения к «регистру» hadcounter, но все это, похоже, игнорируется. То есть Quartus не требует никаких шлюзов для компиляции. Я получаю сообщение об ошибке Warning (12158): Entity "TestLeds" contains only dangling pins, но не понимаю, как это происходит и как ее решить.

Я также пытался смоделировать этот проект, но Quartus не позволяет мне выбрать какой-либо язык, и я не могу найти, как еще выполнить эту задачу.

Чтобы быть более конкретным о том, для чего я здесь:

  • Что вызывает проблему?
  • Как мне решить такую ​​проблему?
  • Что не так с моим пониманием?

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

Mikef 09.07.2024 15:12

@Mikef Спасибо, теперь я обновил код, добавив минимальное представление вместе с используемым устройством FPGA. Я надеюсь, что изменения будут удовлетворительными!

Tobiky 10.07.2024 10:33
Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
84
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

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

Одна вещь, вызывающая путаницу, заключается в том, что вы используете режим inout для своих портов. Нет причин использовать это для имеющегося у вас кода. Используйте input или output. Пройдитесь по своему дизайну и внесите изменения; не потребуется много времени, чтобы понять, что у вас нет выходов. Уточните для себя, какие выходные данные вы хотите получить на уровне модуля и на верхнем уровне. Если нужно, нарисуйте от руки. Не использовать режим inout

Без выходных данных (bMKR_D неактивен) синтез удалит весь проект. Одна из задач синтеза — удалить неиспользуемую логику, а при отсутствии выходных данных она не используется.

Порты режима inout используются для вывода драйверов с тремя состояниями, здесь их нет.

Вам не нужен Quartus для моделирования этого небольшого проекта. www.edaplayground.com бесплатен и хорошо подходит для небольших проектов с несколькими файлами. Зарегистрируйтесь по электронной почте организации, и вы сможете запускать почти полные версии всех стандартных отраслевых инструментов моделирования, достаточно всего лишь пару раз вырезать и вставить, а затем нажать большую кнопку запуска.

Есть и другие проблемы с вашим кодом. Конструкции FPGA, в которых используются триггеры, обычно имеют вход сброса для сброса триггеров при включении питания. При моделировании сброс обычно устанавливается в момент t=0 в течение некоторого количества тактов и отпускается. Без сброса флопы не имеют начального значения (на самом деле это x в моделировании), и добавление к ним единицы по-прежнему равно x. Я бы поискал по синхронному счетчику Verilog. Вы можете посмотреть счетчик Википедии или найти свой. В любом случае я предлагаю вам добавить в свой проект сброс и использовать его для инициализации стандартного синхронного счетчика.

Спасибо за подробный ответ и вашу доброту! Теперь мой дизайн работает и кажется более стабильным. Кажется, у меня были некоторые заблуждения, которые благодаря вам прояснились.

Tobiky 11.07.2024 09:16

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