Спасибо за ответ, прошу прощения за паузу, не был готов задавать вопросы.
Цитата(RobFPGA @ Jun 18 2018, 18:30)

В симуляции с PIPE в основном сложности с подключением веревок интерфейсов. Ну и некоторые нюансы с настройкой параметров для PCIe корки для работы с симуляцией PIPE (чтоб не ждать долго инициализации линка). К тому же у Xilinx немного разные наборы сигналов для разных версий PCIe. Ну и некоторые проблемы возникают при генерации корки. Если точнее то раньше можно было сгенерировать корку как обычно c MGT а потом уже при симе параметром выбирать интерфейс PIPE/MGT режим. А сейчас так не получается (на оптимизировали блин) либо генериш и симиш ее с PIPE, либо с MGT.
Если использовать для симуляции root-complex BFM такую же корку от Xilinx то особых проблем для коннекта с PIPE нет.
Вот тут начинаются непонятности. Изучение темы PIPE привело к следующему: PIPE - есть промежуточный внутренний интерфейс (придуманный Интелом) между MAC и физическим уровнем, некий аналог MII/GMII/SGMII и прочих для изернета. И хотя он называется PIPE - Physical Interface for PCI Express, он же используется и для USB, DisplayPort и других высокоскоростных сериальных интерфейсов (понятно, что в каждом случае со своими особенностями).
Т.е. это не какой-то виртуальный отладочный интерфейс, но вполне реальный, боевой. Он может быть как внешним, когда, например, к ПЛИС цепляется внешняя микросхема PCIe PHY (видел дизайн на Spartan3 + NXP PCIe PHY), так и внутренним - удобно передавать между вендорами и на уровне IP ядер в ASIC'остроении.
Понятно, что если решение монолитное, т.е. одна микросхема, в которой всё, то этот PIPE, если он там есть, является внутренним интерфейсом и наружу не высовывается за ненадобностью. Но в ряде случаев его можно использовать для отладки. Например, логичным выглядит при моделировании в симуляторе исключить из оного MGT блоки, которые, во-первых, сложны и эта сложность никак не помогает при функциональном моделировании, а только мешает, во-вторых, работают на высоких частотах, что будет сильно грузить симулятор совершенно без профита. Т.е. соединить тестируемые блоки напрямую через их PIPE интерфейсы, минуя MGT.
Вроде так, поправьте, если неверно понял.
Так вот, учитывая вышесказанное, просится задействовать PIPE для моделирования. В настройках PCIe IP ядра есть следующая опция:
о чём в доке (PG054) коротко и просто сказано:
• None: No PIPE mode simulation is available. This is the default value.
• Enable Pipe Simulation: When selected, this option generates the core that can be simulated with PIPE interfaces connected. This option is enabled for both Endpoint and Root Port configurations only when the Shared Logic (clocking) in example design option is selected (see Shared Logic, page 234).
• Enable External PIPE Interface: When selected, this option enables an external third-party bus functional model (BFM) to connect to the PIPE interface of the Integrated Block for PCIe. This feature has been tested only with BFM from Avery Design Systems (XAPP1184 [Ref 21]). For more information, see PIPE Mode Simulations, page 264.
Самое непонятное со вторым пунктом. Вроде сказано, что в этом случае рожается "core that can be simulated with PIPE interfaces connected". Но при этом никаких изменений в портах ядра по сравнению с вариантом None не видно. Где там PIPE интерфейс, которые можно законнектить с ответной частью? Что понимается под PIPE simulation?
Такой интерфейс появляется в третьем случае, про который прямо сказано, что это для коннекта с "external third-party bus functional model". Изучая ваш шаблон, пришёл к выводу, что вы-то как раз этот вариант и используете. Или нет? Судя по сигналам, таки да.

Но тогда не понятно, откуда взялась BFM от Xilinx для этого варианта, если они сами отсылают к сторонним. Кстати, апноту, а которой они отсылают (XAPP1184), изучил, там всё более-менее понятно, только вот самой модели тоже нет и ссылка к ней [очевидно, давно] протухла. Да и не больно-то и хотелось.

Я пробовал все три варианта. Во всех случаях соединение идёт через GT, время прогона одинаковое. Т.ч. по факту оно ни на что не влияет. Что-то сделал не так?
Правильно ли я понял про
Цитата(RobFPGA @ Jun 18 2018, 18:30)

В симуляции с PIPE в основном сложности с подключением веревок интерфейсов.
что тут речь идёт именно о третьем варианте (Enable External PIPE Interface), где нужно потроха pipe_tx/rx_n_sigs и common_commands_in/out раскидать на правильные сигналы и подключить их к ответной стороне?
Цитата(RobFPGA @ Jun 18 2018, 18:30)

Ну и некоторые нюансы с настройкой параметров для PCIe корки для работы с симуляцией PIPE (чтоб не ждать долго инициализации линка)
А можно поподробнее: что тут конкретно делается?
Ну, и про симулятор. Каким вы пользуетесь? Вообще и в частности для моделирования PCIe. Компиляция библиотеки для PCIe хочет зашифрованный файл из secureip, и это вызывает сложности с использованием сторонних симуляторов совместно с современной версией Vivado (текущая хочет Model/Questasim 10.6с, которого не найти).
И последний вопрос: есть ли какие-либо проблемы с синтезатором? Ну, например, на одних версиях работает, на других нет? Периодически вижу, как народ жалуется, что вот выходит новая версия вивады/квартуса, и проект перестаёт собираться и/или работать. Вы на какой версии успешно это синтезировали?
«Отыщи всему начало, и ты многое поймёшь» К. Прутков