А кто-нибудь с Xilinx работал? Повозился я с ISE, давненько я так не страдал. Особенно доставляет инициализация памяти (та что ROM, с программой). Сначала попробовал core generator, он притащил в проект кучу вонючего хлама на много мегабайт, а всего-то надо сгенерировать блок 16К*8. Потом он никак не хотел жрать .coe файл (контент для инициализации). Там у него особо извращенческие требования, умирает сразу при любой непонятке. Потом начал падать мой любимый srec_cat (я им пытался .coe родить из хекса) - оказывается там с 2014 года ошибка в генерации .coe до сих пор неисправленная. Потом я попробовал пару разных конвертеров. Наконец, с десятой попытки генератор сожрал .coe, он его удовлетворил. Урюкам из х#йлинкса даже не приходит в голову что кто-то может генерить файлы не из их EDK - нет никаких утилит для генерации .coe файлов из стандартных. Запустился 580-ый процессор, но полезли проблемы. Начал корректировать тестовую программу, и выяснилось, что для подстановки нового контента снова надо генерить память генератором с самого начала. Долго и нудно, снова мудачизм полный...
Посмотрел что народ делает. Оказывается можно память тупо задать массивом и инициализировать ее $readmemh(), который у х#йлинкса стал синтезируемым. Новости географические, блин. Перешел в состояние радостно-отстраненного удивления. Вышел из него. Очередная долгая и нудная возня с форматом файла для $readmemh(). О, да! Их считыватель не жрет .mem файлы по стандарту Верилога, только очень ограниченное подмножество. В софте 2014 года, Карл! Который продается по $4K. Посмотрел примеры, подобрал формат. Но не нашел утилиту которая его автоматически может генерировать из .bin/.hex. Приходится допатчивать руками после каждой компиляции. Может кто из опытных чего посоветует? Нужен быстрый маршрут обновления содержимого ROM в Спартане после перекомпиляции ассемблерных исходников тестового кода 580-го.
Ну... В итоге все заработало на плате AX309 со Sparta6-SLX9-3, сравним с DE0 и Cyclone III:
- частота проекта чуть более 100МГц у обоих, примерно одинакова
- LUT 750 у Spartan и 948 у Cyclone
- REG 451 (260 slices) у Spartan и 416 у Cyclone