Open mguthaus opened 2 years ago
If you want a discussion of the scaling, it is described here: https://boolean.klaasholwerda.nl/interface/bnf/gdsformat.html#rec_header
And here is the output of the NanGate library cells: GDS II Version 3 Date Modified:110,12,27,19,6,9 Date Last Accessed:110,12,27,19,6,9 Library: NangateOpenCellLibrary Units: 1 user unit=0.0001 database units, 1 database unit=1e-10 meters. End of GDSII Header Found
A 0.065um contact in NOR2_X2.gds is this in the GDS database units:
BeginBoundary Drawing Layer: 10 Purpose Layer: 0 XY Point: 850,950 XY Point: 1500,950 XY Point: 1500,1600 XY Point: 850,1600 XY Point: 850,950 EndBoundary
Which is 650x650 database units. To get this to 0.065nm, you need to divide by 10000, not 1000.
When you fix the scaling as above, the ILT then does not work. It produces blank results with this warning on NOR2_X2.gds:
Calculating ILT /home/mrg/litho/DimmiLitho/litho/ilt.py:190: RuntimeWarning: divide by zero encountered in double_scalars stepsize = self.stepSize / np.max(abs(deta)) /home/mrg/litho/DimmiLitho/litho/ilt.py:191: RuntimeWarning: invalid value encountered in multiply newTheta = self.masktheta - stepsize * deta Interation index: 0, Costfunction value: 0.123713.
Note, I also had to adjust the m.x_gridsize and m.y_gridsize to 0.25 or else the mask did not have enough resolution.
It seems that ILT works but RobustILT fails...
Note, I also had to adjust the m.x_gridsize and m.y_gridsize to 0.25 or else the mask did not have enough resolution.
Hi. Sorry for this issue. The unit of x_gridsize is nm, and 0.25 is too small. As a workaround, we can adjust the scaling manually when we parsing the GDS. We can plot mask image to double check. For example, if gridsize is set to 2 nm, and CD is 50 nm, then it will take almost 5 pixels in the image.
Hi,
I believe that your GDS parser uses a fixed scale of 0.001 (1000): https://github.com/vincentlv/DimmiLitho/blob/2d3d335bdab8ae628f328c264b655b180881e3a1/litho/mask.py#L110
However, the NanGate library uses a scale of 0.0001 (10000). Therefore, the dimensions of the mask are off by 10x.
If you look at the contact width (layer 10) in the NOR2_X2.gds example, they should have a width of 65nm but instead, we see 650nm if you print out the polygon data.
Matt