Spartan 3 - avaliable in small quantities?

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From English to

Threaded View
I have read several posts here about the difficulties to get Spartan 3
parts in small quantities.

Is it realistic to start a project using spartan 3 (actually the XC3S50
in the VQ100 package is what I probably want to use) when I only need
small quantities - starting with getting some 10 samples, in full
production lets say 100 to 500 pieces per year?

Thanks for opinions,

Thomas

Re: Spartan 3 - avaliable in small quantities?
I would suggest that past history of Xilinx should be taken here you won't
get any for a year after the announcement!
there aren't any unless you have a spare million so don't bother asking :-)


Quoted text here. Click to load it



Re: Spartan 3 - avaliable in small quantities?
Quoted text here. Click to load it

Where would you buy them?  What do they say?  Can you get
samples now?

Are there any features on the Spartan 3 that you absolutely need?
(Can you use some other chip?)

What are the costs of alternatives?  What are the costs of
not being able to get the chips when you need them?

How long is it going to take you to do the design?  (When
do you absolutely need the samples?)  Can you work on the
design with two plans in mind and make the choice a month
or two from now?


My rule of thumb is to not design in a chip unless I have parts
in hand or a distributor has stock that I'm sure I can get.

If an interesting chip has some features that would make a
project a lot better (or even possible), then you have to decide
if you want to stick your neck out.  Do you like fighting with
not-quite-debugged tools?  Do you have good contacts at the vendor?

--
The suespammers.org mail server is located in California.  So are all my
other mailboxes.  Please do not send unsolicited bulk e-mail or unsolicited
We've slightly trimmed the long signature. Click to see the full one.
Re: Spartan 3 - avaliable in small quantities?
Quoted text here. Click to load it

I don't know that the Spartan 3 parts are a major step forward in
FPGAs.  From what I can see, the main difference is the elimination of
the huge startup currents on power up.  The marketing claim is that
these will be much cheaper parts because of the small die.  But so far,
I don't think anyone has seen the results of this.  

If you design in a Spartan 3 based on quoted pricing today, you are not
likely to see that price drop at any time through the life cycle of the
part.  

--

Rick "rickman" Collins

snipped-for-privacy@XYarius.com
We've slightly trimmed the long signature. Click to see the full one.
Re: Spartan 3 - avaliable in small quantities?

Quoted text here. Click to load it


I don't know about that, Xilinx initially set expectations low except
on price. I heard Microblaze only ran at 85MHz on it compared to
120MHz or more on bigger Virtex.

But on a cpu project I am working on I am seeing synth reports of
311MHz on sp3-5 with the latest speed file v 320Mhz for v2pro-8 and
the -7s seem to be same speed as sp3-5 IIRC. The sp2-4s are way down
to 120MHz. Seems as if its v2 made dirt cheap (if and when we get
them) with a small cut in speed. Also the LUT counts are similar to
sp2 but the blockrams are 4x bigger.

I can still port back to sp2(e) with almost same floor plan but with
much smaller ram instances although lots of 4ks could still be more
usefull than equiv no of 16/18Ks but the speed cut would hurt.

For an oldtime VLSI guy, I couldn't imagine getting such performance
on an ASIC flow without 100x the design resources.

johnjakson_usa_com

Re: Spartan 3 - avaliable in small quantities?

Quoted text here. Click to load it

John,

