Цитата(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 прописано. Что еще нужно?