Jump to content

    
Sign in to follow this  
johan

Stratix V vs Arria 10: разный тайминг при чтении из M20K

Recommended Posts

Всем привет!

 

При переезде проекта с Stratix V на Arria 10 столкнулся с интересной и неприятной вещью в тех местах, где происходит чтение данных из блоков памяти M20K (и на выходе этой памяти не стоит регистр):

тайминг стал хуже и эти пути мешают укладыванию по частоте. Хотя я ожидал обратных результатов: Arria 10 позиционируется как более продвинутый чип, чем Stratix V.

 

Для демонстрации этой проблемы я сделал минипроект: https://github.com/johan92/s5_a10_ram_test

 

В его основе лежит SIMPLE DUAL PORT RAM, где с одного порта происходит чтение данных, прибавление каких-то чисел, и записывание данных обратно в память (через другой порт). В обоих проектах стоит clk с периодом в 3 нс.

Собрать проект можно через make в папках s5/a10. В конце cборки сформируется отчет вида s5/a10.clk.paths.rpt, где будут указаны пути, у которых худший тайминг в проекте.

Эти отчеты при сборке можно найти тут (осторожно, много трафика): https://github.com/johan92/s5_a10_ram_test/.../master/reports

 

Что мы видим (кроме того, что Arria проиграла в тайминге):

начало худшего пути у Arria выглядит так:

6.360;   1.991; RR; uTco; 2    ; EC_X70_Y173_N3     ;          ; g_ram_test_engine[0].ram_test_engine|mem|altsyncram_component|...|portbdataout[0]
6.957;   0.597; RR; IC ; 6    ; LABCELL_X71_Y174_N9; High Speed; g_ram_test_engine[0].ram_test_engine|Add1~13|datad

 

А у Stratix так:

4.358;   0.000;  ; uTco; 32; M20K_X205_Y2_N0;          ; ram_test:g_ram_test_engine[0].ram_test_engine|mem:mem|altsyncram:altsyncram_component|...|ram_block1a0~PORT_B_WRITE_ENABLE_REG
4.423;   0.065; RF; CELL; 2    ; M20K_X205_Y2_N0; High Speed; g_ram_test_engine[0].ram_test_engine|mem|altsyncram_component|...|portbdataout[3]
4.885;   0.462; FF; IC ; 4    ; LABCELL_X204_Y2_N9; High Speed; g_ram_test_engine[0].ram_test_engine|Add1~13|dataa

 

Две наносекунды (1.991) на чтении из памяти на мой взгляд это очень странно (по сравнению с тем, что у Stratix).

Каких-то изменений в структуре блоков памяти я не нашел между Statrix V и Arria 10 в даташитах (которые бы объяснили, что здесь происходит), поэтому я и решил создать этот топик.

Встречали ли вы что-то похожее в своих проектах под Arria 10? Может быть я что-то делаю не так?

 

Заранее спасибо за идеи и предложения :)

 

Quartus:

Version 16.0.2 Build 222 07/20/2016 SJ Standard Edition

 

P.S.

Ставить триггер на выходе памяти - это хорошая идея, но меня здесь интересует физика вопроса и маркетинг, который говорит, что Ария во всём лучше Стратикса :)

Share this post


Link to post
Share on other sites

Странно что вы просто не привели и не сравнили тайминги памяти из шитов

(у хилинха они там приведены, думаю шта и у альтеры тоже).

 

А так не понятно, зачем этот тэст.

Share this post


Link to post
Share on other sites

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

По нему можно уже рыться в мануалах в поисках ответов. У себя в проектах при работе с трансиверами наблюдал ускорение при переходе на Арию 10.

Share this post


Link to post
Share on other sites
Приведите полное наименование микросхем, участвовавших в тесте.

В примере указана ES микросхема 10AX115N3F40E2SG

 

Дабы исключить тайминги ES проверил пример с индастриал микросхемой, установленной на поставляемом DevKit'e (10AX115S2F45I1SG).

Кардинально ситуация не изменилась - улучшение тайминга сопоставимо с более быстрым speedgrade внутри семейства.

6.134;   1.761; FF; uTco; 2 ; EC_X70_Y88_N1;; g_ram_test_engine[0].ram_test_engine|mem|altsyncram_component|auto_generated|ram_block1a1|portbd
ataout[0]

 

Блок памяти можно сделать двух типов: когда задержка на выборку данных входит во входной путь адреса или когда в выходной путь данных.

Те триггер может защелкивать либо выходные данные, либо входной адрес.

 

Такая маленькая задержка в этом в пути в StratixV IMHO говорит только об одном, что на выходе стоит триггер, который и разрывает путь чтения данных.

 

*Для ASIC можно сгенерировать такие блоки памяти в которых будет разные тайминги для разных портов. Один будет ориентирован на записи (уменьшен setup по входам), а другой на чтение (меньше setup по выходу данных)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this