I'd check your report files closely if I were you. If you are seeing
311MHZ on a Spartan 3 something is very wrong. I suspect that your
synthesizer discarded most of your design. My experience sith Spartan
XC3S400-4s is that they are much slower than Virtex2Ps (-5 is the V2P that
I'm comparing it to). I'm able to get the Spartan 3s to meet 140MHz timing
but that is with very few logic levels between pipeline stages. I'm sure
that with lots of floorplanning it would be possible to push it higher
than that but certainly not to 300MHz, especially not on something as
complex as a CPU.


Re: Spartan 3 - avaliable in small quantities?
Quoted text here. Click to load it

Hi Rick

I know what you are saying. When I first presented my paper cpu
architecture to XST, the situation looked hopeless. I backed of and
built a no of test projects that only included 1 object that was
pushed to the max bringing all IOs to the pads. The synth reports are
then crystal clear even for someone with little exp of the tool
before. I also look at the layout and placement to see if it looks
kosher. It did. From that I had a feel for what each Xilinx device

Re: Spartan 3 - avaliable in small quantities?
Quoted text here. Click to load it

Hi Rick

I know what you are saying. When I first presented my paper cpu
architecture to XST, the situation looked hopeless. I backed of and
built a no of test projects that only included 1 object that was
pushed to the max bringing all IOs to the pads. The synth reports are
then crystal clear even for someone with little exp of the tool
before. I also look at the layout and placement to see if it looks
kosher. It did. From that I had a feel for what each Xilinx device

Re: Spartan 3 - avaliable in small quantities?
Joshua replied:

Quoted text here. Click to load it

Hi Joshua, Rick

Hopefully 4th time lucky, my girls are helping me way too much. With
google I don't know what happened for several hours, I am sure a
couple of half posts are infront. Apologies. Long replay warning.

I know what you are saying. My 1st paper cpu arch when presented to
XST gives me little clue where to start. I always used to work on
ASICs in teams where I write Verilog & C models and someone else (far
less speed/area motivated) bangs the FPGA tool. With Virtex800 exp
only at <30MHz I never had that great an expectation to start with, I
always had way too much logic in each pipeline but we only needed
30MHz. There was no time to explore speediac style and reduce logic as
it was ASIC prototyping.

Ray Andraka's work on super pipeling everything DSP left me wondering
if a cpu could also go as fast. Usually not so because there are way
too many random blocks of logic covering many adjacent pipelines. This
is why MicroBlaze is stuck in the 120MHz zone, I could probably guess
(reverse engineer) the code used for the datapath if I really studied
the ISA.

But the Alpha chip and ofcourse now the x86s are also deeply
superpipelined but more complex than can fit in any FPGA (or maybe
not). Now I am free to explore the boundaries and see what can be done
on a clean sheet at max freq.

I am also following very late after Philip and Jans work on FPGA cpus
from the 4000 days but even Jan got 30MHz on 4000s along time ago.
Since I am coming from cpu & DSP background, I wanted Alpha speed but
on a better architecture for par programming ie a modern Transputer.

I built a no of test projects that only included 1 instance of a real
pipelined blockram, or adders of varying widths, and so on. I also
play through the device type list and try sp2s through to v2pro with
varying speed grades and even different packages since the reports
only take 20s for such simple models. The last speed file posted by
Austin made a huge difference bringing sp3 close enough to v2pro that
the differences is marginal, only -8 pulled ahead another 5%. The sp2s
remain at the lower end of 100-200MHz which is what I expect for these
simple pipes.

I always study the report and generate the layout. Everything looks
kosher but the layout always looks haphazard. So I learn to use the
floorplanner and write C code to make the .ucf file for FF placement.
On occasion a stupid typo would whip up the speed to 700Mhz or
something, and voila most of the top level would be missing but then
the report usually says as much in bright red or yellow. I only allow
a few yellow marks for known issues beyond my control like the unused
parity bits of blockram instance. Any more than that requires
immediate fixing.

Now that I have my expectations set right I know that a Blockram can
cycle at around 320MHz on various sp3 -5 devices. Infact the ds99.pdf
IIRC says as much. A 32b plain adder is 250MHz, that needs pipelining
work to get to 300MHz plus. I ended up with a 12,10,10.msb width
3stage 32b add. I really wanted to do a faster 2 stage carry select
design but XST always seem to hack it into something less. Trivial
things like generating CVNZ flags become trouble at that speed, I end
up piping that as well since you can only do 3 LUT layers of logic or
a 12b registered add or 12b logic fn() or a BRam cycle and ZERO
combinations of these.

This is only possible because the cpu design is 4 way hyperthreaded
with 1 nice hazard path, so that all the datapath pipes are as
decoupled as they would be in any DSP engine. Only the instruction
decode has some local coupling but again it has no wide adds or big
rams so its looking doable and it is also Nway threaded. I have more
work to do but I never add more logic in series with my critical
blocks. If I get to 4 LUT/mux levels I immediately drop out of warp
speed back to 250MHz or even way less and that makes the other stuff
that is fully pipelined redundant. Any time my speed drops below
311MHz, I know I just added a 4th LUT level, track it down and redo it
till its 3 or less. This usually requires working on that module in
isolation, keeping its speed as much as possible over my target.
Further I can not allow any module to have unregistered IOs however
painful that is with out tracking that at a global level. The 3 levels
of LUT logic is almost always in one place inside a module between 2
pipes. The Verilog code is a mix of structural & RTL style, assigns
for wiring and always @ for the FFing.

This is really the same deal with the fastest VLSI cpus that are
limited to 10 levels of low fanout gate level logic. Seymour was doing
this in ECL 40yrs ago. A LUT counts as 3 levels of gate logic so close
enough 10gates.

I will report on the work as it gets closer to live results. I know I
can download to an sp2e dev board for about 200MHz or way less but by
the time the cpu C & Verilog models can run code and I have the lcc
compiler done, gee I might have a sp3 -5 dev board to play with. The
intended market is licensing to high end users for embedded & par
computing. I am even tempted to max the datapath to 64b as it only
adds 3-4 pipestages and not much to the control.

The LUT count is still below 500. and is mostly going to control, a
64b Alpha path would balance it more to computing, but thats another
story. My only concern is how much power 1 cpu <800 LUTs or FFs will
dump. I use 2BRams per cpu instance, so I am just about to lose having
2 in an sp 50. The bigger sp's though are more on the LUT side.

Regards all

johnjakson_usa_com

Re: Spartan 3 - avaliable in small quantities?
<interesting stuff snipped>
Quoted text here. Click to load it

  Sounds to me like something you could negotiate
a job at Xilinx doing :)

  Their marketing dept would just LOVE to boast about 300+ MHz
