← Back to team overview

kicad-developers team mailing list archive

Re: PCB Layer Stackup UI


jean-pierre.charras@... wrote:
Dick Hollenbeck a écrit :

jean-pierre. charras@gipsa- lab.inpg. fr <mailto:jean-pierre.charras%40gipsa-lab.inpg.fr> wrote:

Dick Hollenbeck a écrit :

jean-pierre. charras@gipsa- lab.inpg. fr
<mailto:jean- pierre.charras% 40gipsa-lab. inpg.fr> wrote:

Dick Hollenbeck a écrit :

I meant to say specctra syntax, not specctra format. There is no
specctra format that can fully describe a board. Briefly, there
is the

DSN format and the SES format. The DSN describes the copper layers
only, no technical layers. No text. The SES format describes a subset
of the copper layers and has less information in it.

I did not understood that.
So, I do not see any problem to use the Specctra syntax.

One or more sample board files should be created then before any coding
is done IMO, using a text editor and a brain.

Ok. I have already a text editor.

I think this process is easiest to create the sample(s):

1) load a DSN file from the specctra_export into a text editor or have
it as a hardcopy printout nearby for reference.

2) load an existing board file, one with multiple layers, components,
tracks, vias, drawings, and multiple zones.

3) copy the board file to a new window, and convert it to the new
syntax, but incorporate some new concepts. This is an object
conversion, not so much a line by line conversion.

New concepts in the file:

** Special layer names. Any technical layers, plus front and back
copper, should get fixed names rather than layer numbers

** Layer sets as discussed.

** unit_res see this in the specctra spec, it allows different regions
in the file to to have different units. each unit_res has a limited
scope of applicability.

** use concise element names, pay attention to frequency of use. no
element should have a lot of unnamed parameters, but instead use nested
elements to make the file self documenting.

** the first copper layer is number 0 but has a special name
'front', in

addition to any name the user gives it.

We also can use keywords instead of numbers like in Gencad format (see
export_gencad. cpp)
layer identification use TOP, BOTTOM, INNER1, INNER2, SOLDERPASTE_
TOP ...

and no numbers.

Yes, but I wonder if you are reading my posts.

lower case only.

UI will be using the terms front and back. So to introduce TOP and
BOTTOM is silly.

So use 0 for the first copper or the last or negative values for non
copper layers or disabled layers ... is just a coding design
and does not appears in files.

The copper layer number are indices into the layer definition block.
Specctra does this, to replicate a copper layer name everywhere there is
a layer will balloon the file size. To use a fixed copper layer name
for internals is silly.

My recollection was wrong, specctra uses the layer names as layer references, and does not use the layer indices as layer designators in any case that I can find.

All I had to do to find this out was to export one of my boards, then my memory came back. Jean-Pierre, this puts your suggestion and specctra on the same page, and I have no disagreement with it regarding copper layer designators/references.

There are a couple of reserved copper layer names, such as 'signal' but I will disallow that in the layer name editor. ('signal' is also a valid layer type, but that is not what I am talking about, not type, instead name). I am talking about the case where it designates a layer reference. I may have also forgotten that this may mean "all copper layers". Its been over a year, tough to remember this level of detail. Main thing is that 'signal' cannot be used as a user assignable copper layer name, and there may be one or two other special copper names that we will avoid in the editor.

Over the last 3 hours, I surgically separated out:

1) 3 existing classes that I wrote a year ago and put them into a source module called "richio". These are OUTPUTFORMMATER, IOError, and LINE_READER.

2) I also separated out the DSNLEXER class which sits on top of richio.

3) SPECCTRA_DB is no longer the only potential client of DSNLEXER. You can now assign DSNLEXER any keyword table. We may want to write a little C++ program to automatically build the C++ source file(s) for a keyword table, and maybe have CMake build this tool. The output should be an enum{ } and a KEYWORD[] array. See static SPECCTRA_DB:keywords[] and static SPECCTRA_DB::keywordCount.

(FYI "richio" was chosen because it both signifies value that you will not find anywhere else, but also because I wrote it and my real first name is Richard.)



Mails take some time to be received, they have a latency time.
My mail was sent before i received your mail.

TOP and others key words are just what GenCad uses, not what I want to use.
See what other guys made is always interesting:
- If this is a good idea remember it.
- If this is a bad idea, just not not use it.