Re: gEDA-user: pcjc2 tessellation

2011-05-30 Thread Gabriel Paubert
On Sun, May 29, 2011 at 02:30:08PM +0100, Peter Clifton wrote:
 On Sun, 2011-05-29 at 11:37 +1000, Russell Shaw wrote:
 
   Hi,
   In _borast_bentley_ottmann_tessellate_bo_edges() which is from
   _cairo_bentley_ottmann_tessellate_bo_edges(), i see you deleted
  
   case CAIRO_BO_EVENT_TYPE_INTERSECTION:
  
   What effect does this have on the types of polygons that can
   be rasterized?
  
  Think i know now. Polygons can't have edges that cross other edges.
 
 You got it.. PCB doesn't allow self intersecting polygons, so I removed
 support for rendering them in an attempt to manage the complexity (and
 hopefully improve speed of) the tessellator.

So, what happens if one directly tinkers with the PCB file with
an editor or script and creates a self interscting polygon
by mistake?

It's not so far fetched, I sometimes edit coordinates in the
file to match mechanical design. I can make a mistake or, 
if it is a script (which also happens), it can have a bug.

Regards,
Gabriel


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: pcjc2 tessellation

2011-05-30 Thread Peter Clifton
On Mon, 2011-05-30 at 09:37 +0200, Gabriel Paubert wrote:

   Think i know now. Polygons can't have edges that cross other edges.
  
  You got it.. PCB doesn't allow self intersecting polygons, so I removed
  support for rendering them in an attempt to manage the complexity (and
  hopefully improve speed of) the tessellator.
 
 So, what happens if one directly tinkers with the PCB file with
 an editor or script and creates a self interscting polygon
 by mistake?

Bad things (TM).

Certainly the polygon computations will give bogus results, because one
of the key underlying assumptions of the polygon algebra routines is
violated.

If PCB is built with asserts enabled, it will just quit immediately when
loading your file.

 It's not so far fetched, I sometimes edit coordinates in the
 file to match mechanical design. I can make a mistake or, 
 if it is a script (which also happens), it can have a bug.

Its not ideal, but PCB doesn't report these problems unless asserts are
enabled (which makes PCB slow). We should probably add a validation pass
when loading the board and refuse to display any damaged polygon.

That should at least help to pick any problems up with hand (or script)
edited boards sooner rather than later.

-- 
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!)
Tel: +44 (0)1223 748328 - (Shared lab phone, ask for me)


signature.asc
Description: This is a digitally signed message part


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Perl

2011-05-30 Thread John Doty

On May 29, 2011, at 12:01 AM, Dave McGuire wrote:

  This is my opinion, speaking as a professional developer of both hardware 
 and software: Scheme was a good choice for gEDA, and it should be left alone. 
  The chosen implementation of Scheme, guile, may not be the best tool for the 
 job right now, but the language is.

Abandoning Guile for this job means abandoning nearly all of the core code in 
gnetlist, because that's written in C, and uses Guile's FFI. That is a possible 
way to proceed. A rewrite of gnetlist in straight Scheme (which is certainly 
possible) would free us to choose a Scheme implementation. But who's 
volunteering?

On the other hand, the totality of what we're discussing is also beyond 
gnetlist's capability as written. We can translate package attributes easily, 
but trickier mappings will be messy at best, and annotation is impossible. 
Given how much trouble fixing the attribute censorship bug was, refactoring the 
gnetlist we have now to adequately broaden its capability to allow it to 
address these issues seems likely to take years.

So, one way or another, we're looking at a new tool, I think. Maybe we keep the 
old gnetlist around and feed it modified/annotated schematics.

 
  There will always be people who don't like a particular choice. That's true 
 of anything.  All changing it will accomplish is changing who is pleased and 
 who is disgusted.

I'm with DJ here: contributions will decide. The language doesn't matter so 
much to me.   The big issue here is that our tool, gnetlist, hides much of the 
design data behind its API. This makes general-purpose design translation 
tricky, and annotation impossible. So, the first challenge to the various 
language advocates here is to prototype a fundamental API that reveals all, in 
a way convenient for higher level factors to exploit.

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


gEDA-user: gnetlist (was: Perl)

2011-05-30 Thread John Griessen

On 05/30/2011 01:50 AM, John Doty wrote:
 But who's volunteering?

On 05/30/2011 01:50 AM, John Doty wrote:

So, one way or another, we're looking at a new tool, I think. Maybe we keep
the old gnetlist around and feed it modified/annotated schematics.




There will always be people who don't like a particular choice. That's
 true of anything.  All changing it will accomplish is changing who is pleased 
and who is disgusted.

I'm with DJ here: contributions will decide. The language doesn't matter so 
much to me.

 The big issue here is that our tool, gnetlist, hides much of the design data 
behind its API. This makes
  general-purpose design translation tricky, and annotation impossible. So, 
the first challenge
 to the various language advocates here is to prototype a fundamental API that 
reveals all,
 in a way convenient for higher level factors to exploit.

I would like to separate out some API functions and code them if it could be 
one day's worth at a time.
I won't be able to volunteer more than a day every other week.  I can see 
learning what's needed,
getting little chunks done, then with the promise of future completion, and 
maybe merit badges,
enlist others to help with little chunks.  One problem gettingmovement on code 
like gEDA is tha magnitude
scares away certain kinds of volunteers - they won't start something they can't 
see finishing, or anything
that is weeks long.

What does an API prototype look like?  An outline?
A list of paired commands and descriptions of what they do?

John
--
Ecosensory


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: gnetlist (was: Perl)

2011-05-30 Thread DJ Delorie

One thought I had for gnetlist backends, is to recode gnetlist as a
set of libraries.  The Core would only load the design files
(schematics, spreadsheets, databases, back-annotation info, etc) as
raw data; the backend would be required to call at least one library
function that said I want data in this format.  The formats could
be layered in the library, with each layer distilling the data even
further, so that each backend could choose how much the data is
pre-digested.

Something like PCB's current backend, for example, would ask for a
fully flattened design with all connectivity resolved and reduced to
pin-level netlists.  A Verilog backend might want busses not reduced
to pin-level, or the heirarchy left intact.  A BOM might not bother
with connectivity, but ask for additional attribute processing.  Etc.

This way, we can centralize a lot of the common tasks, without forcing
those decisions on the backends.


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


gEDA-user: guile under minipack?

2011-05-30 Thread DJ Delorie

Has anyone successfully built guile 1.8.7 with the latest minipack?

If so, did you encouter theses errors, and how did you work around
them?

With no change to guile.recipe:

configure:19646: checking what kind of threads to support
configure:19648: result: pthreads
configure:19665: checking whether pthread_attr_getstack works for the main 
thread
configure:19672: error: cannot run test program while cross compiling

If I add --with-threads=no, it complains that struct timespec is not
defined.

(guile 1.8.9 gives similar results)


FYI I also had to add --enable-threads=win32 to gettext.recipe.


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: git: quick check for new commits

2011-05-30 Thread Russell Dill
On Mon, May 30, 2011 at 10:15 AM, DJ Delorie d...@delorie.com wrote:

 Is there a quick way to check to see if a local repo is out of date
 relative to a remote repo?  I'd like to write a shell script that
 rebuilds pcb but only if something's been committed to the master
 repo.  Rather than check out the whole tree and see if anything
 changed, I'd rather just compare head revisions.  I tried git
 rev-parse but it's origin/master result is based on cached values,
 not actual upstream values.

 Perhaps I need to fetch, then rev-parse?


git remote update origin would be the easiest way.


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: git: quick check for new commits

2011-05-30 Thread DJ Delorie

 git remote update origin would be the easiest way.

How is this different than git fetch?  Assuming the unneeded branches
aren't huge.


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: git: quick check for new commits

2011-05-30 Thread Patrick Doyle
On Mon, May 30, 2011 at 1:39 PM, DJ Delorie d...@delorie.com wrote:

 git remote update origin would be the easiest way.

How about

$ git remote show origin

--wpd


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Two things ... or actually, three

