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

Re: gEDA-user: uEDA .. was .. Re: Heavy Symbols and such



I think the only area of question is... is there a need to translate
from spice to another language? The need for a spice output is so that
tools that use spice input exclusively can be supported and that users
who preffer to have a version of their work in a spice syntax can have
it. I see no need to deprive geda users of a spice output? If you don't
need it don't use it.

Steve Meier

al davis wrote:
> On Thursday 06 December 2007, Steve Meier wrote:
>   
>> Perhaps what Al is
>> suggesting is that vhdl has all the elements needed for
>> constructing an internal data structure?
>>     
>
> Not really ... The idea is a common interchange format.  Even if 
> the data is different, the syntax can be the same.
>
> Steve also said this in private mail (I hope you don't mind my 
> repeating it in public):
>   
>> I actually think that one of the rather remarkable things
>> about geda is the use of a macro language to generate the
>> output.
>>     
>  .... repeated because I agree with it, strongly.
>
> On Thursday 06 December 2007, John Doty wrote:
>   
>>  I have no strong preference as  
>> long as the result retains gEDA's flexibility.
>>     
> ... also repeated because I agree with it, strongly.
>
> Those last two points are so strong that if the format fails to 
> meet either, it must be rejected.
>
> ok ... let's look at the requirements
>
> First, the data.
>
> All of the tools dealing with structure need files consisting of 
> the following:
>
> -- The ability to encapsulate into some kind of modules.
>
> Each module contains a list of objects .. "instances".
>
> Each "instance" statement contains 4 parts:
>
> 1. The type.
> 2. The name or label.
> 3. A list of connections.
> 4. A list of parameters or attributes.
>
> If you disagree at this point, address it now.
>
> If you can accept that, let's look at some formats.
>
> The obvious one is the Spice format.
>
> R1 1 3 10k
> Q2 2 4 5 2n2222
> X1 3 5 block
>
> Let's do something a little harder ..
> parameterized values, fancy sources, arguments to subcircuit 
> calls ...
>
> R1 1 3 bob
> Q2 2 3 5 6 lateral area=2
> X1 2 4 block d=4 e=6
> V1 1 0 pulse (.001 23 44.55 6 0)
> X2 a b c d e f g h i j
>
> What is the letter for an op-amp?
> What is the letter for an SCR?
> What is the letter for a trace on a PC board?
> What is the letter for a Via?
> Do you remember the order of those arguments on the V1 line? 
> -- I don't .
> On the X2 line, can you figure out which arguments are nodes, 
> which is the name of the subcircuit being called, which are 
> parameters?
>  -- remember, the ()[]= are all just whitespace!
> It seems that every type has different syntax.
> Type is encoded in the letter.
> It was a good format in 1975.  We have outgrown it.
> ----- fails both the macro language and flexibility criteria.
>
>
> The logical outgrowth of this is the Spectre format.
> R1 (1 3) resistor r=bob
> Q1 (2 3 5 6) lateral area=2
> X1 (2 4) block d=4 e=6
> V1 (1 0) vsource type=pulse width=1u rise=.1u delay=1u
> X2 (a b c) d (e=f g=h i=j)
>
> ---- much better.
> Still, the parentheses are optional.  You need to scan forward 
> to the first "=" to figure out what is where.
> It is nice from a human viewpoint, but as is fails the macro 
> language test.  It is easy to fix, but they didn't.
> Every type has the same syntax, regardless of what it is.
>
> If the parentheses were required it would be an excellent 
> format.
>
> One big problem .....
> The spec is proprietary.  It belongs to Cadence.
>
> We should support standards, not proprietary formats, except as 
> import and export.
>
>
> How about VHDL ...
> r1: entity resistor port map (p => 1, n => 3) generic map
>     (resistance => bob);
> Q2: entity lateral port map (c => 2, b => 3, e => 5, sub => 6)
>     generic map (area => 2);
>
> ---- it's regular.  Could be adequate, but lots of extra stuff.
> Every type has the same syntax, regardless of what it is.
>
> The full spec (which mostly covers stuff not relevant here) is 
> published and available for a price.  The price pays for the 
> document itself, no restrictions on implementation.
>
> It is certainly flexible enough.  Does it pass the macro 
> language requirement?
>
>
>
> Verilog....
> resistor #(.r(bob)) r1 (1,3);
> lateral #(.area(2)) Q2 (2, 3, 5, 6);
> block #(.d(4), .e(6)) b1 (.hot(2), .cold(4));
>
> --- it's not as pretty as the Spectre format, but it is easy to 
> parse.
>
> The first argument is always the type.
> The parameters, which are optional, are marked with #, and 
> enclosed in parentheses.
> The label is next,
> The ports are enclosed in parentheses.
>
> Either list (ports or parameters) can be listed with the values 
> in order, or by name in any order.  By name they always have 
> the form .name(value) .. 
>
> So, it meets the needs of retaining the flexibility, and being 
> parsable with a macro language.  A statement can be generated 
> with one line of code in most programming languages.
>
> Every type has the same syntax, regardless of what it is.
>
> The offical spec can be downloaded at no charge.  Mostly it 
> covers behavioral modeling, which is beyond the scope of what 
> we need here.
>
>
> These formats were all designed by people who know Spice and 
> needed something more flexible, and more parsable.
>
>
>
> You could also make an XML based format to do this.  Note that I 
> didn't say "use XML as the format".  Just saying XML doesn't 
> say enough.  More info is needed.  It can be done, but there is 
> no precedent for it.  There is a library for it, but do we want 
> another dependency?  Can you easily parse it with a macro 
> language?
>
>
>
> Now, to generalize to things other than simulation netlists..
>
> To represent a layout, "types" might say whether it is a via, 
> trace, fill block, footprint by name.  The attributes are 
> length, width, forms, scaling.  The connections are physical 
> locations.  This is the same info that is in a PCB file now.  
> (or any layout program)
>
> To represent a schematic, "types" might say whether it is a 
> line, dot, or a symbol by name.  The attributes are the 
> attributes you specify now, and also perhaps color.  The 
> connections are physical locations.  This is the same info that 
> is in a gschem file now.  (or any schematic program)
>
> You could extend this to just about anything that can be 
> described as such a list of objects.
>
>
> My proposal is (and has been) to pick one, and make the 
> translators go through it as an intermediate format.  Ideally, 
> tools could use it directly, but that is not necessary.
>
> There is no standard for languages used by schematic and layout, 
> so no basis there for choice.
>
> The high end EDA tools are using something called "open access" 
> as a generalized communication format.  There is a library 
> available for reading and writing it.  It has several problems.  
> The first is that it fails the macro language requirement.  The 
> second is that the licensing on the library is not appropriate, 
> and it is too complicated to consider rewriting.
>
> The Spice, Spectre, VHDL, and Verilog languages are used by 
> simulation and synthesis tools, extensively.  Other than Spice, 
> it is easy to translate one to another.
>
> Using a simulation language makes it easy to simulate directly 
> from a schematic or layout, with no simulator extensions 
> needed, other than to define what the types mean in that scope.
>
> In research settings, I have seen all of these used to represent 
> things more general than circuits.
>
> For other uses, just use a different definition of what the 
> types mean.
>
> For simulation a PCB trace is a transmission line.
> For layout a PCB trace is a box with dimensions.
> That part is supplied externally.
> The part in the data file can be the same.
>
>
>
> So, .. the idea is: pick a syntax.  It must be sufficiently 
> flexible and parsable with a macro language.
> Then map it.
>
> You could invent a new syntax, but there is no precedent for its 
> use in this area, so you are on your own.  Pick one that people 
> are already using, we get support from people who are using it, 
> including some EDA researchers who would love to be able to use 
> gEDA.....  (and have actually asked me about a way to do this, 
> that isn't "open access" which isn't really open).
>
>
>
>
>
>
>
>
> _______________________________________________
> geda-user mailing list
> geda-user@xxxxxxxxxxxxxx
> http://www.seul.org/cgi-bin/mailman/listinfo/geda-user
>
>   



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