реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Spartan6 не дает развести DCM
ovs_pavel
сообщение Sep 14 2012, 09:31
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



Вываливает такую ошибку:

Phase 4.2 Initial Placement for Architecture Specific Features ERROR:Place:1238 - Component "U9/DCM_SP_Clk_25_MHz" does not have a feasible site.
There are 12 potential locations for the component:

Location "DCM_X0Y1" cannot be used to place the component due to following error condition(s):

ERROR:Place:1201 - Component <U9/DCM_SP_Clk_25_MHz> of type DCM is not placeable because it has locked loads placed in regions: CLOCKREGION_X1Y7.
There is a restriction that the clock loads of a DCM must be in a horizontally adjacent clock region to the DCM. It is recommended that a BUFG
be used for this clock signal so that the clock loads can be placed anywhere on the device. If the clock driver or clock loads are locked or area grouped,
please ensure that they are constrained to horizontally adjacent clock regions.

Location "DCM_X0Y3" cannot be used to place the component due to following error condition(s):

ERROR:Place:1201 - Component <U9/DCM_SP_Clk_25_MHz> of type DCM is not placeable because it has locked loads placed in regions: CLOCKREGION_X1Y7.
There is a restriction that the clock loads of a DCM must be in a horizontally adjacent clock region to the DCM. It is recommended that a BUFG
be used for this clock signal so that the clock loads can be placed anywhere on the device. If the clock driver or clock loads are locked or area grouped,
please ensure that they are constrained to horizontally adjacent clock regions.

И т.д. вывалил все DCM-ы, т.е. вроде как использовать их не могу.

Привожу часть проекта как подцепил DCM.

BUFG BUFG_Clk_125_MHz (
.I (Clk_125_MHz),
.O (w_Clk_125_MHz) - это тактовая частота. Она разводится внутри кристалла. От нее же тактируется и DCM следующим образом:
);


DCM_SP #(
.CLKDV_DIVIDE (2.0),
.CLKFX_DIVIDE (10),
.CLKFX_MULTIPLY (2),
.CLKIN_DIVIDE_BY_2 ("FALSE"),
.CLKIN_PERIOD (8),
.CLKOUT_PHASE_SHIFT ("NONE"),
.CLK_FEEDBACK ("1X"),
.DESKEW_ADJUST ("SYSTEM_SYNCHRONOUS"),
.DLL_FREQUENCY_MODE ("LOW"),
.DUTY_CYCLE_CORRECTION ("TRUE"),
.PHASE_SHIFT (0),
.STARTUP_WAIT ("FALSE")
) DCM_SP_Clk_25_MHz (
.CLK0 (w_CLK0),
.CLK180 (),
.CLK270 (),
.CLK2X (),
.CLK2X180 (),
.CLK90 (),
.CLKDV (),
.CLKFX (w_Phy_25MHz),
.CLKFX180 (),
.LOCKED (w_Lock_25MHz),
.PSDONE (),
.STATUS (),
.CLKFB (w_CLK0),
.CLKIN (Clk_125_MHz),
.PSCLK (),
.PSEN (1'b0),
.PSINCDEC (),
.RST (1'b0)
);

assign Phy_25MHz = w_Phy_25MHz;
assign Phy_GTXClk = w_CLK0;

Эти два сигнала (Phy_GTXClk и Phy_25MHz) не тактируют внутри кристалла ничего, просто выдаются наружу.

В usf-файле прописал ограничение на

PIN "Phy_GTXClk_BUFG.O" CLOCK_DEDICATED_ROUTE = FALSE;

но не помогает.

Как можно тактовую развести на DCM, чтобы не ругался разводчик??
Go to the top of the page
 
+Quote Post
TRILLER
сообщение Sep 14 2012, 10:47
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 180
Регистрация: 17-02-09
Из: Санкт-Петербург
Пользователь №: 45 001



Здравствуйте.
Чтобы избежать проблем, просто используте хотябы 1 раз мегавизард, чтобы вставить нужный вам DCM. Он вам буферы там, где надо расставит.
А констрен опишите так:
NET "clk" CLOCK_DEDICATED_ROUTE = FALSE;
NET "clk" TNM_NET = "clk";
TIMESPEC TS_clk = PERIOD "clk" 5.000 ns HIGH 50 %;
NET "clk" LOC = ХХХ;
В вашем случае скорее всего проблема именно в буфере BUFG BUFG_Clk_125_MHz. Вы, почему-то, на вход DCM пытаетесь подать частоту не с его выхода, а со входа. Вот он и ругается.
А что касается использования выхода ODDR для тактовой частоты - выход триггера, это и есть выход триггера(пусть и DDR) со всеми вытекающими. Да и какой смысл? Фазу и на DCM вращать можно.

Сообщение отредактировал TRILLER - Sep 14 2012, 11:04
Go to the top of the page
 
+Quote Post
ovs_pavel
сообщение Sep 14 2012, 11:17
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



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

ODDR2 #(
.DDR_ALIGNMENT ("NONE"), // Sets output alignment to "NONE", "C0" or "C1"
.INIT (1'b0), // Sets initial state of the Q output to 1'b0 or 1'b1
.SRTYPE ("SYNC") // Specifies "SYNC" or "ASYNC" set/reset
) ODDR2_25MHz (
.Q (w_25_out), // 1-bit DDR output data
.C0 (w_FX_25MHz), // 1-bit clock input
.C1 (w_FX_25MHz_n), // 1-bit clock input
.CE (1'b1), // 1-bit clock enable input
.D0 (1'b1), // 1-bit data input (associated with C0)
.D1 (1'b0), // 1-bit data input (associated with C1)
.R (1'b0), // 1-bit reset input
.S (1'b0) // 1-bit set input
);

Т.е. с прямого и инверсного выходов DCM пропустить это все через DDR-регистр. Вроде как сам Xilinx рекомендует использовать эту технику, но вот только я нигде не нашел по тайминам соотношений, т.е. как будут дрожать фронты и т.д.

Если использовать такую схему, то компилятор вроде не ругается. А так, через установленный ранее DCM, можно будет двигать фазу сигнала. Что думаете?

Вообщем сейчас получилась такая схема тактирования, которая работает


но схема на мой взгляд полный гемморой

Цитата(TRILLER @ Sep 14 2012, 13:47) *
Здравствуйте.
Чтобы избежать проблем, просто используте хотябы 1 раз мегавизард, чтобы вставить нужный вам DCM. Он вам буферы там, где надо расставит.
А констрен опишите так:
NET "clk" CLOCK_DEDICATED_ROUTE = FALSE;
NET "clk" TNM_NET = "clk";
TIMESPEC TS_clk = PERIOD "clk" 5.000 ns HIGH 50 %;
NET "clk" LOC = ХХХ;
В вашем случае скорее всего проблема именно в буфере BUFG BUFG_Clk_125_MHz. Вы, почему-то, на вход DCM пытаетесь подать частоту не с его выхода, а со входа. Вот он и ругается.
А что касается использования выхода ODDR для тактовой частоты - выход триггера, это и есть выход триггера(пусть и DDR) со всеми вытекающими. Да и какой смысл? Фазу и на DCM вращать можно.


Да нет, я все подаю правильно. Просто я DCM скопировал из подмодуля проекта. А вернее будет запись

.CLKIN (w_Clk_125_MHz),

т.е. на вход DCM подаем сигнал именно с выхода BUFG.
Прикрепленные файлы
Прикрепленный файл  __________________.doc ( 65.5 килобайт ) Кол-во скачиваний: 25
 
Go to the top of the page
 
+Quote Post
TRILLER
сообщение Sep 14 2012, 11:36
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 180
Регистрация: 17-02-09
Из: Санкт-Петербург
Пользователь №: 45 001



На схеме всё правильно вроде бы.
Могу предположить только, что у вас на схеме на входе нарисован IBUFG, а используете BUFG BUFG_Clk_125_MHz
Go to the top of the page
 
+Quote Post
ovs_pavel
сообщение Sep 14 2012, 11:58
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



Цитата(TRILLER @ Sep 14 2012, 14:36) *
На схеме всё правильно вроде бы.
Могу предположить только, что у вас на схеме на входе нарисован IBUFG, а используете BUFG BUFG_Clk_125_MHz


На схеме я привел крайний вариант, рабочий. А если вот убрать ODDR модули и подать сигналы с выходов DCM на пин (он больше никуда и не идет), то и начинают сыпаться ошибки. А не знаете насчет применения этих буферов ODDR2. Сейчас времянку прогнал вроде все в порядке. Но как будет в работе и на климатике - вопрос. Вдруг фронты поплывут. Все-таки DCM - надежнее. А описание про применение выхода ODDR2 в качестве тактового сигнала - не найду.
Go to the top of the page
 
+Quote Post
troiden
сообщение Sep 14 2012, 13:28
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 19-02-09
Из: Москва
Пользователь №: 45 069



Вот например что-то именно про ODDR2 для вывода клока наружу:
http://www.xilinx.com/support/answers/35032.htm

Что значит "Все-таки DCM - надежнее."? Вы в любом случае к нему привязаны.

Сообщение отредактировал troiden - Sep 14 2012, 13:32
Go to the top of the page
 
+Quote Post
Timmy
сообщение Sep 14 2012, 16:35
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



А по-моему разводчик прямо говорит, что нужно делать:"It is recommended that a BUFG
be used for this clock signal so that the clock loads can be placed anywhere on the device. If the clock driver or clock loads are locked or area grouped,
please ensure that they are constrained to horizontally adjacent clock regions"
. То есть поместить BUFG между выходом DCM и пинами, куда выводится клок. При генерации DCM визардом BUFG к его выходам цепляются по умолчанию, насколько я помню.
Go to the top of the page
 
+Quote Post
ovs_pavel
сообщение Sep 14 2012, 18:28
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



Цитата(Timmy @ Sep 14 2012, 20:35) *
А по-моему разводчик прямо говорит, что нужно делать:"It is recommended that a BUFG
be used for this clock signal so that the clock loads can be placed anywhere on the device. If the clock driver or clock loads are locked or area grouped,
please ensure that they are constrained to horizontally adjacent clock regions"
. То есть поместить BUFG между выходом DCM и пинами, куда выводится клок. При генерации DCM визардом BUFG к его выходам цепляются по умолчанию, насколько я помню.


Если сигнал с выхода DCM через BUFG попытаться вывести на пин, то произойдет ошибка mapper'а. Не разводится тактовый сигнал на выходной пин.

Цитата(troiden @ Sep 14 2012, 17:28) *
Вот например что-то именно про ODDR2 для вывода клока наружу:
http://www.xilinx.com/support/answers/35032.htm

Что значит "Все-таки DCM - надежнее."? Вы в любом случае к нему привязаны.


Добавляется дополнительный блок между в тактовый сигнал, имхо. Хотя в цифре стабильность определяется задатчиком, ну не знаю... Не делал просто так раньше, а тут приходиться писать проект под чужую плату. Вообщем я бы так не делал (поставил бы разветвитель частоты и раздал бы тактовую).
Go to the top of the page
 
+Quote Post
troiden
сообщение Sep 14 2012, 19:03
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 19-02-09
Из: Москва
Пользователь №: 45 069



Цитата(ovs_pavel @ Sep 14 2012, 22:28) *
Добавляется дополнительный блок между в тактовый сигнал, имхо. Хотя в цифре стабильность определяется задатчиком, ну не знаю... Не делал просто так раньше, а тут приходиться писать проект под чужую плату. Вообщем я бы так не делал (поставил бы разветвитель частоты и раздал бы тактовую).

А у вас к этой частоте еще какие-нибудь входы-выходы привязаны? Или же от нее работает какая-то не связанная с ПЛИСом микросхема?
Одна из причин выводить тактовый сигнал через ODDR в том, чтобы обеспечить ему минимальную задержку относительно других пинов. Вам этот параметр важен?
Go to the top of the page
 
+Quote Post
Timmy
сообщение Sep 14 2012, 19:40
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(ovs_pavel @ Sep 14 2012, 22:28) *
Если сигнал с выхода DCM через BUFG попытаться вывести на пин, то произойдет ошибка mapper'а. Не разводится тактовый сигнал на выходной пин.

Добавляется дополнительный блок между в тактовый сигнал, имхо. Хотя в цифре стабильность определяется задатчиком, ну не знаю... Не делал просто так раньше, а тут приходиться писать проект под чужую плату. Вообщем я бы так не делал (поставил бы разветвитель частоты и раздал бы тактовую).

Ну, не разводится напрямую, и не надо. Вывод через DDR - это более правильный путь, так как обычно клок синхронизирован с данными, которые параллельно выводятся через такой же DDR, и обеспечивается наилучшее выравнивание задержки прохождения через буфера ВВ.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Sep 15 2012, 12:00
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



DCM обычно не используют для выравнивания выходных задержек так как в этом просто нет никакого смысла. Использование ODDR позволяет решить все проблемы. В том числе и с поворотом фазы выходного клока на 180 градусов. DCM как правило используют для того, чтобы скомпенсировать задержку по клоковому входу (хотя существуют и другие способы решения этой проблемы, смотри например source synchronous clocking).
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01467 секунд с 7
ELECTRONIX ©2004-2016