Hello,

I've been lurking here for awhile now, and have been waiting for the conversation to turn in this direction....

I'm an fpga designer by day, and hobby computational linguist by night, so I (perhaps egotistically) feel particularly qualified to comment on this area.

While it is true that the open bitstream has gone the way of the dinosaur, this should not be seen as much of a limiting factor. It is the rare software engineer who delves into the microcode format of the CPU, and the bitstream should be viewed in the same light. While it is true that this means there will be a "proprietary bit of software" performing the last step in your hardware compilations.... this is really no different from the "proprietary bit of hardware" performing the last step in your software compilations. (machine opcodes being translated into re-ordered microcode by the cpu) Neither is something anyone has much occasion to delve into.

However, this is not to say that the situation is not ideal. For one thing, this proprietary tool may be grossly inefficient for your needs (the microcode systems in the cpu are rarely pointed to as a bottleneck... much the opposite with vendor bitstream tools!) For another, it is possible that your "host system" on which the bitstream should be generated may not be a "supported" pc configuration, or may not even be a pc at all! It is in these sorts of situation that the vendor tool does become a hinderance...

I am consistently saddened by the fact that people point to "no open bitstream format" as a reason for lack of progress on "fpga computing" projects. For the majority of the research necessary in these areas, the bitstream black box *shouldn't* be a show stopper. And if it is... as mentioned in the xwt.org link you pasted, it is indeed not very difficult to reverse engineer a bitstream. (at least to the point where you can regenerate a "re-synthesizable" edif...) Sadly, the majority of "experts" in this area are not sharing there processes, as they are generally in the business of design theft. (I was once emailed a bitstream and corresponding machine generated edif for one of my own designs, which had been promptly "cloned" upon it's commercial release. We have been reluctant to put any faith in Xilinx "design security" since.)

Another option, aside from reverse engineering the bitstream, is to simply engineer a new bitstream format. I regularly work with a "meta-fpga" design where the design programmed onto the fpga fabric in turn has it's own reprogrammable elements. Unfortunately, this approach can have significant impact on performance, sometimes seeing as much as a 70% overhead in resource consumption... eek! (this is not to say it is always so inefficient, in many cases the overhead is a negligible 1-2%) I have yet to take this approach to the next step, an asic implementing the reprogrammable design (in essence, at this point you have just made a new fpga) but I expect that this may become common practice over the next 5 to 10 years, as we are seeing more and more hardware pop up with "field programmable array" elements. (Cell processor, GPUs, etc) Usually these are coarser- grained then gate-level (actually "cell/tile/slice/other-vendor-term- here level") programability of FPGAs, but this trend is shifting as well.

What we really need is not an open bitstream format, as that is a minor annoyance only. The *true* limiting factor in research towards such concepts as on-the-fly reconfiguration, evolvable machines, and other "runtime hardware" dreams is a problem of lack of approachability of the problem. Today, even an amateur systems engineer can delve into the world of GPU metaprogramming, in a language as approachable as python. An engineer wishing to do the same at a fine grained, gate level of an fpga is faced with a daunting challenge of poor languages (vhdl/verilog/edif are not pleasent to work in, by any means) poor debugging tools (trying to find an unintentional race condition in a small subcomponent of your circuit buried in a multi-million gate design is a nearly intractable problem for most, even though it is something that could be handled by the tools) and poor educational resources. (The background knowledge required to succeed at any substantial approach to these techniques generally requires years of specialized training, coupled with years of practical experience in the field)

Perhaps we can start working together to resolve these real issues, instead of just giving up at "welp, we can't delve into the bitstream, so we must be screwed."

--Nathan


On Nov 27, 2007, at 12:31 PM, Toby Watson wrote:

Hi

Does anyone know if an open toolchain is available for any FPGA series?

I think Xilinx's open bitstream experiments began and ended with the 62* series, when they acquired the small firm Algotronix. 62* series is rather old too. I believe some of their newer devices offer "partial reconfiguration" : http://tinyurl.com/yqk6c4 . This works a bit like memory overlays in certain machines.

Generally FPGA vendors are protective of their bitstream formats and this precludes the possibility of open (and self-hosting) software -> hardware translators.

Of course if you don't mind having a proprietary bit of software in the loop then many experiments are possible. JBits is probably as close as one can get for now: http://tinyurl.com/2fehf6

Open Cores project is a good place to track the open state of the art: www.opencores.org

Closed Bitstream Sadness here

http://xwt.org/thoughts/bitstream.secrecy.html
http://www.tuxdeluxe.org/node/204

One day, hopefully one day...

Toby


On 27 Nov 2007, at 16:34, Antoine van Gelder wrote:

Ian Piumarta wrote:
Several of us here (at VPRI) are interested in the potential of better synergy between hardware and software. Something we'd love to see is the *OLA back-end generating netlists for FPGAs, or better still reprogramming them on the fly (which I'm told is possible, but I've yet to see an example). Just-in-time software deserves just-in-time hardware, no? ;-)

Was looking at FPGA's a month or two ago asking questions about reconfigurability and clockless computing and apparently the Xilinx 62* series of FPGAs are not only capable of being rewritten on the fly but - even better - you can reprogram only a subset of the gates if you want!

Also looks intriguing: http://www.falvotech.com/blog/index.php?/ archives/200-Forth-Day-Report.html

- a

_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc


_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc


_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc

Reply via email to