Hi Peter Clinton, Thank you very much for you response, I really appreciate it.
I am a bit confused, after reading about Steve Meier's "hierarchical bus". Peter Clinton wrote, On Sat, 03 Jan 2009 12:22:27 +0000 >Since gnetlist doesn't understand buses or bus pins, >you will have to continue using it this way. Steve Meier >has a customised netlister which_does_ allow interconnection >between hierarchical blocks using native bus objects >and bus pins, and that is why I added support in gschem. >(Because he asked nicely). Many months ago, after some technical discussion with Steve Meirer thru private emails exchange (we had to discussed those off the forum, because Ales would like us to take it offline), I understood what Steve Meier's "hierarchical bus" was meant for flat-hierarchy netlist such as PAD/PCB format only. Steve Meier, please correct me if I am wrong: Is the "hierarchical bus" you asked Peter Clinton to implement is for flat-hierachy netlister format such as PADs/PCB ? I bring this up because flat-hiearchy netlists are different than non-flat herarchy netlists. Mike Jarabak already implemented the non-flat hiearchy verilog netlist with BUS for 1 hiearchy level. The stocked "gnet_hier_verilog.sh" added the support for multi-level deep hierachy (with limitation of 1 page per hierachy). Currently, I already modified the "gnet_hier_verilog.sh" to support multi-page multi_level full hiearchy with BUS, using existing Gschem/gnetlist, Mike's gnet-verilog.scm. I can release it once I make a good example test case for you to run. Well, I hope Steve is reading this and can clarify this. Thanks again. Best Regards, Paul Tan -----Original Message----- From: Peter Clifton <pc...@cam.ac.uk> To: gEDA developer mailing list <geda-dev@moria.seul.org> Sent: Sat, 3 Jan 2009 4:22 am Subject: Re: gEDA-dev: gEDA-user: Is gnetman available for download anywhere? On Sat, 2009-01-03 at 00:15 -0500, Paul Tan wrote: > Hi Peter, > > On Date:Fri, 2 Jan 2009 12:48 pm, Peter Clinton wrote: > [snip] .. disallowing net->bus pinconnections etc.. > > Normally, I would not voice any concern, but > the above causes me to inform you of the > consequences of doing what you suggested. Ok, nothing has changed in the legality of connecting objects which gschem / gnetlist already understood. Perhaps I wasn't clear when I suggested some change in the logic: To summarise the old logic: Net-Net connections OK Net-Pin connections OK (but we only supported NET pins) Bus-Pin connections NOT OK (but we only supported NET pins) Pin-Pin connections OK (indiscriminate of type, but we only supported NET pins) Bus-Bus connections OK (although we didn't do anything with them) Bus-Net end-point connections not OK Bus-Net mid-point connections not OK Net-Bus mid-point connections OK (and usually replaced with bus-rippers) Changed behaviour: Allow - Bus-BusPin connections Disallow - NetPin-BusPin connections (This is "allow" as in, the objects are registered as connected internally, and the red cue goes away). If you still think there would be any negative comments from the new behaviours, please let me know. I'll just quote the commit messages: commit f37c893edfeb016e57aae5e92f48093608e5cdfb Author: Peter Clifton <pc...@cam.ac.uk> Date: Sat Jan 3 02:38:29 2009 +0000 gschem: Add interface to toggle a pin between net pin and bus pin types. This allows schematic diagrams of hierarchical connections to include buses. Since gnetlist does not currently support buses, this feature is useful only for diagrams, or when used with a custom netlister. Since we don't want to mislead users into thinking bus pins netlist, the option to set pin type is only present on the page's popup menu, and is marked "(graphical)". commit 7d01d4ae87fd329ffa3e93df9e286dd6e56e225c Author: Peter Clifton <pc...@cam.ac.uk> Date: Fri Jan 2 23:14:53 2009 +0000 libgeda: Fix bus/net to bus/net pin connectivity checking rules Previously, the type of pin was not checked when computing connections, and buses were disallowed from connecting to any type of pin. Refactor s_conn_update_line_object() to concicely check the following: Allow connections between matching pin types only. Allow connections between nets, other nets and net pins. Allow connections between nets and the mid-points of a bus. Allow connections between buses, other buses and bus pins. commit 998e8546754fe2ab41a57ce112c3966190c501df Author: Peter Clifton <pc...@cam.ac.uk> Date: Fri Jan 2 23:14:52 2009 +0000 gschem: Add support for rendering and adding pins with type PIN_TYPE_BUS Bus pins are rendered thicker, and with a bigger cue than standard pins of PIN_TYPE_NET. This commit also fixes a bug where the wrong sized cue circle was drawn for net-net interconnections. > The Gschem code can treat BUS exactly the > same as net execpt for its visual effect. Can, but doesn't. In the code-base as is, OBJ_BUS is a separate object type. > Bus bin of a symbol is just a thick line laying > on top of part of the non-red portion of a pin. > The user can just put it there for visual effect. gEDA has (since I don't know when) defined in its file format specification that a pin object has type "PIN_TYPE_NET" or "PIN_TYPE_BUS". Its just that we never used the latter before. It now supports setting the bus pin type, and rendering it thicker - without any hacks to overlay a thicker line. > The bus-tap acts as a no-connect (as currently > implemented), so to make sure that the BUS trunk's > net name is separated from other bus/net net > names tapping the trunk. The bus trunk/s net > names are just a place holder for net names > processing, just as what is already done > in "gnet-verilog.scm". None of this has changed. Since gnetlist doesn't understand buses or bus pins, you will have to continue using it this way. Steve Meier has a customised netlister which _does_ allow interconnection between hierarchical blocks using native bus objects and bus pins, and that is why I added support in gschem. (Because he asked nicely). For complex designs, it is useful to be able to connect hierarchy blocks via non-graphical buses, and as Peter B suggests, we'll be looking at teaching gnetlist to expose the wiring of bus objects to the gnetlist backends in a similar way to how we expose net wiring as a netlist. > How net names and pins are treated, IMHO should > be upto the backend Scheme code, so that any > backends can be supported including Verilog-AMS, > SystemC, CASE tools, etc, thru attribute > processing. I agree with you that the interpretation of those, and their underlying type needs to end up in the netlist back-ends. If the existing back-ends wish to continue allowing buses to be inferred from nets, that is fine. Perhaps what wasn't immediately clear, was that we have no plans to remove, or change the behaviour of bus rippers and the existing graphical only interpretation of buses in gEDA. To be honest, I can't think of any instances in gEDA where we've broken a behaviour or feature, and we're not about to start now. If you suspect that gnetlist's test-suite isn't exercising a particular feature (e.g. verilog buses), please contribute a test-case we can add to the regression test suite. We take changes in that output very seriously. PS.. Amusing slightly unrelated story: gnetlist code unfortunately misuses GLib hash tables to produce a unique list of components. I say mis-uses, because out output depends on the sequence that we enumerate all items in the hash table (which isn't guaranteed), and we don't apply any sorting for ourselves. In the latest version of GLib, they changed the hash table implementation to a faster one, and the enumeration ordering behaviour changed. (Perfectly legitimate). Almost all our test-suite fails. Before the next release, we need to change to our own implementation, or apply a sort to the results of the hash table step. Since we may not be able to easily reproduce the sorting behaviour of the old hash-table implementation, we may now have to add an arbitrary sort order, then pour over many thousand lines of diff in the test-suite output, checking the output re-ordering is acceptable. Not fun, but yes.. we take test-suite failures seriously. Best wishes, -- Peter Clifton Electrical Engineering Division, Engineering Department, University of Cambridge, 9, JJ Thomson Avenue, Cambridge CB3 0FA Tel: +44 (0)7729 980173 - (No signal in the lab!) _______________________________________________ geda-dev mailing list geda-dev@moria.seul.org http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev _______________________________________________ geda-dev mailing list geda-dev@moria.seul.org http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev