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

Sergiysss

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

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

  • День рождения 09.06.1992

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. Наболело пару вопросов по работе с массивами в SystemVerilog: 1) Есть ли разница при синтезе между упакованным двумерным массивом и неупакованным массивом? К примеру logic [31:0] ar1 [256:0] и logic [256:0][31:0]; 2) Можно ли передавать значения массивов между модулями без использования структур: Насколько я понял действия такие: A) Упакованный массив можно использовать как порт модуля ( output logic [255:0][39:0] outstd). Все верно? (при этом возникает лично у меня warning при компиляции) B) Неупакованный массив нельзя использовать как порт модуля, значение массива можно передать путем его упаковки. Тут возникает вопрос: какие есть способы это сделать? Заранее спасибо.
  2. С противоположной стороны зада в виде выгрузки либо по 160 бит (5) переменных либо по 128 (4) переменные. И так по кругу - так сказать циклическая память. Скорей всего эту задачу можно решить с точки зрения памяти... Однако есть схожая задача где нужно иметь доступ сразу к 20ти ячейкам одномерного массива... что наверно будет представлять из себя регистры и много... много проводков... Вот так и я о том же... Я вообщем то всегда оперировал битами. И вообщем-то была у меня схожая структура (память регистрового типа). Так вот моего начальника смутила размерность разводки для 56000 бит. Вот и говорили сегодня о том что нужно применять объектный подход и оперировать объектами. Что абстрактный массив памяти не может быть верным. А вот переменная (в данном случае 32 бита) это объект реальный. И для верности схемы нужно отталкиваться от объектов. Собственно и создал тему посоветоваться. Вообщем понял что у меня провал в области ОЗУ и использования ее в проектах на verilog. Кто может посоветовать, что почитать? :( Я вообщем-то думал что память создается массивом reg, а потом синтезируется с помощью специальной программы.
  3. Уважаемые пользователи форума - у меня такой вопрос (дабы посоветоваться): Дано: 1)Есть математический объект -> представляет собой 5 переменных шириной 32 бита , глубиной 160 logic [31:0] obj [160][5]; 2)Есть шина загрузки ld[63:0] шириной 64 бита. Вопрос как сделать вернее? За один шаг я могу грузить сразу 2 переменные, в двумерном массиве это выглядит так если привязаться к строкам: [0] [0] , [0] [1]; [0] [2] , [0] [3]; [0] [4] , [x] [x]; [1] [0] , [1] [1]; Такой стиль удобен с точки зрения написания функции записи. Второй вариант не привязываться к строке. [0] [0] , [0] [1]; [0] [2] , [0] [3]; [0] [4] , [1] [0]; [1] [1] , [1] [2]; Прирост к скорости загрузки становится *1/6; Однако не очень удобно оперировать такими значениями - наверно придется ручками прописывать (возможно через generate) все 400 комбинаций Третий вариант уйти от реального двумерного объекта к абстрактному одномерному и оперировать с ним. logic [31:0] obj [800] Кто как считает? Заранее спасибо и + к карме. //P.S. - синтез будет не на ПЛИС, а как starblock SoC.
  4. Язык обратно совместим. Для того чтобы перевести конструкции из SV в V нужно заменить не поддерживающиеся структуры SV для V. Для этого нужно знать язык V и понимать язык SV. А собственно говоря зачем вам переносить из SV в V? В прошлый раз когда я сталкивался с таким вопросом, была информация о устаревшей системе. Устроившим решением было синтез из SV нетлиста который данная система поддерживала.
  5. Тогда поправлю вопрос - можно ли описать поведенчески структуру сдвигового регистра с самосинхронизацией? Т.Е. распространением тактового сигнала вглубь сдвигового регистра с задержкой? Сейчас поставил это распространение просто как assign. Или только вручную прописать элементы библиотеки как netlist?
  6. Уважаемые пользователи помогите пожалуйста с таким вроде простым вопросом. Идея такая: нужно передать значение тактового сигнала с задержкой в синтезируемой схеме (поставить буфер). Как это сделать? Пытался использовать примитиву buf (clk,out); Что то не взлетел. always #20ps begin clk=out; end Тоже не сработал.
  7. На сколько я понял вы хотите добавить в структуру SV систему ссылок портов на модули... Однако ушли от стандарта языка Verilog. В топ модуле создается экземпляр по примеру: alisa N1 (.d(bob.N1.q), .q(bob.N2.d)); и т.д. Таким образом вы забыли о создании экземпляров. Представим что в вашем топовом модуле несколько сотен экземпляров одного и того же модуля, значит нужно указать точный номер конкретного экземпляра... ОК, дальше мы идем на уровень выше. В вашей главной схеме может существовать десятки подсхем с экземплярами модулей которые могут иметь одинаковые идентификатор. То есть должно быть строгое пространство имен и ссылок, в котором огромное количество потенциальных ошибок. А если доверить это программе, то нужно создавать специальные структуры которые будут указывать, что данные ссылки находятся в теле только одного модуля. Итог - никакой элегантности. Теперь к делу - для создания чего либо глобального и похожего есть структура generate...endgenerate что позволяло сделать многое еще со времен традиционного Verilog. А в SV помимо интерфейсов, появились пакеты и user-defined типы переменных которые можно с их помощью передавать в том числе и для портов в пространстве $unit. Но как вы сказали интересует почему не сделать так как вы предложили? Моё скромное мнение выше.
  8. Ковчег можно скачать(студенческую версию) на сайте. http://www.asic.ru/index.php?option=com_co...4&Itemid=87. Работа - Графический формат, а так же netlist verilog. Библиотека студенческой версии содержит старые БМК. В производственной версии есть поддержка новых МК (матричных кристаллов) Известно что в ближайшие пару лет (может даже месяцев) появится поддержка Verilog синтез и моделирование.
×
×
  • Создать...