웨이퍼의 X 및 Y 좌표 오프셋안녕,
웨이퍼의 X 및 Y 좌표가 있는 두 개의 jmp 테이블이 있습니다. 웨이퍼 1과 웨이퍼 2의 좌표를 정렬하는 방법이 있는지 알고 싶습니다.
예: 다음 강조 표시된 X 및 Y를 웨이퍼 2의 X 및 Y와 정렬하고 싶습니다.
웨이퍼 1 : X, Y = 129, 372
웨이퍼 2: X, Y = -17, -15
그래프 빌더에서 패턴을 인식하고 JSL로 호버 레이블 정보를 얻는 방법이 있는지 잘 모르겠습니다. 어떤 제안이라도 대단히 감사하겠습니다
웨이퍼 1 =

웨이퍼 2 =

스크립팅Re: 웨이퍼의 X 및 Y 좌표 오프셋정말 중요하지 않습니다.그러나 귀하의 예에서는 웨이퍼 1을 바꾸었으므로 해당 웨이퍼를 계속 사용하는 것이 좋습니다.
나는 당신의 질문에 대해 우려하고 있습니다.맹목적으로 코드를 입력하는 것이 아니라 Max +1에서 뺄셈이 작동하는 이유를 이해해야 합니다.변형이 완료되면 주사위가 어디로 이동하는지 확인하십시오.
Re: 웨이퍼의 X 및 Y 좌표 오프셋" 조옮김은 최대값에 1을 더한 값에서 각 값을 빼는 것입니다. "
Wafer 2 또는 Wafer 1의 최대값으로 X와 Y의 각 행을 뺍니다.
Re: 웨이퍼의 X 및 Y 좌표 오프셋조옮김은 간단한 수학입니다.문제는 지향점의 결정이다. 현재 2개의 웨이퍼는 위에서 아래로 뒤집어야 하는 것처럼 보이지만 왼쪽에서 오른쪽으로 뒤집어야 할 수도 있습니다.웨이퍼의 빈 영역 패턴을 보면 그런 것 같습니다. 두 경우 모두 전위는 최대 값에서 1을 더한 값에서 각 값을 빼는 것입니다.
Re: 웨이퍼의 X 및 Y 좌표 오프셋아니요, 방향 정보가 포함되어 있지 않습니다. 조옮김을 구현할 수 있습니까?
Re: 웨이퍼의 X 및 Y 좌표 오프셋귀하의 웨이퍼가 xy 원점만 다를 뿐 동일한 방향으로 측정되었다고 가정했습니다. 분명히 전체 방향이 다를 수 있습니다.그것은 조옮김을 더 복잡하게 만들지 만 불가능하지는 않습니다.웨이퍼를 읽는 파일에 방향 정보가 포함되어 있습니까?
Re: 웨이퍼의 X, Y 좌표 오프셋방향이 현명하게 일치하지 않습니다. 예 맵 1의 상단 영역에는 0에서 음수 사이의 Y 좌표가 있습니다. 그러나 웨이퍼 맵 2에서 동일한 영역은 300 이상입니다.

Re: 웨이퍼의 X 및 Y 좌표 오프셋차트 중 하나에서 축이 반전되었습니다.
Re: 웨이퍼의 X 및 Y 좌표 오프셋Jim도 작동하지 않습니다. 아래 결과 보기

Re: 웨이퍼의 X 및 Y 좌표 오프셋나는 전에 이것을 눈치 채지 못했습니다 .... 문제는 오프셋에서 좌표가 아니라 좌표에서 오프셋을 빼거나 더해야한다는 것입니다.

