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

39 minutes ago, BSACPLD said:

Коллеги, кто-нибудь сталкивался с такой ошибкой?

Попробуйте расширение *.dat

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


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

4 часа назад, BSACPLD сказал:

Коллеги, кто-нибудь сталкивался с такой ошибкой?

HEX и BIN в данном случае не тип(расширение) файла, а формат данных внутри их файла (вроде *.dat)

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


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

4 hours ago, BSACPLD said:

А формат обычный Intel HEX или Verilog HEX?

Приложил примеры файлов, взяты из установочного каталога среды PDS (комментарии в начале файлов надо удалить).

Каждая строка - это слово, шириной, равной ширине шины данных без всяких дополнительных префиксов (типа 0x, h или b) и без указания смещения.

Я через $readmemh делал, тоже работает. Там любое имя файла можно указывать.

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

 

P.S. В каталоге PDS, кстати, есть так же TCL-скрипты: окно конфигурации IP-ядер запускается через них, там вся логика обработки введенных параметров.

init_param_bin_exmp.dat init_param_hex_exmp.dat

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


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

6 hours ago, vsrb said:

Еще бы через скрипт научиться обновлять в уже готовом битстриме, чтобы при каждом изменении заново не запускать компиляцию

Для меня это тоже актуально.

Сейчас перешёл к написанию констрейнов.

Возник вопрос как прописать false_path между клоками с выхода PLL.

В Vivado я просто брал названия клоков из отчёта о времянках и писал их в set_false_path.

Здесь такое не прокатывает - PDS не может найти клоки по названию которое сам же написал в отчёте по таймингам.

Неужели вручную придётся прописывать клоки для каждого выхода PLL через create_generated_clock?

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


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

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

Неужели вручную придётся прописывать клоки для каждого выхода PLL через create_generated_clock?

Я так и делал, прямо как у Gowin.

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


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

Тогда ещё вопрос.

Как правильно констрейнить IDDR?

Скопировал рабочие констрейны с Xilinx/Fudan:

create_clock -period  7.200 -name {RXC_VIRTUAL[0]}
create_clock -period  7.200 -name {RXC[0]} [get_ports {eth_rxc[0]}]


# RGMII

set_false_path -rise_from [get_clocks {RXC_VIRTUAL[0]}] -rise_to [get_clocks {RXC[0]}]
set_false_path -fall_from [get_clocks {RXC_VIRTUAL[0]}] -fall_to [get_clocks {RXC[0]}]

set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -max  0.500 [get_ports {eth_rx_ctl[0]}]
set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -min -0.500 [get_ports {eth_rx_ctl[0]}]
set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -clock_fall -max -add_delay  0.500 [get_ports {eth_rx_ctl[0]}]
set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -clock_fall -min -add_delay -0.500 [get_ports {eth_rx_ctl[0]}]

set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -max  0.500 [get_ports {eth_rd[0]}]
set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -min -0.500 [get_ports {eth_rd[0]}]
set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -clock_fall -max -add_delay  0.500 [get_ports {eth_rd[0]}]
set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -clock_fall -min -add_delay -0.500 [get_ports {eth_rd[0]}]

set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -max  0.500 [get_ports {eth_rd[1]}]
set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -min -0.500 [get_ports {eth_rd[1]}]
set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -clock_fall -max -add_delay  0.500 [get_ports {eth_rd[1]}]
set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -clock_fall -min -add_delay -0.500 [get_ports {eth_rd[1]}]

set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -max  0.500 [get_ports {eth_rd[2]}]
set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -min -0.500 [get_ports {eth_rd[2]}]
set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -clock_fall -max -add_delay  0.500 [get_ports {eth_rd[2]}]
set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -clock_fall -min -add_delay -0.500 [get_ports {eth_rd[2]}]

set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -max  0.500 [get_ports {eth_rd[3]}]
set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -min -0.500 [get_ports {eth_rd[3]}]
set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -clock_fall -max -add_delay  0.500 [get_ports {eth_rd[3]}]
set_input_delay -clock [get_clocks {RXC_VIRTUAL[0]}] -clock_fall -min -add_delay -0.500 [get_ports {eth_rd[3]}]

