%@ LANGUAGE="VBScript" %> <% start_time = Time Server.ScriptTimeOut=600 Set Connection = Server.CreateObject("ADODB.Connection") Connection.Mode = adModeRead Connection.Open phdb_rd Datasubquery1="(select sensor,MAX(logdate) from sitester.sensor_log where batch='"+Request("batch")+"' and action='Summary' and measurement_type='Sensor_data' group by sensor)" DataQuery = "select * from sitester.sensor_log sl,sitester.sensor_properties,sitester.batch_info bi where sl.batch='"+Request("batch")+"' and sl.batch=bi.batch and logdate=entrydate and (sensor,logdate) in "+Datasubquery1+" order by sensor,measurement_id" Set Data = Connection.Execute(DataQuery) %> <% acceptsubquery1 = "(select sensor,MAX(logdate) from sitester.sensor_log where batch='"+Request("batch")+"' and (measurement_type like 'Accepted%' or measurement_type like 'Reject%') group by sensor)" acceptquery = "select sensor,SUBSTR(sl.measurement_type,0,6) acceptance,description,sl.comments from sitester.sensor_log sl,sitester.sensor_measurement_list sml where batch='"+Request("batch")+"' and (sensor,logdate) in "+acceptsubquery1+" and sl.measurement_type=sml.measurement_type order by sensor" Set Acceptance = Connection.Execute(acceptquery) %> <% Dim sensor() Dim Ib_voper() Dim Ig_voper() Dim PlateauLV() Dim PlateauUV() Dim Vfd() Dim Voper() Dim LT_current() Dim LT_time() Dim PolyRes() Dim PolyResErr() Dim SOGC() Dim ONOC() Dim Cbreak() Dim Shorts() Dim CV_pads_tested() Dim Pinholes() Dim Pinholes_pads_tested() Dim Percentage() sensor_type=CInt(Data("sensor_type")) num_sensors=-1 current_sensor=0 Do While Not Data.EOF If current_sensor<>CInt(Data("sensor")) Then num_sensors=num_sensors+1 ReDim Preserve sensor(num_sensors) ReDim Preserve Ib_voper(num_sensors) ReDim Preserve Ig_voper(num_sensors) ReDim Preserve PlateauLV(num_sensors) ReDim Preserve PlateauUV(num_sensors) ReDim Preserve Vfd(num_sensors) ReDim Preserve Voper(num_sensors) ReDim Preserve LT_current(num_sensors) ReDim Preserve LT_time(num_sensors) ReDim Preserve PolyRes(num_sensors) ReDim Preserve PolyResErr(num_sensors) ReDim Preserve SOGC(num_sensors) ReDim Preserve ONOC(num_sensors) ReDim Preserve Cbreak(num_sensors) ReDim Preserve Shorts(num_sensors) ReDim Preserve CV_pads_tested(num_sensors) ReDim Preserve Pinholes(num_sensors) ReDim Preserve Pinholes_pads_tested(num_sensors) ReDim Preserve Percentage(num_sensors) sensor(num_sensors)=CInt(Data("sensor")) current_sensor=CInt(Data("sensor")) End If Select Case CStr(Data("measurement_id")) Case "CV_pads_tested" CV_pads_tested(num_sensors)=CInt(Data("measurement_value")) Case "Cbreak" Cbreak(num_sensors)=CInt(Data("measurement_value")) Case "Ib_voper" Ib_voper(num_sensors)=CDbl(Data("measurement_value")) Case "Ig_voper" Ig_voper(num_sensors)=CDbl(Data("measurement_value")) Case "LT_current" LT_current(num_sensors)=CDbl(Data("measurement_value")) Case "LT_time" LT_time(num_sensors)=CDbl(Data("measurement_value")) Case "ONOC" ONOC(num_sensors)=CDbl(Data("measurement_value")) Case "Percentage" Percentage(num_sensors)=CDbl(Data("measurement_value")) Case "Pinholes" Pinholes(num_sensors)=CInt(Data("measurement_value")) Case "Pinholes_pads_tested" Pinholes_pads_tested(num_sensors)=CInt(Data("measurement_value")) Case "PlateauLV" PlateauLV(num_sensors)=CInt(Data("measurement_value")) Case "PlateauUV" PlateauUV(num_sensors)=CInt(Data("measurement_value")) Case "PolyRes" PolyRes(num_sensors)=CDbl(Data("measurement_value")) Case "PolyResErr" PolyResErr(num_sensors)=CDbl(Data("measurement_value")) Case "Shorts" Shorts(num_sensors)=CInt(Data("measurement_value")) Case "SOGC" SOGC(num_sensors)=CDbl(Data("measurement_value")) Case "Vfd" Vfd(num_sensors)=CDbl(Data("measurement_value")) Case "Voper" Voper(num_sensors)=CInt(Data("measurement_value")) End Select Data.MoveNext Loop %> <% Dim acceptance_status() Dim acceptance_description() Dim acceptance_comments() ReDim Preserve acceptance_status(num_sensors) ReDim Preserve acceptance_description(num_sensors) ReDim Preserve acceptance_comments(num_sensors) For i=0 To num_sensors found = 0 acceptance_status(i) = "" acceptance_description(i) = "" acceptance_comments(i) = "" Do While (found = 0) If Acceptance.EOF Then acceptance_status(i) = Null acceptance_description(i) = Null acceptance_comments(i) = Null found = 1 Else Select Case Sgn(CInt(Acceptance("sensor"))-sensor(i)) Case 1 acceptance_status(i) = Null acceptance_description(i) = Null acceptance_comments(i) = Null found = 1 Case 0 acceptance_status(i) = CStr(Acceptance("acceptance")) acceptance_description(i) = CStr(Acceptance("description")) If Not IsNull(Acceptance("comments")) Then acceptance_comments(i) = CStr(Acceptance("comments")) Else acceptance_comments(i) = Null End If found = 1 Case -1 Acceptance.MoveNext Case Else acceptance_status(i) = Null acceptance_description(i) = Null acceptance_comments(i) = Null found = 1 End Select End If Loop Next %>
Static Batch <%= Request("batch") %> Report
Sensor Data
| Sensor | Ib @ Voper | Ig @ Voper | <% If (sensor_type > 0) and (sensor_type < 6) Then %>Plateau | <% End If %>Vfd | Voper | <% If (sensor_type > 0) and (sensor_type < 6) Then %>Longterm | <% End If %>
| <%= sensor(row) %> | <% If Not IsEmpty(Ib_voper(row)) Then Response.Write(Ib_voper(row)) Else Response.Write(" ") End If %> | <% If Not IsEmpty(Ig_voper(row)) Then Response.Write(Ig_voper(row)) Else Response.Write(" ") End If %> | <% If (sensor_type > 0) and (sensor_type < 6) Then %><% If (Not IsEmpty(PlateauLV(row))) and (Not IsEmpty(PlateauUV(row))) Then Response.Write(CStr(PlateauLV(row))+" - "+CStr(PlateauUV(row))+" Volts") Else Response.Write(" ") End If %> | <% End If %><% If Not IsEmpty(Vfd(row)) Then Response.Write(vfd(row)) Else Response.Write(" ") End If %> | <% If Not IsEmpty(Voper(row)) Then Response.Write(voper(row)) Else Response.Write(" ") End If %> | <% If (sensor_type > 0) and (sensor_type < 6) Then %><% If (Not IsEmpty(LT_current(row))) and (Not IsEmpty(LT_time(row))) Then Response.Write(CStr(LT_current(row))+" µA after "+CStr(LT_time(row))+" days") Else Response.Write(" ") End If %> | <% End If %>
|
Testkey Data
| Sensor | Polysilicon Resistance [MW] | SOG [pF/mm2] | ONO [pF/mm2] |
| <%= sensor(row) %> | <%If Not IsEmpty(PolyRes(row)) Then If Not IsEmpty(PolyResErr(row)) Then Response.Write(CStr(PolyRes(row))+" ± "+CStr(PolyResErr(row))) Else Response.Write(CStr(PolyRes(row))) End If Else Response.Write(" ") End If%> | <%If Not IsEmpty(SOGC(row)) Then Response.Write(SOGC(row)) Else Response.Write(" ") End If%> | <%If Not IsEmpty(ONOC(row)) Then Response.Write(ONOC(row)) Else Response.Write(" ") End If%> |
Pad Data
| Sensor | CV Data | Pinholes | Fraction Broken | Broken Channels |
| <%= sensor(row) %> | <%If Not IsEmpty(CV_pads_tested(row)) Then Response.Write(CStr(Cbreak(row))+" breaks, "+Cstr(Shorts(row))+" shorts out of "+ CStr(CV_pads_tested(row))) Else Response.Write(" ") End If %> | <%If Not IsEmpty(Pinholes_pads_tested(row)) Then Response.Write(CStr(Pinholes(row))+" out of "+ CStr(Pinholes_pads_tested(row))) Else Response.Write(" ") End If %> | <%If Not IsEmpty(Percentage(row)) Then Response.Write(Percentage(row)) Else Response.Write(" ") End If %> | <%If (Cbreak(row)+Shorts(row)+Pinholes(row))>0 Then %>
&sensor=<%= sensor(row) %>">channel summary<% Else %> <% End If %> |
Acceptance Data
| Sensor | Acceptance | Comments |
| <%= sensor(row) %> | <% If IsNull(acceptance_description(row)) Then
Response.Write "N/A"
Else
Select Case acceptance_status(row)
Case "Accept" %>
<%= acceptance_description(row) %><% Case "Reject" %><%= acceptance_description(row) %><% Case Else %><%= acceptance_description(row) %><% End Select %><% End If %> |
<% If IsNull(acceptance_comments(row)) Then Response.Write(" ") Else Response.Write(acceptance_comments(row)) End If %> |