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

new123

Участник
  • Постов

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

  • Посещение

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


  1. Форумчане привет. Помогите пжлст с ситуацией. 1) Имею отрицательные слаки. Ну имею и имею, не в первой. 2) Начинаю проводить оптимизации существенные. 3) И что делает квартус? Он уменьшает Data Arrival Time в пути, а слаки остаются теме же. К примеру. Имею путь со slack -100ps, Data Arrival Time 7ns. Ладно, я смирился уже с этой цифрой. Провожу оптимизацию, он берет у всех путей уменьшает Data Arrival Time до 5ns и оставляется абсолютно те же слаки ~ -100ps Могу я как то квартус попросить, пусть он уже оставляет эти задержки в 7ns, но зато уберутся слаки? может какой sdc прописать? типа set_min_delay? Я просто в нем немного плаваю. Заранее спасибо.
  2. Сама альтера рекомендует асинхр группы + задание set_net_delay set_max_skew. Так они кстати в своих фифошках делают. Не могу сходу найти отдельный мануал у них. Там подробно рассказывается, почему это немного лучше false_path. Но вот тоже их https://www.intel.com/content/www/us/en/programmable/support/support-resources/knowledge-base/tools/2017/how-do-i-constrain-my-clock-domain-crossing-.html
  3. хотел вам замечательную статью дать с примером, но вам уже ее дали ). Как только ее прочитал, всегда счетчики стал так делать. Очень помогает
  4. Полно подобных сообщений с A10 и трансиверами из других корок на форуме интел. Очень похоже на баг корки вашей версии квартуса. Может стоит версии поменять Еще пишут, что тестовый дизайн может не подойти, если взяли с сайта интела. От терасика подходит?
  5. Судя по всему вы сделали logic region. Логически разместили в нем DDR4A_CKE. Но чисто физически (из assigment editors) он туда не попадает. Или сайз региона увеличить или поменять его расположение.
  6. а они на петлях должны запускаться. Не уверен, что вы так быстро петли нашли ) попробуйте у себя прописать, вдруг повезет. Или они уже у вас прописаны
  7. Мельком глянул, вот очень похожее на тест, но лучше почитать. /Demonstration/FPGA/alt_eth/demo_batch/
  8. У трансивера есть аналоговые параметры, которые можно прописать самому. Например, как я подобрал у себя set_instance_assignment -name XCVR_RX_DC_GAIN 4 -to SFPA_RX_p set_instance_assignment -name XCVR_RX_LINEAR_EQUALIZER_CONTROL 15 -to SFPA_RX_p set_instance_assignment -name XCVR_RX_DC_GAIN 4 -to SFPB_RX_p set_instance_assignment -name XCVR_RX_LINEAR_EQUALIZER_CONTROL 15 -to SFPB_RX_p set_instance_assignment -name XCVR_RX_DC_GAIN 4 -to SFPC_RX_p set_instance_assignment -name XCVR_RX_LINEAR_EQUALIZER_CONTROL 15 -to SFPC_RX_p set_instance_assignment -name XCVR_RX_DC_GAIN 4 -to SFPD_RX_p set_instance_assignment -name XCVR_RX_LINEAR_EQUALIZER_CONTROL 15 -to SFPD_RX_p Чтобы их правильно подобрать, нужно замкнуть трансивер петлей (sfp loopback). Чтобы он сам себе слал данные. И запустить transciever toolkit, начать мерять глаз и тд. Я обучался по таким видео. Но опять же, все это делать, если статусы во время падения канала показывают напрямую падение линков. И если все частоты поданы правильно. Пока что вы не рассказываете деталей сейчас не с руки ковырять. Terasic для своих плат снабжает готовую прошивку трансиверов и скрипты. Можно зашиться и на петлях сразу проверить. Они прям на подобранных параметрах вроде тесты гоняют
  9. если он все таки заводится и работает, но отваливается, тогда надо врубать петлю на порту, проводить тест трансиверов, строить глаз и все такое. И приводить аналоговые параметры трансивера в порядок в проекте. частая тема, что один работает, второй "глючит". Если трансиверы не подстроить. Естественно если слаков в проекте нет и все частоты заведены правильно Это лучше через jtag смотрет все статусные сигналы. Там все сразу ясно станет.
  10. Ну хорошо ) Тогда нужно более предметно. Что именно не работает? Какие признаки? Сразу стандартные вопросы: из резета трансиверы вышли?
  11. Я по неопытности однажды два независимых канала воткнул в одну корку и имел проблемы месяца 4. Там в корке, если не владеть теор частью, возникает путаница, что они называют каналом. Поэтому стоит попробовать на двух корках. Сам я учился подымать 10G на 10GBASE-R. Потом уже по нарастающей все сложнее и сложнее делал. Вплоть до Native
  12. 2 канала или 2 порта? upd. Хотя я зря спросил. Именно эту корку для 10G не использовал.
  13. ну как разобрался, выдвинул теорию, проверил, она мне подошла. Теория очень простая, если я смогу сохранить размещения удачной компиляции, сможет ли она потом точно так же повторить. Я не знаю, как в старых версиях Q, но в новых Back-Annotation сохраняет только размещение памяти, клок регион, dsp. Но уже после этого у меня появилась стабильность компиляций, пропал random. Сохраняет он предельно просто, в таком виде set_location_assignment EC_X66_Y200_N37 -to pcie|pcie_256|pcie_s10_hip_avmm_bridge_0|dcore|dma_ctrl|wr_control|descriptor|descriptor_fifo|ram_memory_rtl_0|auto_generated|altera_syncram_impl1|ram_block2a152 set_location_assignment EC_X66_Y200_N34 -to pcie|pcie_256|pcie_s10_hip_avmm_bridge_0|dcore|dma_ctrl|wr_control|descriptor|descriptor_fifo|ram_memory_rtl_0|auto_generated|altera_syncram_impl1|ram_block2a149 set_location_assignment EC_X66_Y200_N35 -to pcie|pcie_256|pcie_s10_hip_avmm_bridge_0|dcore|dma_ctrl|wr_control|descriptor|descriptor_fifo|ram_memory_rtl_0|auto_generated|altera_syncram_impl1|ram_block2a150 То есть достаточно это все прописать в qsf и все. Я решил проверить дальше, что если я сохраню вообще весь проект, каков будет результат. По идее, я еще хотел добиться ускорения компиляции, но в моем случае это не вышло (ну может прирост минут в 5). Не знаю, как это будет у людей на тех проектах, которые компилятся часами. Тот скрипт, который по сcылке, сохраняет точно в таком же виде. Я выборочно сделал из него нужные instance (как вы говорите частично) и прописал в qsf, зафиксировав их навсегда. При этом, для меня остается вопрос, что будет с такого вида записями: set_location_assignment X153_Y372 -to instance|Mux_1603~517 set_location_assignment X89_Y207 -to pcie|pcie_256|pcie_s10_hip_avmm_bridge_0|dcore|dma_mrd|avm_rd_master|avmm_inf_fifo|fifo_count[1]~_Duplicate set_location_assignment X80_Y164 -to pcie|pcie_256|pcie_s10_hip_avmm_bridge_0|dcore|dma_mwr|stmux2|align_data_fifo|datavalid_reg[0]~xsyn set_location_assignment X79_Y214 -to pcie|pcie_256|pcie_s10_hip_avmm_bridge_0|dcore|dma_mrd|avm_rd_master|avmm_inf_fifo|fifo_reg[2][52]~RTM_44.comb Я не уверен, что в новой компиляции будут присутствовать эти самые Mux, Duplicate и тд. Поэтому я дополнительно сохранил только регистры и все. Из минусов. Если сохранить много записей, то QSF может достигнуть десятков MB, что не есть хорошо. Q будет много думать постоянно при сохранении
  14. а я написал - не знаю как в малых проектах, но в больших у меня проседает времянка из за partition. На 100-200 пикосек, это критично. Даже если запуститься Timing Adviser - там тоже советуется partition убрать в погоне за таймингом. + поднималась на форуме тема, у квартуса есть такой нюанс, что он начинает лишнее создавать, если сделать компиляцию на компиляцию, не почистив базу перед этим, это уже поддастает. c Back-annotation времянка фиксанулась, проект стабилизировался, теперь у меня нет такой головной боли
  15. нет, они грохнули все похоже навсегда, как и форум, так и wiki. Но поиском с community достать можно старые запасы. Они что могли, перенесли в community
  16. может от чипа зависит? у меня на StratixV 2 Slow + 2 Fast, а на 10 черт ногу сломит, сколько они тут режимов наделали
  17. Если кто будет когда нибудь искать, вот эта штука помогла, выложенная интелом на FPGA Wiki. Сохраняет в файл абсолютно все размещения на чипе. Очень круто. https://community.intel.com/t5/FPGA-Wiki/Back-Annotation-Script/ta-p/735236
  18. Форумчане, день добрый. Может кто знает или пользуется, как можно сохранить размещение на чипе, можно даже не все, а какой нибудь entity? Понимаю, что можно пользоваться LogicLock и Partition. Первый использую, но им можно только обозначить область размещения, второй просаживает времянку. Очень сильно помог Back-Annotate Assigments, но он сохраняет только размещение памяти, dsp, clock region. (хотя в хелпе по старым версиям явно есть и регистры и все что хочешь) Начал рыть в сторону TCL, но там столько всего, что толком пока и не нашел. Может кто натолкнет в нужное направление. Заранее спасибо.
  19. Дальше на форуме, в другом подфоруме есть соответствующие ветки, может стоить там написать.
  20. С наскоку решить не получилось. Думал может какая прямая команда есть. По итогу пришлось: 1) Взять все пути fan_out clk_enable 2) Отобрать все пути по условию -from <нужные мне> -to fan_out (clk_enable)
  21. Форумчане, день добрый. Имею кучу путей, которые завязаны на clk enable. К примеру module module_1 ( ... output wire [7:0] val_1 ) reg [7:0] counter; assign val_1 = counter; always @ (posedge clk) begin counter <= counter + 1 end endmodule module module_2 ( ... input wire clk_en, input wire [7:0] val_1 ) reg flag; always @ (posedge clk) begin if (clk_en) begin if val_1[7] begin flag <= 1; end end end endmodule wire [7:0] val_1; module_1 module_1 ( .val_1 (val_1) ) module_2 module_2 ( .clk (...), .clk_en (...), .val_1 (val_1) ) Как бы мне на TCL получить все пути через clk_en, к примеру путь -from module_1|counter -to module_2|flag? Есть статейка на эту тему https://www.intel.com/content/www/us/en/programmable/support/support-resources/design-examples/design-software/timinganalyzer/exm-tq-clock-enable.html , предлагают использовать fan_out, но почему то fan_out с clk_en с чем я не очень согласен, да и не сработало оно у меня.
  22. Форумчане, день добрый. Порядок в проекте навожу, ухожу от define к enum. Вдруг есть возможность. 1) Имею input сигнал в модуль, поступает извне. 2) Есть список значений, который он принимает. 3) Есть ли возможность как то преобразовать одно к другому? Кручу верчу, никак синтезируемое не получается. Кратко: typdef enum logic [5:0] { value1 = 1, value2 = 2, value3 = 3 } list module top ( input wire [5:0] signal ) ..... case (signal) list?? endcase ... endmodule Можно бы было сделать package и сделать input его типом по идее, но что то не идет, видать из за того, что сигнал внешний
×
×
  • Создать...