CPU cores, even if that is 'very peaky'. (after all, so are the
alternatives)

  Key question is what code size is this working from ?

-jg


Re: Spartan 3 - avaliable in small quantities?
Quoted text here. Click to load it

I am sure anyone would love to get a cpu at 300MHz in FPGA but the
arch will be on my terms. The code base is remarkably small v previous
projects I have worked on, the Verilog is <4K IIRC sofar. It will get
bigger for control logic. 1st pass will defer some opcode complexity
to xops as TI9900 once called them ie low overhead low address
subroutines. That will reduce performance of OS message passing
scheduling specific code by 4x or so but its easier to write asm than
design HW. Later FPGA space permitting most of that will get hardened.

Note there is almost no HW needed for hazard detection, no bra
prediction, no pipeline flushing. Just like a DSP really. Other than
that the cpu looks more like 4 78MHz classic Ld St Risc cpus
timesharing the HW (and the cache unfortunately). Actually the
performance on paper should compare well to x86 at 1.5 the clk ie
500MHz x86 but the cache size is a real limit here. I still have to
design cache & TLB HW. Associative HW really costs.

Note that all ccbranches take 0 cycles as they group onto non bra
opcodes. So it may well run smaller loops at effective 400MHz if every
4th op is a bra. Its also a joy to count cycles based on bandwidth the
opcode actually uses, so ccbra really uses 1/8 or 1/4 cycles but from
slack time. And add a<-b+c would actually use 9/8 since the opcode
fetch is another 1/8 from slack time. But a cmp a,b would be 5/8 since
the unused write back gives back 4/8 cycles. Ofcourse the ops really
run in integer cycles, but there are queues to be filled and that uses
slack cache memory ports. The actual non Transputer ISA is actually
quite soft, I can mess with opcode encodings at will since as we all
know, cpus only do movs these days (yeh right).

The arch should port to any FPGA that supports true dual port
2WW/2RR/2RW BlockRams, not really using any other special features.
SRL16 nice if available. This also means it can be ASICed where I
would expect it to run atleast 3x faster as long as the libs include
prebuilt DP Ram as that is always the 1st limit. Other adder width
limits can be worked around. Some time I will get around to trying
free Quartus but I wish they would drop the IP node nonsense.

I am really pushing to get the Transputer arch back in front since
that allows many cpus to work in harmony with the message passing
scheme. It worked well before but Inmos folded up for bad engineering
& business reasons not because the basic premise was unsound. At one
time before 486 came along it was the dominant 32b arch esp in Europe
and very popular with HW embedded & extreme computing types. Occam was
a killer though, most SW types didn't get it although in hindsight I
see it now as a Forthy/Lispy HDL language.

I address that issue by suggesting it be programmed in V++ a language
which just combines std C with Verilog event driven language. It also
includes the Occam primitives Par, Alt, Seq, and !? operators to round
out but using C syntax. HandelC does the same thing and is a SW & HW
language too. I am about half way done on that using lcc as the base
technology. Have to get back to tree generation and code emit. Std lcc
can't just be hacked the way Jan did on XSOC because of the need to
include the Par support. The runtime is really a tiny OS with
scheduler, basic memory management in SW etc. The compiler is actually
90% of the project effort and the HW is almost the easy part,
certainly the fun part. I would like to transfer the compiler workload
pronto but few compiler writers know about Verilog internals etc.

The big kicker here as I keep saying is that end user code can be
written in any of the 3 styles, maybe start in C and rewrite parts in
Occam style message passing to get more parallelism. For real speed
ups rerwite in HDL style and voila the SW can be synthed with any free
FPGA synth tool into something like a coprocessor. Fits in very well
the good article the Altera guy linked here a few days ago on another
thread.

Better get back to work

johnjakson_usa_com

508-4800777

Re: Spartan 3 - avaliable in small quantities?
Quoted text here. Click to load it

Sure, but the more pipeline stages you add, the longer the latency is
for each instruction. How many cycles latency will there be for a
single add instruction? Do you intend to make sure that the number of
threads is equal to this latency, so that the latency as perceived the
thread executing the instruction is 0?

What's your cache / memory architecture? Handling lots of threads
could be tricky.

Cheers,
JonB

Re: Spartan 3 - avaliable in small quantities?
snipped-for-privacy@beniston.com (Jon Beniston) wrote in message
Quoted text here. Click to load it

I just posted a very long reply but the server just xxxxed it so I
will write it again later offline.

Quick answer yes, HT must match 4 or 8 etc. Cache architecture is
currently 1 way set associative, but more Blockrams would allow more
ways. Question of whether the FPGA should hold lots of lite cpus or 1
monster cpu or maybe combinations of both!

Regards

johnjakson_usa_com

508 4800777 EST after 8pm

Re: Spartan 3 - avaliable in small quantities?
John,

In my experience, the stumbling block for custom CPUs is not so much the
hardware as it is the compiler for
it.  I did a small microcontroller for a XC4036E design several years back that
ran at 66 Mhz.  It was a
pretty simple machine that was sort of a cross between a PIC and an RCA1802 in
that it used a 16 deep
register file like the 1802, and it was a harvard architecture like the PIC.  
Like the 1802, the operands
for the ALU were fetched from the register file and results returned to the
register file.  The beauty of it
was that for control applications, you often did not even need any memory beyond
the register file.  The
processor size was about 80 CLBs (translates to 80 slices in current
architectures).   I'm not a compiler
person, so the big difficulty I had with it was the compiler.

I suspect that the difficulty for just about any home grown processor is going
to be the tools to compile the
code for it, although folks who are more saavy than I on the software side might
argue that the high speed
hardware design is the hard part.


john jakson wrote:

Quoted text here. Click to load it

--
--Ray Andraka, P.E.
President, the Andraka Consulting Group, Inc.
We've slightly trimmed the long signature. Click to see the full one.
Re: Spartan 3 - avaliable in small quantities?
Quoted text here. Click to load it
hardware as it is the compiler for
Quoted text here. Click to load it
that ran at 66 Mhz.  It was a
Quoted text here. Click to load it
that it used a 16 deep
Quoted text here. Click to load it
Like the 1802, the operands
Quoted text here. Click to load it
register file.  The beauty of it
Quoted text here. Click to load it
beyond the register file.  The
Quoted text here. Click to load it
architectures).   I'm not a compiler
Quoted text here. Click to load it
to be the tools to compile the
Quoted text here. Click to load it
might argue that the high speed
Quoted text here. Click to load it

  This is right, and John admits this in another reply.
You should also add DEBUG support, as that's more important as the CPU
targets bigger applications.
  Once you have a compiler, users will want to do more and more, and
then debug becomes very important.

  It depends a lot on the target use.
Something that runs from a Block RAM inside the FPGA, can be very
small/very fast, but is probably best coded in some form of Assembler.
  Best example of 'Advanced Assembler Art' is Randy Hyde's HLA (High
level Assembler) but that currently targets only x86
- tho I'm sure that's not hard to fix :)
  This HLA allows IF..THEN..ELSIF etc, and handles the labels needed,
as well as giving local scope (so is a big step-up from vanilla ASM).

-jg



Re: Spartan 3 - avaliable in small quantities?
Quoted text here. Click to load it
hardware as it is the compiler for
Quoted text here. Click to load it
that ran at 66 Mhz.  It was a
Quoted text here. Click to load it
that it used a 16 deep
Quoted text here. Click to load it
Like the 1802, the operands
Quoted text here. Click to load it
register file.  The beauty of it
Quoted text here. Click to load it
beyond the register file.  The
Quoted text here. Click to load it
architectures).   I'm not a compiler
Quoted text here. Click to load it
to be the tools to compile the
Quoted text here. Click to load it
might argue that the high speed
Quoted text here. Click to load it

Hi Ray

Half agreed, as Jan has shown any std risc cpu project can grab lcc to
do the task quite quickly by messing with the emit tables. If this
were just another std risc project I'd probably do same, but then it
wouldn't be anywhere near 300MHz either, more like MicroBlaze.

