From: Marc Jet on
Hi,

The Spartan3 datasheet is very light on the topic of interconnect. I
wonder how big the effect of fanout is, on the delay of a route. I'm
not talking about "high fanout" signals like CLK, but rather just
normal logic signals.

For example, in a design I can choose to use fanout=5 (easy), or
fanout=4 (with extra cost somewhere else). The distance of the route
is about the same in both variants. Will fanout=4 significantly
improve the delay of the route?

For reference, "significant" for me would be ~0.3ns or more.

Thanks,
Marc
From: Chris Maryan on
I don't have a complete answer to your question, but fanout delay is
generated primarily by switch boxes in Xilinx FPGAs. Switchboxes are
an integral part of routing and generating fanout, but I would guess
that for any reasonable design the dominant factor is the switchboxes
involved in routing switches, rather than those used to generate some
initial fanout on the output of a CLB. i.e. for a modest fanout, you
will go through one switchbox on the output to your CLB, but also
several more as your signal gets routed around the chip. I'd guess
this to be true for any signal that has sources and destinations that
aren't immediately adjacent to one another.

If you are really trying to squeeze an extra 300ps out of your design,
focus on pipelining and creating good area groups. If you really want
low delay routing, the switchbox next to each CLB is unaoidable unless
you find a way to use the carry chains, at which point your
destination has to be next to the source. Also, a large portion of the
fanout is generated along the routing, not immediately next to the
source, so it's hard to say exactly how fanout will be generated for
an arbitrary design. (i.e. it could be routed onto one line, then be
routed off that line at various points to other destinations, rather
than faning out at the source).

As an anecdotal data point, a high fanout net (~400 destinations) on a
V5 design I have handy show minimum delays of about 460ps and maximums
of around 9.7 ns. The key thing being that the 460ps destination is
right next to the source, while the 9.7ns destination is half way
across the chip. But this is a non-critical path for me, so I don't
care too much about max the delay.

For real insight into how all this works, find a mdeium-large design
and look at the routing in FPGA editor.

Chris
From: glen herrmannsfeldt on
Chris Maryan <kmaryan(a)gmail.com> wrote:
> I don't have a complete answer to your question, but fanout delay is
> generated primarily by switch boxes in Xilinx FPGAs. Switchboxes are
> an integral part of routing and generating fanout, but I would guess
> that for any reasonable design the dominant factor is the switchboxes
> involved in routing switches, rather than those used to generate some
> initial fanout on the output of a CLB. i.e. for a modest fanout, you
> will go through one switchbox on the output to your CLB, but also
> several more as your signal gets routed around the chip. I'd guess
> this to be true for any signal that has sources and destinations that
> aren't immediately adjacent to one another.

As I understand it, most FPGAs now use internal buffers on long
routing lines. That is why no more true tristate nets. (The tools
will implement them using a MUX structure, so maybe you don't notice.)

Otherwise, for current CMOS, the load is more the capacitance of
the lines, and not so much the driven devices. More fanout will likely
result in more wire capacitance, but so will a single long route.

Down to about 0.8u CMOS could consider the lines as lumped capacitance,
but past that a distributed RC model is needed. But with buffers along
the way, the calculation is somewhat different.

-- glen