Синтез Verilog занимает слишком много времени

Я пишу синтезируемый модуль на Verilog в Xilinx ISE. Частью этого является создание массива 256x128x1 с 1 битом в каждой из его ячеек и заполнение этого массива 1 битом за раз на каждом нарастающем фронте тактового сигнала.

Я решил игнорировать любые циклы for и while при его заполнении, чтобы сократить время синтеза. Тем не менее, для синтеза по-прежнему требуется много времени (я дал ему поработать уже 30 минут, и он до сих пор не остановился). Это нормально занимать много времени, когда нужно создать столько ячеек памяти (32767) в дизайне?


person thatguyoverthere    schedule 21.02.2015    source источник
comment
с* не который (1-е слово 2-я строка)   -  person thatguyoverthere    schedule 21.02.2015
comment
Инструменты синтеза развертывают циклы и обычно довольно хорошо упрощают логику эквивалентности, поэтому, скорее всего, это не источник вашей проблемы. Какие FPGA вы синтезируете, насколько велика ваша конструкция и какова мощность машины, которую вы используете для ise? Все это важные факторы времени синтеза.   -  person Unn    schedule 22.02.2015
comment
@thatguyoverthere: это не должно занять так много времени. Одна из причин, по которой инструмент синтеза занимает много времени, заключается в том, что ваша тактовая частота очень мала по сравнению с комбинационной логикой. Я бы сначала протестировал его для массива меньшего размера. Если вы опубликуете свой код, мы сможем помочь вам больше.   -  person Ari    schedule 24.02.2015


Ответы (2)


Если у вас есть большой «массив» с некоторыми seq/comb. логика, синтезу просто нужно больше времени для работы над отображением и оптимизацией, также взаимосвязь между регами 256x128x1 не простая, и эти связи не бесплатны! Другой подход заключается в использовании библиотеки памяти от поставщика для сокращения времени синтеза, однако вы можете изменить свой алгоритм, чтобы он соответствовал новой модели памяти.

person Mark M    schedule 31.03.2015

Я думаю, вы можете реорганизовать свой код, чтобы сделать память BlockRAM с 256 элементами, и каждый элемент имеет ширину 128 бит. Вы можете спроектировать регистр сдвига шириной 128 бит и сдвигать на 1 бит при каждом повышении тактовой частоты. И когда вы получили 128 битов данных, запишите их в BlockRAM. Этот дизайн будет использовать ресурсы BlockRAM лучше, чем исходная версия 32767x1.

Однако, учитывая ваше одиночное время выполнения, это происходит на этапе синтеза или на этапе PAR? Маловероятно, что 32767x1 бит BlockRAM вызовет проблемы с длительным временем выполнения.

person Neo Song    schedule 31.03.2015