Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: DDR2+Cyclone3 - не пролазят констрейны
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
alexPec
Всем доброго дня. Собрал в Q11 сопц, собственно процессор + DDR2 контроллер + ethernet. Чип EP3C25 память - MT47H64M16-25Е. В настройках контроллера все частоты выше 266МГЦ (стояло 400мгц) поставил 300 МГц. Частота памяти 150 МГц. В итоге имею слэки отрицательные. Смотрю в клоки - там откуда-то берется 198.05МГц. В настройках нет такого вообще. Мне столько и не надо, достаточно 150МГц. Слэк -1.2хх нс, если период был бы не 5нс, а 6,66 (для 150МГц), то вроде все должно сойтись. Подскажите пожалуйста куда копать и как ему объяснить, что не надо мне 200, хватает 150 МГц?
Отчет таймквеста при компиляции прилагаю.

Заранее благодарен.
vadimuzzz
выложите еще файлы констрейнов, а также картинку с настройками контроллера памяти. необходимость в photoCPU_altmemddr_0_example_top.sdc вызывает сомнения. если есть возможность выложить обрезанный проект (проц + память) - выкладывайте wink.gif
krux
сам nios у вас получается тоже на 150 должен работать?
у меня nios на C3 и C4 с DDR2 и TSE нормально собирался максимум на 125 МГц. Интересно, у кого-нибудь он собирался выше и если да то в каком обвесе?
alexPec
Не, сам ниос и tsE работает на 75МГц, с ДДР они через clock crossing bridge. Выкладываю проект, собственно не обрезанный, от проекта то только ниос, ДДР и ТСЕ. Спасибо за помощь!
vadimuzzz
Потыкал проект, явного криминала в констрейнах не увидел (не значит, что его там нет). Частота памяти 150 МГц, но Fmax, которую выжал синтезатор - 122 МГц. Что насторожило:
Цитата
Critical Warning: No exact pin location assignment(s) for 16 pins of 65 total pins
. Поскольку там речь идет о сигналах ddr_dq, это может быть причиной. Все большие частоты, которые встречаются в отчете относятся к Fmax, т.е. по большинству клоков огромный запас, это нормально.
alexPec
Цитата(vadimuzzz @ Sep 30 2014, 08:52) *
Потыкал проект, явного криминала в констрейнах не увидел (не значит, что его там нет). Частота памяти 150 МГц, но Fmax, которую выжал синтезатор - 122 МГц. Что насторожило: . Поскольку там речь идет о сигналах ddr_dq, это может быть причиной. Все большие частоты, которые встречаются в отчете относятся к Fmax, т.е. по большинству клоков огромный запас, это нормально.


Спасибо за ревизию проекта sm.gif
16 которые no exact location - это линии данных, потому как мне не принципиально, чтобы D0 контроллера DDR был подцеплен именно к D0 DDR чипа. Пусть цепляет как хочет, как запишет - так и прочитает ведь.
Напрягает что везде ставлю 150 мгц, а он почему то в констрейнах прописывает 198,05 МГц - откуда это?

Вердикт то какой - прошивать и пробовать, должно работать?
И еще вопрос: дополнительно в софте надо что-то инициализировать, настройки какие-нибудь для ДДР? Или просто заливаем кристалл, и видим что у нас есть много -много памяти с которой можем работать сразу, а всю инициализацию контроллер сам делает?
vadimuzzz
я не вижу нигде 198, у меня там 10, 50, 75 и 150: http://pic4a.ru/ixff/
и на счет ног я не понял, он ведь (синтезатор) как попало начнет их раскидывать. практика показывает, что тот же ниос весьма к этому чувствителен.
дополнительных настроек в софте никаких не надо, загрузка (или облом с загрузкой) программы в память - хороший тест. забивать на констрейны, особенно в части i/o с памятью я бы не стал, отсюда растут проблемы типа "вчера все работало, сегодня изменил 1 бит и не работает" sm.gif
krux
DQ и DQS можно подключать только к строго определенным ногам.
http://www.altera.com/literature/dp/cyclone3/EP3C25.xls
определить их надо заранее, поскольку констрейны генерятся .tcl-скриптом.
в мануале на ALTMEMPHY про это написано.

надо подсоединить qsys к ногам, сделать анализ-синтез
потом запустить .tcl-скрипт который сообразит к каким ногам это всё подключено и допишет констрейны
после этого снова анализ-синтез-фиттер и тогда соберется нормально
alexPec
Цитата(vadimuzzz @ Oct 1 2014, 13:44) *
отсюда растут проблемы типа "вчера все работало, сегодня изменил 1 бит и не работает" sm.gif


дада, вот их то и боюсь.
С ногами - я dqs и dm назначил на специальные ноги, в одной dqs - группе 8 бит, эти 8 бит располагаются в одном банке. У меня 16 бит и занято ими 2 банка. Так вот для dq в пределах одной dqs группы я не ставил конкретные ноги, я назначал только банк, в банке 9 ног, к которым можно цеплять dq, 8 из них разведены на память. Т.е. у фиттера есть свобода действий - он может поменять местами линии данных в пределах одного банка (одной dqs-группы). Большого криминала тут не вижу...

