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

OparinVD

Свой
  • Постов

    109
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

1 Подписчик

Информация о OparinVD

  • Звание
    Частый гость
    Частый гость
  • День рождения 30.09.1981

Информация

  • Город
    Array

Посетители профиля

1 244 просмотра профиля
  1. а, всё нормально, заблудился в namespace'ах всё, что прописано в bd.tcl, живет в namespace, образованном от vlnv (без разделителей), поэтому надо было или определять namespace eval ::ns1 {} чтобы наследоваться от топа, или сразу обращаться к любой функции в bd.tcl как ${vlnv}::my_func думаю, на этом всё ))
  2. это поле - строка, хранит последнее записанное значение... если надо положить туда несколько значений - кладите список: set_property generic {generic1=14 generic2=12} [current_fileset]
  3. я не спец и не очень представляю, для чего это поле, но property generic выглядит так: Property Type Read-only Value GENERIC string* false ... какого поведения вы ожидали?
  4. Попробовал зайти чере namespace. Добавил вот это в bd.tcl namespace eval ns1 { proc my_callback {cell params} { puts "**********************" puts "$cell Hello from my_callback" puts "** params: $params ***" } } но не прокатило. Видимо bd.tcl в явном виде не сорсится. Или сорсится, но в каком-то отдельном служебном контексте...
  5. Доброго дня! Я прикручиваю bd.tcl к своему кастомному ip. Можно ли в нем помимо стандартных callback'ов, которые дергает вивда при валидации bd, положить свои функции, которые буду дергать я со своего топлевел-bd? Например, передавать по кругу некий list, а каждый инстанс bd_cell добавит в этот list всё, что сочтет нужным. Если абстрактно, то выглядеть должно как-то так: set bdcell_01 [ create_bd_cell -type ip -vlnv <somthing #01> ] set bdcell_02 [ create_bd_cell -type ip -vlnv <somthing #02> ] set reglist [list ] bdcell_01.register reglist bdcell_02.register reglist foreach item $reglist { ...} Как этим пользоваться я в полной мере еще не продумал )) Может и не нужно оно вовсе, но пока интересна принципиальная возможность такой техники, можно ли на нее закладываться?
  6. Да, глянул из любопытсва, что там у Вивады. Уж не знаю полный список обновлений в стандарте, но Вивадо поддерживает очень скромный перечень. Ну и традиционно нельзя на BD кинуть топлевел файл, если он не просто vhdl, а vhdl-2008 или тем более 2019
  7. Я связался с автором статьи, он пояснил, что к сожалению, configuration - это только про копание внутри архитектуры, а в объявление контекста конфигурацией не залезть. Как вариант, показал, что в VHDL-2019 появилось понятие "Conditional analysis" - по сути это директивы препроцессора. Но я пока побаиваюсь пробовать 2019, вероятно мой путь - это всё-таки скриптом дублировать исходник топ-левела и у клона править используемый контекст.
  8. configuration - определенно правильное направление, но пока не получилось... как разберусь, отпишусь спасибо
  9. можете поделиться примером? про configuration слыхал, но в руках еще не крутил... в интернете примеры направлены на манипуляции с entity: выбор архитектуры, перемэпинг портов и т.д. Как правило встречается в контекскте тестбенчей
  10. в ug901 нашел, что можно: засовывать generic в package, передавать type через generic и даже передавать function через generic (как много нам открытий чудных дает чтение книг дальше 20й страницы 🙂 ), но не нашел о передаче package через generic... У меня в package не только сами record объявлены. Для каждой record объявлена константа, определяющая длину std_logic_vector, получаемого конкатенацией всех полей record-а. А также две функции: conv_rec_to_slv и conv_slv_to_rec (эти имена одинаковые для всех record, резолвятся по типу аргументов). Зная теперь, что можно через генерик передать не только константу, но и тип с функцией, из всего этого наверное можно слепить что-то рабочее, но получится очень громоздко. У меня около десятка типов record, каждую по отдельности замучаешься настраивать 😞
  11. если record'ы назвать разными именами, то потеряется смысл, т.е. у каждого декодера будет свой текст, в котором он использует свои record'ы а вот если можно через generic передавать подключаемый package, то это бы всё решило... это возможно?
  12. Доброго дня! Пишу на VHDL, но в топике язык не стал указывать, т.к. решение, возможно, придется искать за пределами hdl. Задача такая: у меня есть два протокола передачи данных, они одинаковы по структуре, т.е имеют одинаковые заголовки и подзаголовки и схожие по смыслу но отличающиеся в деталях пейлоады (разный порядок и состав полей). Парсинг я делаю примерно так: выделяю из потока буфер нужной длины (например, очередной заголовок) и накладываю на него record с полями. Сами структуры описаны в разных библиотеках templates1.vhd и templates2.vhd. Внутри этих файлов объявлены типы с одинаковыми именами, типа type payload1 is record field1 : std_logic_vector(7 downto 0); end record для одного шаблона и type payload1 is record field1 : std_logic_vector(15 downto 0); field2 : std_logic_vector(15 downto 0); end record Хочется подключением разных package с шаблонами выбирать, какой протокол реализует компонент. Навскидку видятся такие пути решения: 1. Продублировать исходник компонента и в шапке первого прописать use templates1.all, а в шапке другого соответственно use templates2.all. Все просто и понятно, но неприятность в дублировании кода. 2. Внутри компонента ссылаться всегда на одно и то же имя use templates.all, а шаблоны с одинаковым именем файла разделять разными путями к файлу. На этапе package ipcore в Вивадо скрипту упаковки передаем список исходников и разным ipcore кладем разные файлы с шаблонами. На уровне Вивадо вроде как всё пройдет гладко, т.к. не возникнет конфликта - OOC синтез увидит только свой шаблон, а дальше пойдет нетлист. Но видится, что если оба ipcore одновременно встретятся, например, на симуляции в Квесте, то возникнет конфликт имен, т.к. в общей видимости появятся два package с одинаковыми именами и одинаковыми объявленными типами данных. 3. Некий гибрид 1 и 2. При упаковке ipcore любым скриптовым языком генерим код компонента путем копирования исходника и правкой шапки с подключением библиотеки. Вроде рабочий вариант, но отдает какой-то костыльностью. Есть мысли как лучше это сделать?
  13. да, под совместимостью с vivado я имел в виду способность работать с ее криптованными корками... не знаю, меняют ли они ключи каждый раз, когда меняется номер версии, но таблица совместимости в доках есть... если не поедет под убунтой - это полбеды, что-нибудь придумаем
  14. Не стал отдельную тему заводить Порекомендуйте, пожалуйста, какой симулятор взять с фтп, чтоб был полноценный, был совместим с vivado 2022.2, желательно работал под убунтой, ну и самое важное - с рабочей таблеткой ))
×
×
  • Создать...