Поиск
Показаны результаты для тегов 'pblock'.
-
Приветствую! Появилась необходимость работы с US+ с несколькими кристаллами (3...4 SLRs) Для уменьшения рантайма P&R да и в целом, чтобы помочь вивадо повысить QoR хочу вручную назначить по SLR где какой блок должен лежать (ранее не доводилось работать с SLR), в связи с чем появились несколько вопросов, но перед этим пару слов о самом дизайне: дизайн представляет собой соединение в единый datapath (выход одного модуля подаётся на вход другого моделя и так далее по цепочке) достаточно крупных модулей (~200k LUT), причем в некоторых модулях (назовём его модуль_с_bigDSP) может быть высокое использование независимых примитивов (например ~80% всех имеющихся на кристалле DSP48). частоты > 400 МГц. Дизайн использует один тактовый домен, используется одно направление передачи данных по цепочке модулей (datapath без какого-либо handshake). Вопросы: ----------------------------------------- 1. PBlock: поскольку разные PBlock'и не могут содержать одни и теже SLICE (и другие ресурсы), то непонятно как сделать следующий финт ушами: Вариант А: Допустим для первого приближения было бы достаточно просто указывать на каком SLR располагаться какому модулю (без нарезки конкретных регионов внутри SLR), а там бы вивадо сам бы расплейсил как ему удобно. притом модуль_с_bigDSP мы никакак не ограничиваем прявязками, чтобы он рассредоточился по всему кристаллу Вариант Б: Мы жёстко привязываем модули к конкретным PBlock внутри SLR, притом модуль_с_bigDSP вручную разрезаем на равные числу SLR части для использования всех имеющихся ресурсов DSP48, делаем новым частям модуль_с_bigDSP также PBlock с распределением по всей площади конкретных SLR Вариант В: Жёстко привязываем модули к конкретным PBlock внутри SLR, притом модуль_с_bigDSP не привязан ни к одному PBlock и будет заплейсен автоматом поверх уже имеющихся PBlock (критерий для плейсмента - наличие достаточного числа необходимых ресурсов DSP48. В этом варианте упор делается на то, что плейсер вивадо сам знает "как лучше" ( в 1ю очередь с т.з. времянок) и создавать ему искусственные ограничения, разрезая руками модуль_с_bigDSP не совсем правильно. PS: знаю что есть возможность создавать PBlockи из независимых примитивов вроде DSP48, но рядом с DSP48 нужна логика, иначе тайминги будет свести нереально из-за длины цепей ----------------------------------------- 2. Продолжение пп.1: осуществимо ли вышеописанное, если всю имплементацию разбить на 2 прохода: 1й: синтез модулей out-of-context с нужной привязкой по PBlock 2й: синтез/P&R топа с (частично) перекрывающимися PBlock ? ----------------------------------------- 3. Laguna: гайд для частот свыше 250МГц требует вставки между разными SLR трех стадий регистров: один на передающей стороне, второй - как часть передатчика (внутри лагуны) и третий уже на другом SLR для приёма сигнала через SSI: мне было бы удобнее реализовать все эти три стадии внутри модуля (на выходе), но если модуль будет обконстрейнен на конкретный PBlock - сможет ли вивадо "вытащить" за границы этого PBlock регистры для лагуны и для следующего SLR либо вивадо не поймёт зачем я их запихал в модуль и будет жестко выполнять гайд по плейсменту внутри указанного PBlock?