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

Библиотека от Alex Forencich. Продукт или пример?

5 минут назад, Okie_from_Muskogee сказал:

Если данные защелкиваются в iddr и клок сразу идет в IO клоковую цепь и на iddr, то в set_input_delay смысла нету. Что он может изменить?

Он позволяет контролировать, что тайминги в порядке. В частности, благодаря этому я увидел, что без IDELAY не обойтись. Этот констрейн не для регулировки, а для контроля (STA). Как и констрейн выходной задержки.

5 минут назад, Okie_from_Muskogee сказал:

Задержку данных нужно регулировать через iodelay, подбирая вручную или запускать автоподстройку.

А можно установить статически значение, глядя на отчёт STA. Но для этого нужен констрейн.

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


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

41 minutes ago, dxp said:

Этот констрейн не для регулировки, а для контроля (STA). Как и констрейн выходной задержки.

Да, но на работоспособность он не влияет. А вы пишете, что

 

5 hours ago, dxp said:

При этом у Forencich'а совсем нет констрейнов по этому интерфейсу -- set_input_delay/set_output_delay. Ну, это как-то вообще не серьёзно -- такие интерфейсы без констрейнов не работают.

 

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


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

2 minutes ago, Okie_from_Muskogee said:

Да, но на работоспособность он не влияет. А вы пишете, что

Вообще то влияет  - так как это констрейн позволяет учитывать тайминги внешних цепей - в частности  внешнего PHY.

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

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


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

14 минут назад, Okie_from_Muskogee сказал:

Да, но на работоспособность он не влияет.

Без него у меня IDELAY не было. Т.ч. ещё как влияет. И для IDELAY нужно было правильное значение выставить (по умолчанию там 0, с ним не работает -- не сходятся тайминги, я подобрал 15).

14 минут назад, Okie_from_Muskogee сказал:

А вы пишете, что

Я имел в виду "не работают" в смысле "не могут использоваться в полной мере правильно".

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

7 минут назад, RobFPGA сказал:

Но опять же  - откуда  в библиотеке знать  какой именно PHY будут юзать?

Вроде как сами интерфейсы GMII/GRMII стандартизированы, там тайминги должны быть одни и те же ±. Корка от Xilinx, например, не конкретизирует PHY.

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


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

5 minutes ago, dxp said:

Я имел в виду "не работают" в смысле "не могут использоваться в полной мере правильно".

Ok then

11 minutes ago, RobFPGA said:

Вообще то влияет  - так как это констрейн позволяет учитывать тайминги внешних цепей - в частности  внешнего PHY.

Я писал про ситуацию с IDDR, что резултат P&R в этом случае не зависит от наличия/отсутствия таких констрейнтов.

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


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

6 minutes ago, dxp said:

Вроде как сами интерфейсы GMII/GRMII стандартизированы, там тайминги должны быть одни и те же ±. Корка от Xilinx, например, не конкретизирует PHY.

Но внутри корки вроде как и не задаются input/output delay констрейны ... 
Это опять же ответственность разработчика.  

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


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

3 минуты назад, RobFPGA сказал:

Но внутри корки вроде как и не задаются input/output delay констрейны ... 

у них в Example Project задаются. 

С другой стороны, вот смотрим даташит на KSX9031 (Microchip), там нет tsu, th для rgmii интерфейса. Есть только отсылка к RGMII V2.0 SPEC. Для tx интерфейса сказано, что надо задержку клока на 2 нс сделать со стороны МАС, а для rx сказано,  что PHY задерживает клок 1.2 нс (и что эту задержку можно увеличить при желании через специальные регистры до 2.58 нс).

14 минут назад, Okie_from_Muskogee сказал:

Я писал про ситуацию с IDDR, что резултат P&R в этом случае не зависит от наличия/отсутствия таких констрейнтов.

Да, сам по себе этот констрейн не заставит синтезатор вставить элемент задержки. Но констрейн показывает, что этот элемент необходим, и вынуждает разработчика делать это. Цель же: получить работоспособный дизайн. Без констрейна у меня он не получился, хотя функционалка в симе работала.

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


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

10 minutes ago, dxp said:

у них в Example Project задаются.

Example   это внешний проект по отношению к библиотеке/корке ... 
Так что  IO задержки  определяются физикой конкретной платы.  

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


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

Тем не менее спека RGMII требует задержку клока на 2 нс. Это-то как-то нетрадиционно -- более классический (и, имхо, правильный вариант) будет указать tsu/th для PHY, и там уже разработчики сами сообразят, на сколько клок задерживать. Но авторы спеки видимо решили навести унификацию, чтобы любые RGMII PHY были взаимозаменяемыми. 

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


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

