xsection bug - etch does not work unless performed twice

edited September 2023 in General

Hi all,
I encountered a strange bug that in a recent xsection update some steps etch does not work unless it is done twice.

For example here I am emulating wet etch hardmask removal, and it only works if done twice, despite the thickness of the hardmask being only 0.5um.

  _depth = 3
  _bias = 3
  etch(_depth, _bias, :into => [@SiOx,@SiNx])
  #bugs out and does not work without the second etch
  etch(_depth, _bias, :into => [@SiOx,@SiNx])

If I increase depth to 6 then it still does not work with only one etch. Only the second etch works.

Any idea of what is going on?

//Btw, xsection is an amazing process visualization tool!


  • Hi @ResuS,

    Thanks for your feedback :) Actually, the xsection script does not really belong here as it is a separate project (https://github.com/klayoutmatthias/xsection). However, I do not actively maintain it and it is pretty much frozen. The reason is that it is already beyond what is reasonable - it is amazingly useful but also is quick to lead you to wrong conclusions and people are raising feature requests that I consider inappropriate for this simple concept. So use on your own risk. I mean that.

    If you want to learn more about this: I gave a talk 2022 in Paris about XSection and why I do not really like it. You can watch it here: https://peertube.f-si.org/videos/watch/25b56a31-7357-468c-a9fd-8938e6005fe4

    About your specific problem: Did you properly set "depth" (see here: https://klayoutmatthias.github.io/xsection/DocReference)? The default depth is only 2µm (fitting to a planar CMOS process for example), but you are using values much bigger that this. Try a depth of 10µm for example and don't forget to set a larger height too.

    With just a small snippet it's impossible to debug the issue. If you find "depth" does not help, please try to paste a stripped down sample and attach some test layout (.zip it to attach it).


  • Hi @Matthias, thanks! In the latest version of xsection with depth set to 20 this is no longer the issue.

    I think this is a shame that this project is frozen, since it is exceptionally useful in "large processing" such as older nodes or outside of SI world (e.g. InP photonics). For example in my case, if simple wet etch selectivity would be supported - it would cover 99.9% of the process.
  • Well .. it is easy to unfreeze - anyone can fork and continue the project. It is GPL, so there are no claims from my side.

    Seriously - I explained my reasons. It is not a process simulator. There is nothing that simulates a wet etch, hence I don't know how to implement selectivity here. This is why I froze the project. It is not what you think it is. I'm sorry.


  • No worries. All I wanted to say is that it is incredibly useful tool even if it is not a truly process simualtor:) It has dramatically higher reward/effort ratio when compared to real simualtors. Once calibrated on less than hundred of carefully chosen real cross-sections it can give unbelievably correct outputs for every step in 500step fabrication process in just minutes at any place on the mask. For preliminary validations to changes in design rules this saves so much time. Also training new people is day and night difference with this tool.

    I hope one day my skill will be high enough to unfreeze it. But for the moment I was not even able to find most the piece of codecin the source files which is responsible for generating "etch" method:) So my time has not come yet.
Sign In or Register to comment.