Not signed in (Sign In)

Vanilla 1.1.4 is a product of Lussumo. More Information: Documentation, Community Support.

  1.  
    I had designed a chip using K layout and saved it as gds and send it to foundry. But they replied its not proper. So we also checked using GDSII viewer software and found the gds didn't showed full circuit. later I send him the dxf file and he opened it on cadence and saved it as gds. again we tried to open that newly created gds, it opened in every gds viewer very well.
    All the structure, layout hierarchy and even variable names are same, and also the size of gds saved from cadence is same; But why can't my file exported from K layout not working well?
  2.  
    UPDATE: FIXED IT..
    I think I made a mistake while designing. I used to save the file in gds while I was designing. I figured out that I need to save it in dxf during the design phase and only after finishing the design, I need to save as gds. This way the file worked.
    But I am still not convinced that why saving in gds and editing file gave me a problem whereas saving in dxf and saving to gds at the end has no problem at all.
    • CommentAuthordavidnhutch
    • CommentTimeFeb 13th 2018 edited
     

    It has always worked for me. Perhaps you have a setting set wrong. For example when you go File > Save As, there is a dropdown "Layers to save", which should be "All". That might be set to "Visible layers only". Or there could be other reasons.

    Anyway if you can upload a test case somewhere, that is a dxf and after saving to gds you find some parts missing, then I can see if I can replicate that. Bonus points if you include the incorrectly-generated gds file that goes with that dxf so I can see exactly what is missing.

  3.  
    It's not just about visibility, the design looks pretty messed up. things have moved around the layout. So I don't think it is layer issue.
    Anyways, how can I upload my design? I can upload my sample design for you. So that you can help me figure out how is it possible. while viewing at k layout all 3 looks same, but if checked from another viewer, only that was generated from dxf works.
  4.  

    There's no way to upload it here. You have to upload it somewhere (like dropbox) and then you post a link here

  5.  
    Please follow this link.
    And thank you in advance. I am also too curious about that small difference.
    https://drive.google.com/drive/folders/1ImMmJTmVsCYnNk1Jyucp-L1vUonn8s3x?usp=sharing
    • CommentAuthorMatthias
    • CommentTimeFeb 15th 2018 edited
     

    Hi,

    If I understand you correctly, you need to save to DXF to get a correct GDS file? I'd not recommend this path as DXF is not really suited for mask layout - for example, DXF is lacking drawing unit information. GDS (or OASIS) are made for this purpose, so with DXF you can only go wrong.

    Could you be a bit more specific what the problem was? Did your foundry tell you what issue they found? Any error message, warning or similar? Which GDS viewing tool are you using? And apparently you mask maker is able to turn a "bad" GDS file into a good one using Cadence, right? So how can Cadence do that well when another tool can't?

    Looking at your test data, I found only minor differences in "test.GDS" and "test from dxf.GDS". For example, in "test.GDS" the "Grating2" instance is a single-instance AREF (an array with 1x1 instances). Such instance are not illegal from my point of view, just useless. These instances are turned into single instances on various occasions in KLayout - maybe on DXF read or write. So if you mask maker or your other viewer tool can't read those AREFs, this would provide an explanation.

    But I often encounter these kind of useless AREFs in other layouts and they seem to be common. So I can't really believe they are responsible for serious issues. Every tool I know can deal with this case properly. Only very old software might be overly picky with respect to such cases. Maybe your foundry can provide you with information about the GDS features allowed. Often old tools have other limitations too, like the number of points per polygon and path, the maximum layer number, length of cell names, characters allowed in cells names and such. You need to be aware of such limitations to be avoid further issues.

    The OASIS standard is much better defined this respect, so IMHO this should be the preferred exchange format. But that's a different topic.

    Regards,

    Matthias

  6.  
    Thank you Matthias for your reply. Sorry for late response due to new year holidays here at Korea.
    My problem was:
    I had designed two similar layout in a single reticle(dividing it into two). The only difference between those two layouts are the grating couplers. I wanted to examine the effect of different gratings.
    But when we send the file I made (generally I used to save it in gds during design), the gds viewer showed only half portion and that was also moved here and there. It was a total mess.
    So, we sent them dxf file to see how the design looks, and they opened that dxf in cadence and saved it as gds. And the result was correct.
    Hearing that I also tried saving my file in dxf while editing and finally saving in gds. This time the file worked well in all gds viewer.

    So I was curious what made these difference.

    UPDATE: I have added a new folder with screenshots of the views in the drive. Please have a look.
    You can see the layout from dxf is exactly as seen from K layout. But in another case, the texts, bends and many of the instances are lost and misplaced.

    Thanks in advance!
    • CommentAuthorandyL
    • CommentTime5 days ago
     
    Good evening,
    The issue sound familar to me - we've encountered an issue with a GDS viewer reading in a gds design layouted with klayout.
    Reason was that the nuber of vertex when you save a gds file was set to 8000 while the gds reader we used in the past only supported a vertex number until 300. As a result polygon were cut off. If you then export or save a gds from this GDS viewer you face a real issue in the fab.
    How did you set the writer option values?
    In your test case I run a quick check and export one gds with 300, the other with the default value of 8000 and finally run a DIFF - there are few differences between both gds ...
    We get around by using OASIS.

    Best Regards,
    Andy
    • CommentAuthorMatthias
    • CommentTime5 days ago edited
     

    Hi all,

    After looking at the screenshots I'm pretty sure the issue is the one I was suspecting above (single-instance AREF's). All cells I see - the missing bends, the labels, the missing wiggly connection pieces are such AREF's. I have not seen big polygons - then quarter-circle bends have only 154 points which shouldn't be an issue.

    You can see the single-instance AREF's when you select an instance, double click it and in the Instance Properties look at the "Array Instance" option. If it's checked and the rows and columns count is 1, you have such a single-instance AREF. There are some cases where there are true AREFs (for example, the GC_W15 instance in the upper half, left side) has 20 rows and one column.

    As I mentioned, IMHO such an instance is valid although somewhat useless. DXF turns them into single instances. I don't know what the viewer you use isn't able to deal with them - I'd rather say that's a bug.

    If you want to get rid of the single-instance AREF's I'd recommend saving to OASIS instead of DXF - this will also preserve the PCell instance of the labels.

    Speaking of PCell instances I need to say that if you use PCells, 3rd party GDS viewers will show a strange additional top cell called "$$$CONTEXT_INFO$$$". GDS by itself is not able to store PCell data, so KLayout needs a place where to keep that. This dummy top cell is this vault. It's hidden by KLayout, but your mask maker will see it. You can either tell him to make sure to use your actual top cell (they should be able to select only this one), or you save with the "Cell context" option OFF (under "Generic Options"). But after this of course, your PCell instances became ordinary ones. So you do this as the last step.

    Kind regards,

    Matthias