Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

How to implement "Illegal" GDS2 dialects

In my work I use e-beam lithography a lot and one of the hassles is that manufacturers (e.g. RAITH) have implemented there own GDS structures (in that case Circular elements, where the beam is moved in a circular fashion). I do like KLayout a lot, so I thought I could open the files there. This additional structures are illegal according to the specs, so I understand that KLayout does not support them.

I was now wondering how such support could still work and looked a little bit into the streamers plugin, and there is no space to support each and every dialect that is probably floating around.

I was wondering if some kind of import filter could make sense, that converts the illegal GDS elements into PCells before the database is read.

Do you have some opinion on how such a use-case could be supported or are already some ideas/solutions floating around.

Thanks a lot for your software.


  • Hi gyger,

    You're welcome :-)

    I once already got a request to support RAITH structures. Technically enhancements aren't impossible, but I have some restrictions. For example, the specification needs to be open and no patents must be involved. I recall that the request didn't really proceed maybe because of this.


  • Hej Matthias,
    I am not sure about the licensing stuff. I was more wondering if there would be a possibility to get a hook into the loading procedure, so one can write a plugin for a file format, or filter the file format for all the un-normed stuff they sometimes add before it is read by the GDS reader.

  • Hi,

    That's possible by creating a new C++ derivative of the GDS reader, but as this counts as "derived work" in the GPL sense, the code needs to be GPL too which itself provides licensing issues if the methods exposed by this code are proprietary ... So I'd not consider this unless there is approval by the format owner.

    I can hardly imagine which kind of hook is required to cover every case of "illegal" GDS constructs. Is it sufficient to pass unknown records? When will such an illegal record sequence terminate? Are there standard records extended in a particular way? Frankly, I think this raises too many questions for my taste and it feels like a lot of tedious work.

    OASIS is easier because it provides standardized extension objects (XGEOMETRY, ...).


Sign In or Register to comment.