Naixrim 0 18 апреля, 2019 Опубликовано 18 апреля, 2019 · Жалоба Приветствую Форум! При моделировании одного проекта, заметил, что modelsim не компилирует, если у модуля, будь то топ-модуль или подмодуль, много входных/выходных портов. Решил почитать документацию, чтобы узнать, а сколько можно передать переменных в модуль? В литературе не нашел, каюсь, возможно проблема в том как искал. module1 mod(a, b, c, d,..., N); // В данном случае N будет равняться чему? И еще вопрос, я понимаю, что возможно это дело вкусовщины, но - Как грамотно организовывать иерархию модулей? Каждый, прям совсем каждый, отдельный модуль по своим файлам? Несколько модулей в одном? Или комбинация из этого? Всем спасибо за ответы! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 18 апреля, 2019 Опубликовано 18 апреля, 2019 · Жалоба С таким не столкнулся. Ну укомпонуйте и сгруппируйте несколько в один для тестирования. У меня как то моделсим не хотел принимать больше 32-ух бит. 6 hours ago, Naixrim said: ? Несколько модулей в одном? а так можно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Naixrim 0 18 апреля, 2019 Опубликовано 18 апреля, 2019 · Жалоба 13 minutes ago, new123 said: С таким не столкнулся. Ну укомпонуйте и сгруппируйте несколько в один для тестирования. У меня как то моделсим не хотел принимать больше 32-ух бит. а так можно? Имеется в виду, что в одном файле несколько модулей. Да, можно. Об этом описано здесь - https://www.kit-e.ru/articles/circuit/2008_5_154.php Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 18 апреля, 2019 Опубликовано 18 апреля, 2019 · Жалоба Приветствую! 6 hours ago, Naixrim said: ... При моделировании одного проекта, заметил, что modelsim не компилирует, если у модуля, будь то топ-модуль или подмодуль, много входных/выходных портов. module1 mod(a, b, c, d,..., N); // В данном случае N будет равняться чему? И еще вопрос, я понимаю, что возможно это дело вкусовщины, но - Как грамотно организовывать иерархию модулей? Каждый, прям совсем каждый, отдельный модуль по своим файлам? Несколько модулей в одном? Или комбинация из этого? ... Чудеса прям! Вы бы сказали сколько у вас "много" было 100, 1000, и ли 10 тыс. портов? И какое сообщение об ошибке выводит при компиляции такого модуля? Тогда мы бы тоже в чудеса поверили бы. О вкусах организации проектов не спорят. Лепят кому как удобнее. Многие компании свои IP корки поставляют одним файлом в котором может сидеть от десятка до сотен отдельных модулей. Удобно компилировать - не надо писать простыни списков файлов составляющих модуль. Но редактировать такое - Как то раз довелось ковырять 20-ти мегабайтный исходник на VHDL c более чем 600 отдельных сущностей ... Для verilog|systemverilog есть еще такое понятие как compilation unit. Если грубо - модули в одном файле компилируются как бы в общем глобальном пространстве имен. Соответственно можно шарит макро и package файлы. Но поддержку такого надо смотреть для конкретного tools. Так что организовывайте так как вам будет удобно - главное тут именно "организовывайте" Удачи! Rob. P.S. Сам почти всегда делаю для одного модуля один файл. Бывают и исключения (но не на 20 MByte) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Naixrim 0 18 апреля, 2019 Опубликовано 18 апреля, 2019 · Жалоба 9 minutes ago, RobFPGA said: Приветствую! Чудеса прям! Вы бы сказали сколько у вас "много" было 100, 1000, и ли 10 тыс. портов? И какое сообщение об ошибке выводит при компиляции такого модуля? Тогда мы бы тоже в чудеса поверили бы. О вкусах организации проектов не спорят. Лепят кому как удобнее. Многие компании свои IP корки поставляют одним файлом в котором может сидеть от десятка до сотен отдельных модулей. Удобно компилировать - не надо писать простыни списков файлов составляющих модуль. Но редактировать такое - Как то раз довелось ковырять 20-ти мегабайтный исходник на VHDL c более чем 600 отдельных сущностей ... Для verilog|systemverilog есть еще такое понятие как compilation unit. Если грубо - модули в одном файле компилируются как бы в общем глобальном пространстве имен. Соответственно можно шарит макро и package файлы. Но это поддержку такого надо смотреть для конкретного tools. Так что организовывайте так как вам будет удобно - главное тут именно "организовывайте" Удачи! Rob. P.S. Сам почти всегда делаю для одного модуля один файл. Бывают и исключения (но не на 20 MByte) Знаете, я пошел воссоздавать ситуацию, которая привела к ошибке и прочее. И у меня не получилось! Я в модуль закинул портов еще больше чем было тогда ( тогда было порядка 12ти) и сейчас все работает, я просто с нуля переписал топ модуль, по всей видимости не заметил ранее ошибку. Сейчас сижу и думаю насколько глупо я выгляжу. Насчет организации, ваш посыл я понял, спасибо за ответ, скрестил пальцы и надеюсь, что по 20 Мб файлы делать не буду =) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 18 апреля, 2019 Опубликовано 18 апреля, 2019 (изменено) · Жалоба 5 hours ago, Naixrim said: Сейчас сижу и думаю насколько глупо я выгляжу. я тут целый год на глазах у всех учился fpga на паленой плате. Вот кто глупо выглядел =)) Изменено 18 апреля, 2019 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexx 0 19 апреля, 2019 Опубликовано 19 апреля, 2019 · Жалоба Одно из правил линта как раз требует чтобы имя модуля совпадало с именем файла. Максимум видел индусский case на 14тыс. строк, как же проблемно было высчитывать начала и конца, приходилось перекидывать файлы со станции на PC, чтобы нормально разделить и прочесть код. Но 20МБ RTL кода, это за гранью нормального. Это скорее всего релизный вариант, чтобы отдать одним файлом, но не работать с ним. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 19 апреля, 2019 Опубликовано 19 апреля, 2019 · Жалоба Буквально недавно столкнулся с подобным поведением QuestaSim, Когда перешёл на версию 10.7c c версии 10.4e, тоже не увидел часть портов. Упорное гугление и чтение доков дало вот что: теперь Ментор рекомендует трёхстадийный процесс: vcom/vlog -> vopt -> vsim. Если делать по-старинке vcom -> vsim, то это как раз и скрывает часть портов. Теперь я добавляю при вызове vsim ключ -voptargs=+acc и всё вижу. Возможно, есть более изящное решение, но пока как-то нет большого желания разбираться глубже. Я стал ленив и нелюбопытен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 19 апреля, 2019 Опубликовано 19 апреля, 2019 · Жалоба Приветствую! 15 hours ago, andrew_b said: Буквально недавно столкнулся с подобным поведением QuestaSim, Когда перешёл на версию 10.7c c версии 10.4e, тоже не увидел часть портов. Упорное гугление и чтение доков дало вот что: теперь Ментор рекомендует трёхстадийный процесс: vcom/vlog -> vopt -> vsim. Если делать по-старинке vcom -> vsim, то это как раз и скрывает часть портов. Не так уж упорно - начиная с 10.7с версии, по умолчанию, сим запускается с оптимизацией. А режим сима без оптимизации (-novopt) объявили устаревшим с угрозой в последующих версиях вообще убрать. Поэтому теперь надо явно указывать какие внутренние порты|/сигналы вы хотите видеть (опцией +acc). Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Doka 1 7 мая, 2019 Опубликовано 7 мая, 2019 · Жалоба On 4/18/2019 at 11:09 AM, Naixrim said: Каждый, прям совсем каждый, отдельный модуль по своим файлам? Несколько модулей в одном? Или комбинация из этого? это определяется внутрикорпоративными правилами либо выбором одного из нескольких стилистических стандартов. Всякие синопсисы/кейденсы/фрискейлы рекомендуют использовать правило (именно как правило, а не рекомендуцию): 1 модуль = файл, имя модуля == имени файла On 4/19/2019 at 7:58 AM, lexx said: Одно из правил линта как раз требует чтобы имя модуля совпадало с именем файла. ...одно из правил одного из возможных сетов правил, которым кто-то когда-то условился следовать.. да, конкретно это правило имеет под собой рациональную почву, но это стилевая вещь, а не нарушение догм LRM и в целом неплохо было бы прежде "выбрать свою религию" и соответствующим ей настроить рулы тула, иначе линт превратится в "вангователя стиля кодирования" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexx 0 8 мая, 2019 Опубликовано 8 мая, 2019 · Жалоба 18 hours ago, Doka said: да, конкретно это правило имеет под собой рациональную почву, но это стилевая вещь, а не нарушение догм LRM Да, это не догма, я даже сам не всегда следую этому правилу, но вот недавно столкнулся с тем, что часть скриптов упрощающих жизнь используют поиск файлов по имени в папках, вместо абсолютного пути. Всё возможно, но если имя файла уникально, то это минимизирует ошибки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться