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

Быстродействие блока и его имплементация в ПЛИС

Всем привет. У меня вот такие проблемы. 1. Как оценить быстродействие кастомного цифрового блока для ПЛИС Xilinx.

2. Как выполнить имплементациюотдельного блока на ПЛИС Xilinx без оптимизации и использования GPIO. Выполнить имплементацию на кристалле задав временные ограничения.

Какие еть возможности для этого в Vivado

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


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

Вроде бы тут нет каких-то особенностей, всё обычно. Наверное удобнее и правильнее всего написать простенький модуль-"обёртку" в качестве модуля верхнего уровня проекта, в нём инстанцировать ваш блок, подключив порты так, как надо. Скорее всего придётся придумать, как входные и выходные порты тестируемого блока сопрячь с портами ПЛИС, но это, как правило, не архисложная задача. Ну, и дальше синтез, PnR и смотреть отчёты по таймингам и утилизации.

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


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

добавить кастомный цифровой блок на топовый уровень с атрибутом (* dont_touch = "true" *)

примерно так

`timescale 1ns / 1ps

module top_lvl(input clk);

(* dont_touch = "true" *)
custom_dgtl_blk custom_dgtl_blk_i
(
    .clk(clk),
    .din(),
    .dout()
);

endmodule

для тактирования указать констрейн, примерно так

create_clock -period 5.000 -name clk -waveform {0.000 2.500} [get_ports clk]

 

атрибут dont_touch не позволит оптимизировать входные/выходные порты

image.thumb.png.91ae8d7874cfebb34fd1e5831dfe8e80.png

 

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

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


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

On 8/21/2024 at 9:54 AM, Garik said:

1. Как оценить быстродействие кастомного цифрового блока для ПЛИС Xilinx.

2. Как выполнить имплементацию отдельного блока на ПЛИС Xilinx без оптимизации и использования GPIO. Выполнить имплементацию на кристалле задав временные ограничения.

 

RTFM: UG901, page 27:

Quote

In the More Options section, you can type -mode out_of_context to have the tool not insert any I/O buffers in this level.

 

UG901, page 40:

OOC.png

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


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

27 minutes ago, stealthisname said:

добавить кастомный цифровой блок на топовый уровень с атрибутом (* dont_touch = "true" *)

примерно так

Плохой вариант для  оценки быстродействия и ресурсов.  

Правильно сделать как выше и предлагали  - тестовый топ с обязательными  доп. регистрами  на всех  входах и выходах вашего модуля. 
А чтобы  не напороться на нехватку пинов для такого то все эти доп. регистры можно сделать сдвиговыми  - тогда на топе будет всего 1 вход и 1 выход   ... 
 

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


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

В файле *.xdc нужно также указать:

set_property HD.CLK_SRC BUFGCTRL_X0Y4 [get_ports clk]

Или что-то похожее..

 

PS. UG905, page 16:

Quote

HD.PARTPIN_LOCS:
Defines a specific interconnect tile (INT) for the specified port to be routed. Overrides an HD.PARTPIN_RANGE value. Affects placement and routing of internal OOC logic.

HD.PARTPIN_RANGE:
Defines a range of component sites (SLICE, DSP, block RAM) or interconnect tiles (INT) that can be used to route the specified pin(s)/port(s).
This constraint is only valid for pins or ports that are do not have dedicated connections (for example, clocks or direct connections to top-level I/O pads).

 

PPS. UG905, page 3:

Quote

In the Vivado® Design Suite, these flows are based on the ability to implement a partitioned module out-of-context (OOC) from the rest of the design.
The following is a list of the current methodologies in the Vivado Design Suite.


• Module Analysis: This flow allows you to analyze the module independent of the rest of the design to determine resource utilization and perform timing analysis. No wrapper or dummy logic is required; just synthesize, optimize, place and route the module on its own. Perform resource usage analysis, inspect timing reports, and examine placement results just as you would for a full design.

 

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


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

3 часа назад, Garik сказал:

Всем привет. У меня вот такие проблемы. 1. Как оценить быстродействие кастомного цифрового блока для ПЛИС Xilinx.

Вариант 1. почитать даташит вытащить из него максимальные цифры и прикинуть запас.

Вариант 2. Примерно написать сюда что делает блок народ прикинет 🙂 

Вариант 3. Нарисовать реальный блок и закнуть в реальный криталл как советовали выши и посмотреть что напишет софт на тему максимальной частоты.

Но как по мне скорость разменивается на длину коныейера. 
Если тактовая не большая то сделать можно всё и как угодно 🙂

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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