18 hours ago, dxp said:

Учиться по такому коду тяжело (документации нет, комментирован слабо, объём большой). Применять, допиливая... Verilog-2001? Нет уж, увольте, слишком привык к удобствам SV. Т.ч. либо брать как есть, либо переписывать, а это уже совсем другая работа.

Претензия правильная - конечно, было бы здорово, если бы все было документировано и комментировано как следует. "- Жизнь хороша, и жить хорошо! - А хорошо жить - еще лучше!" (С) Кавказская пленница. 🙂

Но тут ситуация другая: дареному коню в зубы не смотрят. Ведь еще сложнее что-либо изучать или осваивать в случае "полного отсутствия какого-либо присутствия"🙂 А тут - более-менее функционально законченное решение, к тому же, вроде, в основном функционально работоспособное. Если ты такие еще не делал - очень полезно заглянуть внутрь и изучить, как опорный вариант. В общем, кривая обучения/освоения/нового проекта идет вверх сильно круче, чем со старта на пустом месте.

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


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

3 часа назад, Raven сказал:

еще сложнее что-либо изучать или осваивать в случае "полного отсутствия какого-либо присутствия"🙂 А тут - более-менее функционально законченное решение, к тому же, вроде, в основном функционально работоспособное. Если ты такие еще не делал - очень полезно заглянуть внутрь и изучить, как опорный вариант. В общем, кривая обучения/освоения/нового проекта идет вверх сильно круче, чем со старта на пустом месте.

С такой формулировкой полностью согласен. Будем считать референсом. 🙂

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


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

В 01.08.2024 в 12:57, dxp сказал:

По констрейнам. Там есть вот такие:

set_multicycle_path -from [get_clocks rgmii_rxclk] -to ${rxclk} -setup 0
set_multicycle_path -from [get_clocks rgmii_rxclk] -to ${rxclk} -hold -1

Тут rgmii_rxclk -- это виртуальный клок, по которому поступают данные на вход, rxclk -- это клок на rgmii_rxc пине (который Clock Capable) и который тактирует входную логики этого интерфейса внутри ПЛИС.

Технически тут мультицикл используется для т.н. сдвига "окна". Но зачем это сделано и как работает, я не догоняю. Может кто-нибудь объяснить?

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

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


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

В 01.08.2024 в 08:57, dxp сказал:

При этом у Forencich'а совсем нет констрейнов по этому интерфейсу -- set_input_delay/set_output_delay. Ну, это как-то вообще не серьёзно -- такие интерфейсы без констрейнов не работают.

Как уже выше написали, констрейнты на RGMII не обязательны. Если все триггеры расположены в ножках, то задержка будет минимальная и в основном зависящая уже от разводки платы. А смещение клока относительно данных (по RX и по TX) задается настоечными регистрами PHY по MDIO. Хотя не все микросхемы PHY это позволяют. Marvell 88e1111 - может внутри себя двигать клок. А вот например, недавно работал с такой микросхемой как DM9119INP (DAVICOM Semiconductor) - она не позволяет. Двигал клок внутри ПЛИС на PLL.

Что касается самой сути поста - продукт или пример. То скорей всего пример. Ведь никто не гарантирует сто процентную работоспособность бесплатного кода, по доброй воле выложенного в интернете. Такие вещи можно использовать для прототипирования или макетирования. Для коммерческих изделий лучше писать самому. ИМХО

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


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

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

Как уже выше написали, констрейнты на RGMII не обязательны. Если все триггеры расположены в ножках, то задержка будет минимальная и в основном зависящая уже от разводки платы.

Ну, вот я так сделал сначала, всё просинтезировалось, ошибок нет. А потом констрейны применил и увидел, что тайминги не сходятся. Т.е. дизайн не рабочий. Фиксить это, подбирая экспериментально задержку на внешней микросхеме (речь про приём данных по RGMII)? Вслепую?

Или всё же, видя эту ошибку, поискать более правильное решение -- вставить элементы задержки и подобрать для них корректное значение, ориентируясь на отчёт STA  (он сразу показывает слаки). 

Я предпочитаю второй вариант. Констрейны в ПЛИС (особенно input/output) чаще всего нужны не для управления синтезом, а для коррекции (если синтезатор умеет -- у Альтеры было слово специальное: timing-driven synthesis) и, главным образом, для контроля корректности таймингов. 

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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