реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Набор файлов с одинаковыми localпараметрами, uninclude? или как их разделять?
Koluchiy
сообщение Apr 24 2017, 16:17
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 917
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



Здравствуйте, уважаемые гуру.

Есть набор каталогов с разными именами. В каждом есть файл .v с одинаковым для всех каталогов именем.
Во всех файлах определены одинаковые localparamы.

Надо: последовательно в ходе работы тестбенча в Моделсиме "подключать" эти файлы один за другим. А потом "отключать".

Как это можно сделать?
Никакого `uninclude в Верилоге вроде нету.
Можно бы подключить все эти файлы, но тогда будет куча localparam с одинаковыми именами.
Как-то можно сделать так, чтобы их можно было различать? Обращаться к параметрам типа файлХ.параметерY, например.

Ну или еще чего-то в этом духе придумать.
Go to the top of the page
 
+Quote Post
Fitc
сообщение Apr 24 2017, 18:46
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 21-10-11
Пользователь №: 67 894



Цитата(Koluchiy @ Apr 24 2017, 19:17) *
Здравствуйте, уважаемые гуру.

Есть набор каталогов с разными именами. В каждом есть файл .v с одинаковым для всех каталогов именем.
Во всех файлах определены одинаковые localparamы.

Надо: последовательно в ходе работы тестбенча в Моделсиме "подключать" эти файлы один за другим. А потом "отключать".

Как это можно сделать?
Никакого `uninclude в Верилоге вроде нету.
Можно бы подключить все эти файлы, но тогда будет куча localparam с одинаковыми именами.
Как-то можно сделать так, чтобы их можно было различать? Обращаться к параметрам типа файлХ.параметерY, например.

Ну или еще чего-то в этом духе придумать.

Вы хотите в ходе работы тестбенча, т.е. во время непрерывного моделирования делать include файлов? Это невозможно. Так как `include это директива препроцессора, выполняемая во время препроцессинга/компиляции. Значения localparam во время моделирования также нельзя изменять, они устанавливаются на этапе линковки (elaboration).
Если же нужно по очереди перезапускать моделирование с разными значениями localparam, то следует написать tcl-скрипт, который найдет все подпапки с нужными вам файлами, добавит incdir к нужной подпапке в команду vlog и запустит моделирование на заданный промежуток времени (или пока моделирование не завершится), далее добавит incdir к следующей подпапке и т.д., пока есть не обработанные файлы.

Если нужны именно параметры, то рекомендую добавить список параметров к моделируемому/тестируемому модулю. В модуль верхнего уровня добавить параметры, значения которых устанавливаются в vsim с помощью параметра -g или -G.
Другой вариант - это промоделить все варианты одновременно, тогда нужно создать массив параметров и в generate создать экземпляр с нужным набором параметров, далее все это параллельно промоделить.
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение Apr 25 2017, 11:48
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 917
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



Спасибо за помощь.

Скажите, а как-то можно разделить пространства имен?
Чтобы localparam'ы (или обхявления какого-то другого вида) с одинаковыми именами, определенные в разных подключенных файлах, считались разными, и чтобы к ним можно было обращаться как-нибудь типа имя_файла.имя_параметра?
Go to the top of the page
 
+Quote Post
Fitc
сообщение Apr 25 2017, 18:56
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 21-10-11
Пользователь №: 67 894



Цитата(Koluchiy @ Apr 25 2017, 14:48) *
Спасибо за помощь.

Скажите, а как-то можно разделить пространства имен?
Чтобы localparam'ы (или обхявления какого-то другого вида) с одинаковыми именами, определенные в разных подключенных файлах, считались разными, и чтобы к ним можно было обращаться как-нибудь типа имя_файла.имя_параметра?

Если сделать `include "<имя подпапки>/<имя файла>" для каждого файла в индивидуальную область видимости, например, в отдельный module или package (есть только в SystemVerilog), то можно обращаться через имя модуля/пакета к параметру, например, my_module::my_param. Только не понятно зачем так делать, если параметр можно сделать массивом и обращаться к определенному элементу по индексу.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th May 2017 - 17:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016