Цитата
надо подсоединить qsys к ногам, сделать анализ-синтез
потом запустить .tcl-скрипт который сообразит к каким ногам это всё подключено и допишет констрейны
после этого снова анализ-синтез-фиттер и тогда соберется нормально


А можно тут поподробнее? Что за скрипт, где его берут, как его запустить? Никогда таким эээ... шаманством не занимался sm.gif

Кстати, по клокам - выкладываю то что у меня получается... до сих пор не понял откуда это. Настройки контроллера тоже на картинках. Не ужели квартус косячит?

Спасибо за помощь!
krux
Цитата
If you are at the design exploration phase of your design cycle and do not have any PCB defined pin locations,
you must still manually define an initial set of pin constraints, which can become more specific during your
development process


Цитата
To add the pin and I/O standards to the design example, perform the following steps:
1) On the Tools menu, click Tcl scripts.
2) Under Libraries, select <variation_name>_pin_assignments.tcl
3) Click Run


http://www.altera.com/literature/hb/extern...emi_tut_ddr.pdf
alexPec
Спасибо, просто похоже надо ноги все-таки конкретные назначить - назначил, началось...

Error (169224): Too many output and bidirectional pins per VCCIO and ground pair in I/O bank 7 when the VREF pin C11 (VREFGROUP_B7_N0) is used on device EP3C25F256I7 -- no more than 9 output/bidirectional pins within 12 consecutive pads are allowed when the voltage reference pins are driving in, but there are potentially 10 pins driving out

Кто чем лечит кроме переразводки платы?
krux
assignments -> device -> device and pin options -> pin options
ввести вручную сколько надо
alexPec
Цитата(krux @ Oct 2 2014, 19:01) *
assignments -> device -> device and pin options -> pin options
ввести вручную сколько надо


Чет не спасает:

Цитата
Info (176045): Design uses memory blocks. Violating setup or hold times of memory block address registers for either read or write operations could cause memory contents to be corrupted. Make sure that all memory block address registers meet the setup and hold time requirements.
Error (169015): Cannot place pin ddr_dq[8] to location B12
Error (169223): Can't place VREF pin C11 (VREFGROUP_B7_N0) for pin ddr_dq[8] of type bi-directional with SSTL-18 Class I I/O standard at location B12
Error (169224): Too many output and bidirectional pins per VCCIO and ground pair in I/O bank 7 when the VREF pin C11 (VREFGROUP_B7_N0) is used on device EP3C25F256I7 -- no more than 9 output/bidirectional pins within 12 consecutive pads are allowed when the voltage reference pins are driving in, but there are potentially 10 pins driving out
Info (169220): Location D11 (pad PAD_177): Pin ddr_ba[2] of type output uses SSTL-18 Class I I/O standard
Info (169220): Location D12 (pad PAD_178): Pin ddr_ba[1] of type output uses SSTL-18 Class I I/O standard
Info (169220): Location A13 (pad PAD_179): Pin ddr_ba[0] of type output uses SSTL-18 Class I I/O standard
Info (169225): Following 5 pins have the same output enable group 1: 3 pins require VREF pin and 5 pins could be output
Info (169220): Location B13 (pad PAD_180): Pin ddr_dq[15] of type bi-directional uses SSTL-18 Class I I/O standard
Info (169220): Location E11 (pad PAD_183): Pin ddr_a[0] of type output uses SSTL-18 Class I I/O standard
Info (169220): Location E10 (pad PAD_184): Pin ddr_a[2] of type output uses SSTL-18 Class I I/O standard
Info (169220): Location A12 (pad PAD_186): Pin ddr_dq[14] of type bi-directional uses SSTL-18 Class I I/O standard
Info (169220): Location A11 (pad PAD_188): Pin ddr_dq[9] of type bi-directional uses SSTL-18 Class I I/O standard
Info (169220): Location A14 (pad PAD_181): Pin ddr_clk_n of type bi-directional uses SSTL-18 Class I I/O standard
Info (169220): Location B14 (pad PAD_182): Pin ddr_clk of type bi-directional uses SSTL-18 Class I I/O standard
Info (169222): Following 12 location(s) shared the same VCCIO and ground pair, and 10 pin(s) are placed
Info (169220): Location D11 (pad PAD_177): Pin ddr_ba[2] of type output uses SSTL-18 Class I I/O standard
Info (169220): Location D12 (pad PAD_178): Pin ddr_ba[1] of type output uses SSTL-18 Class I I/O standard
Info (169220): Location A13 (pad PAD_179): Pin ddr_ba[0] of type output uses SSTL-18 Class I I/O standard
Info (169220): Location B13 (pad PAD_180): Pin ddr_dq[15] of type bi-directional uses SSTL-18 Class I I/O standard
Info (169220): Location A14 (pad PAD_181): Pin ddr_clk_n of type bi-directional uses SSTL-18 Class I I/O standard
Info (169220): Location B14 (pad PAD_182): Pin ddr_clk of type bi-directional uses SSTL-18 Class I I/O standard
Info (169220): Location E11 (pad PAD_183): Pin ddr_a[0] of type output uses SSTL-18 Class I I/O standard
Info (169220): Location E10 (pad PAD_184): Pin ddr_a[2] of type output uses SSTL-18 Class I I/O standard
Info (169221): Location (pad PAD_185): unused
Info (169220): Location A12 (pad PAD_186): Pin ddr_dq[14] of type bi-directional uses SSTL-18 Class I I/O standard
Info (169221): Location B12 (pad PAD_187): unused (but has pin assignment of ddr_dq[8])
Info (169220): Location A11 (pad PAD_188): Pin ddr_dq[9] of type bi-directional uses SSTL-18 Class I I/O standard
Info (171121): Fitter preparation operations ending: elapsed time is 00:00:02
Warning (171167): Found invalid Fitter assignments. See the Ignored Assignments panel in the Fitter Compilation Report for more information.
Error (171000): Can't fit design in device
Warning (169082): Design uses current of 400.0 mA for 15 consecutive horizontal output pads in an I/O bank -- Altera recommends a maximum current of 240.0 mA for any 14 consecutive output pads in an I/O bank
Warning (169082): Design uses current of 400.0 mA for 15 consecutive vertical output pads in an I/O bank -- Altera recommends a maximum current of 240.0 mA for any 12 consecutive output pads in an I/O bank
Warning (169180): Following 1 pins must use external clamping diodes.
Info (169178): Pin epcs_sdi uses I/O standard 2.5 V at H2
Warning (169064): Following 2 pins have no output enable or a GND or VCC output enable - later changes to this connectivity may change fitting results
Info (169065): Pin ddr_clk has a permanently enabled output enable
Info (169065): Pin ddr_clk_n has a permanently enabled output enable
Error: Quartus II 32-bit Fitter was unsuccessful. 4 errors, 21 warnings
Error: Peak virtual memory: 326 megabytes
Error: Processing ended: Fri Oct 03 01:00:40 2014
Error: Elapsed time: 00:00:25
Error: Total CPU time (on all processors): 00:00:23


