Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: vivado 2014.1 , ILA ,ошибки
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
serg_k1
Здравствуйте, столкнулся с проблемой «The design failed to meet the timing requirements.»
vivado 2014.1 плата Artix , при подключении ILA под частоту 400МГц. Нужна именно она. При 200МГц все нормально.
Сейчас сделал простой проект , где есть только входная частота 200, clk_wiz_0 делает 400МГц , 2 регистра по 14 разрядов , которые наблюдаются и светодиод- моргает ~1Гц.
Так вот после Implementation получаются ошибки.
Log
CRITICAL WARNING: [Timing 38-282] The design failed to meet the timing requirements.
При этом появляются предупреждения . Не понятно откуда и что с ними делать.
• Post-Place Phys Opt Design ( 34 warnings) одинаковые
[Constraints 18-838] Failed to create SRL placer macro for cell u_ila_0/inst/ila_core_inst/u_ila_cap_ctrl/u_cap_addrgen/u_cap_window_counter/u_wcnt_hcmp/allx_typeA_match_detection.cs_allx_typeA_inst/DUT/I_WHOLE_SLICE.G_SLICE_IDX[1].U_ALL_SRL_SLICE/u_srlA/S1. Bel does not match with the valid locations at which this inst can be placed.
• Route Design (27 warnings ) одинаковые
[Constraints 18-838] Failed to create SRL placer macro for cell u_ila_0/inst/ila_core_inst/u_ila_cap_ctrl/u_cap_addrgen/u_cap_window_counter/u_wcnt_hcmp/allx_typeA_match_detection.cs_allx_typeA_inst/DUT/I_WHOLE_SLICE.G_SLICE_IDX[1].U_ALL_SRL_SLICE/u_srlA/S1. Bel does not match with the valid locations at which this inst can be placed.

После запуска Report Timing Summary показывает наличие ошибок в Intra-Clock Paths->clk_wiz_0->Setup
Для reset установлен false path. Пробовал уменьшить размеры dbg_hub и u_ila_0 до предела. Не помогает.
Как победить?
des00
Цитата(serg_k1 @ Mar 11 2015, 21:50) *
Как победить?

сделать свой логер на фифо и подключить ILA, который не может работать на 400МГц.
VladimirB
Цитата(serg_k1 @ Mar 11 2015, 17:50) *
Здравствуйте, столкнулся с проблемой «The design failed to meet the timing requirements.»
vivado 2014.1 плата Artix , при подключении ILA под частоту 400МГц. Нужна именно она. При 200МГц все нормально.
...

Artix7 Datasheet
FMAX_FIFO (FIFO in all modes without ECC)
скорость / частота
3 - 509.68МГц
2 - 460.83МГц
1 - 388.20МГц

Таким образом, из даташита, если у вас Артихс первой скорости, то напрямую логгер на блочной памяти на 400МГц вам не сделать.
На китах обычно первую скорость и ставят, ибо дешевле.
Можно попробывать обмануть Виваду и сказать ей в настройках проекта, что скорость 2 или 3 - но гарантии работоспособности проекта нету.
Либо, как DES00 вам посоветовал, попытаться сделать свой логгер, память затактировать от 200МГц и распараллелить данные на 2 потока.
serg_k1
Цитата(des00 @ Mar 11 2015, 19:12) *
сделать свой логер на фифо и подключить ILA, который не может работать на 400МГц.

Спасибо, попробую так сделать.
В настройках стоит Artix-7 AC701 Evaluation Platform (xc7a200tfbg676-2), но попробую фифо под 200МГц
serg_k1
к сожалению ничего не получилось. Сделал несколько фифо под 200 и ILA. Снова возникает такая же ошибка. Упростил до одного фифо. не помогло.
Видимо, первый раз под 200МГц был простой кусок.
dm.pogrebnoy
Цитата
Для reset установлен false path.

Это зачем?
Цитата
к сожалению ничего не получилось.

Что-то конкретно не работает или вас просто испугали ворнинги?
Цитата
Сделал несколько фифо под 200 и ILA.

Удалось данные распараллелить в два раза? Фифо можно собрать на распределенной памяти, для распарарллеливания нужна самая минимальная глубина.
Цитата
После запуска Report Timing Summary показывает наличие ошибок в Intra-Clock Paths->clk_wiz_0->Setup

Скорее всего нужно прописать констрейнты.
serg_k1
Цитата(dm.pogrebnoy @ Mar 17 2015, 19:54) *
Это зачем?

Что-то конкретно не работает или вас просто испугали ворнинги?

Удалось данные распараллелить в два раза? Фифо можно собрать на распределенной памяти, для распарарллеливания нужна самая минимальная глубина.

Скорее всего нужно прописать констрейнты.

