Alan Nishioka wrote:
> rickman wrote:
> > Currently I wanted to look at how fast it might run if I redid it for a
> > current FPGA architecture using synchronous memories. I compiled it
> > for a Spartan 3 and got the speed up to 77 MHz using less than 10% of
> > an XC3S400 (315 slices). I am not impressed with the speed. I
> > expected a much larger increase and had hoped for operation at over 100
> > MHz. I checked the timing analyzer output and the signal paths are
> > pretty much what I expected, no oddball logic generation and I got
> > carry chains where I wanted them. The slow paths have a few long route
> > times, so although it may approach 100 MHz with careful floorplanning,
> > I don't think this is worth the effort compared to the >> 100 MHz CPU
> > cores you can get from the FPGA vendors.
>
> This does not surprise me. Xilinx seems to have emphasized size over
> speed of Spartan as they update it. It is very difficult to get
> Microblaze to run at 100MHz in a Spartan 3E, so 77MHz without trying is
> about what I would expect.
I tried a couple of things, but I was not able to use the floorplanner.
I get a fatal error and it crashes. This may be due to it not being
able to phone home when it tries to reach out and touch someone. My
firewall blocks it and when I click the OK button the floorplanner
crashes.
I get different failing paths depending on some of the settings I make,
like the Starting Placer Cost Table setting. But the long path is
around 13 ns and has about the same amount of logic and routing delay.
Is that normal? These paths all start with a 2 ns clock to out from
the BRAM. Then there are typically two or three routes that are longer
than 1 ns, sometimes one is longer than 2 ns. I can't tell what is
weird about this since I can't really "see" it. This path is only 5
levels of logic with no carry chain. Others are 4 level of LUTs plus a
carry chain (although typically only the last few bits of a 16 bit
adder for some reason).
Timing constraint: TS_SysClk = PERIOD TIMEGRP "SysClk" 10 ns HIGH 50%;
24616 items analyzed, 84 timing errors detected. (84 setup errors, 0
hold errors)
Minimum period is 12.915ns.
--------------------------------------------------------------------------------
Slack: -2.915ns (requirement - (data path - clock path
skew + uncertainty))
Source: InstFtch/Mram_Inst_Ram1.B (RAM)
Destination: RegPsw/DebugIrqEn (FF)
Requirement: 10.000ns
Data Path Delay: 12.914ns (Levels of Logic = 5)
Clock Path Skew: -0.001ns
Source Clock: SysClk rising at 0.000ns
Destination Clock: SysClk rising at 10.000ns
Clock Uncertainty: 0.000ns
Timing Improvement Wizard
Data Path: InstFtch/Mram_Inst_Ram1.B to RegPsw/DebugIrqEn
Delay type Delay(ns) Logical Resource(s)
---------------------------- -------------------
Tbcko 2.394 InstFtch/Mram_Inst_Ram1.B
net (fanout=0) 1.792 InstFtch/InstReg<5>
Tilo 0.608 DecodeSlow/DatStkCntl<1>21
net (fanout=19) 0.758 DecodeSlow/N23
Tilo 0.608 DecodeSlow/FlagsEn<8>11
net (fanout=6) 0.369 DecodeSlow/N56
Tif5x 0.911 DecodeSlow/FlagsEn<8>_F
DecodeSlow/FlagsEn<8>
net (fanout=0) 1.241 DecodeSlow/FlagsEn<8>
Tilo 0.551 RegPsw/_not00141
net (fanout=5) 1.079 RegPsw/_not0014
Tilo 0.608 RegPsw/_not00211
net (fanout=1) 1.393 RegPsw/_not0021
Tceck 0.602 RegPsw/DebugIrqEn
---------------------------- ---------------------------
Total 12.914ns (6.282ns logic, 6.632ns route)
(48.6% logic, 51.4% route)
Is this normal for the routing delays to range so widly and total as
long as the logic delays?
This is with nothing else in the chip, so I can only imagine that the
path delays will get longer as I combine other logic inside the chip.
I'll give it a try in a Virtex4 part over the weekend and see if that
is faster.