[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: Heavy Symbols and such



On Wednesday 05 December 2007 06:33:43 pm Steven Ball wrote:
> I've been thinking about this a bit, and here's my 2 cents:
>
> gschem and pcb both really just want light symbols/footprints.  It
> would never really be a good idea to expect to stick one into the
> other, I mean, what if you change packages or something?  I guess you
> could up rev the schematic or whatnot, but I'd prefer that bit of
> things to be divorced.

The BOM should be the master document that populates everything.

If you have to deal with ISO9000 et.al. you don't want to be changing
your schematic because a vendor decided to stick a "K" on the end
of a part number to represent that it is "Lead Free" (and why a "K"?).
Obviously people on this list are dealing with schematics and PCBs,
so we tend to think of the schematic as the "master",
but in the contracting environment the BOM is what rules everything.


> Then, you'd just need to maintain a mapping of symbol -> footprint
> somewhere.  I'd love to see this be able to tie into a filesystem, a
> database, and even gedasymbols as sources.

This might be of interest to the Lite vs Heavy group:

"The Mumps Compiler and Multi-Dimensional and Hierarchical Toolkit"
http://cns2.uni.edu/~okane/source/MUMPS-MDH/compiler.html

This drawings there explain it better, but this is what people have
been referring to, without realizing there was a specific language
for it for textual hierarchies.

Think of something like this:

set ^project(^bom(^schematic("revision","refdes","footprint")))="0603"

Quoting from the above URI:

Here, the tree is named patient which is also the name of the global array 
(notice that global arrays always have a circumflex (^) preceding their 
name). The Mumps code to populate the above might look like: 

      set ^patient("123-45-6789")="Jones, John, J"
      set ^patient("123-45-6789","Demographics","Street")="123 Elm St"
      set ^patient("123-45-6789","Demographics","City")="Anytown"
      set ^patient("123-45-6789","Demographics","State")="IA"
      set ^patient("123-45-6789","Demographics","ZIP")="50613"
      set ^patient("123-45-6789","Dx",789.00,"6/23/2005")="Dr Smith"
      set 
^patient("123-45-6789","Dx",789.00,"6/23/2005","lab","HCT","6/23/2005","10:45",45.2)=""
      set 
^patient("123-45-6789","Dx",789.00,"6/23/2005","lab","HCT","6/23/2005","20:45",43.2)=""
      set 
^patient("123-45-6789","Dx",789.00,"6/23/2005","lab","HCT","6/24/2005","21:10",44.2)=""
      set 
^patient("123-45-6789","Dx",789.00,"6/23/2005","lab","HCT","6/25/2005","14:10",44.2)=""

"Global arrays are unique to Mumps ['Global' has a unique meaning in MUMPS]. 
As a programmer, you will work with them as though they were arrays. [They 
are spars arrays.] The system, however, interprets them as tree path 
descriptions for the system's external data files. A global array is 
distinguished by beginning with the circumflex character (^). The remainder 
of the specification is the same as an internal array. global arrays are not 
dimensioned and they may appear anywhere an ordinary variable may appear 
(except in certain forms of the "kill" command). A typical global array 
specification consists of the array name followed by some number of indices 
(indices may be constants, variables [including internal or global arrays] or 
expressions of string, numeric or mixed type). For example: 

      set ^a(1,43,5,99)="TEST"
      set ^ship("1ST FLEET","BOSTON","FLAG")="CONSTITUTION"
      set ^captain(^ship("1ST FLEET","BOSTON","FLAG"))="JONES"
      set ^home(^captain(^ship("1ST FLEET","BOSTON","FLAG")))="PORTSMOUTH"
      write ^ship("1ST FLEET","BOSTON","FLAG")
            ... CONSTITUTION
      write ^captain("CONSTITUTION")
            ... JONES
      write ^home("JONES")
            ... PORTSMOUTH
      write ^home(^captain("CONSTITUTION"))
            ... PORTSMOUTH
      write ^home(^captain(^ship("1ST FLEET","BOSTON","FLAG")))
            ... PORTSMOUTH


The system files are viewed as trees. Each global array name 
("A", "SHIP", "CAPTAIN", and "HOME" in the above) is the root of a tree. The 
indices are thought of as path descriptions to leaves. For example, out of 
the root "^a" there may be many branches, the above specifies to take the 
branch labeled "1" (note: this does not mean the "first" branch out of the 
node - it means the branch with label "1"). At the second level the 
specification says to take the branch labeled "43" (note: this does not imply 
that branches 1 through 42 necessarily exist). The path description is 
followed (or, possibly, created if the global array specification appears on 
the left hand side of an assignment statement or in a read command) to a 
final node. The value at the node is either retrieved or a new value stored 
depending upon the context in which the global array specification was used. 
The indices of global arrays may be numeric or character strings. The second 
sequence of examples above illustrates this usage."

This MUMPS compiler converts MUMPS to C++.

http://judy.sf.net might also be of interest as it is in C,
as it is an other spars array system.


-- 
                http://www.wearablesmartsensors.com/
 http://www.softwaresafety.net/ http://www.designer-iii.com/
                 http://www.unusualresearch.com/


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