2011-05-30 Thread Richard Rasker
Op donderdag 26-05-2011 om 11:07 uur [tijdzone -0400], schreef DJ
Delorie:
  I'd really like to contribute something back -- but as I'm not really a
  proficient coder
 
 Contributions come in other forms, Certainly, library work and
 documentation are sorely in need of contributors and even owners.  If
 you read the light/heavy thread, you'll see I just put out a call for
 folks to put together sample self-contained heavy libraries, those can
 be as small as one component (although something big enough to be a
 'starter library' would be better).

OK, I'll start by reading up on the light vs. heavy symbol discussions.
Do I understand correctly that heavy symbols basically have certain nets
with predefined names (e.g. VCC, GND) implicitly included, whereas light
symbols offer the pins to connect those nets oneself? In that case, I'm
a big advocate of light symbols, because they offer maximum freedom to
the designer, whereas heavy symbols would require the use of those
predefined net names. Or is all this too simply put?

 As a new user with experience (huh?) documentation might be a good
 place to contribute too, pick a chunk of one of the manuals and
 replace it with something modern, for example.  Or find an old
 tutorial and update it to match the current tools.

That's an area where I think I can make a contribution too -- I've done
a dozen or so Dummies book translations, so explaining tricky stuff in
simple words is something I'm quite used to.

 In any event, don't feel that you have to be a code guru to help out,
 and don't wait for an invitation - pick something you can do and do
 it.
 
  - Zero length lines in PCB: I found that when drawing lines in PCB,
 
 I think you're tripping over the metric-rouding bug, where what you're
 seeing is lines that are 0.01 mil long.  We're working on that with
 the metrification of PCB.

Is there already some sort of script to eliminate those micro-lines? And
would it be a good idea if I wrote such a script? Or is it not advisable
to eliminate those lines, for reasons of connectivity?

  Now I was used to the work flow of gschem - [update pcb in] xgsch2pcb
  - PCB, but this appears to have changed.
 
 It's still available, there are now alternate ways that are more
 integrated, that's all.
 
  I wondered if someone could explain this in a few words.
 
 gsch2pcb, xgsch2pcb, and pcb's File-Import all do the same thing -
 they run gnetlist.  In all three cases, *someone* needs to know which
 schematics are read, and which layout is updated.

Um, OK ... but somehow, my older xgsch2pcb (or perhaps just the older
PCB build) doesn't recognize the layout file edited with the newer PCB
version any more. As a result, I haven't succeeded in updating any
changes in my schematic into the newer PCB version (also see below).
When I try updating the schematic now with xgsch2pcb, I get a completely
new PCB window with all the elements in the upper left corner, and not
the 99% completed and routed layout I have.

 The File-Import case is different in that the list of schematics you
 need, is stored in the layout that needs them, and PCB is running the
 process so it knows that it also needs to read the new info and update
 the board.
 
 Look at the documentation for the Import() action in the PCB
 reference, it tells you what needs to be added to the layout to store
 this information.

I checked the PCB reference on this subject for my PCB build
(http://pcb.gpleda.org/pcb-20100929/pcb.html#Import-Action ), but it
isn't clear at all what I should do to import a set of schematic files
(say, myproject_page1.sch, myproject_page2.sch
and myproject_page3.sch, all located in
~/electronics/customer_x/techfiles/).

In fact, it reads much like a manpage to a Linux newbie, but without the
clarifying examples. As in: even after an hour of scrolling and browsing
back and forth, I don't understand what it means, and I definitely think
that I can make a contribution documentation-wise here, once I /do/
understand it ;-)

When I simply choose File - Import Schematics, PCB's log shows the same
response as when I press O -- it tells me the number of remaining rat
lines. At this point, I'm not asked for any schematic files, changed or
not.

   There are menu options for editing layout
 attributes, which is where they go.

After choosing Edit - Edit attributes of - Layout I get a window with
two entry fields, one containing import::src0, and one containing
(null).

Should I fill in a space-separated list for src0, pointing to the
various schematic files? And what to do about (null), if anything?

