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

Re: gEDA-user: Christmas wishlist



karl@xxxxxxxxxxx (Karl Hammar) writes:

> Stephan:
>> Merry Christmas!
> Thanks, Merry Christmas to youself!
>
> ...
>> === Make elements small layouts ===
>> 
>> An element shall be defined as a small layout, same syntax, same
>> semantics. ...
>
> That would be great.
>
>> === Introduce the concept of classes/macros ===
>> 
>> A macro is a sub-layout ...
>
> If a macro is a sub-layout, why not just call it a sublayout.

I really do not care about the name.  But those sublayouts are not only
sublayouts, but also via stacks and element footprints, or whatever
comes up in the furture to use the concept.

>> COW ...
>
> What is "COW"?

Copy On Write.  Currently, you can change attibute sof individual pads
on individual elements, since they are all distinct copies of the
footprint.  This possibility needs to be preserved, and during
develpment, the HID must behave as beiore, by default.  So when an
Element is a macro instance, when you change a pad width or clearance,
you must brack the reference to the original macro definition.  How to
do that is up to the HID.

>> === Hierarchical layout ===
>> 
>> Elements may contain Elements. Either with hierarchical netlist, or
>> with flattened refdes, like gnetlist generates. When the higher level
>> elements are defined as macros, a fully hierarchical layout is
>> possible.
>
> Great, can we have paramenters/return values passed to/from the
> sub-layouts/elements?

No, not in my visions, but I can see some override mechanisms.

I made a sketch of a file structure how this could work.  Again, I do
not care about the syntax, I do not like xml that much, but with some
dicipline it could be close to ok:

<layout resolution="1nm" units="1um" name="EXAMPLE">

  <font>
    ...
  </font>
  
  <layer id=1 name="top" map="copper;component,outer" mirror="bottom"/>
  <layer id=2 name="power" map="copper;inner"/>
  <layer id=3 name="ground" map="copper;inner"/>
  <layer id=4 name="bottom" map="copper;solder,outer" mirror="top"/>
  <layer id=5 name="topsilk" map="silk_component" mirror="botsilk"/>
  <layer id=6 name="botsilk" map="silk_solder" mirror="topsilk"/>
  <layer id=7 name="topmask" map="soldermask_component" mirror="botmask"/>
  <layer id=8 name="botmask" map="soldermask_solder" mirror="topmask"/>
  <layer id=9 name="toppaste" map="solderpaste_component" mirror="botpaste"/>
  <layer id=10 name="botpaste" map="solderpaste_solder" mirror="toppaste"/>
  <layer id=11 name="outline">
  <layer id=12 name="vias" map="via" connect="top;power;ground;bottom"/>
  <layer id=13 name="microvias" connect="top;power"/>
  
  <routingstyle id=1 name="signal" via="via1" width="10mil" clear="10mil" ends=round/>

  <macro id=1 name="via1" cow=macro>
    <dot id=1 layer="vias" diameter="16mil"/>
    <dot id=2 map="inner" diameter="36mil" clear="8mil"/>
    <dot id=3 map="outer" diameter="40mil" shape=octagonal clear="10mil"/>
  </macro>

  <macro name="via1_1" copied="via1" cow=macro unref=delete>
    <dot id=1 layer="vias" diameter="16mil"/>
    <dot id=3 map="outer" diameter="40mil" shape=octagonal clear="10mil" />
    <dot id=4 layer="power" diameter="36mil" clear="8mil" />
    <dot id=5 layer="ground" diameter="36mil" clear="8mil" thermal="X" />
  </macro>

  <macro id=2 name="0603" cow=contents units="1mil">
    <line id=1 map="component" width=35 ends=square pin="1" clear=10> 32 -2 32 2 </line>
    <line id=2 map="component" width=35 ends=square pin="2" clear=10> -32 -2 -32 2 </line>
    <line id=3 map="solderpaste_component" width=35 ends=square> 32 -2 32 2 </line>
    <line id=4 map="solderpaste_component" width=35 ends=square> -32 -2 -32 2 </line>
    <line id=5 map="soldermask_component" width=41 ends=square> 32 -2 32 2 </line>
    <line id=6 map="soldermask_component" width=41 ends=square> -32 -2 -32 2 </line>
    <line id=7 map="silk_component" width=4> -30 -15 30 -15 30 15 -30 15 -30 -15 </line>
    <text id=8 map="silk_component" size="25mil" x=40 y=-40 hierarchy=full />
  </macro>

  <element id=1 name="R1" value="1k" reference="0603" x=100 y=150 rotation=0>
    <instance macro="0603">
      <override id=1 name="Pin1" clear="15mil">
      <override id=2 name="Pin2">
    </instance>
  </element>
  <line layer="top" ends=round> 132 150 132 250 </line>
  <instance macro="via1_1" x=132 y=250/>

</layout>


-- 
Stephan



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