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

Большая задержка от ALTDDIO до логики в Cyclone V

Коллеги, подскажите, пожалуйста, в чем может быть дело.

ALTDDIO подключен к триггеру:

rx_ddr			#(
				.WIDTH         (1),
				.FPGA_VENDOR   (FPGA_VENDOR),
				.DEVICE_FAMILY (DEVICE_FAMILY)
				)
				
				rx_ddr_0 (
				.datain    (ser_in),
				.inclock   (clk_sys_2x),
				.dataout_h (ser_in_2x[0]),
				.dataout_l (ser_in_2x[1])
				) ;

always @(negedge clk_sys_2x) begin
	ser_in_2x_reg <= ser_in_2x ;
end
altddio_in		#(
				.intended_device_family (DEVICE_FAMILY),
				.invert_input_clocks ("ON"),
				.lpm_hint ("UNUSED"),
				.lpm_type ("altddio_in"),
				.power_up_high ("OFF"),
				.width (WIDTH)
				)
				
				RXDDR (
				.datain (datain),
				.inclock (inclock),
				.dataout_h (dataout_h),
				.dataout_l (dataout_l),
				.aclr (1'b0),
				.aset (1'b0),
				.inclocken (1'b1),
				.sclr (1'b0),
				.sset (1'b0)
				) ;

Задержка от ALTDDIO до триггера какая-то огромная получается.

846959781_2020-04-2816-33-43.thumb.png.a6f23f797b41679ed5beeb5ce41ac26e.png

Этот же код спокойно даёт 400МГц в Cyclone IV E и MAX 10, а в Cyclone V получается от силы 150МГц :(

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


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

А не та же проблема, с которой я давно сталкивался ? 

 

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


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

7 hours ago, andrew_b said:

HMCPHY_RE

Нда...

Похоже эта самая гадость.

Проблема с большой задержкой лишь по нескольким пинам.

Остальные нормально укладываются в тайминги.

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


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

Пытаюсь решить проблему через мультициклы.

1. Собираю проект без мультициклов.

TQ ругается на задержки.

2. Прописываю мультицикл.

set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2

set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2

TQ перестает ругаться на задержки.

3. Собираю проект с новым sdc.

TQ опять ругается на задержки.

???????????????

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


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

6 минут назад, BSACPLD сказал:

Пытаюсь решить проблему через мультициклы.

1. Собираю проект без мультициклов.

TQ ругается на задержки.

2. Прописываю мультицикл.

set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2

set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2

TQ перестает ругаться на задержки.

3. Собираю проект с новым sdc.

TQ опять ругается на задержки.

???????????????

Судя по описанию Вы работаете с кодировкой 8b/10b. Вы можете подвигать фазу PLL для этих ножек. И по тестовым паттернам найти стабильный приём. 

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


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

Там гораздо хитрее чем 8b/10b.

Самодельный приемопередатчик с автоопределнием момента семплирования входного сигнала (передискретизация в 4 раза).

Проблема именно в переходе от DDIO к логике.

Этот модуль замечательно работает на 400МГц в Cyclone IV E и MAX 10.

А вот с Cyclone V пока проблема.

Точнее в железе все работает.

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

rx_tx_8b_10b.7z

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


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

Получилось :)

Я забыл еще на hold мультицикл прописать :(

Вот так нормально собирается:

set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2
set_multicycle_path -from {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2
set_multicycle_path -from {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2
set_multicycle_path -from {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2
set_multicycle_path -from {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2
set_multicycle_path -from {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2
set_multicycle_path -from {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2
set_multicycle_path -from {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2

set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2
set_multicycle_path -from {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2
set_multicycle_path -from {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2
set_multicycle_path -from {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2
set_multicycle_path -from {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2
set_multicycle_path -from {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2
set_multicycle_path -from {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2
set_multicycle_path -from {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2

set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1
set_multicycle_path -from {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1
set_multicycle_path -from {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1
set_multicycle_path -from {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1
set_multicycle_path -from {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1
set_multicycle_path -from {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1
set_multicycle_path -from {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1
set_multicycle_path -from {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1

set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1
set_multicycle_path -from {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1
set_multicycle_path -from {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1
set_multicycle_path -from {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1
set_multicycle_path -from {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1
set_multicycle_path -from {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1
set_multicycle_path -from {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1
set_multicycle_path -from {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1

 

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


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

6 hours ago, BSACPLD said:

Получилось :)

Я забыл еще на hold мультицикл прописать :(

Вот так нормально собирается:

ЕМНИП когда пишется еще и hold, то это честный мультицикл, описывающий, в вашем случае, "понижение" тактовой в 2 раза, а вот задержка как раз, описывается только через мультицикл с setup. Подозреваю что ваше получилось это "ква больше не ругается", а не то что вы думаете) 

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


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

8 часов назад, BSACPLD сказал:

Я забыл еще на hold мультицикл прописать :(

Вам правильно des00 сказал. У вас корректная задержка от 0 до 2-х тактов, а вы вероятно каждый такт данные забираете.

Лучше бы разобрались с путями из-за которых такая задержка получается.

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


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

2 hours ago, dvladim said:

Лучше бы разобрались с путями из-за которых такая задержка получается.

Так после DDIO сразу идет триггер.

Там больше ничего нет.

rx_ddr			#(
				.WIDTH         (1),
				.FPGA_VENDOR   (FPGA_VENDOR),
				.DEVICE_FAMILY (DEVICE_FAMILY)
				)
				
				rx_ddr_0 (
				.datain    (ser_in),
				.inclock   (clk_sys_2x),
				.dataout_h (ser_in_2x[0]),
				.dataout_l (ser_in_2x[1])
				) ;

always @(negedge clk_sys_2x) begin
	ser_in_2x_reg <= ser_in_2x ;
end

 

2 hours ago, dvladim said:

У вас корректная задержка от 0 до 2-х тактов, а вы вероятно каждый такт данные забираете.

Данные я забираю каждый такт, но частота изменения данных в 4 раза ниже частоты семплирования данных.

Высокая частота семплирования нужна чтобы в цифре можно было динамически выбирать момент семплирования данных.

Что-то вроде управляемой ЛЗ.

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


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

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

Так после DDIO сразу идет триггер

Это вы приводили, я имел ввиду детальный путь от STA. На чем набегает задержка? Вы указывали 150 МГц. Т.е. около 6.5 нс. Вот с этим и нужно разбиратья.

9 минут назад, BSACPLD сказал:

Данные я забираю каждый такт, но частота изменения данных в 4 раза ниже частоты семплирования данных

Насколько я понял у вас 8-ми разрядная шина. При -setup 2 -hold 1 разные разряды могут попадать из разных отсчетов.

Ну если вас это устраивает...

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


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

3 minutes ago, dvladim said:

Насколько я понял у вас 8-ми разрядная шина.

Нет. Это 8 независимых 1-битных линков.

Текущий проект это что-то вроде роутера Ethernet в 8 независимых LVDS линков.

10 minutes ago, dvladim said:

Вы указывали 150 МГц. Т.е. около 6.5 нс. Вот с этим и нужно разбиратья.

Вот отчет.

На 150МГц собирается без мультициклов.

На 300МГц нужно ставить мультицикл 2.

print.pdf

Снимок экрана от 2020-04-30 12-18-50.png

Снимок экрана от 2020-04-30 12-19-21.png

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


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

У вас на  LABCELL_X23_Y3_N33 набегает 4.8 нс.

Добавьте конвейерные триггера в позицию X53_Y1. Дальнейшее расхождение времянок можно скомпенсировать фазами PLL.

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


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

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

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

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

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

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

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

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

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

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