Цитата(SIA @ Oct 8 2011, 15:30)

Этого я с технической точки зрения не понимаю - ключи-то все равно в кристалле есть, ими все межсоединения конфигурируются. Смысл отключать к ним доступ и урезать возможности (т.е. снижать конкурентоспособность) продукта?
Сам долго голову ломал: такая клёвая штука внутренний BUFT, и на тебе, в Spartan-3/3e/3a исчезли ! - а потом пришло и осознание, почему и зачем это всё исчезло:
Вообще-то никаких BUFT и не было никогда... а был WAND (Wired AND). А если быть еще более точным, то была груда внутренних Open Drain элементов (гордо названных) BUFT, а с обоих концов кристалла (Spartan-2E или Virtex-E) были Pull-up резисторы. Обычно использовался только один Pull-up на группу "BUFT", соответственно, на одной горизонтальной группе long lines можно было организовать не более 2 груп "BUFT".
Вот тут всё самое интересное и вылезло: оказывается если привесить много "BUFT" и, тем самым, сделать длинную линию, то скорость нарастания фронта получалась - отвратительной (слишком большая распределённая ёмкость, и слишком слабая подтяжка). Чтобы хоть как-то это компенсировать для Spartan-2E или Virtex-E был рождён специальный constraint
Double, который принудительно заставлял использовать
оба Pull-up (при этом использовалась вся горизонтальная группа long lines, вне зависимости от количества реально подключенных "BUFT").
Но даже при всех этих ухищрениях, временные параметры такой линии были слабыми и достаточно тяжело предсказуемыми. Поэтому, при росте размеров кристаллов (в CLB) пришлось отказаться от этих элементов. В виде компенсации мы получили бОльшее количество RAMB, значительно лучшие частотные параметры LUT и FF, аппаратные умножители, а в случае Virtex-4 и Spartan-3A DSP, еще и DSP блоки.
P.S. На Spartan-2/2E и Virtex-E работал с BUFT на 33.(3) МГц (шина PCI) - проблем не было.
Цитата(dxp @ Oct 8 2011, 15:41)

Ну, FPGA c тристабильными шинами - это нынче редкость, вон меня поправили, что и в толстых ПЛИСах этого нынче нету. Дороговато получается, видимо.
Не-е-е, тут не в цене дело, Xilinx мотивировала отказ от внутренних BUFT, невозможностью их использования при "больших" частотах. Конкретную границу я там и не нашел, но вроде до 50 МГц еще можно было что-то сделать, а далее - уже проблематично.
Цитата(dxp @ Oct 8 2011, 15:41)

Распределённая память - штука хорошая, но тоже к месту, и не так уж много случаев, когда без неё не обойтись. К тому же, она тоже не бесплатно даётся - ведь нужно к LUT помимо загрузочного интерфейса, который позволяет в неё писать, приделать оный, который позволит это делать на рантайме. Очевидно, что делать каждую LUT такой слишком расточительно, а немало дизайнов прекрасно обходятся без такой памяти - большие объёмы лежат в блоковой, а где надо мелкие, там и на триггерах можно (хотя это, конечно, транжирство, но, как правило, в ПЛИС достаточно ресурсов, чтобы позволить себе несколько таких блочков памяти).
Поэтому, начина со Spartan-3 возникло разбиение Slice на SliceM (там, где LUT может быть RAM или Shift Register) и SliceL (в которых LUT - это только LUT). В современных ПЛИС Xilinx на один SliceM приходится где-то от 3 до 7 SliceL.