[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gEDA: Recent changes in CVS
Hi All,
Here's a quick summary of some of the recent CVS changes:
-*- Hierarchy support in gnetlist -*-
Probably the bulk of the changes are here. I've added
first cut of hierarchy support to gnetlist.
First off, here are the *gnetlistrc keywords which control the
various options associated with hierarchical traversal:
(hierarchy-traversal "enabled")
;(hierarchy-traversal "disabled")
Self explanatory
(hierarchy-uref-mangle "enabled")
(hierarchy-netname-mangle "enabled")
(hierarchy-netattrib-mangle "enabled")
These control if gnetlist will "mangle" underlying uref, named nets,
and nets created via the net= attribute. By mangle I mean make
unique by either appending or prepending the toplevel (or one level
up) uref.
(hierarchy-uref-seperator "string")
(hierarchy-netname-seperator "string")
(hierarchy-netattrib-seperator "string")
These specify the character which is inbetween the mangling.
If you make the string "", then no characters are placed inbetween
the mangling.
(hierarchy-uref-order "append") ;; or "prepend"
(hierarchy-netname-order "append")
(hierarchy-netattrib-order "append")
These control the order of how the mangled names are created.
If you have append specified then you will get mangled names like:
U1/U2/U3 etc... If you have prepend specified then you will get
mangled names like: U3/U2/U1.
I do agree that some of the keywords seem absurd, however I didn't
see any other way of satisfying everybody (hehe, yeah right). If
you still see some permutation I have missed, let me know and I will
try to accommodate. Also there are quirks associated with each
option, so you will have to experiment. See the system-gnetlistrc
file for more comments.
So, how do you use the hierarchy support in gnetlist. Simple:
1) Make sure all composite symbols have the pinlabel attribute
attached to pins. None of the symbols in the library use
pinlabel (they use the new / old label attribute which really
should be pinlabel)
2) Attach the appropriate source= attribute to component in the
schematic.
3) Make sure all components have some sort of uref.
4) To bring a net out (inside an underlying schematic) to the
symbol, place a in-1.sym or out-1.sym and change the default
uref (which is pinlabel) to the same value you specified
for pinlabel= in the symbol. Take a look at in-1.sym and
out-1.sym. Though, there's nothing magical about those
symbols, any symbol with the correct uref will work so you
are welcome to use whatever input / output symbol you want.
Keep in mind that these input/output symbols do not show up
in the netlist.
5) Make sure gschem can properly find all underlying schematics
(ie make sure you have the right source-library keyword in
*gschemrc and obviously in *gnetlistrc) Traverse the hierarchy
using gschem.
6) Run gnetlist against the toplevel schematic and see what happens.
I have only tested using the geda native netlist format, but
the other backends should work fine too. You should get a totally
flat netlist in the output file. If it doesn't work, e-mail
me your test schematics and symbols.
7) Tweak the above mentioned *gnetlistrc keywords to get the hierarchy
name mangling you want.
Hopefully I haven't missed any steps. I'll create some sample
schematics which demo this. Or if somebody has some hierarchical
designs they are willing to share... :-)
Roger W., I tried to accommodate the way operate, so you will
certainly need to tweak the *gnetlistrc rc keywords. Let me
know if I missed the mark.
I cannot stress this enough, please make sure gnetlist is working
for you everytime you create a netlist. There most certainly
could be some serious bugs in the new (and old code).
This is a first alpha cut, it's crude, but it seems to work (for me).
Let me know of your success (hopefully) or failure (hopefully not).
Thanks.
-*- gnetlist.txt -*-
I checked in an incomplete version of gnetlist.txt. Feel free
to send me stuff to put in there. I'll slowly get this file
more complete. I need to add a section on hierarchy support.
Also, gnetlist.txt and gschem.txt are now in gnetlist/docs and
gschem/docs instead of the docs package.
-*- VHDL-AMS backend -*-
I've started integrating this new backend, which will eventually
replace the existing VHDL backend, but there are some bugs which
might cause it to not work on your system. I'm dealing.
-*- gschem bugs / patches -*-
- Bunch of bug fixes to the zooming code by Werner Hoch (Thanks).
This code should slowly get much better with time.
- Bunch of other smaller patches and bug fixes.
I think that's it.
-Ales