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

Комбинационная логика и TimeQuest

Всем привет! Рассматриваю вопрос задания констрейнов для комбинационной логики в таймквесте.

Вобщем простой пример: есть у меня сигнал, который ничем не тактируется, приходит на порт ФПГА, грубо говоря, самопроизвольно и когда захочет, не зависит от каких-либо внешних клоков. Попадая внутрь ФПГА сразу направляется на элемент И-НЕ, после элемента И-НЕ попадает на синхронную логику.

Можно ли вот так подавать сигналы сразу на комбинационную логику?

Как задать в этом случае констрейны в таймквест для входного порта?

Как задать констрейны для пути от входного порта до синхронной логики?

 

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


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

В общем, так подавать сигналы на комбинационную логику можно. На последовательную тоже можно, но, осторожно...

Возможно, нужно описать set_min_delay и set_max_delay для пути входной порт -> выходной порт, если это важно, и между ними только комбинационная логика...

Возможно, set_input_delay для пути от этого порта к синхронной схеме...

Возможно, надо поставить один-два триггера-синхронизатора....

сложно все это сказать, не зная собственно самой схемы и требований к ней

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


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

не совсем понимаю какие могут быть констрейны на чисто случайный асинхронный внешний сигнал.

может сразу на входе застробировать его высокой внутренней частотой и потом спокойно использовать?

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


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

не совсем понимаю какие могут быть констрейны на чисто случайный асинхронный внешний сигнал.

может сразу на входе застробировать его высокой внутренней частотой и потом спокойно использовать?

вмешаюсь немного. а вот если его застробить частотой - тут разве будет корректно работать и не может получиться метастабильности на этом триггере?

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


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

2 EgorTol

а что у вас приходит на второй порт элемента И-НЕ?

 

Ошибочка вышла, элемент не И-НЕ, а исключающее или.

На второй порт элемента подаётся тоже асинхронный сигнал, который внутри фпга генерируется. Получается, что надо измерить интервал между приходами сигналов.

В общем, так подавать сигналы на комбинационную логику можно. На последовательную тоже можно, но, осторожно...

Возможно, нужно описать set_min_delay и set_max_delay для пути входной порт -> выходной порт, если это важно, и между ними только комбинационная логика...

Возможно, set_input_delay для пути от этого порта к синхронной схеме...

Возможно, надо поставить один-два триггера-синхронизатора....

сложно все это сказать, не зная собственно самой схемы и требований к ней

 

Все сигналы остаются внутри, на выходные порты ничего не идёт, поэтому наверное путь входной порт -> выходной порт не надо описывать. Вот насчет пути от порта до синхронной схемы не знаю.

 

не совсем понимаю какие могут быть констрейны на чисто случайный асинхронный внешний сигнал.

может сразу на входе застробировать его высокой внутренней частотой и потом спокойно использовать?

 

 

Я тоже не понимаю, зачем они нужны, но в таймквесте остаются незаконстрейненные порты и пути, а каких констрейнить, если они асинхронные?

 

Вот мини-схемка:

post-75311-1390892243_thumb.jpg

 

Вобщем таймквест пишет, что не законстрейнен порт AS и не законстрейнен путь от порта AS до триггера D с клоком CLK))

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

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


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

Я тоже не понимаю, зачем они нужны, но в таймквесте остаются незаконстрейненные порты и пути, а каких констрейнить, если они асинхронные?

 

set_false_path -from ["входы"] -to [all_clocks]

???

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

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


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

set_false_path -from ["входы"] -to [all_clocks]

???

 

Возможно. А моделсим потом не будет ругаться? Просто вопрос появился из-за того, что моделсим выдаёт ошибку при симуляции, сначала все нормально идёт, а потом бац!:

Error: C:/altera/13.1/modelsim_ase/win32aloem/../altera/verilog/src/altera_primitives.v(289): $hold( posedge clk &&& nosloadsclr:3388811 ps, d:3388957 ps, 212 ps )

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


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

Никакой констрейн не нужен вообще в этом случае. И set_false_path тоже - он предназначен для убирания конкретного пути из множества обконстрейненных, так что, сам по себе констрейном не является.

 

Единственное, что возможно нужно - это не один триггер входной, а еще один-два дополнительных перед ним.

 

Этот "бац" - совершенно естественный и нормальный. Он показал, что вот в это время могла бы быть метастабильность. Ищите, как отключить проверку этой ошибки для этого триггера.

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


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

Никакой констрейн не нужен вообще в этом случае. И set_false_path тоже - он предназначен для убирания конкретного пути из множества обконстрейненных, так что, сам по себе констрейном не является.

 

Единственное, что возможно нужно - это не один триггер входной, а еще один-два дополнительных перед ним.

 

Этот "бац" - совершенно естественный и нормальный. Он показал, что вот в это время могла бы быть метастабильность. Ищите, как отключить проверку этой ошибки для этого триггера.

 

То есть после XOR поставить еще триггер?

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


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

То есть после XOR поставить еще триггер?

 

А какая реальная частота тактовая?

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


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

А какая реальная частота тактовая?

 

Я рассчитываю как минимум на 200 МГц. Триггер тактируется 200 МГц. Если получится выше, то сделаю выше.

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


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

Я рассчитываю как минимум на 200 МГц. Триггер тактируется 200 МГц. Если получится выше, то сделаю выше.

 

 

Тогда, как минимум один добавить, а лучше два - если схема позволяет там такую задержку.

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


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

Тогда, как минимум один добавить, а лучше два - если схема позволяет там такую задержку.

 

Хорошо, добавлю, спасибо.

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


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

Хорошо, добавлю, спасибо.

 

Но это не снимет проблемы моделирования на первом триггере. Ищите как выключить эту проверку для этого триггера, правда не знаю где искать...

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


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

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

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

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

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

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

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

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

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

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