2015-02-21 2 views
1

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

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

+0

с * не который (1-е слово 2-я строка) – thatguyoverthere

+0

Синтетические инструменты разворачивают петли и обычно довольно хороши в упрощении логики выравнивания, поэтому, скорее всего, это не источник вашей проблемы. Какую FPGA вы синтезируете, насколько велика ваша конструкция и как сила - это машина, которую вы используете для ise? Все это важные факторы во время синтеза – Unn

+0

@thatguyoverthere: Это не должно длиться так долго. Одна из причин, по которой инструмент синтеза занимает много времени, - это когда ваша тактовая частота очень плотная по сравнению с комбинационной логикой. Сначала я проверил его для массива меньшего размера. Если вы разместите свой код, мы сможем вам помочь. – Ari

ответ

0

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

0

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

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

Смежные вопросы