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

Re: gEDA-user: multiple attributes

On Jan 5, 2011, at 8:49 AM, Stephan Boettcher wrote:

> Matthew Wilkins <matthew_m_wilkins@xxxxxxxx> writes:
>> There _is_ a meaning to the order if a netlister expects only one
>> attribute, but the symbol has several of the same name.  In that case,
>> the netlister could find either the first attribute of that name or
>> the last, depending on how the netlister was written.
> This should either case an error or a prominent warning.
>> About overloading:
>> Sometimes it's desirable to overload attributes; for example I might
>> want to simulate a circuit through a spice netlister, then generate a
>> BOM of the parts in the simulation.  Having the BOM netlister use the
>> same "value" attributes as the simulation helps prevent errors in
>> keeping the two flows in sync.
>> To give the user the choice of overloading the symbols or not, each
>> netlister could first look for a netlister-specific attribute, and if
>> that doesn't exist then use a generic attribute.  i.e first look for
>> "spice-sdb-value", and if that doesn't exist then use the generic
>> "value".
> And that is the way forward for the problematic overloading we have
> right now, e.g., the pinseq attribute:
> The spice netlist shall learn to use a (spice-)port-order attribute, or
> however that shall be named, and fall back to pinseq, with an
> obsolescence warning.
>  spice-port-order
>  port-order
>  pin-seq  (obsolete)

I'd prefer a spice-prototype attribute, which would allow us to avoid many of the difficulties without a confusing proliferation of attributes. For the symbol nmos-3.sym, a suitable prototype might be:

M? #D #G #S #S $model-name L= W= AS= AD= PS= PD= M=

We can yell at each other about syntax, but I think the basic idea is sound. Right now, spice-sdb is essentially reduced to guessing what the symbol represents. It can't always tell reliably (it's been know to decide my flip-flops are diodes!). There isn't generally one right answer: with a different kind of model (subcircuit), the prototype for nmos-3.sym might be:

X? #D #G #S $model-name

Suggested syntax:

First characters up to the "?" are the device prefix.

#x means the net attached to pinnumber x.
%x means the net attached to pinseq x.
`x means the net attached to pinlabel x.
$x means the value of attribute x.
x= means an optional x=value string to be emitted only if the x attribute is present.

An improved SPICE netlister could incorporate heuristics similar to spice-sdb to pick a prototype from a collection of defaults, or fall back purely on pinseq and model-name, if no spice-prototype attribute is present, for backward compatibility.

John Doty              Noqsi Aerospace, Ltd.

This message contains technical discussion involving difficult issues. No personal disrespect or malice is intended. If you perceive such, your perception is simply wrong. I'm a busy person, and in my business "go along to get along" causes mission failures and sometimes kills people, so I tend to be a bit blunt.

geda-user mailing list