[Fpga-synth] Starting points?
Magnus Danielson
magnus at rubidium.dyndns.org
Wed Mar 11 01:11:37 CET 2009
Theo Verelst skrev:
> On Sat, 2009-03-07 at 01:33 +0100, Magnus Danielson wrote:
>> Dave Manley skrev:
>>> Magnus Danielson wrote:
>>>
>>>> VHDL being an ADA decendent has typing being HARD. This can be a bit
>>>> annoying for a C programmer like yourself, but eventually you pick up
>>>> on it.
>>> Not to start a language war, but before choosing between VHDL and
>>> Verilog, go look at some code in both languages. As a C programmer, you
>>> may find Verilog more to your liking.
>> Well, being a C programmer myself before hitting onto HDL of any sort, I
>> learned VHDL and sticks with it. When I do HDL design work typing it in
>> VHDL isn't a limiting factor at all really. What is important is to keep
>> tidy code and know that you get exactly what you want. Looking at
>> synthesis outputs will eventually be very rewarding as it may trigger
>> alarm clocks.
>>
>> I think people are making much more fuzz about the VHDL then motivated.
>> But then again, maybe I am biased as I have seen too much poorly formed
>> Verilog code. Familiar syntax can be a curse rather than a cure.
>>
>> Cheers,
>> Magnus
>
>
> 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).
Well, there is a reason for you not seing that. It's all hidden under
the hood.
To start with, 99,999% of all logic gates and functions sits in a
synchronous clock domain. You rarely expose things in asynchronous
fashion except maybe reset, but that is going away too. Under the hood
the setup and hold times is very well known for all DFFs and all logical
and interconnections paths. In addition, timing relationships is
analyzed for min, mean and max temperature and voltage. But all that
happends under the Place & Route hood and the timing analysis gives you
an insight at the most critical paths which needs your attention.
Why? Well, the complex of designs today require us to hide away details
so we can concentrate our efforts on the functional design. If we run
into timing problems the tools tells us and either we aid the tool or
re-partion or re-design the system to meet the timing constrains we put
onto it.
You can still circumvent the rules of these designs, but in the end you
rarely do it and when you do it is because it is some critical part of
the design that requires it and is worthy of additional time to achieve
the performance or peculiar function you need.
> The nice and preferable 'correct by construction' paradigm like in
> Pascal (or C of course, to an extend) seems really not so readily
> achievable, if even at all, which is kind of a shame, I would think.
Again, the size of a typical application has grown immensly since the
days when Pascal was the big king. Todays OO-rage (which has grown up
considerably BTW) is to some degree needed. The time when you could sit
down and think things through properly is to some degree gone. We have
huge amounts of data, complex software complex that needs to
interoperate, GUIs, web, levels of security, authorization, monitoring,
logging, configurations etc. etc. etc.
This comes from a guy that actually makes money by programming in
assembler as part of the way he works, builds tools in C and make
designs in VHDL. I don't have to mess with drivers, real time
schedulings, kernel limitations, databases and gazillions of C/C++ layers.
> The suggestion of 'soled and unbreakable logic', in general, is
> seriously deluding, anyhow, regarding of the HDL language. I even prefer
> schematics from the manufacturer because some of the problems are than
> more over viewable and like the historic logic design process was fairly
> successful, alas lossing portability across brands. Opencores for
> instance does not clearly prove to my anyhow that all the activities of
> those kinds are a huge succes, or at least they are far from insightful,
> and I notice most public shared designs, and I suppose many closed
> source ones, too, are made often for a even a specific target chip.
Schematics can be a useful tool, but none of the FPGA stuff we do have
them and the gazillions of signals and blocks we have just clutter
schematics up. For hardware designs even a modest FPGA needs to be
broken up into pieces since it is too huge to be meaningfully presented
as a square block. gEDA and gSCHEM had a component design rule which
said you could only put pins on left or right side... and no power pins.
Well, I tossed a number of Spartan-IIE symbols on them, each bigger than
any previous symbols... and soon the symbol generator tools started to
include the features I used since it was obviously needed. Those chips
are tiny compared to the Spartan chips of today...
I like and enjoy schematics as the next guy... but for many of the
designs I see today they would not add significantly to knowledge, block
level graphics in the design docs does it better.
The type of tools we use change as our designs gets more complex. Things
which is known to us drops out of fashion and other approaches is used.
It's not about fashion, its about meeting new challenges. Some of the
approaches may be popular for some time and then fade, but some is
meaningful and live on strongly. HDLs like VHDL and Verilog and
associated friends is mature now and very useful. They solve many but
not all of our challenges.
Not only designs gets more complex, more people develop them. It is much
more rarer to see designs where one or very few minds cracks the design
problems and then completes that vision fully. Infact, they are so
complex that they are under constant development and changes occurs
simultanously in different parts of the system. We no longer just use a
compiler and debugger. We builds ontop of very huge infrastructures at
many levels.
We also needs to figure out what is the best interface between hardware,
firmware (FPGA code) and software. The balance can be shifted between
minor releases now...
There are still more challenges to come, and even more ground-breaking
changes needs to come.
Just coordinating all these aspects of a modern design effort is a
hurdle in itself.
My work is actually to sit waaay back and figure out the main aspects of
designs, scribble things down and help the designers grasp the main
important things and then let them adjust it as they see fit and help
them out. I kill design concepts that comes from them with knowledge of
other aspects they didn't consider. I enjoy a nice quite time in the
hardware lab or get to get the hands dirty in some debugging session.
Still, there are many aspects of our gear that I haven't the faintest
idea about and it's fine, I know who to ask to get to the guy that knows...
So in that context, do I enjoy the specs of old TTL chips etc? Yes. Do I
want to work with that level of details in my day-job? No, for most
parts it would be such a distraction that it would prohibit efficient
work. I do dig in to lurk out how I can use some device to its best...
and take some pride in finding smart and safe ways to do it, but that is
for the few cases we really, really need it. If we had to do it for
everything we would loose time we can spend on other things we do get
paid for. It's wastefull of good hardware, memory and CPU cycle
resources, but it buys us other freedomes these days.
It's all some kind of part of progress. It's one of these go with the
flow things. But it is OK to be found mumbling about it here... :)
Cheers,
Magnus
More information about the Fpga-synth
mailing list