1. Для reset установлен false path. у фифо был reset и ошибки "setup" для ILA . я сделал чтобы этот путь распостранения не учитывался.
2. 3. испугали ворнинги. хотелось бы быть уверенным что ila с фифо работает правильно. Сейчас просто считает счетчик под оба фронта 400МГц и я его хочу смотреть.

Код
//---------------------------
clk_wiz_0 core_clk_400
   (
   // Clock in ports
    .clk_in1_p(sys_clk_p),    // input clk_in1_p
    .clk_in1_n(sys_clk_n),    // input clk_in1_n
    // Clock out ports
    .clk_out1(clk_400MHz),     // output clk_out1
    .clk_out2(clk_out2),     // output clk_out2
    .clk_out3(clk_out3),     // output clk_out3
    // Status and control signals
    .reset(reset),// input reset
    .locked(locked_1));      // output locked
//---------------------------
clk_wiz_1 core_clk_200
   (
   // Clock in ports
    .clk_in1(clk_400MHz),      
    // Clock out ports
    .clk_out1(clk_200),    
    .clk_out2(clk_200_90),    
    .clk_out3(clk_200_180),    
    .clk_out4(clk_200_270),    
    .clk_out5(clk_400),    
    .clk_out6(clk_400_90),    
    .clk_out7(clk_400_180),    
    // Status and control signals
    .reset(reset),// input reset
    .locked(locked_2));  

...
begin
            if ( ( clk_400_90 == 0 ) & ( clk_200_90 == 0) ) nom <=  2'b00;
            else nom <= nom + 1'b1;
            if ( data_AB < 16'hffff)                          
                data_AB <= data_AB + 1'b1;
              else  
                data_AB <= 16'h0;              
            case ( nom )
            2'b00: begin
                    data_AB_1 <= data_AB;
                   end
            2'b01: begin
                     data_AB_2 <= data_AB;          
                   end
            2'b10: begin
                     data_AB_3 <= data_AB;          
                   end  
            2'b11: begin
                    data_AB_4 <= data_AB;          
                   end                    
            endcase          
        end
...
//-------------таких 4 под wr_clk = clk_200_xxx  ---------------
    fifo_data fifo_data_2(
        .wr_clk(clk_200),
        .rd_clk(clk_200),
        .d_in(data_AB_2),
        .led(GPIO_LED_1),
        .reset(reset)
        );
...

между data_AB_2 и clk_200 период 400МГц , а выдается ошибка timing. А в ILA частота 200МГц и там тоже ошибка timing - setup. Причем ошибки есть даже тогда, когда остается один из 4-х каналов, при этом вход счетчика остается под оба фронта 400.
пробовал и так
Код
always @( posedge clk_200 )
    begin
                    
              data_AB_1 <= data_AB;
        
    end    
//----------------------------
    always @( posedge clk_200_90 )
        begin
                    
                  data_AB_2 <= data_AB;
            
        end

...

а будет- входные данные (32р LVDS) под оба фронта 400МГц и с которыми нужно разбираться. Поэтому и хотелось быть уверенным в правильности работы.
4.на входную частоту sys_clk_p и clk_400MHz для clk_wiz_1 core_clk_200 прописано. Что еще нужно?
dm.pogrebnoy
1) Использовать 1 MMCM вместо двух. Проверить Clock Interaction после разводки.
2) Это что? Так не надо делать.
Код
if ( ( clk_400_90 == 0 ) & ( clk_200_90 == 0) ) nom <=  2'b00;
            else nom <= nom + 1'b1;

3)
Цитата
между data_AB_2 и clk_200 период 400МГц ,

не совсем понятно что это значит.
4)
Цитата
а будет- входные данные (32р LVDS) под оба фронта 400МГц

Принимайте этот поток при помощи DDR триггеров в IOB, дальше на ФИФО с разной разрядностью шин по входу и выходу, получив таким образом понижение частоты и распараллеливание потока данных
Код
     fifo_data fifo_data_2(        
        .wr_clk(clk_400),
        .rd_clk(clk_200),
        .wdata(wdata) // 64 бита
        .rdata(rdata)   // 128 бит
);

5) На 4п. см мой 1. Если есть проблемы в Clock Interaction Report - устранить.
serg_k1
Цитата(dm.pogrebnoy @ Mar 18 2015, 19:51) *
1) Использовать 1 MMCM вместо двух. Проверить Clock Interaction после разводки.
4) Принимайте этот поток при помощи DDR триггеров в IOB, дальше на ФИФО с разной разрядностью шин по входу и выходу, получив таким образом понижение частоты и распараллеливание потока данных
Если есть проблемы в Clock Interaction Report - устранить.

