Перейти к содержанию
    

oval

Свой
  • Постов

    260
  • Зарегистрирован

  • Посещение

Весь контент oval


  1. А для какого семейства ПЛИС Actel это все делается? У семейств Actel ProASIC, ProASICPlus, ProASIC3 начальное состояние триггеров неопределено. Поэтому там, где это важно (с точки зрения логики работы схемы) должен быть сброс. Какой асинхронный или синхронный, в принципе не важно, главное его грамотное формирование. Использование синхронного потребует большего количества ячеек, асинхронный же будет занимать специально выделенные ресурсы.
  2. Да, можно. Требуется только, чтобы используемые средства синтеза и моделирования поддерживали такую возможность. Достаточно часто встречается такая ситуация. Проблем не возникало. В интерфейсах модулей, где происходит переход от языка к языку, допускается использование лишь ограниченного набора типов, то есть только тех, аналог которых существует в другом языке. Таблицы соответствия типов обычно приводятся в документации на средства синтеза и моделирования, поддерживающие возможность одновременной работы с несколькими языками (ключевое слово mixed language).
  3. Компания Celoxica занимается средствами синтеза такого рода. Опыта использования к сожалению пока нет. По поводу SystemC vs. SystemVerilog, думаю мир разделиться, как это было с VHDL и Verilog.
  4. Просто соединяете пару соответствующих выводов SAA7111 и Spartan3. Каждую из линий (SDA и SCL) подтягиваете внешними резисторами к питанию.
  5. Пока к сожалению не очень плотно, но сталкивался. Берете Xilinx Platform Studio, ModelSim и, собственно, Seamless FPGA (версия поддерживающая только встроенное в Xilinx VirtexIIPro и Virtex4 ядро процессора PowerPC), и вперед, изучать. В деталях не скажу, но вроде бы то, что обещают, поддерживается. Средство полезное при проектировании достаточно серьезных SoC, а также встроенных систем.
  6. В данном случае синтезатор абсолютно прав. Он синтезировал то, что Вы описали. Причина кстати не в списке чувствительности процесса, а в том, что присвоение сигнала "o1" производиться не во всех ветвях условия. Получается, что при высоком "r", вне зависимости от фронта "c", требуется сохранить прежнее значение "о1". Синтезатор честно создает схему для выполнения этой функции. Большинство синтезаторов сообщает о такого рода ситуации предупреждением.
  7. Еще раз уточнил. Линейка была закуплена относительно давно под нормы 0.5мкм. Линейка не промышленная, линейка лабораторная, для малых опытных партий! Сначала на ней освоили (с большим трудом) производство процессоров НИИСИ по нормам 0.5мкм (сначала НИИСИ делал кристаллы за бугром). Потом была модернизация линейки под нормы 0.35мкм (дозакупка/замена необходимого оборудования). Сейчас освоено производство процессорров НИИСИ и еще некоторых микросхем НИИСИ по 0.35мкм. В планах модернизация под 0.25мкм. Принадлежит это все хозяйство дочерней компании НИИСИ. На территории Курчатовского института это хозяйство лишь располагается. Коммерческие заказы, как я понял, не рассматриваются.
  8. В Курчатнике совершенно точно существует линейка по производству ASIC. В данный момент там налажено производство MIPS процессоров для военных разработки НИИСИ РАН. Также некое КБ "НАВИС" производит там некоторые свои чипы. Линейка вроде бы 0.35мкм.
  9. Synplify для VHDL? А что, он больше не плющит структуры, переименовывая поля как ему вздумается? Для VHDL HDL структуры (record) плющит, но не как вздумается, а в битовый вектор, похоже в порядке объявления полей. Согласен, неудобно, масса сложностей при работе с результатами синтеза.
  10. Да в том то и дело, что не поленился... Может я конечно чего-то недопонимаю... Пример из файла reference.pdf, стр. 10-84 (документация Synplify): "Two-write Port RAM Example" WRITE_RAM : process (clk) begin if rising_edge(clk) then if (wren_a = '1') then mem(to_integer(unsigned(addr_a))) <= data_a; end if; if (wren_b='1') then mem(to_integer(unsigned(addr_b))) <= data_b; end if; addr_a_reg <= addr_a; addr_b_reg <= addr_b; end if; end process WRITE_RAM; q_a <= mem(to_integer(unsigned(addr_a_reg))); q_b <= mem(to_integer(unsigned(addr_b_reg))); Как видно, чтение ассинхронное. Чтение внутрь процесса вносил (под клок), результат тот же... Обратите внимание, что адрес чтения защелкивается. Посмотрите в документе Synplicity FPGA Synthesis раздел Design Optimization -> Inferring RAMs. Разнесите по разным процессам память и остальную логику.
  11. Канал чтения должен быть также синхронным. Не поленитесь, посмотрите в документацию на Synplify, там все достаточно подробно расписано :)
  12. См. команду vopt Можно еще посмотреть application note "Compiler optimizations" вот тут. Правда зарегистрироваться придется.
  13. То есть Вы хотите сказать, что P&R способен учесть заданные пользователем временные ограничения (констрейны), постараться выжать максимальную частоту работы схемы, но при этом совершенно не способен выполнить гораздо более элементарную задачу по учету разбега клока, да еще и со всеми известными параметрами. :) Странно как-то получается. Не находите? Чем ситуация лучше (в отношении разбега фаз клока) при использовании глобальной цепи? Там разбег тоже не учитывается? Вообщем, могу сказать только одно, работая с Xilinx, ошибок, связанных с разбегом фаз клока на разных элементах, не встречал ни разу, связанных с задержкой путей, сколько угодно. Встречал такое при работе с Actel, но это единичные случаи, да и P&R у Actel гораздо менее интеллектуальный.
  14. Если я правильно понял, то здесь речь идет об анализе минимальных задержек. Если это так, то и этот процесс выполняется P&R автоматически, то есть вручную за этим следить также не требуется. P&R учтет все автоматически. То есть P&R всегда рассматривает как худший, так и лучший случай. Например, Actel Timing Analyzer предоставляет возможность анализа как максимальных задержек, так и минимальных. Кстати, например, для семейства Actel ProASICPlus разбег фазы тактового сигнала в 3-5 нс, даже при использовании глобальной цепи, совершенно нормальное явление :)
  15. Случалось, что по тем или иным причинам не было возможности использовать глобальные ресурсы для тактирования, использовали локальные. Таким образом тактировались и синхронные автоматы. То есть я хочу сказать, что ничего страшного в этом нет. При внимательном подходе все получается и работает :) Ведь никакого теоретического противоречия в этом нет. Главное, чтобы необходимые времена выполнялись.
  16. По опыту использования разных средств синтеза, могу сказать, что разница между результатами вряд-ли будет значительной. 10-15% причем как в лучшую сторону, так и в худшую. Поэтому: 1. в очередной раз в Вашем случае обращаемся к разделу "Designing with Altera" документа Synplicity FPGA Synthesis Reference Manual и смотрим, что он поддерживает и как. 2. смотрим в проект, и сопоставляем, как должно быть и как есть на самом деле. Если синтезатором, что-то желаемое не поддерживается, то, увы, рассказываем, что хотим получить, "ручками". Еще могу порекомендовать освоить средства физического синтеза, к примеру, Magma Palace. Позволяет получить 3-5% экономию ресурсов кристалла + 10-20% прирост частоты. Quartus очень погано синтезирует VHDL. Все еще не умеет распознавать RTL описание памяти, имеет проблемы с функциями и разрадностями параметров. Проект после Quartus'а занимает обычно больше места и работает намного медленнее. Однако Quartus по уже синтезированному нет-листу очень неплохо справляется с доводкой до требуемых параметров по скорости, ретаймингом и ресинтезом ассинхронных цепей. Так и работаем - синтезируем Synplify, потом затягиваем параметры Quartus'у по самое немогу и получаем приемлемый результат. К сожалению, глюки Synplify мешают картине быть совсем идеальной, однако такой подход себя оправдывает. С ужасом ожидаю полной сборки проекта - по прикидкам чип будет забит процентов на 90 :( Компонент synplicity_altsyncram5_r_w_blah_blah не является технологическим примитивом Cyclone, а является, насколько я понимаю, макросом LPM. Тем не менее, в поставке Synplify имеется соответствующая библиотека макросов. Подключив эту библиотеку, Synplify получит возможность анализа времен для данного макроса. Однако, не все LPM макросы поддерживаются. Список можно найти в документации.
  17. А Вы не преувеличиваете? Одно дело учесть разбег при расчете полученых констрейнов. А то получается что можно посадить тактовую на локальную линию, и пускай PAR разбег компенсирует :) (фантастика). Нет, не преувеличиваю :) Чтобы убедиться в этом, достаточно внимательно посмотреть временной отчет P&R, а именно, как проверяется выполнение временных ограничений, какие составляющие используются в расчете пути. Все средства P&R, с которыми мне приходилось работать, учитывают разбег фаз между элементами и не только его в процессе расположения и разводки соединений. :) Причем вне зависимости от того, глобальный ресурс используется под тактовую или нет.
  18. Они, конечно, синфазны на выходе DLL. А потом-то они пропускаются через глобальные буфера, на выходах которых вся их синфазность пропадает. Да, это так. Даже для одного клока фазы прихода на разные элементы (триггеры) будут разными. Однако этот разбег фаз учитывается самим ISE Place&Route, то есть логически синфазность не нарушается.
  19. Был однажды подобный случай, PLL была в виде отдельной микросхемы. Потом правда оказалось, что ее включили не правильно, но случаи разные бывают. Вообще такие вещи должны быть в документации четко указаны. Были всякие проблемы, и с питанием, и со стабильностью входного сигнала, но если все эти проблемы решить должным образом, то оказывается, что все очень неплохо работает. То есть считать выходные частоты синхронными можно. :)
  20. Простым FPGA девелоперам не на кой :) Человек надеется не на "простых FPGA девелоперов", а на профессионалов по проектированию SoC ;)
  21. Ни насколько, разъехавшиеся будут как попало. Позвольте не согласиться :) Если сигналы одинарной и удвоенной частоты беруться с выхода PLL (DLL), то фазы их соответствующих фронтов будут совпадать с достаточной степенью точности, чтобы можно было считать их синхронными, и при переходе между этими двумя доменами не требуется дополнительной логики синхронизации. Такая синхронизация фронтов является одной из функций блока PLL (DLL).
  22. Есть еще Mentor Platform Express, если я не ошибаюсь, то тоже из этой оперы. Но по крайней мере раньше Platform Express был только под UNIX, как сейчас, не знаю. Выяснил :) Похоже, что появилась версия Platform Express и под Windows.
  23. Сталкивались и не раз :) Что конкретно интересует? Пару файлов в аттаче. Надеюсь, что это чем-то поможет Вам. ;) an9728.pdf itu656.pdf
  24. Если речь идет о редакторе схем (В HDL Designer'е это редактор блок схем (Block Diagram)), то тривиальным способом нельзя. В принципе рисовать в базисе примитивов Xilinx можно, но этот базис (библиотеку элементов Xilinx) придется создавать "ручками" (по крайней мере графические изображения (УГО)). Судя по Вашим вопросам, Вам это и не требуется. :) Просто делайте все в HDL Designer'е c самого начала.
  25. Думаю схематику .sch конвертировать вряд-ли удасться. Я конвертеров не встречал. Структуру ИМХО заново рисовать придеться.
×
×
  • Создать...