Names Default To Here( 1 );
Clear Globals();
Clear Log();
dt1 = Data Table( "Wafer 1" );
dt2 = Data Table( "Wafer 2" );
dt1 << New Column( "New_X", Numeric, "Ordinal", Format( "Best", 12 ) );
dt1 << New Column( "New_Y", Numeric, "Ordinal", Format( "Best", 12 ) );
Max_X1 = Col Maximum( dt1:X Coord );
Max_Y1 = Col Maximum( dt1:Y Coord );
Max_X2 = Col Maximum( dt2:X Coord );
Max_Y2 = Col Maximum( dt2:Y Coord );
Offset_x = Abs( Max_X2 - Max_X1 );
Offset_y = Abs( Max_Y2 - Max_Y1 );
For( i = 1, i <= N Rows( dt1 ), i++,
If( Max_X1 > Max_X2,
dt1:New_X[i] = dt1:XCoord[i] - Offset_x,
dt1:New_X[i] = dt1:XCoord[i] + Offset_x
)
);
For( i = 1, i <= N Rows( dt1 ), i++,
If( Max_Y1 > Max_Y2,
dt1:New_Y[i] = dt1:YCoord[i] - Offset_y,
dt1:New_Y[i] = dt1:YCoord[i] + Offset_y
)
);
</CODE></PRE>
<P>다음은 내가 믿을 수 없이 생각해낸 원래 버전의 코드입니다.더 빠르게 실행되지만 동일한 결과를 제공합니다.코드를 살펴보고 다른 접근 방식을 확인하십시오.</P>
<PRE><CODE class=" language-jsl">Names Default To Here( 1 );
dt1 = data table("Wafer 1");
dt2 = data table("Wafer 2");
xOffset = abs(col max(dt1:X Coord) - col max(dt2:X Coord));
yOffset = abs(col max(dt1:Y Coord) - col max(dt2:Y Coord));
If( Col Max( dt1:X Coord ) > Col Max( dt2:X Coord ),
dt1 << New Column( "New X Coord", set each value( :X Coord - xOffset ) ),
dt1 << New Column( "New X Coord", set each value( :X Coord + xOffset ) )
);
If( Col Max( dt1:Y Coord ) > Col Max( dt2:Y Coord ),
dt1 << New Column( "New Y Coord", set each value( :Y Coord - yOffset ) ),
dt1 << New Column( "New Y Coord", set each value( :Y Coord + yOffset ) )
);
Re: 웨이퍼의 X 및 Y 좌표 오프셋@txnelson ,
고마워, 짐. 코드는 작동하지만 결과는 예상한 것과 다릅니다. X축과 Y축이 웨이퍼 2 맵과 정렬되지 않는 것을 볼 수 있습니다.