Спасибо, по моему сейчас так и сделал. Принимаю(пока счетчик под оба фронта) на IDDR. Выход Q1 и Q2 на fifo_data_1(под clk_400) и _2(под clk_400_180). выходы фифо(х2) под 200 на ila. Но есть проблемы в Clock Interaction Report. причем не только clk_400- clk_400_180, но и clk_400- clk_400. А разве Clock Interaction Report показывает не только взаимодействие clk подсетей, но и внутри?
ошибки
fifo_data_2 clk_400 falling- clk_400_180 rising,(*)
fifo_data_1 clk_400 rising- clk_400 rising,
fifo_data_2 clk_400_180 rising- clk_400_180 rising,
мне не понятно где есть такое (*) пересечение .
и как это устранять?

(*) может потому что IDDR- там же один clk
dm.pogrebnoy
Для решения вашей задачи не требуется частот с разными фазами. Только 200 и 400. Без всяких _90 _180 _270.

А потому уже можно думать:
Цитата
мне не понятно где есть такое (*) пересечение .
и как это устранять?
serg_k1
Цитата(dm.pogrebnoy @ Mar 19 2015, 23:19) *
Для решения вашей задачи не требуется частот с разными фазами. Только 200 и 400. Без всяких _90 _180 _270.

А потому уже можно думать:

Да , я так и сделал. Но ошибки Clock Interaction остались . 39 штук для ila clk_200 rising- clk_200 rising. И что с ними делать? Report Timing Summary выдал 7 ошибок setup в Intra-Clock Paths . Я попробовал переместить компоненты в окне Device, и снова сделать Report , но цифры ошибок только выросли. Да и не все можно переместить.
serg_k1
есть еще одна проблема. Принимаю данные счетчика на IDDR. так вот эти связи не разводятся.
Report DRC показывает
RTSTAT #1 Critical Warning 16 net(s) are unrouted. The problem net(s) are dat_AB/data_out[0], dat_AB/data_out[1], dat_AB/data_out[2], dat_AB/data_out[3], dat_AB/data_out[4], dat_AB/data_out[5], dat_AB/data_out[6], dat_AB/data_out[7], dat_AB/data_out[8], dat_AB/data_out[9], dat_AB/data_out[10], dat_AB/data_out[11], dat_AB/data_out[12], dat_AB/data_out[13], dat_AB/data_out[14] (the first 15 of 16 listed).
dm.pogrebnoy
Цитата(serg_k1 @ Mar 23 2015, 12:17) *
есть еще одна проблема. Принимаю данные счетчика на IDDR. так вот эти связи не разводятся.
Report DRC показывает
RTSTAT #1 Critical Warning 16 net(s) are unrouted. The problem net(s) are dat_AB/data_out[0], dat_AB/data_out[1], dat_AB/data_out[2], dat_AB/data_out[3], dat_AB/data_out[4], dat_AB/data_out[5], dat_AB/data_out[6], dat_AB/data_out[7], dat_AB/data_out[8], dat_AB/data_out[9], dat_AB/data_out[10], dat_AB/data_out[11], dat_AB/data_out[12], dat_AB/data_out[13], dat_AB/data_out[14] (the first 15 of 16 listed).


Вы подали внутренний счетчик на IDDR? Так делать нельзя, на IDDR могут заводиться сигналы только с входных буферов.
serg_k1
Цитата(dm.pogrebnoy @ Mar 23 2015, 15:31) *
Вы подали внутренний счетчик на IDDR? Так делать нельзя, на IDDR могут заводиться сигналы только с входных буферов.

да, это я понял. но мне нужно его тоже смотреть одновременно с внешними сигналами. Значит для него нужно делать что-то вроде того, что я делал сначала?
dm.pogrebnoy
Цитата(serg_k1 @ Mar 23 2015, 16:34) *
да, это я понял. но мне нужно его тоже смотреть одновременно с внешними сигналами. Значит для него нужно делать что-то вроде того, что я делал сначала?

Сделайте 4 счетчика с шагом 4.
serg_k1
Цитата(dm.pogrebnoy @ Mar 23 2015, 20:53) *
Сделайте 4 счетчика с шагом 4.

Спасибо. Я так делал. но счетчики то не цель. Просто хотелось попробовать с ними посмотреть. т.к. дальше будет 2 вх.частоты с шинами LVDS и внутренняя из sys_clk. итого 3 ila.
А получается следующее.
Когда есть один ILA т.е. под одну частоту 200МГц 4х16р=64р - все нормально без ошибок. Когда же я их разбиваю на 4 ila( меняю только частоту чтения фифо и ila - каждый под свою частоту счета, dbg_hub - один), то вылазит куча ошибок тайминга. присутствуют даже перекрестные сочетания, что мне вообще не понятно откуда они берутся. Ведь меняется только то, что после фифо. При этом если я оставляю один канал , то тоже все нормально. Т.е. получается , что не любит он работать с несколькими ila. либо я не то делаю. значит нужно все записывать в фифо, а далее считывать под одну частоту?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.