Jump to content

    

В чем отладить SV модуль

Всем привет,

 

у меня часто возникает необходимость переписать вычислительный модуль из массивно-параллельного C на Systemverilog для дальнейшего использования этого алгоритма в железе. Примерно 6-7 таких алгоритмов я уже спортировал. Обычно в алгоритме на входе имеется много, сотни-тысячи бит на регистрах, которые необходимо массивно-параллельно и с длинным конвейером перемалывать и получать на выходе что-то примерно того же размера. Писать такое на софтпроцессоре - нет возможности - скорости не хватает. Основной смысл использования плисок для такого рода алгоритмов - игра с точностью, то есть с мантиссой, и из-за этого возможность втиснуть в средний стратикс что-то, что требует пару-тройку топовых графических карт.

 

В общем мои алгоритмы по структуре очень напоминают ФФТ для фиксированного вектора - на каждый posedge основного клока валится во входных регистрах новый комплект вектора для Фурье преобразования, все внутренние конвейеры забиты предыдущими векторами, а на выходе выплевывается результат преобразования вектора, который был подан на вход примерно так 10-100 тактов (в зависимости от алгоритма) назад.

 

Основная моя проблема - как это отлаживать.

 

У меня на обычном процессоре есть куча примеров что можно подать на вход, и что нужно получить на выходе, но на плиску входной поток так подать у меня нет возможности (то есть нет железа и необходимых переходников).

 

Скажите, пожалуйста, есть ли какие-то тулсы, которые можно было бы для отладки таких модулей (интересует пока только Альтера) использовать и как они называются?

 

Спасибо

 

ИИВ

Share this post


Link to post
Share on other sites

эти тулзы называются верилог симуляторы или hdl симуляторы

 

наиболее популярный тут тул - questasim (mentor) , также есть ncsim (cadence) vcs (synopsis)

есть еще у aldec-а и всячиские "внутренние" симуляторы, но с SV могут быть проблемы, нужно использовать чистый V, но я этими симуляторами не пользуюсь - мало знаю

 

если хотите показывать буржуям и не отгрести проблем с лицензией есть Icarus и Verilator, я давно с Icarus-ом слегка потрахался, но как-то не смог заставить работать, хотя студенческие работы часто ссылаются на них

 

ну а вообще - вот

http://en.wikipedia.org/wiki/List_of_Verilog_simulators

Share this post


Link to post
Share on other sites
но с SV могут быть проблемы, нужно использовать чистый V

о каких проблемах, заставляющих использовать V, идёт речь?

кстати, официальная позиция комитета состоит в том, что V уже не существует.

 

возможность втиснуть в средний стратикс что-то, что требует пару-тройку топовых графических карт.

альтера вроде заявляла о поддержке openCL, не пробовали этим воспользоваться?

Share this post


Link to post
Share on other sites
о каких проблемах, заставляющих использовать V, идёт речь?

кстати, официальная позиция комитета состоит в том, что V уже не существует.

проблема поддержки SV в "левых" симуляторах

альтеровский симулятор вроде как поддерживает, но то ли с ограничениями, то ли с глюками

у ксайлинса даже синтез не поддерживает SV, вряд ли isim его поддерживает

но еще раз напишу - сам я такие симуляторы не использую и автору темы не могу советовать, но если он свой SV модуль захочет продать импортным клиентам (в какой-то другой теме вроде было об этом), то могут спросить где лицензия, поэтому я упоминаю про свободные симуляторы, а там даже V-95 поддерживается не полностью

 

Share this post


Link to post
Share on other sites
у ксайлинса даже синтез не поддерживает SV, вряд ли isim его поддерживает

))) не, они наконец-то сподобились, правда за денежку(синтез Вивадо). не прошло и 10 лет )))

Share this post


Link to post
Share on other sites
))) не, они наконец-то сподобились, правда за денежку(синтез Вивадо). не прошло и 10 лет )))

там ограничение по семействам, "народный" spartan 6 не поддерживается в vivado

Share this post


Link to post
Share on other sites

Спасибо большое за советы!

 

Начал с верилатором разбираться, если с ним не получится, пойду дальше по списку.

 

Про OpenCL - как раз-то его и CUDA в чистом виде сам могу на графических картах пользовать, но есть алгоритмы, где он не на столько гибок, что можно легко играться с мантиссой. У меня в алгоритмах часто большая часть данных представлена в виде 10-15 битных целых, и основными операциями являются сдвиги и сложения. Из-за этого такой алгоритм на плиске становится быстрее, при том, что на CUDA/OpenCL мне реально проще и сподручнее программировать.

 

Альтерровский OpenCL еще не пробовал, руки пока не доходят.

Share this post


Link to post
Share on other sites
Альтерровский OpenCL еще не пробовал, руки пока не доходят.

попробуйте и нам расскажите, т.к. OpenCL должен скорее всего транслироваться в промежуточное представление на одном из HDL, где вопросы битового представления можно править пользователю. если они заявляли о поддержке, значит должны и средства отладки представлять, иначе это не смешно.

ЗЫ: думаю, что всё-таки не стоит пользоваться самоляпными средами моделирования. подозреваю, что уровень поддержки языка достаточно низкий.

Share this post


Link to post
Share on other sites
ЗЫ: думаю, что всё-таки не стоит пользоваться самоляпными средами моделирования. подозреваю, что уровень поддержки языка достаточно низкий.

 

я бы тоже не хотел бы быть ответственным за экстремистские советы - на фтп лежат симуляторы и лекарства - questasim самый простой, чтобы "стартовать".

неудобства свободных симуляторов все-таки требуют серьезной мотивации для их использования...

Share this post


Link to post
Share on other sites

в Верилоге есть open() sscanf() sprintf(). ИМХО более чем достаточно для прогона ТОННЫ данных через алгоритм при использовании Modelsim или подобной среды.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this