И какое бы значение входной задержки я не ставил, всё время получаю ругань на hold:

image.thumb.png.4ead9669371a1dd7f844e5c3c033d4f0.png

Также смущает очень кривая оценка частот во время синтеза:

image.thumb.png.2d490149eda9a222018b87847d348d72.png

При этом финальные частоты получаются нормальные:

image.thumb.png.d7b4ee40148e29af9eea5bb889fb6d3a.png

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


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

Вот инфа из документации

Spoiler

2.2.2 Inputs/outputs command
In the creation command window and form of Set Input Delay and Set Output Delay, you can set the parameters of the "set_input_delay" and "set_output_delay" commands.

2.2.2.1 set_input_delay
In the Set Input Delay window, you can set the parameters of the set_input_delay command. The format of the command is as follows:

set_input_delay

-clock <clock_name>

[-clock_fall]

[-rise] [-fall]

[-max] [-min]

[-add_delay]

[-source_latency_included]

<delay_value>

<port_list>

[-disable]

 

The meaning of each parameter in the command is explained as follows. Square brackets indicate that the parameter is an optional value, and angle brackets indicate the parameter value or parameter list:

-clock: Indicates the name of its associated capture clock.

[-clock_fall]: Indicates that only the falling edge of the trigger clock is considered.

[-rise]: Only consider the rising edge of the input signal at input.

[-fall]: Only consider the falling edge of the input signal at input.

Note: If the user does not define either, the software will consider both the rising edge and the falling edge of the input signal at the input.

[-max]: Indicates that the user-defined delay value is the maximum value.

[-min]: Indicates that the user-defined delay value is the minimum value.

Note: If the user does not define either, the software will use the user-defined delay value in both maximum and minimum delay analysis.

[-add_delay]: If the user has previously set_input_delay constraints on the input port, then adding this parameter means that the software will retain the previously set constraint values.

[-source_latency_included]: Indicates that the clock source latency is already included in the value and does not need to be calculated again.

<delay_value>: Delay value, which is a floating point number and the unit is ns.

<port_list>: input port, must be obtained through get_ports.

[-disable]: Disable this constraint.

2.2.2.2 set_output_delay
In the Set Output Delay window, you can set the parameters of the set_output_delay command. The format of the command is as follows:

set_output_delay

-clock <clock_name>

[-clock_fall]

[-rise] [-fall]

[-max] [-min]

[-add_delay]

[-source_latency_included]

<delay_value>

<port_list>

[-disable]

 

The meaning of each parameter in the command is explained as follows. Square brackets indicate that the parameter is an optional value, and angle brackets indicate the parameter value or parameter list:

-clock: Indicates the name of its associated launch clock.

[-clock_fall]: Indicates that only the falling edge of the trigger clock is considered.

[-rise]: Only consider the rising edge of the input signal at the output.

[-fall]: Only consider the falling edge of the input signal at the output.

Note: If the user does not define either, the software will consider both the rising edge and the falling edge of the input signal at the output.

[-max]: Indicates that the user-defined delay value is the maximum value.

[-min]: Indicates that the user-defined delay value is the minimum value.

Note: If the user does not define either, the software will use the user-defined delay value in both maximum and minimum delay analysis.

[-add_delay]: If the user has previously set_output_delay constraints on the output port, then adding this parameter means that the software will retain the previously set constraint values.

[-source_latency_included]: Indicates that the clock source latency is already included in the value and does not need to be calculated again.

<delay_value>: Delay value, which is a floating point number and the unit is ns.

<port_list>: output port, must be obtained through get_ports.

[-disable]: Disable this constraint.

Spoiler

2.2.4.4 set_false_path
In the Set False Path window, you can set the parameters of the set_false_path command. The format of the command is as follows:

set_false_path

[-setup] [-hold]

