Closed jadafi closed 3 years ago
We are planning on doing this for future versions, but it's not easy! Would love to develop it together if possible.
The problem I was stuck with when thinking about implementing it is that some fabrication related inaccuracies have "global" impact (e.g. litho bias), thus in the representation chosen in Spins these variations are usually represented by a large collection of parameters. Furthermore the fabrication will affect parameters not considered during optimisation (as parameters) such as etch depth, etch flank angle etc. Therefore I think one would need to introduce additional parameters like horizontal expansion and etch depth, also find the gradient on these using the Adjoint method. The gradient towards those parameters could be considered an additional FOM. Unfortunately I do not see a way of calculating the gradient of that FOM towards the optimisation parameters. Furthermore the gradient is only a first order measure of the robustness, where in some applications it is useful to optimise robustness beyond a gradient of 0 due to large inaccuracies introduced by the foundry (the higher the precision the higher the cost). Other effect like aspect ratio dependent etch seem entirely impossible to consider to me.
What do you think about this topic? How would you go about it and what kind of hurdles would you believe are most significant?
The problem I was stuck with when thinking about implementing it is that some fabrication related inaccuracies have "global" impact (e.g. litho bias), thus in the representation chosen in Spins these variations are usually represented by a large collection of parameters. Furthermore the fabrication will affect parameters not considered during optimisation (as parameters) such as etch depth, etch flank angle etc. Therefore I think one would need to introduce additional parameters like horizontal expansion and etch depth, also find the gradient on these using the Adjoint method. The gradient towards those parameters could be considered an additional FOM. Unfortunately I do not see a way of calculating the gradient of that FOM towards the optimisation parameters.
You are correct in asserting that the gradient of the "robustness FOM" you describe is not possible with the current code base. This should be possible, in principle, and should only require the addition of higher-order derivatives, but that has not been implemented.
Furthermore the gradient is only a first order measure of the robustness, where in some applications it is useful to optimise robustness beyond a gradient of 0 due to large inaccuracies introduced by the foundry (the higher the precision the higher the cost). Other effect like aspect ratio dependent etch seem entirely impossible to consider to me.
What do you think about this topic? How would you go about it and what kind of hurdles would you believe are most significant?
I agree that a gradient-based FOM will not always be sufficient. In fact, the core of the problem is that we are actually trying to optimize a distribution of devices across many environmental factors (temperature, roughness, erosion/dilation, misalignment, etc...) and we need to somehow efficiently include that information in the optimization process. I personally think that where we end up is with a very ML-like (supervised learning) solution, where we optimize in a stochastic gradient descent sort of manner, randomly selecting for different points in the distribution at any one optimization step.
The great thing here is that there is no need of higher-order derivatives now.
Would it be possible to include robustness against process variations in the optimization?