Я уж и в output enable group затолкнул все ddr-сигналы. Что еще можно сделать?
UPD ничего не понимаю: вешаю сигнал с пина B11 на D14 и ошибка уходит. В том же банке, в той же Vref группе, но плату то в этом случае переделывать ...
Неужто тупик?
gosu-art
Там какая то замута есть, точно не помню.. Если вы проектируйте на х16 шину то все равно нужно смотреть столбец c x8/x9. Причем для первой группы 9й пин, который остался от предыдущей группы, в следующей использовать нельзя, а нужно пропустить его и перейти к следующей группе х8. wacko.gif Я перед тем как отправлять плату долго ковырялся в квартусе. то группы не совпадали, то еще чего. В общем гемор еще тот...
alexPec
Цитата(gosu-art @ Oct 3 2014, 11:01) *
Там какая то замута есть, точно не помню.. Если вы проектируйте на х16 шину то все равно нужно смотреть столбец c x8/x9. Причем для первой группы 9й пин, который остался от предыдущей группы, в следующей использовать нельзя, а нужно пропустить его и перейти к следующей группе х8. wacko.gif Я перед тем как отправлять плату долго ковырялся в квартусе. то группы не совпадали, то еще чего. В общем гемор еще тот...


Да, это то я уже понял что в DQS группе 9 бит DQ, и этот 9-й бит нельзя цеплять из другой dqs группы. В моем случае dqs группа это байт 16-битного слова. Так вот вопрос то в том, что я перекидиваю ногу с одного dq на другой в пределах одной dqs группы, и получается ошибка... Как то люди избавляются от этой беды добавлением в группу output enable, например тут . Но у меня таким методом почему то не лечится. У кого - то получалось?

Еще раз посмотрел в таблицу на EP3C25F256 - пины B11 и D14 - одна группа dqs - DQ5T. Перекидываю сигнал с одной ноги на другую квартус поворачивается ко мне попой...
alexPec
Вобщем, проблема с констрейнами ушла с установкой более поздней версии Ква - 13.0 SP1 - Все констрейны в норме и частоты в норме без всяких бубнов, сходу.
И 64-бит версия по сравнению с 32бит - ну просто мгновенно компилирует.

Но осталась проблема с пином - плата разведена на пин B11 (EP3C25F256) а квартус хочет чтобы эта линия данных была повешена на пин D14. Оба пина в одной DQS группе, оба как dedicated DQ. Что ему надо - не пойму. Если кто-то поможет решить эту проблему буду благодарен.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.