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

Констрейны для DDR

Добрый день.

Пытаюсь принять ddr поток ПЛИС Virtex2.

Констрейн описан так:

 timegrp Rx0    = pads(LinkRxData[0]*  : LinkRxData[1]*  : LinkRxData[2]*  : LinkRxData[3]*  : LinkRxData[4]*  : LinkRxData[5]*  : LinkRxData[6]*  : LinkRxData[7]*);

 timegrp Rx0    offset = in 3.35 ns valid 6.7 ns before LinkRxClk[0] rising;
 timegrp Rx0    offset = in 3.35 ns valid 6.7 ns before LinkRxClk[0] falling;

данные вычитываются примерно так:

 always @(posedge LinkRxClk) iLutFifoP[eLutWrAddr] <= LinkRxData;
 always @(negedge LinkRxClk) iLutFifoN[eLutWrAddr] <= LinkRxData;

на что в репорте есть такая строчка

------------------------------------------------------------------------------------------------------
  Constraint                                |  Check  | Worst Case |  Best Case | Timing |   Timing   
                                                 |            |    Slack       | Achievable | Errors |    Score   
------------------------------------------------------------------------------------------------------
  TIMEGRP "Rx0" OFFSET = IN 3.35 ns VALID 6 | SETUP   |     4.274ns|    -0.924ns|       0|           0
  .7 ns BEFORE COMP "LinkRxClk[0]"                | HOLD    |     0.567ns|                 |       0|           0
  "RISING"                                                      |             |                |                 |        |            
------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------
  Constraint                                |  Check  | Worst Case |  Best Case | Timing |   Timing   
                                            |         |    Slack   | Achievable | Errors |    Score   
------------------------------------------------------------------------------------------------------
  TIMEGRP "Rx0" OFFSET = IN 3.35 ns VALID 6 | SETUP   |     4.274ns|    -0.924ns|       0|           0
  .7 ns BEFORE COMP "LinkRxClk[0]"          | HOLD    |     0.567ns|            |       0|           0
  "RISING"                                  |         |            |            |        |            
------------------------------------------------------------------------------------------------------
 

А дальше в отчете сказано что "All constraints were met."

Почему система считает, что тайминг по ddr констрейну выполнен ?

Изменено пользователем fpga_student

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, fpga_student сказал:

А дальше в отчете сказано что "All constraints were met."

По рапорту не очень видно, но вроде Worst Case Slack положительный. Поэтому и все констрейнты выполнены.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 hours ago, dvladim said:

По рапорту не очень видно, но вроде Worst Case Slack положительный. Поэтому и все констрейнты выполнены.

Репорт вот такой, и да ошибок нет. Но прошивка явно валится по окну семплирования данных.

И непонятно, почему Worst Case Slack в порядке, а Best Case Achievable отрицательный? вроде все должно быть наоборот ?

Безымянный.jpg

Изменено пользователем fpga_student

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если у вас констрейнты выполняются, а схема не работает, то значит заданы они неверно.

Вот an433 посмотрите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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