I tried entering a space-separated list with my .sch files, and
subsequently the File - Import Schematics does actually offer me an
opportunity to choose a (schematic?) file -- but just one, not the six
I'm using in my project. After this, I can't import another one, and to
tell the truth, I don't understand at all what I'm doing at this point.
It sure doesn't look like I'm properly importing my 

Re: gEDA-user: Two things ... or actually, three

2011-05-30 Thread Richard Rasker
Op donderdag 26-05-2011 om 22:56 uur [tijdzone +1000], schreef Stephen
Ecob:
  Then two more usage questions:
  - Zero length lines in PCB: I found that when drawing lines in PCB,
  sometimes dots (zero length lines) get created inadvertently on corners
  and bends. This isn't much of a problem, until I start dragging lines
  and end points in rubber band mode: those dots then get stretched into
  undesired line segments which I sometimes don't notice until I get DRC
  errors and warnings about short circuits.
  Do I recall correctly that someone created a script to filter out those
  zero-length lines? I can't find anything in the mailing list archives,
  and it turns out that a regex recognizing Line[X Y X Y ... ] doesn't
  seem all that trivial to construct.
 
 These *may* be fixed up by Connects - Optimize routed tracks -
 simple optimization.  Use this feature with care - it usually removes
 zero length lines but occasionally it also erases needed trace
 segments by mistake.  I recommend saving first and performing DRC
 check and net connectivity check (o key) both before and after,
 checking for any changes - there /should/ be none.

 The trace optimizer only touches autorouted tracks by default - if you
 want it to work on manually routed traces you need to clear the
 Connects - Optimize routed tracks - [/] Only autorouted nets
 checkbox.

Thanks for the suggestion, but it messed up the layout something
wicked: over a 100 short circuits in my 1800+ nets. I'd prefer a simple
script to weed out lines of 0 and 1 mil length, and I don't mind writing
it myself if necessary.

Anyway, thanks again, best regards,

Richard Rasker



___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Two things ... or actually, three

2011-05-30 Thread Stephen Ecob
  - Zero length lines in PCB: I found that when drawing lines in PCB,

 I think you're tripping over the metric-rouding bug, where what you're
 seeing is lines that are 0.01 mil long.  We're working on that with
 the metrification of PCB.

 Is there already some sort of script to eliminate those micro-lines? And
 would it be a good idea if I wrote such a script? Or is it not advisable
 to eliminate those lines, for reasons of connectivity?


Connects - Optimize routed tracks - simple optimization will
remove micro-lines.   Generally it is a good thing to do so - they are
a nuisance for hand editing, and prevent the mitering optimizer from
mitering corners that contain them.

One thing to be careful of is that removal of micro lines that are
inside a pad can cause a DRC violation.  They often appear for pads
that are off grid, connecting the nearest grid point to the pad
center.  Removal of these ones can cause a insufficient copper join
overlap DRC violation.  I suggest saving before trace optimizing, and
also running DRC and netlist optimization before and after, and
comparing results.


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Two things ... or actually, three

2011-05-30 Thread Stephen Ecob
On Tue, May 31, 2011 at 7:21 AM, Richard Rasker ras...@linetec.nl wrote:
 Op donderdag 26-05-2011 om 22:56 uur [tijdzone +1000], schreef Stephen
 Ecob:
  Then two more usage questions:
  - Zero length lines in PCB: I found that when drawing lines in PCB,
  sometimes dots (zero length lines) get created inadvertently on corners
  and bends. This isn't much of a problem, until I start dragging lines
  and end points in rubber band mode: those dots then get stretched into
  undesired line segments which I sometimes don't notice until I get DRC
  errors and warnings about short circuits.
  Do I recall correctly that someone created a script to filter out those
  zero-length lines? I can't find anything in the mailing list archives,
  and it turns out that a regex recognizing Line[X Y X Y ... ] doesn't
  seem all that trivial to construct.

 These *may* be fixed up by Connects - Optimize routed tracks -
 simple optimization.  Use this feature with care - it usually removes
 zero length lines but occasionally it also erases needed trace
 segments by mistake.  I recommend saving first and performing DRC
 check and net connectivity check (o key) both before and after,
 checking for any changes - there /should/ be none.

 The trace optimizer only touches autorouted tracks by default - if you
 want it to work on manually routed traces you need to clear the
 Connects - Optimize routed tracks - [/] Only autorouted nets
 checkbox.

 Thanks for the suggestion, but it messed up the layout something
 wicked: over a 100 short circuits in my 1800+ nets. I'd prefer a simple
 script to weed out lines of 0 and 1 mil length, and I don't mind writing
 it myself if necessary.

 Anyway, thanks again, best regards,

 Richard Rasker

