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

EugeneS

Свой
  • Постов

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

  • Посещение

Сообщения, опубликованные EugeneS


  1. Это как запустить Linux на софтовом процессоре на Microblaze на Xilinx - очень круто и навороченно, но пока не нужно. Нет, я понимаю, что можно найти задачу, под которую это будет оптимально и необходимо, но по большому счету Linux там - излишество. Так и с SystemC - пока что потеря 20-30% быстродействия и 10-15% емкости кристалла не оправдывает то увеличение скорости разработки, которое способен обеспечить SystemC. Но ведь и винды не сразу стали стандартом де-факто на персоналках. Выросла мощность компьютеров, увеличились объемы памяти, снизилась стоимость винтов и все получилось. Так и с SystemC - его начнут использовать тогда, когда емкость и скорострельность FPGA чипов будет позволять компенсировать недостатки, связанные с этой технологией. Думаю, что это произойдет в районе удвоения существующих показателей по емкости и скорострельности для FPGA при сохранении существующей на сегодняшний день цены.

     

    А чем лучше SystemC по сравнению с раздельными Microblaze © + быстрые блоки на HDL?

    И еще, я не писал на SystemC , но из его описания у меня сложилось впечатление, что все

    увеличение скорости разработки будет растеряно на этапе отладки в железе.

  2. В своё время многие проблеммы с синхронизацией решила вот такая простенькая схемма. Нашёл её в quartusii_handbook

    Все триггеры в проекте тактируются глобальной тактовой. А на вход разрешения триггера(ENA) подается с выхода этой схеммы. Т е это просто схемма укорочения импульса, синхронная!!!

     

    Это не синхронизация, а rise detection. При приходе асинхронного сигнала бесполезна.

     

    :blink:

  3. Симптом: компиляция куска проекта на VHDL проходит нормально, код проверен несколько раз. Тайм аналайзер не дает ни ошибок, ни предупрежедений. Симуляция же показывает неправильное функционирование схемы...

    Однако же если в настройках фиттера поменять занчения "Placement effort multiplier" и " Route effort multiplier" на 2.0 (вместо 1.0), то компиляция и тайминг аналайзер проходят также хорошо, но симулятор показывает полную работоспособность кода... :blink:

    Просто озадачен, раньше при схемном вводе такого не замечал...

     

    Удивительно, но получается, что "шаманские настройки" очень сильно влияют на работоспособность проекта. Даже подумать страшно о перспективах сборки всего проекта, поскольку придется подбирать "волшебные числа"...

     

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

     

    Если вы желаете получить осмысленный ответ, то следует правильно ставить вопрос. Уж во всяком случае следовало бы пояснить, что у вас за проект, какая ПЛИС, какая рабочая частота, сколько ресурсов занято, в чем проявляется неработоспособность, и т. п.

    А из того, что вы написали, можно предположить, что все ваши проблемы связаны с наличием асинхронностей в проекте. В этом случае данные временного анализа могут быть непоказательны, а настройки фиттера будут сильно влиять на работу. Наверно в симуляторе можно выясинть причины неработоспособности при неудачной разводке и переписать слабое место.

     

    Полностью поддерживаю. Похоже на асинхронность , в чистом виде или при переходе на

    другую частоту, или какой-нибудь медленный set/clear, или на clock вообще нет констрэйнов...

  4. Собственно, стоит задача передать 2,4 Гбит/сек, стандарт - LVDS. Из доступных решений пока найдено только DS90CR485/DS90CR486, и Stratix II GX.

    У первого не нравится цена - и приёмник, и передатчик стоят по 30$, а также нет промышленного диапазона, и потом, там используется CMOS DDR. Зато и пиковая скорость тоже приятна - 6,4 Гбит/сек.

    У Стратикса цена не впечатлила совершенно, как и "толстый" корпус, хотя функций собственно передачи у него меньше.

     

    Хотелось бы услышать реальные альтернативы, а также то, насколько ощутимым может быть отсутствие pre-emphasis (у обоих он есть), DC-balance (избыточное кодирование по типу чётности, присутствует только у DS90xxxxx).

     

    Передавать в основном предполагается на небольшие расстояния, порядка десятков сантиметров, в межплатных подключениях, а также по кабелю. В идеале - 800 Мбит/канал, но если уж совсем ничего не получится, придётся брать Spartan с его DDR 622 Мбит/с. Хотя выделять больше трёх пар под данные в разъёме проблематично.

     

    Так ведь на DS90CR485 8 пар + клок надо. FPGA умеет source-synchronous, а 4х640 Мбит/с

    сегодня все могут. :biggrin:

  5. Хм. Тогда я вообще отказываюсь понимать что либо :)

    VHDL один. А код для реальной FPGA и для симулятора должен быть, как правило, разным! Ну и ну! Никак не могу постичь такие вот "....." после микроконтроллеров.

     

    А вот что можно почитать чтоб узнать о большинстве такого рода капканов?

    Книжек пересмотрел-перечитал уже много, но вот от бумаги к железу пока никак не могу переползти.

     

     

    Есть VHDL Synthesizable Subset. А еще есть вещи формально

    допустимые, типа двуклоковых процессов, но не поддерживаемых

    железом.

  6. Был проект, часть кода которого была написана

    на верилоге и хорошо отлажена. Надо было быстро сделать проект, в котором

    этот код (плюс добавки) становился топ-левелом, для чего он был

    преобразован в Block Diagram (такое было требование - топ-левел

    д.б. только блок-схемой). Скомпилированный (в верилог опять же!)

    Block Diagram был на 99.99% адекватен исходному, за исключением

    0.01%. Эта неадекватность не обнаруживалась при моделировании,

    а вылезла у юзера в специфических и трудно формулируемых условиях,

    так-что организовать "white-box" верификацию было

    невозможно. Да и не было времени. Проблему решили в лоб: посадили аккуратную

    девушку, которая сравнила коды, и нашла, что у одного wire

    "слегка" именилась разрядность

     

    Если у вас был хорошо отлаженный код + 0.01% , то как уже

    советовали diff помог бы найти подозрительные места.

     

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

    офтопик здесь и вылазит слабая типизация верилога.

  7. Граждане! Ерунда какая-то получается...

    Выдержка из Datasheet на CycloneII:

    "CycloneII LVDS receivers (input) support a data rate of up to 805Mbps while LVDS transmitters (output) support up to 640Mbps."

    Авот что мне сказал Quartus Fitter при попытке завести LVDS на data rate of 800Mbps при помощи altlvds_rx:

    "Error: The Receiver, driven by I/O pin data(n) at data rate 800 Mbps, exceeds maximum allowed data rate of 640 Mbps

    Error: Can't fit design in device"

     

    Версии Quartus'a 5.1 и 6.0.

     

    Может быть кто сталкивался или просто у кого есть идеи как побороть костность fitter'a?

     

    altlvds_rx должен, а SERDES похоже нет.

  8. Да это то же самое. Только зачем процесс? Для солидности?

    А вот как бы не используя 16#YY#, а любимое всеми X"YY" да на базе

    стандартного пакаджа IEEE.numeric_std.all ? А? All?

     

    Только зачем numeric_std? Для солидности? ;)

     

    constant my_vector : std_logic_vector(7 downto 0) := std_logic_vector'(X"5A");

  9. тебя интересует терминирование?

    Тогда 100 Ом, как у и у любого другого ЛВДС.

    Никаких других резисторов не требуется

     

    Если используем внутренние резисторы, то внешних действительно достаточно только пара. Но речь идет о внешних согласующих резисторах для передатчика, без технологии термирования. Например, для семейства Cyclone в соответствующем handbook согласующие резисторы для передатчика: два 120 и один 170 Ом. А вот у StratixII непонятно.

     

    StratixII - у differential I/O pins все есть.

  10. Как то связано с тем что использую четыре банка под DDR.

    Пытаюсь подключить DDR интерфейс в четвертом(EP2C35F484), квартус при компиляции выдает ошибку

     

    Internal Error: Sub-system: FMAG, File: fmag_dqs_op.cpp, Line: 2026

    SLOAD is not VCC or GND!

    Quartus II Version 5.0 Build 168 06/22/2005 SJ Web Edition

    Service Pack Installed: 1

     

    Похоже, что неправильно назначены DQS pins

  11. И вот, наконец, решил и ПЛИСовый проект тоже пихнуть под svn - надоела возня с вариантами, хоцца нормальной возможности плодить версии, ветки, быстро между ними переключаться. Но тут, имхо, все несколько сложнее и запутаннее, чем в случае с программерским хозяйством (главным образом, из-за этого и оттягивал до сего момента использование системы контроля версий - все недосуг было разобраться) - очень много типов файлов, какой за что отвечает, какие нужны, какие - нет, с ходу и не поймешь. Тот же Active-HDL не в одном файле хранит настройки проекта, а в нескольких, один прибьешь, проект заново создавать приходится (или руками править), иначе не работает. С Синплифаем и Квартусом та же история.

     

    С Квартусом просто. Смотри, какие файлы он пишет в Quartus II Archive File (.qar)

    Только не забудь вычистить базу, всякие репорты, .stp ...

  12. Обычно так бывает как раз при попытке использовать

    внутренную двунаправленную шину не так, как хочет Mentor,

    или при изменении портов в открытом проекте. В старых

    версиях бывало недостаточно исправить ошибку, но еще и

    стереть базу, временные файлы и в reboot.

    Для обнаружения ошибки смотри RTL viewer, или посмотри

    что выдаст симулятор.

  13. :1111493779:

    Вот чем завлекают :

    ********************************************************************************

    ******

    1. TimeQuest Timing Analyzer

    TimeQuest Timing Analyzer: a new, ASIC-strength timing analyzer supporting the industry-standard SDC-based timing constraints format. TimeQuest Timing Analyzer enables users to create, manage, and analyze designs with complex timing constraints, such as clock multiplexed designs and source synchronous interfaces and to quickly perform advanced timing verification. TimeQuest Timing Analyzer is available in Quartus II software version 6.0 subscription edition.

     

    2.Project Manager Interface – Improved Team Based Design

    Project Manager Interface - manages resource and timing budgets at the top-level design. Additionally, the project manager interface allows the designer to manage timing constraints between blocks to maximize performance. This new feature allows teams to collaborate on the design of high-density FPGAs, resulting in improved design performance and designer productivity . This feature builds upon the incremental compilation design features first introduced in Quartus II software version 5.0 and 5.1.

     

    3.Additional Enhancements

    SystemVerilog support: allows faster RTL design implementation in support of the popular SystemVerilog syntax.

    Enhanced I/O pin planner: provides easier integration of Altera’s megafunctions intellectual property and simpler process for making pin assignments.

    Expanded board-level design support: offers HSPICE models of design outputs for more efficient board modeling when designing with Stratix II FPGAs.

    LogicLock enhancement : ”LogicLock Membership Resource Filter”. This feature enhances design productivity by automating the process of excluding design elements of certain resource types (such as DSP elements, M4K memories, etc.) from a LogicLock region.

    SignalTap II: now includes a Nios II CPU SignalTap disassembly plug-in . The plug-in increases system-level debugging productivity by assisting the ”tapping” of defined sets of Nios II nodes and by defining mnemonics for the Nios II CPU.

    *******************************************************************************

     

    Вот только про SystemVerilog я до конца не понял... :blink:

     

    Синтезируемое подмножество SystemVerilog

    Лучше бы они обеспечили совместное использование SignalTap и

    incremental compilation :glare:

  14. В комерческих WDT Core -ах, таймер - down-countig (почти во всех ядрах) и его значение сравнивается с "0"-ом, компаратор генерирует sys_rst. В моей версии таймер up-counting. Его значение сравнивается со значением WDT регистра. Компаратор сраянивает значения тимера и WDT регистра. Помогите разобраться, в чем преимушество архитектуры комерческих ядрах (сравнение timer -а с "0" и WDT регистра).

     

    При сравнении с константой, те не с числом из регистра, а с 0000 или 1111, требуется значительно меньше ячеек.

     

    А к примеру 1010 не константа?

    И еще при переходе с 0000 или 1111 задействуется carry chain,

    что радует. ;)

  15. DefaultForceKind = freeze

    Это оно? Или где?

    Когда моделька рождается в VHDL, галка глобального отключения "Global disable X-generation for simulation".

    Ну а констрейн называется ASYNC_REG, например INST "I_MK_module/WEa[*]" ASYNC_REG = TRUE;

     

    Спасибо. Нашел. В детстве шарады у меня хорошо разгадывать получалось...

    Это ж ведь и не в Моделсиме вовсе. :a14:

     

    Возможно, что это то самое...

     

    --8<---

    To prevent "x" from propagating in your simulation, use the "+no_notifier" option to vsim command when using ModelSim Simulator (MTI)

    --8<---

  16. Имеет ли смысл использование отдельных программ синтеза логики вместо встроенного в Quartus синтезатора? Если да, то каких? (Интересует как Verilog, так и VHDL) Есть ли какая-нибудь статистика, в общем конкретные цифры, чтобы можно было судить объективно?

     

    Недавно по требованию начальства делал проект на

    Quartus-синтезаторе(Quartus v4.2, EP2C20,VHDL). Синтезатор стал

    вполне приличный.

  17. Спасибо всем. Уточнения - квартусовский фиттер отключен, памяти - 256 М, лицензии - всевозможные - что дальше?

     

    Maxplus'ом уже не пользуюсь, но "Timing SNF Extractor" помнится

    отключал так:

    1) Exit from Maxplus

    2) Edit file <project_name>.acf (set "Timing SNF Extractor" to 0 or OFF)

    3) Open Maxplus

    Warning: Внешний софт (синтеза) может создать скрипт,

    который будет эту строку портить... ;)

×
×
  • Создать...