[-from <from_list> | -rise_from < rise_from_list> | -fall_from <fall_from_list>]

[-through <through_list>]*

[-to <to_list> | -rise_to <rise_to _list> | -fall_to <fall_to_list>]

[-disable]

The meaning of each parameter in the command is explained as follows. Square brackets indicate that the parameter is an optional value, angle brackets indicate parameter value or parameter list, * indicates that the parameter can be repeated, | indicates the or symbol, and only one can be used for multiple options at the same level. :

[-setup]: Indicates that setup analysis is performed

[-hold]: Indicates that hold analysis is performed

[-from]: <from_list> represents the startpoint of the path, which can be obtained through get_ports, get_cells, get_pins, and get_clocks.

[-rise_from]: This parameter can only be specified as clocks, indicating that the starting point of the timing path is triggered by the rising edge of the clock. The rising edge of the clock here refers to the rising edge of the clock definition point.

[-fall_from]: This parameter can only be specified as clocks, indicating that the starting point of the timing path is triggered by the falling edge of the clock. The falling edge of the clock here refers to the falling edge of the clock definition point.

[-through]: <through_list> represents the intermediate point passed by the path, which can be obtained through get_cells, get_pins, and get_nets.

[-to]: <to_list> represents the endpoint of the path, which can be obtained through get_ports, get_cells, get_pins, and get_clocks.

[-rise_to]: This parameter can only be specified as clocks, indicating that the end of the timing path is triggered by the rising edge of the clock. The rising edge of the clock here refers to the rising edge of the clock definition point.

[-fall_to]: This parameter can only be specified as clocks, indicating that the end of the timing path is triggered by the falling edge of the clock. The falling edge of the clock here refers to the falling edge of the clock definition point.

  [-disable]: Disable this constraint.

 

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


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

1 hour ago, Gas Wilson said:

Вот инфа из документации

Так у меня же set_input_delay, что я написал, не противоречит документации...

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


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

С hold разобрался - у меня была неправильно выставлена задержка на входной ЛЗ. Увеличил с 78 до 100 и ругань на hold исчезла. Видимо я неправильно учёл задержку в клоковом буфере...

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


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

Всем привет! Кто-нибудь знает, где можно найти описание на IP ядро SEU, а именно "AN04001 PG2L100H SEU. Application Guide"? Самого ядра нет, соответственно и документации тоже. Еще интересует, кто-нибудь работал с инстансом GTP_IPAL_E2? Описание на него маловато, не совсем понятно как работает, в доках дают ссылку на вышеуказанный апноут. Заранее благодарю!

 

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


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

On 11/23/2023 at 10:14 AM, MartensA93 said:

Всем привет! Кто-нибудь знает, где можно найти описание на IP ядро SEU, а именно "AN04001 PG2L100H SEU. Application Guide"? Самого ядра нет, соответственно и документации тоже. Еще интересует, кто-нибудь работал с инстансом GTP_IPAL_E2? Описание на него маловато, не совсем понятно как работает, в доках дают ссылку на вышеуказанный апноут. Заранее благодарю!

 

К сожалению новее варианта нет.

AN04001 Logos2 SEU Application Guide_innek.pdf

Вот более актуальное

ips2l_seu_v1_8.iar UG042001_Logos2_SEU_IP.pdf

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


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

4 часа назад, Gas Wilson сказал:

Спасибо большое очень выручили, я думаю, это хотя бы позволит понять принцип работы этого GTP.

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


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

Коллеги, у вас не было такого бага, что все тайминги выполняются, но встроенный лог. анализатор не срабатывает на некоторые сигналы?

Либо наоборот ложные срабатывания.

Либо после загрузки прошивки пишет, что набор сигналов в ПЛИС и в проекте различается.

Директива syn_keep = 1 на нужных сигналах стоит, но, похоже, что Synplify все равно оптимизирует данные сигналы.

Иногда не до конца, иногда полностью их выкидывает...

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


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

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

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

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

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

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

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

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

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

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