Oh sorry, we're writing emails at the same time!

You could consider making a stripped down version of Connects -
Optimize routed tracks - simple optimization.  Part of if removes
microlines.  The code is in pcb/src/djopt.c around line 1200.  Look
for the text LONGEST_FRECKLE


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Two things ... or actually, three

2011-05-30 Thread Richard Rasker
Op vrijdag 27-05-2011 om 19:56 uur [tijdzone +0100], schreef Peter
Clifton:
 On Thu, 2011-05-26 at 10:03 +0200, Richard Rasker wrote:
 
  - Work flow of newer gschem/PCB version: until recently, I worked with
  an older PCB version (20080202), but I finally got round to compiling
  and installing the latest version -- and it's quite an improvement (no
  more disappearing crosshairs, outlines and other GUI imperfections).
  Now I was used to the work flow of gschem - [update pcb in] xgsch2pcb
  - PCB, but this appears to have changed. Now I think I can find out by
  myself, but being a lazy person, I wondered if someone could explain
  this in a few words. Do I also need a newer gschem version? And has
  anything changed with regard to custom created symbols and footprints
  (as in: how do I make the new gschem and PCB versions aware of their
  existence?).
 
 Did you build the version from git HEAD, or a recent release? I can't
 quite recall when --enable-dbus became a default-on option, but if it
 is not switched on, then xgsch2pcb will not work.

 git HEAD defaults to --enable-dbus being on.

I got the most recent snapshot (20100929) through
http://sourceforge.net/projects/pcb/files/

It compiled OK after installing a bunch of dependencies, but I can't
recall at all whether dbus was enabled or not. By the looks of it, I
didn't use git, so I guess dbus is switched off. Is there a way to check
if it is enabled?

 There is also a new File - Import Schematics option which DJ
 produced, which you might like to look at as an alternative to
 xgsch2pcb.

I tried this (see another reply of mine to the mailing list), but right
now, it doesn't seem all that user-friendly, to put it mildly.

Best regards,

Richard Rasker



___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: gnetlist

2011-05-30 Thread John Griessen

On 05/30/2011 11:55 AM, DJ Delorie wrote:

One thought I had for gnetlist backends, is to recode gnetlist as a
set of libraries.  The Core would only load the design files
(schematics, spreadsheets, databases, back-annotation info, etc) as
raw data; the backend would be required to call at least one library
function that said I want data in this format.


so, load the design files as raw data seems to mean so that
the same input could be recreated from the internal data representation.

What does the internal data representation need to be in order to get all the 
kinds of data?
What is a minimal definition for internal data representation that allows 
adding anything else
in the realm of schematics, spreadsheets, databases, back-annotation info?

You left out layout, so I guess you mean reading data about physical stackup
in 3D is not desirable for gnetlist.  I kinda agree -- it would be hard for 
gnetlist
to output that without a lot of physical layout code.

I'd like the first definition
of what gnetlist does be, Output any data it takes in, in the same format,
with lost spatial position information allowed, but keeping all other data 
intact.

Can we output a schematic though?  It would not have any human readability if 
it lost
its drawing info -- its position of symbols info.

We have no mechanism for outputting a layout now and are not likely to get it.
It would be nice to have layout list output that is in good format for that 
layout tool
so you could merge it with full layout files.

So, is anything that asks for data in a format going to be called a back-end?
And the only way to use gnetlist is with one and only one back-end, right?


John


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Two things ... or actually, three