Re: 웨이퍼의 X 및 Y 좌표 오프셋당신이 한만큼 잘하셨습니다.시간을 내어 스크립팅 가이드를 읽어 보시기 바랍니다.
다음은 새 열을 채우는 코드 수정 사항입니다.
Names Default To Here( 1 );
Clear Globals();
Clear Log();
dt1 = Data Table( "Wafer 1" );
dt2 = Data Table( "Wafer 2" );
dt1 << New Column( "New_X", Numeric, "Ordinal", Format( "Best", 12 ) );
dt1 << New Column( "New_Y", Numeric, "Ordinal", Format( "Best", 12 ) );
Max_X1 = Col Maximum( dt1:X Coord );
Max_Y1 = Col Maximum( dt1:Y Coord );
Max_X2 = Col Maximum( dt2:X Coord );
Max_Y2 = Col Maximum( dt2:Y Coord );
Offset_x = Abs( Max_X2 - Max_X1 );
Offset_y = Abs( Max_Y2 - Max_Y1 );
For( i = 1, i <= N Rows( dt1 ), i++,
If( Max_X1 > Max_X2,
//dt1:New_X[i] = Offset_x - dt1:XCoord[i],
//dt1:New_X[i] = Offset_x + dt1:XCoord[i]<BR />dt1:New_X[i] = dt1:XCoord[i] - Offset_x,<BR />dt1:New_X[i] = dt1:XCoord[i] + Offset_x
)
);
For( i = 1, i <= N Rows( dt1 ), i++,
If( Max_Y1 > Max_Y2,
//dt1:New_Y[i] = Offset_y - dt1:YCoord[i],
//dt1:New_Y[i] = Offset_y + dt1:YCoord[i]<BR />dt1:New_Y[i] = dt1:YCoord[i] - Offset_y,<BR />dt1:New_Y[i] = dt1:YCoord[i] + Offset_y
)
);
<BR />
Re: 웨이퍼의 X 및 Y 좌표 오프셋Names Default To Here( 1 );
Clear Globals();
Clear Log();
dt1 = data table("Wafer 1");
dt2 = data table("Wafer 2");
dt1 << New Column( "New_X", Numeric, "Continuous", Format( "Best", 12 ) );
dt1 << New Column( "New_Y", Numeric, "Continuous", Format( "Best", 12 ) );
Max_X1= Col Maximum(dt1:X Coord);
Max_Y1= Col Maximum(dt1:Y Coord);
Max_X2= Col Maximum(dt2:X Coord);
Max_Y2= Col Maximum(dt2:Y Coord);
Offset_x = abs( Max_X2 - Max_X1);
Offset_y = abs(Max_Y2 - Max_Y1);
For( i = 1, i <= N rows(dt1), i++,
if( Max_X1 > Max_X2,
Column(dt1, 4)[i] = Offset_x - Column(dt1, 1)[i] ;,
Column(dt1, 4)[i] = Offset_x + Column(dt1, 1)[i];
)
);
For( i = 1, i <= N rows(dt1), i++,
if( Max_Y1 > Max_Y2,
Column(dt1, 5)[i] = Offset_y - Column(dt1, 2)[i] ;,
Column(dt1, 5)[i] = Offset_y + Column(dt1, 2)[i];
)
);"웨이퍼 1에 대한 X Coord 열의 최대값이 웨이퍼 2에 대한 X Coord 열의 최대값보다 크면 웨이퍼 1의 X Coord 값에서 오프셋을 빼야 하는 새 열을 생성해야 합니다.그렇지 않은 경우 X 좌표 값에 오프셋이 추가됩니다.
Y 좌표에 대해 이 단계를 반복해야 합니다."
Jim, 위 문장에 대한 예제 코드를 공유해 주시겠습니까? X와 Y의 최대값과 abs 차이를 찾을 수 있었습니다.
Re: 웨이퍼의 X 및 Y 좌표 오프셋예!
이것은 JMP가 할 수 있는 간단한 일입니다.사실 이 작은 문제는 첫 번째 JSL 프로젝트로서 훌륭한 작은 프로젝트에 완벽합니다.해결책은 웨이퍼 1 데이터 테이블과 웨이퍼 2 데이터 테이블의 X 좌표의 최대값 사이의 차이를 더하거나 빼는 것입니다.그런 다음 Y 좌표에 대해 동일한 작업을 수행합니다.
스크립트는 다음 단계를 수행합니다.
데이터 테이블을 엽니다.여기에 대한 실제 코드가 있습니다.
Names Default To Here( 1 );
dt1 = data table("Wafer 1");
dt2 = data table("Wafer 2");
다음으로, 2개의 웨이퍼 사이의 오프셋 차이를 결정하기 위해 웨이퍼 1 X Coord 열의 최대값과 웨이퍼 2 X Coord 열의 최대값 사이의 절대 차이를 찾아야 합니다.
이제 Y 좌표 열에 대해 동일하게 반복합니다.
다음 단계는 오프셋 값을 더할 것인지 뺄 것인지에 대한 조건부 결정이 필요합니다. 웨이퍼 1에 대한 X Coord 열의 최대값이 웨이퍼 2에 대한 X Coord 열의 최대값보다 크면 웨이퍼 1의 X Coord 값에서 오프셋을 빼야 하는 새 열을 생성해야 합니다.그렇지 않은 경우 X 좌표 값에 오프셋이 추가됩니다.
Y 좌표에 대해 이 단계를 반복해야 합니다.
스크립팅 가이드를 읽으면 JSL에서 사용할 수 있는 프로그래밍 기능과 데이터 구조에 대한 정보를 얻을 수 있습니다.
Re: 웨이퍼의 X 및 Y 좌표 오프셋맵에서 두 다이의 위치와 오프셋 값을 찾기 위해 두 맵을 수동으로 비교해야 했습니다. jsl을 사용하여 구현하는 방법이 있습니까?
Re: 웨이퍼의 X 및 Y 좌표 오프셋Wafer 2 데이터 테이블에서 X 좌표에 89를, Y 좌표에 58을 추가하면 웨이퍼 맵이 정렬되는 것으로 보입니다.