For some time now, I have been tinkering with the idea of developing a
hardware IDE of sorts to help with chip design projects.  Like with
many sort of programming tasks, there are tedious and error-prone
aspects of coding Verilog, and I thought it would be nice to have a
tool that would take care of many of these things for me.  There are
some tools already to do this (e.g. Renoir), but they're expensive and
not Free Software.

One of the most bothersome problems with Verilog is with gluing
modules together.  Say you've designed three modules that need to be
attached together as a pipeline.  The typical approach would be to
write another module in which to instantiate them, with wires
indicating how they connect to each other and the enclosing module.
My most common mistakes are in forgetting to declare a wire that I
used to connect ports (thereby implying a single-bit bus even if the
ports are wider) and declaring the wrong bus size.  Some of these can
be hard to locate and debug.  Another problem is with refactoring,
such as if you want to insert another pipeline stage.  Plus, there's
all of the typing and the boredom and potential for typos and other
errors.

So I have been tinkering with a proof-of-concept prototype as a way to
demonstrate some of the ideas I have in mind.

The first major thing I want to do is "draw" logic hierarchies.  I
have this approach in mind:  At any given moment, you're looking at a
particular module in the hierarchy and its immediate children.  You
can add ports to the module and its children and connect wires/busses
visually.  You can then expand a child module, making it the current
level, giving you access to its children, etc.  Add code to the
modules for functionality, and export it as Verilog, ready for
simulation and synthesis.  Make drastic changes and reexport,
something that would otherwise have taken hours.

Additionally, there would be libraries of standard modules that
provide template functionality.

So, I've been hacking at this on and off for a little while, and I
thought I'd share what I have so far.  It's more of a skeleton of the
basic visual stuff, with no way to add/remove anything.  I hesitate to
release it TOO early, because I want to make sure I get in enough of
what I consider to be the critical features before letting others
start hacking at it.

Here's the location:

http://www.cse.ohio-state.edu/~millerti/HIDE.zip

NOTE:  It's a NetBeans project.  You can look at all the code without
NetBeans, but NetBeans is a nice IDE that I find to be quite helpful.
I'm quite new to Java, and it takes some of the pain out of the
process.  I'm not using any of the NetBeans GUI builder stuff, though,
because all of my widgets are custom.

And before anyone complains about Java, that's the only language I
could find that had both a relatively mature GUI toolkit and one that
would look relatively native on any platform, including MacOS X.  I've
tried other languages and toolkits, but Qt, for instances, always
resulted in errors that I can't decipher.  Also, I hate C++.  I'm an
expert in the language, but I have come to despise it due to all of
the unnecessary cruft compared to other languages (compare to Ruby,
for instance).  Java isn't vastly better than C++, but it's better
enough.  I really like Ruby, but it's terrible for GUIs (mostly due to
lack of documentation).  I have considered looking at JRuby.  Anyhow,
this rambling here is primarily so that the issue of language/toolkit
simply won't come up again.  Maybe YOU like something better, but I
don't have time or energy to learn it.

--
Timothy Normand Miller
http://www.cse.ohio-state.edu/~millerti
Open Graphics Project
_______________________________________________
Open-graphics mailing list
[email protected]
http://lists.duskglow.com/mailman/listinfo/open-graphics
List service provided by Duskglow Consulting, LLC (www.duskglow.com)

Reply via email to