2011-05-30 Thread Stephen Ecob
 The trace optimizer only touches autorouted tracks by default - if you
 want it to work on manually routed traces you need to clear the
 Connects - Optimize routed tracks - [/] Only autorouted nets
 checkbox.

 Thanks for the suggestion, but it messed up the layout something
 wicked: over a 100 short circuits in my 1800+ nets. I'd prefer a simple
 script to weed out lines of 0 and 1 mil length, and I don't mind writing
 it myself if necessary.

One way to help the community is to file a bug report at Launchpad for this.

https://launchpad.net/pcb/+bugs?field.status=Newsearch=Searchstart=0

If you are happy to share your layout with the world you can attach it
to the bug report so that the developers can easily reproduce the bug.
 If you can't share the layout then consider stripping away most of
the layout until you have a small fragment that still triggers the
bug.


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: guile under minipack?

2011-05-30 Thread Bob Paddock
On Mon, May 30, 2011 at 1:01 PM, DJ Delorie d...@delorie.com wrote:

 Has anyone successfully built guile 1.8.7 with the latest minipack?

I just did a fresh checkout of minipack and am not even getting that
far right now:


pango:
  Build succeeded.


Unpacking gtk+...
patching file gdk/win32/gdkevents-win32.c
Hunk #1 succeeded at 1876 (offset -367 lines).
Hunk #2 succeeded at 2412 (offset -443 lines).
Configuring gtk+...
configure: error: *** Sorry, cups-config present but cups/cups.h missing.

=
gtk+:
  Build failed.
=

Anyone have any suggestions?


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: guile under minipack?

2011-05-30 Thread Bob Paddock
On Mon, May 30, 2011 at 1:01 PM, DJ Delorie d...@delorie.com wrote:

 Has anyone successfully built guile 1.8.7 with the latest minipack?


guile:
  Build succeeded.


That part worked fine with the minipack I just pulled.


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: gnetlist (was: Perl)

2011-05-30 Thread John Doty

On May 31, 2011, at 1:55 AM, DJ Delorie wrote:

 
 One thought I had for gnetlist backends, is to recode gnetlist as a
 set of libraries.

Now you're talking.

  The Core would only load the design files
 (schematics, spreadsheets, databases, back-annotation info, etc) as
 raw data; the backend would be required to call at least one library
 function that said I want data in this format.

Why have a core at all? One of the issues with the current gnetlist is that it 
cannot be ported to a different Scheme implementation, because the core is 
Guile-specific. Why not start from Scheme functions for reading/writing .sch 
format?

  The formats could
 be layered in the library, with each layer distilling the data even
 further, so that each backend could choose how much the data is
 pre-digested.

This is already present, in shallow form, in gnetlist.scm and 
gnetlist-post.scm, but much of the digestion happens unconditionally in the 
core. The foundation for the fix for the attribute censorship bug involved just 
a little refactoring, to move just a tiny bit of this digestion from the core 
to gnetlist.scm.

 
 Something like PCB's current backend, for example, would ask for a
 fully flattened design with all connectivity resolved and reduced to
 pin-level netlists.  A Verilog backend might want busses not reduced
 to pin-level, or the heirarchy left intact.  A BOM might not bother
 with connectivity, but ask for additional attribute processing.  Etc.
 
 This way, we can centralize a lot of the common tasks, without forcing
 those decisions on the backends.

Yes! Put plugins and back ends in control.

OK, I think we now have a nice creative rivalry between Schemers and 
Pythonians. Let's see some code!

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: gnetlist

2011-05-30 Thread John Doty

On May 31, 2011, at 6:35 AM, John Griessen wrote:

 I'd like the first definition
 of what gnetlist does be, Output any data it takes in, in the same format,
 with lost spatial position information allowed, but keeping all other data 
 intact.

I think the reader should preserve *all* of the information in a .sch file. 
There are several reasons:

1. Net connectivity depends on spatial information. But one approach doesn't 
fit all needs here. Right now, we have a simple minded netlister that reduces 
the net geometry in the schematic to a netlist model in which a net is 
topologically a single point. But suppose we start putting attributes on net 
segments (this segment must carry 10A)? Shouldn't a back end for a layout 
tool that can handle this be able to see this, figure it out?

2. Some would like busses to be more than decoration. A plug-in to do this 
wouldn't be hard, if bus and net geometry was accessible.

