PWB Warpage Analysis Code
/* Request temperature change from user */
cout << “Enter temperature change-> “ ;
/* Open APD and make it active */
apd = ROSE.useDesign( apdFileName );
ROSE.findObjects( &listOfPwbs );
/* There should be only one PWB, therefore the first element should be
the pwb we are looking for */
pwb *thePwb = listOfPwbs( 0 );
/* Get idealized values, query pwb object directly */
totalLength = thePwb->length();
specificCoefficientOfThermalBending = thePwb->coefficient_of_thermal_bending();
totalThickness = thePwb->total_thickness();
/* Calculate deflection */
deflection = specificCoefficientOfThermalBending*
(totalLength*totalLength)*deltaT/totalThickness
Notes:
- Once the EXPRESS definitions of the TIGER APM entities and their attributes are translated into a target programming language such as C++, they can be used inside the codes of the analysis applications.
- To illustrate how this is done, let us refer to the code excerpt shown in this slide.
- This piece of code uses three of the idealizations defined in the APM:
- thePwb->length()
- thePwb->coefficient_of_thermal_expansion()
- thePwb->total_thickness()
- And the equation: ? = ?B L2 ?T / t to calculate the deflection of the board due to a change of temperature.
- This example shows how the APM greatly simplifies analysis code development. The developer of this code did not have to write additional code to calculate the total thickness, length and coefficient of thermal expansion of the board. Instead, he just queries the pwb object directly (for example, in thePWB->length() ), and the values are calculated on demand.
- These values can be potentially queried by other analysis modules as well, thus reducing code replication and facilitating code maintenance.