Перейти к содержанию
    

Количество передаваемых переменных в модуль Verilog/SV

Приветствую Форум! При моделировании одного проекта, заметил, что modelsim не компилирует, если у модуля, будь то топ-модуль или подмодуль, много входных/выходных портов. Решил почитать документацию, чтобы узнать, а сколько можно передать переменных в модуль? В литературе не нашел, каюсь, возможно проблема в том как искал.

module1 mod(a, b, c, d,..., N);  // В данном случае N будет равняться чему?

И еще вопрос, я понимаю, что возможно это дело вкусовщины, но - Как грамотно организовывать иерархию модулей? Каждый, прям совсем каждый, отдельный модуль по своим файлам? Несколько модулей в одном? Или комбинация из этого?

Всем спасибо за ответы!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С таким не столкнулся. Ну укомпонуйте и сгруппируйте несколько в один для тестирования.

У меня как то моделсим не хотел принимать больше 32-ух бит.

6 hours ago, Naixrim said:

? Несколько модулей в одном?

а так можно? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, new123 said:

С таким не столкнулся. Ну укомпонуйте и сгруппируйте несколько в один для тестирования.

У меня как то моделсим не хотел принимать больше 32-ух бит.

а так можно? 

Имеется в виду, что в одном файле несколько модулей. Да, можно. Об этом описано здесь - https://www.kit-e.ru/articles/circuit/2008_5_154.php

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

6 hours ago, Naixrim said:

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

module1 mod(a, b, c, d,..., N);  // В данном случае N будет равняться чему?

И еще вопрос, я понимаю, что возможно это дело вкусовщины, но - Как грамотно организовывать иерархию модулей? Каждый, прям совсем каждый, отдельный модуль по своим файлам? Несколько модулей в одном? Или комбинация из этого? ...

Чудеса прям! Вы бы сказали сколько у вас "много" было 100, 1000,  и ли 10 тыс. портов?

И какое сообщение об ошибке выводит при компиляции такого модуля? Тогда мы бы тоже в чудеса поверили бы. :scratch_one-s_head:

 

О вкусах организации проектов не спорят.  Лепят кому как удобнее. Многие  компании свои IP корки поставляют одним  файлом в котором может сидеть от  десятка до сотен отдельных модулей. Удобно  компилировать - не надо писать простыни списков файлов составляющих модуль. Но редактировать такое :wacko2: - Как то раз довелось ковырять 20-ти мегабайтный исходник на VHDL c более чем 600 отдельных сущностей ... :dash2:

 

Для verilog|systemverilog есть еще такое понятие как compilation unit. Если грубо -  модули в одном файле компилируются как бы в общем глобальном пространстве имен.  Соответственно можно шарит макро и package файлы. Но поддержку такого надо смотреть для конкретного tools. 

 

 Так что организовывайте так как вам будет удобно - главное тут именно "организовывайте"

 

Удачи! Rob.

P.S.  Сам почти всегда делаю для одного модуля один файл. Бывают и исключения (но не на 20 MByte) :wink:

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 minutes ago, RobFPGA said:

Приветствую!

Чудеса прям! Вы бы сказали сколько у вас "много" было 100, 1000,  и ли 10 тыс. портов?

И какое сообщение об ошибке выводит при компиляции такого модуля? Тогда мы бы тоже в чудеса поверили бы. :scratch_one-s_head:

 

О вкусах организации проектов не спорят.  Лепят кому как удобнее. Многие  компании свои IP корки поставляют одним  файлом в котором может сидеть от  десятка до сотен отдельных модулей. Удобно  компилировать - не надо писать простыни списков файлов составляющих модуль. Но редактировать такое :wacko2: - Как то раз довелось ковырять 20-ти мегабайтный исходник на VHDL c более чем 600 отдельных сущностей ... :dash2:

 

Для verilog|systemverilog есть еще такое понятие как compilation unit. Если грубо -  модули в одном файле компилируются как бы в общем глобальном пространстве имен.  Соответственно можно шарит макро и package файлы. Но это поддержку такого надо смотреть для конкретного tools. 

 Так что организовывайте так как вам будет удобно - главное тут именно "организовывайте"

 

Удачи! Rob.

P.S.  Сам почти всегда делаю для одного модуля один файл. Бывают и исключения (но не на 20 MByte) :wink:

 

Знаете, я пошел воссоздавать ситуацию, которая привела к ошибке и прочее. И у меня не получилось! Я в модуль закинул портов еще больше чем было тогда ( тогда было порядка 12ти) и сейчас все работает, я просто с нуля переписал топ модуль, по всей видимости не заметил ранее ошибку. Сейчас сижу и думаю насколько глупо я выгляжу. Насчет организации, ваш посыл я понял, спасибо за ответ, скрестил пальцы и надеюсь, что по 20 Мб файлы делать не буду =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, Naixrim said:

Сейчас сижу и думаю насколько глупо я выгляжу.

я тут целый год на глазах у всех учился fpga на паленой плате. Вот кто глупо выглядел =))

Изменено пользователем new123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Одно из правил линта как раз требует чтобы имя модуля совпадало с именем файла. Максимум видел индусский case на 14тыс. строк, как же проблемно было высчитывать начала и конца, приходилось перекидывать файлы со станции на PC, чтобы нормально разделить и прочесть код. Но 20МБ RTL кода, это за гранью нормального. Это скорее всего релизный  вариант, чтобы отдать одним файлом, но не работать с ним.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Буквально недавно столкнулся с подобным поведением QuestaSim, Когда перешёл на версию 10.7c c версии 10.4e, тоже не увидел часть портов.

Упорное гугление и чтение доков дало вот что: теперь Ментор рекомендует трёхстадийный процесс: vcom/vlog -> vopt -> vsim. Если делать по-старинке vcom -> vsim, то это как раз и скрывает часть портов.

Теперь я добавляю при вызове vsim ключ -voptargs=+acc и всё вижу. Возможно, есть более изящное решение, но пока как-то нет большого желания разбираться глубже. Я стал ленив и нелюбопытен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

15 hours ago, andrew_b said:

Буквально недавно столкнулся с подобным поведением QuestaSim, Когда перешёл на версию 10.7c c версии 10.4e, тоже не увидел часть портов.

Упорное гугление и чтение доков дало вот что: теперь Ментор рекомендует трёхстадийный процесс: vcom/vlog -> vopt -> vsim. Если делать по-старинке vcom -> vsim, то это как раз и скрывает часть портов.

Не так уж упорно -  начиная с 10.7с версии, по умолчанию, сим запускается с оптимизацией. А режим сима без оптимизации (-novopt) объявили устаревшим с угрозой в последующих версиях вообще убрать. Поэтому теперь надо явно указывать какие внутренние порты|/сигналы вы хотите видеть (опцией +acc).

Удачи! Rob.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 4/18/2019 at 11:09 AM, Naixrim said:

Каждый, прям совсем каждый, отдельный модуль по своим файлам? Несколько модулей в одном? Или комбинация из этого?

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

Всякие синопсисы/кейденсы/фрискейлы рекомендуют использовать правило (именно как правило, а не рекомендуцию): 1 модуль = файл, имя модуля == имени файла

 

On 4/19/2019 at 7:58 AM, lexx said:

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

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

да, конкретно это правило имеет под собой рациональную почву, но это стилевая вещь, а не нарушение догм LRM

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 hours ago, Doka said:

да, конкретно это правило имеет под собой рациональную почву, но это стилевая вещь, а не нарушение догм LRM

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...