3. Netlisting isn't everything. A major application of a reader/writer library 
will be scripts for annotating schematics, I think.

It seems to me that the .sch file format is well suited to representation as 
S-expressions. A list of objects, each potentially attached to a list of 
objects, ...

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Two things ... or actually, three

2011-05-30 Thread Kai-Martin Knaak
Richard Rasker wrote:

 OK, I'll start by reading up on the light vs. heavy symbol discussions.
 Do I understand correctly that heavy symbols basically have certain nets
 with predefined names (e.g. VCC, GND) implicitly included, whereas light
 symbols offer the pins to connect those nets oneself? 

Not quite. There seems to be a consensus, that hidden nets are bad style.
At least, I haven't seen anyone advocate net attributes in the default lib.
The main difference between heavy and light symbols is the inclusion of a 
footprint attribute and/or documentation links and/or simulation attributes,
and/or license information.

---)kaimartin(---
-- 
Kai-Martin Knaak
Email: k...@familieknaak.de
Öffentlicher PGP-Schlüssel:
http://pool.sks-keyservers.net:11371/pks/lookup?search=0x6C0B9F53



___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: gnetlist (was: Perl)

2011-05-30 Thread Steven Michalske
I was thinking of how to represent all of the connections and relationships.

Then thought of sqlite3, as a database of connections.

a table of symbols,
a table of pins
This table maps the pins to a net and a symbol.
a table of nets


This is a rather simple database, of connections.

To compensate for complexities we want to add.
a table of symbol attributes,
a table of pin attributes.
a table of net attributes


to extend the ability of buses
a table of busses
a table of bus taps
- This would contain a bus, bus net, and the individual net.


The making a net list (no busses) would be something of the sort.

In pseudo code.

for each net in the sql query select net from net_table
do
print net: 
for each pin and symbol in sql query select pin_number, refdes
from net_table join symbol_table using symbol_id where net_table.net =
net
do
 print refdes and pin_number
end loop
print \n
end loop


aliasing nets would be similarly simple, with it's own table. that
would map the nets together.

Since the data structure is a sqlite3 database any programming language.
The database can be held in either memory or in file.

Steve


On Mon, May 30, 2011 at 6:13 PM, John Doty j...@noqsi.com wrote:

 On May 31, 2011, at 1:55 AM, DJ Delorie wrote:


 One thought I had for gnetlist backends, is to recode gnetlist as a
 set of libraries.

 Now you're talking.

  The Core would only load the design files
 (schematics, spreadsheets, databases, back-annotation info, etc) as
 raw data; the backend would be required to call at least one library
 function that said I want data in this format.

 Why have a core at all? One of the issues with the current gnetlist is that 
 it cannot be ported to a different Scheme implementation, because the core is 
 Guile-specific. Why not start from Scheme functions for reading/writing .sch 
 format?

  The formats could
 be layered in the library, with each layer distilling the data even
 further, so that each backend could choose how much the data is
 pre-digested.

 This is already present, in shallow form, in gnetlist.scm and 
 gnetlist-post.scm, but much of the digestion happens unconditionally in the 
 core. The foundation for the fix for the attribute censorship bug involved 
 just a little refactoring, to move just a tiny bit of this digestion from the 
 core to gnetlist.scm.


 Something like PCB's current backend, for example, would ask for a
 fully flattened design with all connectivity resolved and reduced to
 pin-level netlists.  A Verilog backend might want busses not reduced
 to pin-level, or the heirarchy left intact.  A BOM might not bother
 with connectivity, but ask for additional attribute processing.  Etc.

 This way, we can centralize a lot of the common tasks, without forcing
 those decisions on the backends.

 Yes! Put plugins and back ends in control.

 OK, I think we now have a nice creative rivalry between Schemers and 
 Pythonians. Let's see some code!

 John Doty              Noqsi Aerospace, Ltd.
 http://www.noqsi.com/
 j...@noqsi.com




 ___
 geda-user mailing list
 geda-user@moria.seul.org
 http://www.seul.org/cgi-bin/mailman/listinfo/geda-user



___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user