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

 
 
> Не получается ограничить число копий подпрограммы., Vivado HLS загадка
videoscan
сообщение Aug 30 2018, 12:33
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 57
Регистрация: 16-09-14
Из: Москва
Пользователь №: 82 826



Народ!

Проблема следующая.
Есть программа на Vivado HLS со структурой как на рисунке:
Верхняя функция - controll, в вызывает 3 разные подпрограммы function1, function2 и function3.
Те в свою очередь обращаются к одной функции kernel, где происходит обработка данных.
Функция kernel должна быть одна (на уровне RTL), потому как ресурсов она жрет немерено (1024 одних DSP блоков).
Vivado HLS на этапе Sinthesis делает 3 RTL копии этой функции.
Директива Allocation не помогает, она видит только функции в той подпрограмме, в которую вставлена.

Кто-нибудь с этой проблемой сталкивался? Это решаемо?



Сообщение отредактировал videoscan - Aug 30 2018, 12:42
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MegaVolt
сообщение Aug 30 2018, 12:45
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Цитата(videoscan @ Aug 30 2018, 15:33) *
Народ!

Проблема следующая.
Есть программа на Vivado HLS со структурой как на рисунке:
Верхняя функция - controll, в вызывает 3 разные подпрограммы function1, function2 и function3.
Те в свою очередь обращаются к одной функции kernel, где происходит обработка данных.
Функция kernel должна быть одна (на уровне RTL), потому как ресурсов она жрет немерено (1024 одних DSP блоков).
Vivado HLS на этапе Sinthesis делает 3 RTL копии этой функции.
Директива Allocation не помогает, она видит только функции в той подпрограмме, в которую вставлена.

Кто-нибудь с этой проблемой сталкивался? Это решаемо?
Я так понимаю что должен быть некая ещё одна функция 4 которая решает кто из этих троих имеет доступ у жрущей функции. И само собой жрущая функция вызывается в одном месте в функции 4.
Go to the top of the page
 
+Quote Post
videoscan
сообщение Aug 30 2018, 13:35
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 57
Регистрация: 16-09-14
Из: Москва
Пользователь №: 82 826



Цитата(MegaVolt @ Aug 30 2018, 13:45) *
Я так понимаю что должен быть некая ещё одна функция 4 которая решает кто из этих троих имеет доступ у жрущей функции. И само собой жрущая функция вызывается в одном месте в функции 4.


Т. е. так как на рис?
А что помешает Vivado создать заодно и 3 экземпляра Function4 ?

На самом деле решение есть: слить все 3 функции Function1-Function3 в одну здоровую и там сказать с помощью ALLCATION, что kernel нужен один, но как это некрасиво! И зачем мы Октябрьскую революцию делали, Си используем?

Сообщение отредактировал videoscan - Aug 30 2018, 13:41
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 00:36
Рейтинг@Mail.ru


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