Jump to content

    

en-valb

Участник
  • Content Count

    71
  • Joined

  • Last visited

Everything posted by en-valb


  1. Всем доброго времени суток! Пытаюсь распечатать схему на которой есть залитый (Draw Solid) черной заливкой (Fill Color) эллипс (Place->Drawing Tools->Ellipse). При печати на принтер или в pdf если указать в свойствах страницы Mono, исчезает заливка эллипса, а в схематике все в порядке. Через Job то же самое. Если печатать в Gray то вся схема заливается пеленой в виде прозрачной сетки. Фону придается слегка серый цвет, что не годиться при печати документации. Не могу ни как добиться заливки эллипса при печати в монохромном режиме. Все что можно перегуглил. И здесь на форуме искал. Ответа не нашел или не увидел. Буду очень благодарен за помощь в данном вопросе. Версия Altium 17.0.11 (Build 656), Windows 10 Pro. Sch.bmp
  2. Коллеги, добрый день! Пытаюсь въехать во временной анализ. Проект разрастается, времянка начинает нагибаться, а понимание в этом вопросе пока рассеяное. Хочу обконстрейнить NIOS II + SDRAM, но пока нет понимания с чего начать, точнее из TimeQuest сделал create_clock, create_generated_clock, set_clock_uncertainty, а дальше вроде необходимо задать set_input_delay и set_output_delay. Если для выводов подключенных к UART и к PIO вроде как понятно, а вот для SDRAM не очень, так-как есть две тактовые частоты, clk0 и clk1. clk0 тактирует всю систему и SDRAM контроллер, а clk1 это clk0 сдвинутый по фазе на -60 deg для тактирования микросхемы SDRAM. Несколько раз перечитывал статью Шехалева Дениса, но пока нет очень понял как тут быть, считать эти клоки асинхронными? Сигналы по DQ идущие из контроллера в микросхему выставляются по clk0, а из микросхемы в контроллер выставляются по clk1, это путает и я не могу понять как тут быть? Если для выходов контроллера применяем set_output_delay, для входов контроллера set_input_delay, то для inout и set_input_delay и set_output_delay? Проект во вложении. Буду очень благодарен за помощь!!! test_sdram.qar
  3. Да как то предложение странно построено, долго переводил да только примерный смысл удалось извлечь, не был уверен, что правильно его понял. Благодарю за помощь!
  4. Выкладываю скомпилированный проект с окончательным sdc. Хотел бы подвести итоги по данной теме. Прошу проверить все ли я учел в sdc, так и не понял нужно ли с этим, что то делать, или не обращать внимания как и на сигналы интерфейса JTAG. Благодарю всех откликнувшихся, особенно Yuri124, много чего для меня прояснилось в части временного анализа. test_sdram.qar
  5. Пододвинул фазу по clk1 еще немного, получилось +155 deg все стало лучше некуда. Сделал порт SDRAM_CLK клоком create_generated_clock -name SDRAM_CLK -source [get_pins {inst|altpll|sd1|pll7|clk[1]}] [get_ports {SDRAM_CLK}] и затактировал все set_input_delay и set_output_delay от этого клока, т.е. заменил [get_pins {inst|altpll|sd1|pll7|clk[1]}] на [get_clocks {SDRAM_CLK}] во всех set_input_delay -max -clock [get_clocks {SDRAM_CLK}] [expr $SDRAM_CLK_delay_max + $tAC +... set_input_delay -min -clock [get_clocks {SDRAM_CLK}] [expr $SDRAM_CLK_delay_min + $tOH + ... set_output_delay -max -clock [get_clocks {SDRAM_CLK}] [expr $SDRAM_CLK_delay_max + $tSU + ... set_output_delay -min -clock [get_clocks {SDRAM_CLK}] [expr $SDRAM_CLK_delay_min + $tH + ... порт SDRAM_CLK теперь стал клоком, но снова слаки (во вложении), видимо из-за задержки на пути от clk1 до SDRAM_CLK, скрутил фазу clk1 обратно на 110 deg в итоге на pll по clk1 получился сдвиг фазы +45 deg все стало ок, но почему SDRAM_CLK все еще в Unconstrined Output Ports? Снова слаки.bmp
  6. Сейчас читаю Clock Setup and Hold Slack Analysis Explained. Не могу понять предложение: "The Data Required Time is defined as the time the data can take to get to the destination register (reg2) just in time to meet the clock setup time at the destination register,"
  7. Но мне кажется, что здесь, что то не то? Он должен анализировать от первого Latch`a в право, а он от второго в лево. От второго понятно почему, но почему он все время в лево. Как ему сказать что бы брал от Latch`a Data Required с права а не слева. Т.е. у меня Data Required запаздывает почти на такт, и я его сдвигом фазы пододвинул больше чем на такт, таким образом избавился от слаков, но какой то способ странный мне кажется.
  8. Добавил set_multicycle_path слаки уменьшились, наихудшее значение стало -0,557 нс, добавил сдвиг фазы еще на 22,5 deg и того получилось +52,5 deg. Откомпилировал получил слаки -1,542 нс, увеличил сдвиг фазы до +108 deg слаки исчезли полностью, но запас по SDRAM_BA[0] маловат будет, попробую подвинуть еще немного. clk1 +108 deg.bmp BA[0].bmp
  9. set_multicycle_path -end -from {get_clocks {inst|altpll|sd1|pll7|clk[0]}} -to {get_clocks {inst|altpll|sd1|pll7|clk[1]}} -setup 2
  10. Вот тоже - долго думал над Вашей диаграммой. Физический смысл этого раздела понятен, но минусовые числа в столбце Incr (Инкремент) - непонятны. Или это из-за какой-то ошибки в sdc - выглядит так, как будто идет путь не "вперед" от точки возникновения клока, а "назад"... Да я думаю, что он анализирует предыдущие данные, а Latch берет текущий.
  11. После того как я попытался добавить в sdc create_generated_clock для SDRAM_CLK, TimeQuest высыпал слаками. Судя по диаграмме когда я передвинул Latch на +30 deg (0,833 нс) это было не правильно, странно конечно, что я не увидел слаков тогда. Снова слаки.bmp
  12. Забыл обновленный sdc вложить. test_sdram.out.sdc В нем пока нет create_generated_clock для SDRAM_CLK
  13. Обконстрейнил все, что можно, появились вопросы: 1. Что делать с tdi, tms и tdo? 2. Что делать с SDRAM_CLK это ведь по сути clk1 в проекте, может сгенерировать клок SDRAM_CLK из clk1 с помощью create_generated_clock и переписать все констрейны set_input_delay и set_output_delay заменив {inst|altpll|sd1|pll7|clk[1]} на SDRAM_CLK? 3. Еще он пишет, что необконстрейнин один клок. Но ведь это же не клок, на просторах интернета есть где то информация, что это quartus ошибается и в следующих версиях Quartus баг будет исправлен. Что с ним делать сейчас, погасить через set_false_path или как то по другому????
  14. Сработало, в PLL на clk1 изменил сдвиг фазы вместо -60 deg поставил +30 deg (0,833 нс) перекомпилировал слаки исчезли!!! Буду дальше разбираться с set_input_delay и set_output_delay
  15. Убрал из sdc set_clock_groups. Скомпилировал. Для анализа выбрал первый слак SDRAM_WE. Во вложении диаграмма слака из TimeQuest. На вкладке Data Path с Data Arrival Path разобрался у Дениса это хорошо расписано, но вот с Data Required Path темный лес могу предположить что -5,134 это задержка клока Latch (clk1), и она все портит, т.е. мне необходимо поставить Latch слева от слака, левее Output Delay? SDRAM_WE.bmp
  16. TimeQuest считает временные соотношения между сигналами при передаче данных reg1 -> reg2. Соответственно, launch - тот клок, по которому данные записываются в reg1, а latch - по которому записываются в reg2. В моем случае reg1 это выходной регистр контроллера SDRAM, а reg2 это входной регистр во внешней микросхеме памяти, я правильно понял?
  17. Да я это понял, пытаюсь рассуждать: SDRAM контроллер выставляет очередные данные на шине DQ по фронту clk0. По thold выходных регистров ПЛИС они защелкиваются на ее выходных пинах SDRAM_DQ[15..0]. Требования по tsetup микросхемы памяти по документации 1,5 нс. Так-как clk1 сдвинут относительно clk0 на -60 deg или тоже самое, что он сдвинут на +300 deg = 8,334 нс (clk0 и clk1 = 10 нс) то в моем случае это и есть tsetup и он с большим запасом. Через 8,334 нс пришедший фронт клока clk1 начнет защелкивать выставленные данные в регистры внешней SDRAM'ки и защелкнуться они по thold = +0,8 нс, т.е. через 8,334 + 0,8 = 9,134 нс они будут уже сохранены в памяти. И цикл записи очередных данных начнется через примерно 1 нс. От сюда вопросы: Когда я добавил команду set_clock_groups -exclusive -group [get_clocks {inst3|altpll|sd1|pll7|clk[0]}] -group [get_clocks {inst3|altpll|sd1|pll7|clk[1]}] я сказал TimeQuest, что сигналы clk0 и clk1 синхронны и синфазны? В результате он начал все анализировать от clk1, но ведь это не правильно? TimeQuest до этого брал в качестве Launch clk0 а в качестве Latch clk1 и это было верно? Нужна ли все таки команда set_clock_groups или нет и правильно ли я ее понимаю?
  18. Нашел откуда этот слак, я случайно сделал это... set_output_delay -add_delay -rise -max -clock [get_clocks {inst3|altpll|sd1|pll7|clk[1]}] 1.500 [get_ports {SDRAM_CLK}] set_output_delay -add_delay -rise -min -clock [get_clocks {inst3|altpll|sd1|pll7|clk[1]}] 0.800 [get_ports {SDRAM_CLK}] Убрал эти строки из файла и :)
  19. Добавил в sdc set_clock_groups -exclusive -group [get_clocks {inst3|altpll|sd1|pll7|clk[0]}] -group [get_clocks {inst3|altpll|sd1|pll7|clk[1]}] Остался один слак по пути от выхода pll|clk[1] до порта SDRAM_CLK задержка на IO буфере 2,809 нс Получается, что SDRAM_CLK и так в худшем случае при температуре кристалла +100 С сдвинут на -2,273 нс + -2,809 нс = -5,082 нс (-183 deg)??? test_sdram.out.sdc
  20. Сделал, получил кучу слаков, я так понимаю по диаграмме на втором рисунке, я сдвинул clk1 на -60 deg т.е. на - 1,6666 нс относительно периода 10 нс. Там как раз между Launch и Latch 8.334 нс получилось (10 - 1,666 = 8.334), учитывая, что данные приходят на 4,122 нс позже чем необходимо, то надо сдвинуть Latch на 4,122 - 1,666 = 2,456 нс примерно на +90 deg? Или тут как то учесть в констрейнах сдвиг фазы надо? И еще я не уверен, что правильно указал set_input_delay. SDRAM использую MT48LC16M16A2P-6AIT ф.Micron, ссылка на pdf. Обновленный sdc тоже в приложении. test_sdram.out.sdc
  21. А какую версию Altium используете?
  22. Не помогло. Прикладываю фото. Сетку то же белой сделал.