X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-Envelope-From: paubert AT iram DOT es Date: Fri, 10 Jan 2014 10:43:26 +0100 From: Gabriel Paubert To: geda-user AT delorie DOT com Subject: Re: [geda-user] Suppress NC nodes from netlist? Message-ID: <20140110094326.GA12963@visitor2.iram.es> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Spamina-Bogosity: Unsure X-Spamina-Spam-Score: -0.2 (/) X-Spamina-Spam-Report: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP 0.8 BAYES_50 BODY: Bayes spam probability is 40 to 60% [score: 0.5094] Reply-To: geda-user AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: geda-user AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk On Thu, Jan 09, 2014 at 04:38:35PM -0800, Frank Miles wrote: > (gschem-gnetlist newbie here...) > > I'd like to suppress 'not connected' nodes from the gnetlist output. These have > NC symbols attached in gschem. Is there some simple way that I'm oblivious to? > Or is this possible in a newer gnetlist and not mine? Thanks! I think it's a kind of "harmless bug" that does not bother most netlist writers. However, for a person who uses CadStar to implement my schematics, I had to write a new netlister and I had to remove single pin nets because of the format: the first line of each net definition has to include 2 pins. I also occasionnally encountered nets with zero pins! I don't think my netlister is really ready for use by external people, but what I did is the following (I have trimmed some parts which have nothing to see with connectivity netlist, since I also included routing directives for impedance control and grouping directives to define differential pairs, so maybe some parentheses are now unbalanced), the critical line being the (cond ((> (length netpins) 1) in the rinf:write-net function: ;; ;; Display the individual net connections ;; starting from the third if they exist. ;; (define rinf:write-connections (lambda (netpins port) (if (not (null? netpins)) (begin (format port " ~a ~a~%" (caar netpins) (cadar netpins)) (rinf:write-connections (cdr netpins) port))))) ;; ;; Display all pins from the net starting from the passed one ;; which is the second one. ;; ;; This is the line with the .TER command. ;; (define rinf:write-net-pins (lambda (netpins port) (format port ".TER ~a ~a~%" (caar netpins) (cadar netpins)) (rinf:write-connections (cdr netpins) port))) ;; ;; Write net: first line starting .ADD_TER ;; ;; Only write nets that have at least 2 pins: gnetlist ;; produces quite a lot of single pin nets, even when ;; a pin is explicitly connected to a No-connect symbol! ;; There are also cases where the list of pins is empty! define rinf:write-net (lambda (port netnames) (if (not (null? netnames)) (let ((netpins (gnetlist:get-all-connections (car netnames))) (cond ((> (length netpins) 1) (format port ".ADD_TER ~a ~a ~s~%" (caar netpins) (cadar netpins) (car netnames)) (rinf:write-net-pins (cdr netpins) port) (newline port))) (rinf:write-net port (cdr netnames)))))) ;; ;; Write the net part of the gEDA format ;; (define rinf:nets (lambda (port) (let ((all-uniq-nets (gnetlist:get-all-unique-nets "dummy"))) (rinf:write-net port all-uniq-nets)))) Gabriel