Only hyperthreading allows max speed, but if the processes don't
communicate with each other then lcc could still be used as is and
ignore the HT stuff.

Some of my background is in compilers and other tools but I never
worked for anybody doing that. The lcc compiler (Hanson & Fraser) is
possibly the best documented C compiler writing text book around and
highly recomended as it explains thoroughly just how horrible C really
is where most C books gloss over it's complexity. The complexity for
me comes because I am combining essentially 3 langs together and
putting in a mini OS runtime. The Transputer did it before but chose
an unfriendly syntax and supported C only as an afterthought.

I will probably get through it ok but I would love to pass that part
on but then that person would be knee deep in it instead.

The HW part is more fun though. The 1802 takes me back, not bad in a
twisted sort of way, it certainly used very little logic, I had it
under a scope at Inmos.

Regards

johnjakson_usa_com

Re: Spartan 3 - avaliable in small quantities?
The low complexity is why I chose the architecture I did.  Unfortunately,  I did
that design in schematics, before
I started using VHDL, so resurrecting it at this point involves more time than
can devote to it.

john jakson wrote:

Quoted text here. Click to load it

--
--Ray Andraka, P.E.
President, the Andraka Consulting Group, Inc.
We've slightly trimmed the long signature. Click to see the full one.
Re: Spartan 3 - avaliable in small quantities?
Quoted text here. Click to load it
to be the tools to compile the
Quoted text here. Click to load it
might argue that the high speed
Quoted text here. Click to load it

How much code are you writing?  Would you be willing/happy to do it in asembler?

Assemblers can be pretty simple, especially if the target is raw binary running
at loaded at 0 rather than something needing linkers and libraries.  Also helps
if the target is RISC and doesn't have messy addressing modes.

How much would a reasonably clean sample assembler help?  There should be
a good example from the academic world.  Just type in the new opcode table.

--
The suespammers.org mail server is located in California.  So are all my
other mailboxes.  Please do not send unsolicited bulk e-mail or unsolicited
We've slightly trimmed the long signature. Click to see the full one.
Re: Spartan 3 - avaliable in small quantities?
Quoted text here. Click to load it
to be the tools to compile the
Quoted text here. Click to load it
might argue that the high speed
Quoted text here. Click to load it
asembler?
Quoted text here. Click to load it


"AS" from Alfred Arnold is a good wide-cores assembler, with a choice of
Pascal or C sources :

http://john.ccac.rwth-aachen.de:8000/as/download.html

  And HLA (High Level Assembler) is currently x86 only, but the front
end, and approach is much closer to higher level languages (but minus
the bloat). V2 will allow different back ends, for opcode outputs.
  Worth watching.

http://webster.cs.ucr.edu/AsmTools/HLA/index.html

  This is able to support quite large code efforts, and remain
close to the iron..

  A benefit of working from the 'best assembler' end, is the ease of
support multiple/tiny core instances - which is one of the
advantages of such soft cores.

-jg



Re: Spartan 3 - avaliable in small quantities?
Quoted text here. Click to load it
going to be the tools to compile the
Quoted text here. Click to load it
might argue that the high speed
Quoted text here. Click to load it
asembler?
Quoted text here. Click to load it
running
Quoted text here. Click to load it
helps
Quoted text here. Click to load it

Although an assembler is only a tiny fraction of the effort of a C
compiler, once done it only opens the door just enough to bootstrap up
slowly. For a processor to have much wider appeal needs the full
effort either to port or write from scratch.

I will probably set the hard type semantics of C aside for awhile and
just add a very quick dirty codegen that handles C style assembler and
simple 1 size expressions with none of the usual optimizations and
just play dumb. Then baseline C/Verilog/Occam/inline asm can be
written that might violate some proper rules. The compiler wouldn't be
able to compile itself but I could get on with testbench and
verification. Right now it can analyize itself but doesn't emit
anything. It does have a nice #preprocessor built into the lexer that
allows C++ like use of definitions with same name but varying no of
params that is not described in lcc book.

The usual way in the past was to define subsets of the target language
and compile for that with the compiler also being restricted to that
level. The 1st pass might be an assembler. The compiler could then
operate at some level on the target and as the language subset is
raised, the compiler gets to use the new features and tests them on
the next round. I don't think people do that anymore unless the
language is brand new and no compiler exists yet. Once it does exist,
it's usually easier to cross port.

This brings up a point, can a new compiler be $ distributed if the
design is largely based off of previous open code. I will have to go
check the license on lcc.

johnjakson_usa_com

Site Timeline