[Fpga-synth] Starting points?
Mike Ravkine
krypt at mountaincable.net
Tue Mar 10 14:55:27 CET 2009
Theo Verelst wrote:
> As someone who'd built my own logic from electronics even already in the
> 70s it always strikes me that contrary to the well-formed TTL family
> logic for instance, all HDL designs I've witnessed the last years, even
> factory supplied ones (Maybe with the exception of tailored RTL) are
> comparison wise almost extremely under-specified in terms of fundamental
> behavior of parts and connections and timing associated with those, and
> margins and such, so that like with spread out delay and setup and hold
> time and drive line characteristics in TTL, a lot still depends on trial
> and error, preferably with for instance on-fpga probes (like Agilent I
> seem to remember has special interfaces and test software for).
>
>
Note: My background is verification (and a little design), mainly of
3-10M gate DSP ASIC SoCs...
I will first admit that I've never done anything more complex then a
4-bit ALU in TTL (in university, I think we were in the last few classes
to touch it), but it was a nightmare to implement as compared to the
12-line RTL version of the same block..
I guess I don't understand why you would want to specify analog things?
Forcing you to think about non-digital things like setup and hold seems
to me like the main problem (and handicap) with TTL design.
In an FPGA, things will be placed by P&R where-ever there is room and
the externally-specified timing constraints can be met. FPGA synthesis
tools have all types of tricks like logic replication already up their
sleeves.. It's likely going to do a better job then you could by hand,
assuming your design is a moderately large one. The trial and error you
speak of happens when clock constraints couldn't be met either by
synthesis or placement, but this is reported in the compile logs before
you even load the bitstream on the FPGA, and generally it just means
your paths are just too long and you have to add some pipeline stages.
In an ASIC, it's even worse .. a designer could in theory come up with a
floor plan, but he doesn't know what the analog characteristics of the
cells he's designing with are! The technology library usually hasn't
been chosen until after the design is done and verified in simulation
(using a generic un-timed library). Once a foundry and technology is
chosen, a 'trial synthesis' and 'trial static timing' will be run using
the timed library and again any errors have to be resolved before the
design hits hardware. Without going into detail as to what scan, BIST
and ATPG are (these are ASIC-only things, largely concerning production
testing), lets just say that additional tools are run on the
post-synthesis hardware and will do some "stuff" to your design that you
could not possibly predict.
It seems to me either impossible or unfeasable to specify up-front the
analog characteristics of a modern digital design.. the best you can do
is follow general design guidelines like flopping the output of every
multiplier, maximum number of logic stages between pipeline stages,
etc.. but all of that stuff is very technology dependent, unless you
always code for the lowest common denominator (and what fun is that..)
--Mike
More information about the Fpga-synth
mailing list