├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── baseline ├── README.md ├── cost_analyzer.py ├── inputs │ ├── chiplet_cost1.csv │ ├── chiplet_cost2.csv │ └── chiplet_cost2_value.csv ├── outputs │ ├── summary_output.csv │ ├── total_cost.png │ └── total_unit_cost.png ├── reader.py ├── requirements.txt ├── test │ ├── __init__.py │ ├── test_cost_analyzer.py │ └── test_reader.py └── writer.py └── simulation ├── README.md ├── cost_analyzer.py ├── data_option1.csv ├── data_option2.csv ├── inputs ├── data_option1.csv ├── data_option2.csv ├── input_template.csv └── params.csv ├── outputs ├── CostDiffYr1.png ├── CostDiffYr2.png ├── CostDiffYr3.png ├── CostDiffYr4.png ├── CostDiffYr5.png ├── cost_diff_summary.png ├── stochastic_analysis.csv ├── summary_output.csv ├── tornado.png ├── tornado_yr1.png ├── tornado_yr2.png ├── tornado_yr3.png ├── tornado_yr4.png ├── tornado_yr5.png ├── total_cost.png └── total_unit_cost.png ├── params.py ├── plotter.py ├── preprocessor.py ├── processor.py ├── reader.py ├── requirements.txt ├── test ├── __init__.py ├── test_preprocessor.py └── test_processor.py └── writer.py /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | **/__pycache__ 3 | .vscode 4 | .DS_Store 5 | **/node_modules -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to Contribute 2 | 3 | We'd love to accept your patches and contributions to this project. There are 4 | just a few small guidelines you need to follow. 5 | 6 | ## Contributor License Agreement 7 | 8 | Contributions to this project must be accompanied by a Contributor License 9 | Agreement (CLA). You (or your employer) retain the copyright to your 10 | contribution; this simply gives us permission to use and redistribute your 11 | contributions as part of the project. Head over to 12 | to see your current agreements on file or 13 | to sign a new one. 14 | 15 | You generally only need to submit a CLA once, so if you've already submitted one 16 | (even if it was for a different project), you probably don't need to do it 17 | again. 18 | 19 | ## Code Reviews 20 | 21 | All submissions, including submissions by project members, require review. We 22 | use GitHub pull requests for this purpose. Consult 23 | [GitHub Help](https://help.github.com/articles/about-pull-requests/) for more 24 | information on using pull requests. 25 | 26 | ## Community Guidelines 27 | 28 | This project follows 29 | [Google's Open Source Community Guidelines](https://opensource.google/conduct/). -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # chiplets-cost-model 2 | 3 | Python script to do Monte Carlo simulations for Cost and Yield Tradeoff analysis for heterogenous integration for Chiplets. 4 | 5 | Following directories contains code for corresponding analysis: 6 | 7 | baseline - contains baseline cost analysis 8 | 9 | simulation - contains Monte Carlo Simulation -------------------------------------------------------------------------------- /baseline/README.md: -------------------------------------------------------------------------------- 1 | ### Installation 2 | 1. python3 required 3 | 2. pip3 installation required (User Guide - pip3)[https://pip.pypa.io/en/latest/user_guide/#requirements-files] 4 | 2. Install required dependencies by running 5 | 6 | ``` 7 | pip3 install -r requirements.txt 8 | ``` 9 | 10 | ### Run unit tests 11 | 12 | ``` 13 | python3 -m unittest 14 | ``` -------------------------------------------------------------------------------- /baseline/cost_analyzer.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2022 Google LLC 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | https://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | """ 16 | 17 | import locale 18 | import numpy as numpy 19 | import argparse 20 | from matplotlib import pyplot as plt 21 | 22 | from reader import DEVICE_TYPE_SUBSTRATE, meta_data_row, readFile 23 | from writer import write_to_file 24 | 25 | locale.setlocale(locale.LC_ALL, '') 26 | 27 | INPUT_FILE_A = 'chiplet_cost1.csv' 28 | INPUT_FILE_B = 'chiplet_cost2.csv' 29 | 30 | def filter_metadata_row(input): 31 | return filter(lambda row: meta_data_row(row) == False, input) 32 | 33 | def calculate_assy_scrap(input, numberOfYears = 5): 34 | mat_costs = [] 35 | for year in range(1, numberOfYears + 1): 36 | mat_cost_col = f'MatCostYr{year}' 37 | mat_cost_yr = list(map(lambda row: row[mat_cost_col], filter_metadata_row(input))) 38 | mat_costs.append(mat_cost_yr) 39 | 40 | assy = [] 41 | assy_yield = [] 42 | numOfAssemblySteps = int(input[0]['AssemblySteps']) 43 | for i in range(1, numOfAssemblySteps + 1): 44 | assy_col = f'AssemblySeq{i}' 45 | # only the assembly sequence with dimension should be considered 46 | assy_i = list(map(lambda row: int(row[assy_col]) if float(row['DimensionX']) > 0 and float(row['DimensionY']) > 0 else 0, filter_metadata_row(input))) 47 | assy.append(assy_i) 48 | 49 | # assy and assy_per_step_yield should have same column numbers 50 | # if assy_yield is provided, then do not calculate it 51 | input_assy_yield = input[0][f'AssyYield{i}'] 52 | assy_yield_i = float(input_assy_yield) if input_assy_yield else float(input[0][f'AssyPerStepYield{i}']) ** sum(assy_i) 53 | assy_yield.append(assy_yield_i) 54 | 55 | assy_scraps = [] 56 | 57 | for i in range(0, numberOfYears): 58 | mat_cost = mat_costs[i] 59 | assy_len = len(assy) 60 | assy_scrap = 0 61 | 62 | for j in range(0, assy_len): 63 | assy_j = assy[j] 64 | assy_yield_j = assy_yield[j] 65 | assy_scrap += numpy.dot(mat_cost, assy_j) * (1 - assy_yield_j) 66 | 67 | assy_scraps.append(assy_scrap) 68 | 69 | return assy_scraps 70 | 71 | 72 | def calculate_nre(input, numOfYrs): 73 | nre = [0] * numOfYrs 74 | nre[0] = sum(list(map(lambda input: float(input['NRE($)'] or '0'), input))) 75 | return nre 76 | 77 | 78 | def calculate_total_mask_set_cost(input, numOfYears): 79 | mask_costs = [0] * numOfYears 80 | mask_costs[0] = sum(list(map(lambda input: float(input['MaskSetCost'] or '0'), input))) 81 | return mask_costs 82 | 83 | 84 | def calculate_cost(input, colName, numberOfYears = 5): 85 | costs = [] 86 | for year in range(1, numberOfYears + 1): 87 | cost_col = colName + str(year) 88 | total_cost = sum(list(map(lambda row: 0 if meta_data_row(row) else row[cost_col], input))) 89 | costs.append(total_cost) 90 | 91 | return costs 92 | 93 | 94 | def calculate_misc_cost(input, numberOfYears = 5): 95 | misc_costs = [] 96 | substrate_row = list(filter(lambda row: row['DeviceType'] == DEVICE_TYPE_SUBSTRATE, input))[0] 97 | for year in range (1, numberOfYears + 1): 98 | package_assy_cost = float(input[0][f'PackageAssemblyCostYr{year}($)'] or '0') 99 | forecast_demand = int(substrate_row[f'ForecastDemandYr{year}']) 100 | misc_cost = package_assy_cost * forecast_demand 101 | misc_costs.append(misc_cost) 102 | 103 | return misc_costs 104 | 105 | 106 | def calculate_total_cost(input, misc_costs, assy_scraps, total_mat_costs, total_quality_costs, total_op_costs, total_ip_costs, test_costs): 107 | years = len(total_mat_costs) 108 | total_nre = calculate_nre(input, years) 109 | total_mask_cost = calculate_total_mask_set_cost(input, years) 110 | total_costs = [] 111 | 112 | substrate_row = list(filter(lambda row: row['DeviceType'] == DEVICE_TYPE_SUBSTRATE, input))[0] 113 | # make sure all inputs are of same length 114 | for i in range(0, years): 115 | # calculate substrate cost 116 | yield_adjusted_fup = substrate_row[f'ForecastUnitPriceYr{i + 1}($)'] 117 | subs_demand = int(substrate_row[f'ForecastDemandYr{i + 1}']) 118 | subs_cost = yield_adjusted_fup * subs_demand 119 | 120 | fpty = float(input[0][f'FinalPackageTestYieldYr{i + 1}']) 121 | slt = float(input[0][f'SLTYieldYr{i + 1}']) 122 | 123 | total_cost = misc_costs[i] + test_costs[i] + total_mask_cost[i] + total_nre[i] + assy_scraps[i] + (1 + (1 - fpty) + (1 - slt) * fpty) * (total_mat_costs[i] + subs_cost) + total_op_costs[i] + total_ip_costs[i] + total_quality_costs[i] 124 | total_costs.append(total_cost) 125 | 126 | return total_costs 127 | 128 | 129 | def create_row(category, option1, option2, numOfYr): 130 | row = {'CostCategory': category} 131 | 132 | for year in range(1, numOfYr + 1): 133 | col_name = f'ChipletYr{year}' 134 | row[col_name] = option1[year - 1] 135 | 136 | for year in range(1, numOfYr + 1): 137 | col_name = f'2SocChipsYr{year}' 138 | row[col_name] = option2[year - 1] 139 | 140 | return row 141 | 142 | 143 | def cost_contribution(costs, total): 144 | contribution = [] 145 | for i in range(0, len(costs)): 146 | contribution.append(costs[i] / total[i]) 147 | 148 | return contribution 149 | 150 | 151 | def calculate_total_unit_cost(input, total_cost, numOfYrs): 152 | total_unit_costs = [] 153 | 154 | for year in range(1, numOfYrs + 1): 155 | total_unit_costs.append(total_cost[year - 1]/ int(input[1][f'ForecastDemandYr{year}'])) 156 | 157 | return total_unit_costs 158 | 159 | 160 | def calculate_unit_cost_contribution(total_unit_cost, cost_contribution): 161 | unit_cost_contribution = [] 162 | for i in range(0, len(total_unit_cost)): 163 | unit_cost_contribution.append(total_unit_cost[i] * cost_contribution[i]) 164 | 165 | return unit_cost_contribution 166 | 167 | 168 | def calculate_gross_margin(total_unit_costs, asps): 169 | gross_margins = [] 170 | for i in range(0, len(total_unit_costs)): 171 | gross_margins.append(asps[i] - total_unit_costs[i]) 172 | 173 | return gross_margins 174 | 175 | 176 | def calculate_gross_margin_percent(gross_margins, asps): 177 | gross_margin_percent = [] 178 | for i in range(0, len(gross_margins)): 179 | gross_margin_percent.append(gross_margins[i] / asps[i]) 180 | 181 | return gross_margin_percent 182 | 183 | 184 | def calculate_cost_difference(unit_costsB, unit_costsA): 185 | if len(unit_costsA) != len(unit_costsB): 186 | raise Exception('Length for unit costs should be the same') 187 | 188 | diff = [] 189 | for i in range(0, len(unit_costsA)): 190 | diff.append(unit_costsB[i] - unit_costsA[i]) 191 | 192 | return diff 193 | 194 | 195 | def calculate_asp(input, numOfYears): 196 | asps = [] 197 | for year in range(1, numOfYears + 1): 198 | aspCol = f'AspYr{year}($)' 199 | asps.append(float(input[0][aspCol])) 200 | 201 | return asps 202 | 203 | 204 | def plot_graph(numOfYears, costsA, costsB, title): 205 | x = numpy.arange(1, numOfYears + 1) 206 | plt.title(title) 207 | plt.xlabel('Year') 208 | plt.ylabel('Cost($)') 209 | plt.plot(x, costsA, color = 'r', label = 'Option 1 (Chiplet)') 210 | plt.plot(x, costsB, color = 'g', label = 'Option 2 (2 SOC Chips)') 211 | plt.legend() 212 | plt.savefig('outputs/' + title.lower().replace(" ", "_") + '.png') 213 | plt.clf() 214 | 215 | 216 | def main(numOfYears): 217 | print('Starting to read ' + INPUT_FILE_A) 218 | inputA = readFile(INPUT_FILE_A, numOfYears) 219 | print('Completead reading ' + INPUT_FILE_A) 220 | print('################') 221 | 222 | print('Starting to read ' + INPUT_FILE_B) 223 | inputB = readFile(INPUT_FILE_B, numOfYears) 224 | print('Completead reading ' + INPUT_FILE_B) 225 | 226 | print('Starting analysis...') 227 | operating_costsA = calculate_cost(inputA, 'OpCostYr', numOfYears) 228 | operating_costsB = calculate_cost(inputB, 'OpCostYr', numOfYears) 229 | 230 | ip_interface_costsA = calculate_cost(inputA, 'TotalIpInterfaceCostYr', numOfYears) 231 | ip_interface_costsB = calculate_cost(inputB, 'TotalIpInterfaceCostYr', numOfYears) 232 | 233 | misc_costsA = calculate_misc_cost(inputA, numOfYears) 234 | misc_costsB = calculate_misc_cost(inputB, numOfYears) 235 | 236 | quality_costsA = calculate_cost(inputA, 'QualityCostYr', numOfYears) 237 | quality_costsB = calculate_cost(inputB, 'QualityCostYr', numOfYears) 238 | 239 | material_costsA = calculate_cost(inputA, 'MatCostYr', numOfYears) 240 | material_costsB = calculate_cost(inputB, 'MatCostYr', numOfYears) 241 | 242 | test_costA = calculate_cost(inputA, 'TestCostYr', numOfYears) 243 | test_costB = calculate_cost(inputB, 'TestCostYr', numOfYears) 244 | assy_scrapsA = calculate_assy_scrap(inputA, numOfYears) 245 | total_costsA = calculate_total_cost(inputA, misc_costsA, assy_scrapsA, material_costsA, quality_costsA, operating_costsA, ip_interface_costsA, test_costA) 246 | print(total_costsA) 247 | assy_scrapsB = calculate_assy_scrap(inputB, numOfYears) 248 | total_costsB = calculate_total_cost(inputB, misc_costsB, assy_scrapsB, material_costsB, quality_costsB, operating_costsB, ip_interface_costsB, test_costB) 249 | print(total_costsB) 250 | nreA = calculate_nre(inputA, numOfYears) 251 | nreB = calculate_nre(inputB, numOfYears) 252 | 253 | mask_costA = calculate_total_mask_set_cost(inputA, numOfYears) 254 | mask_costB = calculate_total_mask_set_cost(inputB, numOfYears) 255 | 256 | summary = [] 257 | summary.append(create_row('Material($)', material_costsA, material_costsB, numOfYears)) 258 | summary.append(create_row('Mask Set($)', mask_costA, mask_costB, numOfYears)) 259 | summary.append(create_row('NRE($)', nreA, nreB, numOfYears)) 260 | summary.append(create_row('KGD($)', assy_scrapsA, assy_scrapsB, numOfYears)) 261 | summary.append(create_row('Quality($)', quality_costsA, quality_costsB, numOfYears)) 262 | summary.append(create_row('Operating Cost($)', operating_costsA, operating_costsB, numOfYears)) 263 | summary.append(create_row('IP Interface Cost($)', ip_interface_costsA, ip_interface_costsB, numOfYears)) 264 | summary.append(create_row('Misc Cost (Assy, Test)($)', misc_costsA, misc_costsB, numOfYears)) 265 | summary.append(create_row('Total($)', total_costsA, total_costsB, numOfYears)) 266 | 267 | # % of Total Cost Contribution 268 | summary.append(create_row('Material(%)', cost_contribution(material_costsA, total_costsA), cost_contribution(material_costsB, total_costsB), numOfYears)) 269 | summary.append(create_row('Mask Set(%)', cost_contribution(mask_costA, total_costsA), cost_contribution(mask_costB, total_costsB), numOfYears)) 270 | summary.append(create_row('NRE(%)', cost_contribution(nreA, total_costsA), cost_contribution(nreB, total_costsB), numOfYears)) 271 | summary.append(create_row('KGD(%)', cost_contribution(assy_scrapsA, total_costsA), cost_contribution(assy_scrapsB, total_costsB), numOfYears)) 272 | summary.append(create_row('Quality(%)', cost_contribution(quality_costsA, total_costsA), cost_contribution(quality_costsB, total_costsB), numOfYears)) 273 | summary.append(create_row('Operating Cost(%)', cost_contribution(operating_costsA, total_costsA), cost_contribution(operating_costsB, total_costsB), numOfYears)) 274 | summary.append(create_row('IP Interface Cost($)(%)', cost_contribution(ip_interface_costsA, total_costsA), cost_contribution(ip_interface_costsB, total_costsB), numOfYears)) 275 | summary.append(create_row('Misc Cost (Assy, Test)(%)', cost_contribution(misc_costsA, total_costsA), cost_contribution(misc_costsB, total_costsB), numOfYears)) 276 | 277 | total_unit_costA = calculate_total_unit_cost(inputA, total_costsA, numOfYears) 278 | total_unit_costB = calculate_total_unit_cost(inputB, total_costsB, numOfYears) 279 | summary.append(create_row('Total Unit Cost($)', total_unit_costA, total_unit_costB, numOfYears)) 280 | 281 | summary.append(create_row('Material Total Unit Cost($)', calculate_unit_cost_contribution(total_unit_costA, cost_contribution(material_costsA, total_costsA)), calculate_unit_cost_contribution(total_unit_costB, cost_contribution(material_costsB, total_costsB)), numOfYears)) 282 | summary.append(create_row('NRE Total Unit Cost($)', calculate_unit_cost_contribution(total_unit_costA, cost_contribution(nreA, total_costsA)), calculate_unit_cost_contribution(total_unit_costB, cost_contribution(nreB, total_costsB)), numOfYears)) 283 | summary.append(create_row('KGD Total Unit Cost($)', calculate_unit_cost_contribution(total_unit_costA, cost_contribution(assy_scrapsA, total_costsA)), calculate_unit_cost_contribution(total_unit_costB, cost_contribution(assy_scrapsB, total_costsB)), numOfYears)) 284 | summary.append(create_row('Quality Total Unit Cost($)', calculate_unit_cost_contribution(total_unit_costA, cost_contribution(quality_costsA, total_costsA)), calculate_unit_cost_contribution(total_unit_costB, cost_contribution(quality_costsB, total_costsB)), numOfYears)) 285 | summary.append(create_row('Operating Total Unit Cost($)', calculate_unit_cost_contribution(total_unit_costA, cost_contribution(operating_costsA, total_costsA)), calculate_unit_cost_contribution(total_unit_costB, cost_contribution(operating_costsB, total_costsB)), numOfYears)) 286 | summary.append(create_row('IP Interface Total Unit Cost($)', calculate_unit_cost_contribution(total_unit_costA, cost_contribution(ip_interface_costsA, total_costsA)), calculate_unit_cost_contribution(total_unit_costB, cost_contribution(ip_interface_costsB, total_costsB)), numOfYears)) 287 | summary.append(create_row('Misc Total Unit Cost($)', calculate_unit_cost_contribution(total_unit_costA, cost_contribution(misc_costsA, total_costsA)), calculate_unit_cost_contribution(total_unit_costB, cost_contribution(misc_costsB, total_costsB)), numOfYears)) 288 | 289 | aspA = calculate_asp(inputA, numOfYears) 290 | aspB = calculate_asp(inputB, numOfYears) 291 | gross_marginsA = calculate_gross_margin(total_unit_costA, aspA) 292 | gross_marginsB = calculate_gross_margin(total_unit_costB, aspB) 293 | 294 | summary.append(create_row('Gross Margin($)', gross_marginsA, gross_marginsB, numOfYears)) 295 | summary.append(create_row('Gross Margin(%)', calculate_gross_margin_percent(gross_marginsA, aspA), calculate_gross_margin_percent(gross_marginsB, aspB), numOfYears)) 296 | summary.append(create_row('Cost Difference', calculate_cost_difference(total_unit_costB, total_unit_costA), [''] * numOfYears, numOfYears)) 297 | write_to_file(summary, numOfYears) 298 | 299 | # plot graph 300 | plot_graph(numOfYears, total_costsA, total_costsB, 'Total Cost') 301 | plot_graph(numOfYears, total_unit_costA, total_unit_costB, 'Total Unit Cost') 302 | print('Completed analysis') 303 | 304 | 305 | if __name__ == "__main__": 306 | parser = argparse.ArgumentParser() 307 | parser.add_argument('T', type = int, help = 'Total number of years of forecast') 308 | args = parser.parse_args() 309 | print('Total Number of years for forecast: ', args.T) 310 | main(args.T) 311 | print('Completed the analysis') 312 | -------------------------------------------------------------------------------- /baseline/inputs/chiplet_cost1.csv: -------------------------------------------------------------------------------- 1 | SN,DeviceType,SiliconNode,DimensionX,DimensionY,SubstrateUnitPriceYr1($),SubstrateUnitPriceYr2($),SubstrateUnitPriceYr3($),SubstrateUnitPriceYr4($),SubstrateUnitPriceYr5($),WaferSize(mm),SawStreet(mm),WaferPriceAnnualDiscountFactor(%),WaferPriceYr1($),WaferPriceYr2($),WaferPriceYr3($),WaferPriceYr4($),WaferPriceYr5($),MaskSetCost,NRE($),AspYr1($),AspYr2($),AspYr3($),AspYr4($),AspYr5($),N,DefectDensityYr1(Defects/cm^2),DefectDensityYr2(Defects/cm^2),DefectDensityYr3(Defects/cm^2),DefectDensityYr4(Defects/cm^2),DefectDensityYr5(Defects/cm^2),Insrtn1,Sites1,Insrtn2,Sites2,ProberRate($/hr),ProbeCost($),YieldModel,RecBaseline,RecArea,RecSpares,WaferYieldYr1,WaferYieldYr2,WaferYieldYr3,WaferYieldYr4,WaferYieldYr5,ForecastUnitPriceYr1($),ForecastUnitPriceYr2($),ForecastUnitPriceYr3($),ForecastUnitPriceYr4($),ForecastUnitPriceYr5($),ForecastDemandYr1,ForecastDemandYr2,ForecastDemandYr3,ForecastDemandYr4,ForecastDemandYr5,AssemblySteps,AssyPerStepYield1,AssyPerStepYield2,AssyPerStepYield3,AssyPerStepYield4,AssyPerStepYield5,AssyPerStepYield6,AssyPerStepYield7,AssyYield1,AssyYield2,AssyYield3,AssyYield4,AssyYield5,AssyYield6,AssyYield7,AssemblySeq1,AssemblySeq2,AssemblySeq3,AssemblySeq4,AssemblySeq5,AssemblySeq6,AssemblySeq7,PackageAssemblyCostYr1($),PackageAssemblyCostYr2($),PackageAssemblyCostYr3($),PackageAssemblyCostYr4($),PackageAssemblyCostYr5($),FinalPackageTestCostYr1($),FinalPackageTestCostYr2($),FinalPackageTestCostYr3($),FinalPackageTestCostYr4($),FinalPackageTestCostYr5($),FinalPackageTestYieldYr1,FinalPackageTestYieldYr2,FinalPackageTestYieldYr3,FinalPackageTestYieldYr4,FinalPackageTestYieldYr5,SLTCostYr1($),SLTCostYr2($),SLTCostYr3($),SLTCostYr4($),SLTCostYr5($),SLTYieldYr1,SLTYieldYr2,SLTYieldYr3,SLTYieldYr4,SLTYieldYr5,QualityYr1,QualityYr2,QualityYr3,QualityYr4,QualityYr5,OperatingUnitCostYr1($),OperatingUnitCostYr2($),OperatingUnitCostYr3($),OperatingUnitCostYr4($),OperatingUnitCostYr5($),IpInterfaceCostYr1($),IpInterfaceCostYr2($),IpInterfaceCostYr3($),IpInterfaceCostYr4($),IpInterfaceCostYr5($),IpInterfaceCostAspYr1,IpInterfaceCostAspYr2,IpInterfaceCostAspYr3,IpInterfaceCostAspYr4,IpInterfaceCostAspYr5,WSa($/hr),WSh($/hr),WSci,WSdi,WSxi,WSri,FTa($/hr),FTh($/hr),FTxi,FTdi,FTri,FTci,SLTa($/hr),SLTh($/hr),SLTdi 2 | ,,,,,,,,,,,,,,,,,,,,1000,1000,1000,1000,1000,,,,,,,,,,,,,Bose Einstein,32,10,0,,,,,,,,,,,,,,,,7,0.99,0.99,0.99,0.99,0.99,0.99,0.95,,,,,,,0.95,,,,,,,,20,20,20,20,20,1.74,1.74,1.74,1.74,1.74,0.99,0.99,0.99,0.99,0.99,0.33,0.33,0.33,0.33,0.33,0.99,0.99,0.99,0.99,0.99,,,,,,,,,,,,,,,,,,,,,150,50,2,15,0.8,2,250,250,0.9,25,0,1,30,80,360 3 | 0,Substrate,,68.5,68.5,50,50,50,50,50,0,0,,,,,,,,50000,,,,,,10,,,,,,,,,,,,,,,,0.7,0.71,0.75,0.8,0.82,71.43,70.42,66.67,62.5,60.98,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,1000000,1000000,1000000,1000000,1000000,0.01,0.01,0.01,0.01,0.01,,,,,,,,,,,,,,, 4 | 1,Active,5,25.8,25.8,0,0,0,0,0,300,0.1,2,16988,16648,16315,15989,15669,1000000,2000000,,,,,,10,0.1,0.09,0.075,0.06,0.05,30,1,0,1,200,1.666666667,,,,,,,,,,587.46,538.71,454.87,382.36,342.3,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,1500,1500,1500,1500,1500,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 5 | 2,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3984,3904,3826,3750,3675,,300000,,,,,,10,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,,,,,,2.84,2.81,2.79,2.77,2.75,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 6 | 3,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3984,3904,3826,3750,3675,,,,,,,,10,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,,,,,,2.84,2.81,2.79,2.77,2.75,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 7 | 4,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3984,3904,3826,3750,3675,,,,,,,,10,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,,,,,,2.84,2.81,2.79,2.77,2.75,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 8 | 5,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3984,3904,3826,3750,3675,,,,,,,,10,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,,,,,,2.84,2.81,2.79,2.77,2.75,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 9 | 6,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3984,3904,3826,3750,3675,,,,,,,,10,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,,,,,,2.84,2.81,2.79,2.77,2.75,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 10 | 7,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3984,3904,3826,3750,3675,,,,,,,,10,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,,,,,,2.84,2.81,2.79,2.77,2.75,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 11 | 8,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3984,3904,3826,3750,3675,,,,,,,,10,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,,,,,,2.84,2.81,2.79,2.77,2.75,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 12 | 9,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3984,3904,3826,3750,3675,,,,,,,,10,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,,,,,,2.84,2.81,2.79,2.77,2.75,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 13 | 10,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3984,3904,3826,3750,3675,,,,,,,,10,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,,,,,,2.84,2.81,2.79,2.77,2.75,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 14 | 11,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3984,3904,3826,3750,3675,,,,,,,,10,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,,,,,,2.84,2.81,2.79,2.77,2.75,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 15 | 12,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3984,3904,3826,3750,3675,,,,,,,,10,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,,,,,,2.84,2.81,2.79,2.77,2.75,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 16 | 13,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3984,3904,3826,3750,3675,,,,,,,,10,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,,,,,,2.84,2.81,2.79,2.77,2.75,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 17 | 14,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3984,3904,3826,3750,3675,,,,,,,,10,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,,,,,,2.84,2.81,2.79,2.77,2.75,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 18 | 15,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3984,3904,3826,3750,3675,,,,,,,,10,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,,,,,,2.84,2.81,2.79,2.77,2.75,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 19 | 16,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 20 | 17,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 21 | 18,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 22 | 19,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 23 | 20,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 24 | 21,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 25 | 22,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 26 | 23,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 27 | 24,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 28 | 25,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 29 | 26,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 30 | 27,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 31 | 28,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 32 | 29,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 33 | 30,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 34 | 31,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 35 | 32,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 36 | 33,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 37 | 34,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 38 | 35,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 39 | 36,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, -------------------------------------------------------------------------------- /baseline/inputs/chiplet_cost2.csv: -------------------------------------------------------------------------------- 1 | SN,DeviceType,SiliconNode,DimensionX,DimensionY,WaferSize(mm),SawStreet(mm),SubstrateUnitPriceYr1($),SubstrateUnitPriceYr2($),SubstrateUnitPriceYr3($),SubstrateUnitPriceYr4($),SubstrateUnitPriceYr5($),WaferPriceAnnualDiscountFactor(%),WaferPriceYr1($),WaferPriceYr2($),WaferPriceYr3($),WaferPriceYr4($),WaferPriceYr5($),MaskSetCost,NRE($),AspYr1($),AspYr2($),AspYr3($),AspYr4($),AspYr5($),N,DefectDensityYr1(Defects/cm^2),DefectDensityYr2(Defects/cm^2),DefectDensityYr3(Defects/cm^2),DefectDensityYr4(Defects/cm^2),DefectDensityYr5(Defects/cm^2),Insrtn1,Sites1,Insrtn2,Sites2,ProberRate($/hr),ProbeCost($),YieldModel,RecBaseline,RecArea,RecSpares,WaferYieldYr1,WaferYieldYr2,WaferYieldYr3,WaferYieldYr4,WaferYieldYr5,ForecastUnitPriceYr1($),ForecastUnitPriceYr2($),ForecastUnitPriceYr3($),ForecastUnitPriceYr4($),ForecastUnitPriceYr5($),ForecastDemandYr1,ForecastDemandYr2,ForecastDemandYr3,ForecastDemandYr4,ForecastDemandYr5,AssemblySteps,AssyPerStepYield1,AssyPerStepYield2,AssyPerStepYield3,AssyPerStepYield4,AssyPerStepYield5,AssyPerStepYield6,AssyPerStepYield7,AssyYield1,AssyYield2,AssyYield3,AssyYield4,AssyYield5,AssyYield6,AssyYield7,AssemblySeq1,AssemblySeq2,AssemblySeq3,AssemblySeq4,AssemblySeq5,AssemblySeq6,AssemblySeq7,PackageAssemblyCostYr1($),PackageAssemblyCostYr2($),PackageAssemblyCostYr3($),PackageAssemblyCostYr4($),PackageAssemblyCostYr5($),FinalPackageTestCostYr1($),FinalPackageTestCostYr2($),FinalPackageTestCostYr3($),FinalPackageTestCostYr4($),FinalPackageTestCostYr5($),FinalPackageTestYieldYr1,FinalPackageTestYieldYr2,FinalPackageTestYieldYr3,FinalPackageTestYieldYr4,FinalPackageTestYieldYr5,SLTCostYr1($),SLTCostYr2($),SLTCostYr3($),SLTCostYr4($),SLTCostYr5($),SLTYieldYr1,SLTYieldYr2,SLTYieldYr3,SLTYieldYr4,SLTYieldYr5,QualityYr1,QualityYr2,QualityYr3,QualityYr4,QualityYr5,OperatingUnitCostYr1($),OperatingUnitCostYr2($),OperatingUnitCostYr3($),OperatingUnitCostYr4($),OperatingUnitCostYr5($),IpInterfaceCostYr1($),IpInterfaceCostYr2($),IpInterfaceCostYr3($),IpInterfaceCostYr4($),IpInterfaceCostYr5($),IpInterfaceCostAspYr1,IpInterfaceCostAspYr2,IpInterfaceCostAspYr3,IpInterfaceCostAspYr4,IpInterfaceCostAspYr5,WSa($/hr),WSh($/hr),WSci,WSdi,WSxi,WSri,FTa($/hr),FTh($/hr),FTxi,FTdi,FTri,FTci,SLTa($/hr),SLTh($/hr),SLTdi 2 | ,,,,,,,,,,,,,,,,,,,,1000,900,800,700,600,,,,,,,,,,,,,Bose Einstein,3,1,2,,,,,,,,,,,,,,,,7,0.99,0.99,0.99,0.99,0.98,0.99,0.95,,,,,,,0.95,,,,,,,,20,20,20,20,20,1.74,1.74,1.74,1.74,1.74,0.99,0.99,0.99,0.99,0.99,0.33,0.33,0.33,0.33,0.33,0.99,0.99,0.99,0.99,0.99,,,,,,,,,,,,,,,,,,,,,150,50,2,15,0.8,2,250,250,0.9,25,0,1,30,80,360 3 | 0,Substrate,0,68.5,68.5,0,0,50,50,50,50,50,0,0,0,0,0,0,,50000,,,,,,0,0,0,0,0,0,,,,,,,,,,,0.7,0.71,0.75,0.8,0.82,71.43,70.42,66.67,62.5,60.98,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,1000000,1000000,1000000,1000000,1000000,0.01,0.01,0.01,0.01,0.01,,,,,,,,,,,,,,, 4 | 1,Active,5,14.5,25.8,300,0.1,0,0,0,0,0,2,16988,16648.24,16315.2752,15988.9697,15669.1903,1000000,2000000,,,,,,2,0.1,0.09,0.075,0.06,0.05,30,1,0,1,200,1.666666667,,,,,0.5265,0.5566,0.6069,0.6643,0.7073,219.46,202.25,180.96,163.17,149.49,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 5 | 2,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,300000,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 6 | 3,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 7 | 4,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 8 | 5,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 9 | 6,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 10 | 7,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 11 | 8,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 12 | 9,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 13 | 10,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 14 | 11,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 15 | 12,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 16 | 13,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 17 | 14,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 18 | 15,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,,,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 19 | 16,Active,5,14.5,25.8,300,0.1,0,0,0,0,0,2,16988,16648.24,16315.2752,15988.9697,15669.1903,,,,,,,,5,0.1,0.09,0.075,0.06,0.05,30,1,0,1,200,1.666666667,,,,,0.2012,0.2312,0.287,0.3597,0.4207,567.93,491.32,381.09,303.35,250.38,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 20 | 17,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 21 | 18,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 22 | 19,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 23 | 20,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 24 | 21,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 25 | 22,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 26 | 23,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 27 | 24,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 28 | 25,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 29 | 26,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 30 | 27,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 31 | 28,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 32 | 29,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 33 | 30,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 34 | 31,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 35 | 32,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 36 | 33,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 37 | 34,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 38 | 35,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 39 | 36,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,,,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, -------------------------------------------------------------------------------- /baseline/inputs/chiplet_cost2_value.csv: -------------------------------------------------------------------------------- 1 | SN,DeviceType,SiliconNode,DimensionX,DimensionY,WaferSize(mm),SawStreet(mm),SubstrateUnitPriceYr1($),SubstrateUnitPriceYr2($),SubstrateUnitPriceYr3($),SubstrateUnitPriceYr4($),SubstrateUnitPriceYr5($),WaferPriceAnnualDiscountFactor(%),WaferPriceYr1($),WaferPriceYr2($),WaferPriceYr3($),WaferPriceYr4($),WaferPriceYr5($),MaskSetCost,NRE($),AspYr1($),AspYr2($),AspYr3($),AspYr4($),AspYr5($),N,DefectDensityYr1(Defects/cm^2),DefectDensityYr2(Defects/cm^2),DefectDensityYr3(Defects/cm^2),DefectDensityYr4(Defects/cm^2),DefectDensityYr5(Defects/cm^2),Insrtn1,Sites1,Insrtn2,Sites2,ProberRate($/hr),ProbeCost($),YieldModel,WaferYieldYr1,WaferYieldYr2,WaferYieldYr3,WaferYieldYr4,WaferYieldYr5,ForecastUnitPriceYr1($),ForecastUnitPriceYr2($),ForecastUnitPriceYr3($),ForecastUnitPriceYr4($),ForecastUnitPriceYr5($),ForecastDemandYr1,ForecastDemandYr2,ForecastDemandYr3,ForecastDemandYr4,ForecastDemandYr5,AssemblySteps,AssyPerStepYield1,AssyPerStepYield2,AssyPerStepYield3,AssyPerStepYield4,AssyPerStepYield5,AssyPerStepYield6,AssyPerStepYield7,AssyYield1,AssyYield2,AssyYield3,AssyYield4,AssyYield5,AssyYield6,AssyYield7,AssemblySeq1,AssemblySeq2,AssemblySeq3,AssemblySeq4,AssemblySeq5,AssemblySeq6,AssemblySeq7,PackageAssemblyCostYr1($),PackageAssemblyCostYr2($),PackageAssemblyCostYr3($),PackageAssemblyCostYr4($),PackageAssemblyCostYr5($),FinalPackageTestCostYr1($),FinalPackageTestCostYr2($),FinalPackageTestCostYr3($),FinalPackageTestCostYr4($),FinalPackageTestCostYr5($),FinalPackageTestYieldYr1,FinalPackageTestYieldYr2,FinalPackageTestYieldYr3,FinalPackageTestYieldYr4,FinalPackageTestYieldYr5,SLTCostYr1($),SLTCostYr2($),SLTCostYr3($),SLTCostYr4($),SLTCostYr5($),SLTYieldYr1,SLTYieldYr2,SLTYieldYr3,SLTYieldYr4,SLTYieldYr5,QualityYr1,QualityYr2,QualityYr3,QualityYr4,QualityYr5,OperatingUnitCostYr1($),OperatingUnitCostYr2($),OperatingUnitCostYr3($),OperatingUnitCostYr4($),OperatingUnitCostYr5($),IpInterfaceCostYr1($),IpInterfaceCostYr2($),IpInterfaceCostYr3($),IpInterfaceCostYr4($),IpInterfaceCostYr5($),IpInterfaceCostAspYr1,IpInterfaceCostAspYr2,IpInterfaceCostAspYr3,IpInterfaceCostAspYr4,IpInterfaceCostAspYr5 2 | ,,,,,,,,,,,,,,,,,,,,1000,900,800,700,600,,,,,,,,,,,,,Bose Einstein,,,,,,,,,,,,,,,,7,0.99,0.99,0.99,0.99,0.98,0.99,0.95,,,,,,,0.95,,,,,,,,20,20,20,20,20,1.74,1.74,1.74,1.74,1.74,0.99,0.99,0.99,0.99,0.99,0.33,0.33,0.33,0.33,0.33,0.99,0.99,0.99,0.99,0.99,,,,,,,,,,,,,,,,,,,, 3 | 0,Substrate,0,68.5,68.5,0,0,50,50,50,50,50,0,0,0,0,0,0,,50000,,,,,,0,0,0,0,0,0,,,,,,,,0.7,0.71,0.75,0.8,0.82,71.43,70.42,66.67,62.5,60.98,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,1000000,1000000,1000000,1000000,1000000,0.01,0.01,0.01,0.01,0.01 4 | 1,Active,5,14.5,25.8,300,0.1,0,0,0,0,0,2,16988,16648.24,16315.2752,15988.9697,15669.1903,1000000,2000000,,,,,,2,0.1,0.09,0.075,0.06,0.05,30,1,0,1,200,1.666666667,,0.5265,0.5566,0.6069,0.6643,0.7073,219.46,202.25,180.96,163.17,149.49,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,1500,1500,1500,1500,1500,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0 5 | 2,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,300000,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0 6 | 3,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0 7 | 4,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0 8 | 5,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0 9 | 6,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0 10 | 7,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0 11 | 8,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0 12 | 9,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0 13 | 10,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0 14 | 11,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0 15 | 12,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0 16 | 13,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0 17 | 14,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0 18 | 15,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3984,3944.16,3904.7184,3865.671216,3827.014504,,,,,,,,5,0.05,0.05,0.05,0.05,0.05,12,1,0,1,200,0.6666666667,,0.9176,0.9176,0.9176,0.9176,0.9176,2.97,2.95,2.92,2.9,2.88,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0 19 | 16,Active,5,14.5,25.8,300,0.1,0,0,0,0,0,2,16988,16648.24,16315.2752,15988.9697,15669.1903,,,,,,,,5,0.1,0.09,0.075,0.06,0.05,30,1,0,1,200,1.666666667,,0.2012,0.2312,0.287,0.3597,0.4207,567.93,491.32,381.09,303.35,250.38,100000,150000,250000,1000000,1000000,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 20 | 17,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 21 | 18,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 22 | 19,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 23 | 20,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 24 | 21,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 25 | 22,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 26 | 23,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 27 | 24,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 28 | 25,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 29 | 26,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 30 | 27,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 31 | 28,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 32 | 29,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 33 | 30,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 34 | 31,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 35 | 32,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 36 | 33,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 37 | 34,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 38 | 35,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 39 | 36,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.2,0.2,0.2,0.2,0.2,,,,,,0,,0.9999,0.9999,0.9999,0.9999,0.9999,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -------------------------------------------------------------------------------- /baseline/outputs/summary_output.csv: -------------------------------------------------------------------------------- 1 | CostCategory,ChipletYr1,ChipletYr2,ChipletYr3,ChipletYr4,ChipletYr5,2SocChipsYr1,2SocChipsYr2,2SocChipsYr3,2SocChipsYr4,2SocChipsYr5 2 | Material($),69865000.0,97270500.0,140150000.0,483640000.0,441780000.0,90040000.0,120793500.0,167400000.0,569620000.0,501170000.0 3 | Mask Set($),1000000.0,0,0,0,0,1000000.0,0,0,0,0 4 | NRE($),2350000.0,0,0,0,0,2350000.0,0,0,0,0 5 | KGD($),3493250.0000000033,4863525.000000005,7007500.0000000065,24182000.000000022,22089000.00000002,1662350.0000000014,2354775.000000002,3606375.0000000033,13313500.000000011,12539500.000000011 6 | Quality($),89032.09999999996,122561.09999999996,172731.25,581729.0,521473.00000000006,9003.999999999996,12079.35,16740.0,56962.0,50117.0 7 | Operating Cost($),240000.0,360000.0,600000.0,2400000.0,2400000.0,240000.0,360000.0,600000.0,2400000.0,2400000.0 8 | IP Interface Cost($),2000000.0,2500000.0,3500000.0,11000000.0,11000000.0,2000000.0,2350000.0,3000000.0,8000000.0,7000000.0 9 | "Misc Cost (Assy, Test)($)",2000000.0,3000000.0,5000000.0,20000000.0,20000000.0,2000000.0,3000000.0,5000000.0,20000000.0,20000000.0 10 | Total($),89713523.32352944,120826255.08871141,176219182.5688711,615172698.9759989,568776181.5624253,108378881.80321223,142047935.40373555,199954146.20532554,688470239.4981822,615326992.5604489 11 | Material(%),0.7787566178629426,0.8050443997340095,0.7953163665665381,0.7861857341931056,0.7767202887899289,0.8307891583850178,0.8503713880576641,0.8371919421370894,0.8273705489654706,0.8144775153038094 12 | Mask Set(%),0.011146591538866995,0.0,0.0,0.0,0.0,0.009226889808807395,0.0,0.0,0.0,0.0 13 | NRE(%),0.026194490116337437,0.0,0.0,0.0,0.0,0.021683191050697374,0.0,0.0,0.0,0.0 14 | KGD(%),0.03893783089314717,0.04025221998670052,0.03976581832832694,0.03930928670965531,0.03883601443949648,0.015338320273670984,0.016577326472976505,0.018036010097518807,0.019337800294322183,0.020378595692384073 15 | Quality(%),0.0009924044525475597,0.0010143581782785108,0.0009802068508205234,0.0009456352678984805,0.0009168333993303243,8.307891583850174e-05,8.50371388057664e-05,8.371919421370893e-05,8.273705489654706e-05,8.144775153038093e-05 16 | Operating Cost(%),0.0026751819693280787,0.002979484878809541,0.003404850659578472,0.0039013434828869685,0.00421958597740013,0.0022144535541137747,0.002534355736862986,0.0030006879646490656,0.003485989462303166,0.003900365218846185 17 | IP Interface Cost($)(%),0.02229318307773399,0.020690867213955147,0.01986162884754109,0.017881157629898604,0.01933976906308393,0.01845377961761479,0.016543711060077824,0.015003439823245328,0.011619964874343887,0.011376065221634707 18 | "Misc Cost (Assy, Test)(%)",0.02229318307773399,0.024829040656746175,0.02837375549648727,0.032511195690724734,0.03516321647833442,0.01845377961761479,0.02111963114052488,0.025005733038742213,0.029049912185859717,0.032503043490384874 19 | Total Unit Cost($),897.1352332352943,805.5083672580761,704.8767302754844,615.1726989759989,568.7761815624252,1083.7888180321222,946.9862360249036,799.8165848213022,688.4702394981822,615.3269925604488 20 | Material Total Unit Cost($),698.65,648.4699999999999,560.6,483.64,441.78,900.4,805.29,669.6,569.62,501.17 21 | NRE Total Unit Cost($),23.5,0.0,0.0,0.0,0.0,23.499999999999996,0.0,0.0,0.0,0.0 22 | KGD Total Unit Cost($),34.93250000000003,32.42350000000003,28.030000000000026,24.18200000000002,22.08900000000002,16.623500000000014,15.698500000000012,14.425500000000014,13.313500000000012,12.53950000000001 23 | Quality Total Unit Cost($),0.8903209999999995,0.8170739999999996,0.690925,0.581729,0.5214730000000001,0.09003999999999995,0.080529,0.06696,0.056962,0.050116999999999995 24 | Operating Total Unit Cost($),2.4,2.4,2.4,2.4,2.4,2.4,2.4,2.4,2.4,2.4 25 | IP Interface Total Unit Cost($),20.0,16.666666666666668,14.0,10.999999999999998,11.0,20.0,15.666666666666666,12.0,8.0,7.0 26 | Misc Total Unit Cost($),20.0,20.0,20.0,19.999999999999996,20.0,20.0,20.0,20.0,20.0,20.0 27 | Gross Margin($),102.86476676470568,194.49163274192392,295.1232697245156,384.82730102400114,431.2238184375748,-83.78881803212221,-46.98623602490363,0.1834151786978282,11.529760501817805,-15.326992560448844 28 | Gross Margin(%),0.10286476676470568,0.1944916327419239,0.2951232697245156,0.38482730102400114,0.4312238184375748,-0.08378881803212221,-0.05220692891655959,0.00022926897337228525,0.01647108643116829,-0.02554498760074807 29 | Cost Difference,186.6535847968279,141.47786876682756,94.93985454581775,73.29754052218334,46.55081099802362,,,,, 30 | -------------------------------------------------------------------------------- /baseline/outputs/total_cost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/baseline/outputs/total_cost.png -------------------------------------------------------------------------------- /baseline/outputs/total_unit_cost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/baseline/outputs/total_unit_cost.png -------------------------------------------------------------------------------- /baseline/reader.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2022 Google LLC 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | https://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | """ 16 | 17 | import csv 18 | import math 19 | from operator import mod 20 | from scipy.special import comb 21 | 22 | # Yield model names 23 | MURPHY_MODEL = 'Murphy' 24 | BOSE_EINSTEIN_MODEL = 'Bose Einstein' 25 | DEVICE_TYPE_SUBSTRATE = 'Substrate' 26 | 27 | def readFile(fileName, numOfYears): 28 | input = [] 29 | with open('inputs/' + fileName) as file: 30 | reader = csv.DictReader(file) 31 | for row in reader: 32 | # Calculations not required for metadata row 33 | if meta_data_row(row): 34 | input.append(row) 35 | continue 36 | 37 | # Wafer price 38 | for year in range(1, numOfYears + 1): 39 | col = f'WaferPriceYr{year}($)' 40 | if col not in row: 41 | raise Exception(f'Column {col} does not exists! Make sure number of year matches columns') 42 | 43 | row[col] = calculate_wafer_price(row, year) 44 | 45 | row['EffA'] = calculate_effective_area(input, row) 46 | 47 | # GDPW 48 | row['GDPW'] = calculate_gdpw(row) 49 | 50 | row['ProbeCost($)'] = float( 51 | row['ProbeCost($)']) if row['ProbeCost($)'] else calculate_probe_cost(row) 52 | 53 | # Wafer Yield 54 | for year in range(1, numOfYears + 1): 55 | wafer_col = f'WaferYieldYr{year}' 56 | dd_col = f'DefectDensityYr{year}(Defects/cm^2)' 57 | if wafer_col not in row or dd_col not in row: 58 | raise Exception('Column does not exists! Make sure number of year matches columns') 59 | 60 | row[wafer_col] = calculate_wafer_yield(row, row[wafer_col], input, float(row[dd_col] or '0')) 61 | row[f'TestCostYr{year}'] = get_test_cost(input, row[wafer_col]) 62 | 63 | # Forecast Unit Price ($) per die 64 | for year in range(1, numOfYears + 1): 65 | col = f'ForecastUnitPriceYr{year}($)' 66 | if col not in row: 67 | raise Exception('Column does not exists! Make sure number of year matches columns') 68 | 69 | row[col] = calculate_forcast_unit_price(row, row[col], year) 70 | 71 | # total operating cost 72 | for year in range(1, numOfYears + 1): 73 | forecast_demand = int(row[f'ForecastDemandYr{year}']) 74 | op_unit_cost = float(row[f'OperatingUnitCostYr{year}($)']) 75 | row[f'OpCostYr{year}'] = op_unit_cost * forecast_demand 76 | 77 | # Total IP Interface Cost 78 | # Total_Ip_Cost = IP_Cost + (IP_Pct_per_ASP * ASP) / 100 * FD 79 | for year in range(1, numOfYears + 1): 80 | total_ip_cost_col = f'TotalIpInterfaceCostYr{year}' 81 | ip_cost = float(row[f'IpInterfaceCostYr{year}($)']) 82 | ip_cost_per_asp = float(row[f'IpInterfaceCostAspYr{year}']) 83 | fd = int(row[f'ForecastDemandYr{year}']) 84 | asp = get_asp_cost(input, row, f'AspYr{year}($)') 85 | row[total_ip_cost_col] = ip_cost + (ip_cost_per_asp * asp) * fd 86 | 87 | # Material Cost 88 | # MatCost = FUP * FD 89 | for year in range(1, numOfYears + 1): 90 | mat_cost_col = f'MatCostYr{year}' 91 | fup = float(row[f'ForecastUnitPriceYr{year}($)']) 92 | fd = float(row[f'ForecastDemandYr{year}']) 93 | row[mat_cost_col] = fup * fd 94 | 95 | # Field Quality Cost 96 | for year in range(1, numOfYears + 1): 97 | qual_cost_col = f'QualityCostYr{year}' 98 | field_quality_fr = float(row[f'QualityYr{year}']) 99 | fup = float(row[f'ForecastUnitPriceYr{year}($)']) 100 | fd = int(row[f'ForecastDemandYr{year}']) 101 | row[qual_cost_col] = (field_quality_fr/1000000) * fup * fd 102 | 103 | input.append(row) 104 | 105 | # test cost are not done in sheet 106 | # Ask Mudashir 107 | return input 108 | 109 | 110 | def calculate_wafer_price(row, year): 111 | if row['DeviceType'] == DEVICE_TYPE_SUBSTRATE: 112 | return 0 113 | 114 | if year == 1: 115 | return float(row['WaferPriceYr1($)']) 116 | 117 | wafer_price = float(row[f'WaferPriceYr{year - 1}($)']) 118 | discount_rate = float(row['WaferPriceAnnualDiscountFactor(%)']) 119 | return wafer_price * (1 - discount_rate/100) 120 | 121 | 122 | def calculate_effective_area(input, row): 123 | # EffA = (L + ss ) x (W + ss ) Effective Area of each die 124 | L = float(row['DimensionX']) 125 | W = float(row['DimensionY']) 126 | ss = float(row['SawStreet(mm)']) 127 | rec_spares = int(input[0]['RecSpares']) 128 | rec_area = int(input[0]['RecArea']) 129 | return (L + ss) * (W + ss) + rec_area * rec_spares 130 | 131 | 132 | def meta_data_row(row): 133 | device_type = row['DeviceType'] 134 | return device_type is None or device_type == '' 135 | 136 | # GDPW = ((Wfr - 6) * PI * (Wfr / (4 * EffA) - 1 / sqrt(2 * EffA))) 137 | def calculate_gdpw(row): 138 | if float(row['DimensionX']) == 0 or float(row['DimensionY']) == 0: 139 | return 0 140 | wfr = float(row['WaferSize(mm)']) 141 | return round((wfr - 6) * math.pi * ((wfr / (4 * row['EffA'])) - (1 / math.sqrt(2 * row['EffA']))), 0) 142 | 143 | 144 | def calculate_probe_cost(row): 145 | if row['DeviceType'] == DEVICE_TYPE_SUBSTRATE: 146 | return 0 147 | 148 | return float(row['ProberRate($/hr)']) * ((float(row['Insrtn1']) / 3600) / float(row['Sites1']) + (float(row['Insrtn2']) / 3600) / float(row['Sites2'])) 149 | 150 | 151 | def calculate_wafer_yield(row, wafer_yield, input, defect_density): 152 | if wafer_yield: 153 | return float(wafer_yield) 154 | 155 | model = get_yield_model(input, row) 156 | model_yield = calculate_murphy_yield(row, defect_density) if model == MURPHY_MODEL else calculate_bose_einstein_yield(row, defect_density) 157 | return model_yield + calculate_rec_yield(input, defect_density) 158 | 159 | 160 | def calculate_murphy_yield(row, defect_density): 161 | return ((1 - math.exp(-defect_density * row['EffA'] * 0.01)) / (defect_density * row['EffA'] * 0.01)) ** 2 162 | 163 | 164 | def calculate_bose_einstein_yield(row, defect_density): 165 | return (1.0 / (1 + defect_density * row['EffA'] * 0.01)) ** int(row['N']) 166 | 167 | 168 | # Yield Adjusted Forcast Unit Price 169 | # For Device Type = Active, FUP = Pwafer / (GDPW * WaferYield) + ProbeCost 170 | # For Device Type = Substrace, FUP = SubsCost = SubsUnitPrice/WaferYield 171 | def calculate_forcast_unit_price(row, forecast_unit_force_price, year): 172 | if forecast_unit_force_price: 173 | return float(forecast_unit_force_price) 174 | 175 | return calculate_substrate_fup(row, year) if row['DeviceType'] == DEVICE_TYPE_SUBSTRATE else calculate_active_fup(row, year) + row['ProbeCost($)'] 176 | 177 | 178 | def calculate_active_fup(row, year): 179 | gdpw = row['GDPW'] 180 | if gdpw == 0: 181 | return 0 182 | pWafer = float(row[f'WaferPriceYr{year}($)']) 183 | pYield = float(row[f'WaferYieldYr{year}']) 184 | return pWafer/ int(gdpw * pYield) 185 | 186 | 187 | def calculate_substrate_fup(row, year): 188 | subs_unit_price = float(row[f'SubstrateUnitPriceYr{year}($)'] or '0') 189 | subs_yield = float(row[f'WaferYieldYr{year}']) 190 | return subs_unit_price/subs_yield 191 | 192 | 193 | def get_asp_cost(input, row, asp_col): 194 | return float(input[0][asp_col] if input else row[asp_col]) 195 | 196 | 197 | def get_yield_model(input, row): 198 | model = input[0]['YieldModel'] if input else row['YieldModel'] 199 | 200 | if model != MURPHY_MODEL and model != BOSE_EINSTEIN_MODEL: 201 | raise Exception('Yield model should be one of Murphy or Bose Einstein') 202 | 203 | return model 204 | 205 | 206 | def calculate_rec_yield(input, dd): 207 | k = int(input[0]['RecSpares']) 208 | n = int(input[0]['RecBaseline']) + int(input[0]['RecSpares']) 209 | p = int(input[0]['RecArea']) / 100 * dd 210 | return comb(n, k) * p**k * (1 - p)**(n - k) 211 | 212 | def wafer_sort_test_cost(input, yield_i): 213 | ws_a = float(input[0]['WSa($/hr)']) # Wafer sort automated test equipment loaded rate 214 | ws_h = float(input[0]['WSh($/hr)']) # Wafer sort prober loaded rate ($/hr) 215 | ws_ci = float(input[0]['WSci']) # Wafer Sort insertion per unit 216 | ws_di = float(input[0]['WSdi']) # Probe (Wafer Sort) time duration per insertion 217 | ws_xi = float(input[0]['WSxi']) # Wafer sort test coverage 218 | ws_ri = float(input[0]['WSri']) # Wafer sort retest attempts for failing unit 219 | return ((ws_a + ws_h) / 3600) * (ws_di * ws_ci + (1 - yield_i * ws_xi) * ws_di * ws_ri) 220 | 221 | def final_test_cost(input, yield_i): 222 | ft_a = float(input[0]['FTa($/hr)']) 223 | ft_h = float(input[0]['FTh($/hr)']) # final test handler loaded rate 224 | ws_xi = float(input[0]['WSxi']) # Wafer sort test coverage 225 | ft_xi = float(input[0]['FTxi']) 226 | ft_di = float(input[0]['FTdi']) 227 | ft_ri = float(input[0]['FTri']) 228 | ft_ci = float(input[0]['FTci']) 229 | return ((ft_a + ft_h) / 3600) * (ft_ci * ft_di + (1 - yield_i * (ws_xi - ft_xi)) * (ft_ri * ft_di)) 230 | 231 | def slt_test_cost(input, yield_i): 232 | slt_a = float(input[0]['SLTa($/hr)']) 233 | slt_h = float(input[0]['SLTh($/hr)']) # final test handler loaded rate 234 | slt_di = float(input[0]['SLTdi']) # system level test duration per unit 235 | ftx_i = float(input[0]['FTxi']) 236 | return ((slt_a + slt_h) / 3600) * (slt_di * (yield_i + (1 - yield_i) * (1 - ftx_i))) 237 | 238 | def get_test_cost(input, yield_i): 239 | return wafer_sort_test_cost(input, yield_i) + final_test_cost(input, yield_i) + slt_test_cost(input, yield_i) 240 | -------------------------------------------------------------------------------- /baseline/requirements.txt: -------------------------------------------------------------------------------- 1 | numpy==1.22.3 2 | matplotlib==3.5.1 3 | scipy -------------------------------------------------------------------------------- /baseline/test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/baseline/test/__init__.py -------------------------------------------------------------------------------- /baseline/test/test_cost_analyzer.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2022 Google LLC 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | https://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | """ 16 | 17 | import unittest 18 | 19 | from cost_analyzer import calculate_assy_scrap 20 | 21 | 22 | class TestReader(unittest.TestCase): 23 | def test_assy_scrap_cost(self): 24 | input = [ 25 | { 26 | 'DeviceType': '', 27 | 'AssemblySteps': '7', 28 | 'AssyPerStepYield1': '0.99', 29 | 'AssyPerStepYield2': '0.99', 30 | 'AssyPerStepYield3': '0.99', 31 | 'AssyPerStepYield4': '0.99', 32 | 'AssyPerStepYield5': '0.98', 33 | 'AssyPerStepYield6': '0.99', 34 | 'AssyPerStepYield7': '0.95', 35 | 'AssyYield1': '', 36 | 'AssyYield2': '', 37 | 'AssyYield3': '', 38 | 'AssyYield4': '', 39 | 'AssyYield5': '', 40 | 'AssyYield6': '', 41 | 'AssyYield7': '', 42 | }, 43 | { 44 | 'DeviceType': 'Substrate', 45 | 'DimensionX': '68.5', 46 | 'DimensionY': '68.5', 47 | 'MatCostYr1': 10204081.63, 48 | 'MatCostYr2': 14878000.40, 49 | 'MatCostYr3': 22222222.22, 50 | 'MatCostYr4': 78125000.00, 51 | 'MatCostYr5': 74360499.70, 52 | 'AssemblySeq1': '0', 53 | 'AssemblySeq2': '0', 54 | 'AssemblySeq3': '0', 55 | 'AssemblySeq4': '0', 56 | 'AssemblySeq5': '0', 57 | 'AssemblySeq6': '0', 58 | 'AssemblySeq7': '1', 59 | }, 60 | { 61 | 'DeviceType': 'Active', 62 | 'DimensionX': '68.5', 63 | 'DimensionY': '68.5', 64 | 'MatCostYr1': 157969593.24, 65 | 'MatCostYr2': 197670554.29, 66 | 'MatCostYr3': 240957514.71, 67 | 'MatCostYr4': 700308744.26, 68 | 'MatCostYr5': 568219101.94, 69 | 'AssemblySeq1': '0', 70 | 'AssemblySeq2': '0', 71 | 'AssemblySeq3': '0', 72 | 'AssemblySeq4': '0', 73 | 'AssemblySeq5': '0', 74 | 'AssemblySeq6': '0', 75 | 'AssemblySeq7': '1', 76 | } 77 | ] 78 | expected_assy_scrap = [16396933.299825005, 20723484.082275007, 25660024.35067501, 75897290.06535003, 62651511.15990003] 79 | 80 | assy_scrap = calculate_assy_scrap(input, 5) 81 | 82 | self.assertAlmostEqual(assy_scrap, expected_assy_scrap) 83 | 84 | 85 | if __name__ == '__main__': 86 | unittest.main() 87 | -------------------------------------------------------------------------------- /baseline/test/test_reader.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2022 Google LLC 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | https://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | """ 16 | 17 | import unittest 18 | 19 | from reader import calculate_bose_einstein_yield, calculate_rec_yield 20 | 21 | 22 | class TestReader(unittest.TestCase): 23 | def test_bose_einstein_yield(self): 24 | row = {'EffA': 378.14, 'N': '2'} 25 | 26 | yield_yr = calculate_bose_einstein_yield(row, 0.1) 27 | 28 | self.assertEqual(52.65, round(yield_yr * 100, 2)) 29 | 30 | def test_calculate_rec_yield(self): 31 | input = [{'RecBaseline': '3', 'RecSpares': '2', 'RecArea': '1'}] 32 | rec_yield = calculate_rec_yield(input, 0.1) 33 | 34 | self.assertEqual(0.015, round(rec_yield, 3)) 35 | 36 | 37 | if __name__ == '__main__': 38 | unittest.main() 39 | -------------------------------------------------------------------------------- /baseline/writer.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2022 Google LLC 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | https://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | """ 16 | 17 | import csv 18 | 19 | def write_to_file(summary, numOfYears): 20 | with open('outputs/summary_output.csv', 'w') as file: 21 | 22 | field_names = ['CostCategory'] 23 | 24 | for year in range(1, numOfYears + 1): 25 | col_name = f'ChipletYr{year}' 26 | field_names.append(col_name) 27 | 28 | for year in range(1, numOfYears + 1): 29 | col_name = f'2SocChipsYr{year}' 30 | field_names.append(col_name) 31 | 32 | writer = csv.DictWriter(file, field_names) 33 | writer.writeheader() 34 | writer.writerows(summary) 35 | -------------------------------------------------------------------------------- /simulation/README.md: -------------------------------------------------------------------------------- 1 | ### Installation 2 | 1. python3 required 3 | 2. pip3 installation required (User Guide - pip3)[https://pip.pypa.io/en/latest/user_guide/#requirements-files] 4 | 2. Install required dependencies by running 5 | 6 | ``` 7 | pip3 install -r requirements.txt 8 | ``` 9 | ### Running baseline analysis 10 | 1. Provide input files in `inputs` directory. `input_template.csv` can be used to create the input files, but `input_template.csv` shouldn't be updated directly - VERY IMPORTANT!! The input file name should be `data_option1.csv` and `data_option2.csv` 11 | 2. Run `python3 cost_analyzer.py` 12 | 13 | For example to run simulation for 5 years, specify the values in input `params.csv` file: 14 | 15 | ``` 16 | NumOfYears,NumOfSteps,NumOfSimulation 17 | 5,1,1 18 | ``` 19 | 20 | 3. Look for output in `outputs` directory. 21 | 22 | 23 | ### Running Monte Carlo analysis 24 | 1. Provide input files in `inputs` directory. `input_template.csv` can be used to create the input files, but `input_template.csv` shouldn't be updated directly - VERY IMPORTANT!! The input file name should be `data_option1.csv` and `data_option2.csv` 25 | 2. Run `python3 cost_analyzer.py` 26 | 27 | For example to run simulation for 5 years, 50 values randomly normally distributed for the range and 8000 simulations, specify the values in `params.csv` input file: 28 | 29 | ``` 30 | NumOfYears,NumOfSteps,NumOfSimulation 31 | 5,50,8000 32 | ``` 33 | 34 | 3. Look for output in `outputs` directory. 35 | 4. In case of simulation, the unit cost difference distribution is available in `cost_diff_summary.png` for all `t`. They are available individually with `CostDiffYr{t}.png` as well. 36 | Also, the Stochastic Analysis summary is available in `stochastic_analysis.csv` with Worst Case (5% probability), Average (50% Probability) and Best Case (5% Probability) 37 | 38 | 39 | ### Run unit tests 40 | 41 | ``` 42 | python3 -m unittest 43 | ``` -------------------------------------------------------------------------------- /simulation/cost_analyzer.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | """ 4 | Copyright 2022 Google LLC 5 | 6 | Licensed under the Apache License, Version 2.0 (the "License"); 7 | you may not use this file except in compliance with the License. 8 | You may obtain a copy of the License at 9 | 10 | https://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, software 13 | distributed under the License is distributed on an "AS IS" BASIS, 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | See the License for the specific language governing permissions and 16 | limitations under the License. 17 | """ 18 | 19 | import locale 20 | from re import S 21 | import numpy as np 22 | import pandas as pd 23 | import seaborn as sns 24 | import time 25 | import multiprocessing as mp 26 | 27 | from reader import readFile 28 | from preprocessor import simulation, validate 29 | from plotter import plot_df, plot_graph, plot_tornado 30 | from processor import calculate_summary, find_x_mean, find_xy_mean, write_summary 31 | from copy import deepcopy 32 | 33 | sns.set_style('whitegrid') 34 | locale.setlocale(locale.LC_ALL, '') 35 | 36 | INPUT_FILE_A = 'data_option1.csv' 37 | INPUT_FILE_B = 'data_option2.csv' 38 | TEMPLATE_FILE = 'input_template.csv' 39 | PARAMS_INPUT_FILE = "params.csv" 40 | 41 | 42 | def take_read(read, col, years, type): 43 | def map_val(val): 44 | if "-" not in val: 45 | return val 46 | first, second = val.split("-") 47 | return first if type == 'High' else second 48 | 49 | def map_row(row): 50 | for year in range(1, years + 1): 51 | colName = col.replace("{year}", f'Yr{year}') 52 | row[colName] = map_val(row[colName]) 53 | return row 54 | 55 | return list(map(lambda row: map_row(row), read)) 56 | 57 | 58 | def create_tornado_input(readA, readB, summaryA, summaryB, years, cols, args): 59 | tornado_input = [] 60 | for i in range(0, years): 61 | tornado_input.append([]) 62 | 63 | for col in cols: 64 | inputA_fd_high = take_read(deepcopy(readA), col, years, 'High') 65 | inputA_fd_low = take_read(deepcopy(readA), col, years, 'Low') 66 | summaryA_fd_high = calculate_summary(inputA_fd_high, args) 67 | summaryA_fd_low = calculate_summary(inputA_fd_low, args) 68 | total_ucd_high = find_xy_mean(np.array(summaryA_fd_high['total_unit_cost_arr']) - np.array(summaryB['total_unit_cost_arr'])) 69 | total_ucd_low = find_xy_mean(np.array(summaryA_fd_low['total_unit_cost_arr']) - np.array(summaryB['total_unit_cost_arr'])) 70 | for year in range(0, years): 71 | tornado_input[year].append({'name': f'Option1 {col}', 'high': total_ucd_high[year], 'low': total_ucd_low[year]}) 72 | 73 | inputB_fd_high = take_read(deepcopy(readB), col, years, 'High') 74 | inputB_fd_low = take_read(deepcopy(readB), col, years, 'Low') 75 | summaryB_fd_high = calculate_summary(inputB_fd_high, args) 76 | summaryB_fd_low = calculate_summary(inputB_fd_low, args) 77 | total_ucd_high = find_xy_mean(np.array(summaryA['total_unit_cost_arr']) - np.array(summaryB_fd_high['total_unit_cost_arr'])) 78 | total_ucd_low = find_xy_mean(np.array(summaryA['total_unit_cost_arr']) - np.array(summaryB_fd_low['total_unit_cost_arr'])) 79 | for year in range(0, years): 80 | tornado_input[year].append({'name': f'Option2 {col}', 'high': total_ucd_high[year], 'low': total_ucd_low[year]}) 81 | return tornado_input 82 | 83 | def main(): 84 | print('Starting to read ' + INPUT_FILE_A) 85 | readA = readFile(INPUT_FILE_A) 86 | print('Completead reading ' + INPUT_FILE_A) 87 | print('################') 88 | 89 | print('Starting to read ' + INPUT_FILE_B) 90 | readB = readFile(INPUT_FILE_B) 91 | print('Completead reading ' + INPUT_FILE_B) 92 | 93 | print('Validating inputs against template...') 94 | params = readFile(PARAMS_INPUT_FILE) 95 | years = int(params[0]['NumOfYears']) 96 | 97 | print('Total Number of years for forecast: ', years) 98 | 99 | template = readFile(TEMPLATE_FILE) 100 | validate(readA, template, years) 101 | validate(readB, template, years) 102 | 103 | print('Running analysis...') 104 | 105 | start = time.time() 106 | 107 | # plot sensitivity graph if current run requires simulation 108 | requires_simulation = simulation(readA, years) or simulation(readB, years) 109 | args = {'years': years, 'steps': int(params[0]['NumOfSteps']), 'simulations': int(params[0]['NumOfSimulation'])} 110 | 111 | summaryA = calculate_summary(deepcopy(readA), args) 112 | summaryB = calculate_summary(deepcopy(readB), args) 113 | write_summary(summaryA, summaryB, years) 114 | # plot graph 115 | plot_graph(years, summaryA['total_costs'], summaryB['total_costs'], 'Total Cost') 116 | plot_graph(years, summaryA['total_unit_costs'], summaryB['total_unit_costs'], 'Total Unit Cost') 117 | 118 | if requires_simulation: 119 | cost_diff_cols = [] 120 | for year in range(1, years + 1): 121 | cost_diff_cols.append(f'CostDiffYr{year}') 122 | total_unit_cost_diff = np.array(summaryB['total_unit_cost_arr']) - np.array(summaryA['total_unit_cost_arr']) 123 | df_data = np.transpose(find_x_mean(total_unit_cost_diff)) 124 | total_unit_cost_diff_df = pd.DataFrame( 125 | data=df_data, columns=cost_diff_cols) 126 | print() 127 | 128 | # REPS = 50, SIM = 10_000 129 | # CostDiffYr1 CostDiffYr2 CostDiffYr3 CostDiffYr4 CostDiffYr5 130 | # count 10000.00 10000.00 10000.00 10000.00 10000.00 131 | # mean 223.94 174.95 121.79 96.49 62.77 132 | # std 16.45 14.15 11.59 9.65 0.13 133 | # min 163.75 121.56 79.62 62.17 62.27 134 | # 5% 196.81 152.05 102.94 80.67 62.55 135 | # 50% 223.87 174.86 121.59 96.21 62.77 136 | # 95% 251.00 198.62 141.02 112.43 62.99 137 | # max 285.02 238.74 166.42 135.85 63.19 138 | 139 | # REPS = 100, SIM = 10_000 140 | # CostDiffYr1 CostDiffYr2 CostDiffYr3 CostDiffYr4 CostDiffYr5 141 | # count 10000.00 10000.00 10000.00 10000.00 10000.00 142 | # mean 224.04 174.62 121.97 96.59 62.77 143 | # std 11.78 10.17 8.21 6.89 0.10 144 | # min 175.97 134.99 88.50 72.59 62.41 145 | # 5% 204.86 158.13 108.55 85.33 62.61 146 | # 50% 224.02 174.49 121.88 96.44 62.77 147 | # 95% 243.83 191.60 135.49 108.09 62.92 148 | # max 277.98 214.83 153.97 124.18 63.15 149 | 150 | # REPS = 100, SIM = 15_000 151 | # CostDiffYr1 CostDiffYr2 CostDiffYr3 CostDiffYr4 CostDiffYr5 152 | # count 15000.00 15000.00 15000.00 15000.00 15000.00 153 | # mean 223.98 174.92 121.97 96.57 62.77 154 | # std 11.76 10.03 8.16 6.88 0.09 155 | # min 173.59 130.75 90.93 68.77 62.42 156 | # 5% 205.05 158.54 108.64 85.26 62.61 157 | # 50% 223.84 174.86 121.96 96.53 62.77 158 | # 95% 243.53 191.62 135.36 107.88 62.92 159 | # max 272.70 216.22 154.24 124.21 63.17 160 | 161 | # REPS = 100, SIM = 20_000 162 | # CostDiffYr1 CostDiffYr2 CostDiffYr3 CostDiffYr4 CostDiffYr5 163 | # count 20000.00 20000.00 20000.00 20000.00 20000.00 164 | # mean 224.01 174.71 121.93 96.47 62.76 165 | # std 11.85 10.07 8.15 6.82 0.10 166 | # min 177.41 131.97 90.36 69.49 62.41 167 | # 5% 204.79 158.12 108.71 85.38 62.61 168 | # 50% 223.85 174.76 121.83 96.39 62.76 169 | # 95% 243.84 191.19 135.56 107.87 62.92 170 | # max 276.14 217.07 154.26 121.66 63.19 171 | 172 | total_unit_cost_diff_df.describe(percentiles=[0.05, 0.5, 0.95]).round(2).to_csv("outputs/stochastic_analysis.csv") 173 | # print(total_unit_cost_diff_df.describe(percentiles=[0.05, 0.5, 0.95]).round(2)) 174 | plot_df(total_unit_cost_diff_df) 175 | 176 | # plot tornado chart 177 | # evaluate value for low for all years for a variable 178 | # [[{name: FD, low: 10, high: 40}, {name: Yield, low: 10, high: 40}], [{name: FD, low: 10, high: 40}], [{}] 179 | # FD as variable 180 | args['steps'] = 1 181 | args['simulations'] = 1 182 | tornado_input = create_tornado_input(deepcopy(readA), deepcopy(readB), summaryA, summaryB, years, ['ForecastDemand{year}', 'Asp{year}($)', 'WaferYield{year}', 'WaferPrice{year}($)', 'DefectDensity{year}(Defects/cm^2)'], args) 183 | plot_tornado(tornado_input) 184 | 185 | print() 186 | print(f'Time taken: {(time.time() - start)}sec') 187 | 188 | 189 | if __name__ == "__main__": 190 | print("cpu ", mp.cpu_count()) 191 | main() 192 | print('Completed the analysis') 193 | -------------------------------------------------------------------------------- /simulation/data_option1.csv: -------------------------------------------------------------------------------- 1 | SN,DeviceType,SiliconNode,DimensionX,DimensionY,SubstrateUnitPriceYr1($),SubstrateUnitPriceYr2($),SubstrateUnitPriceYr3($),SubstrateUnitPriceYr4($),SubstrateUnitPriceYr5($),WaferSize(mm),SawStreet(mm),WaferPriceAnnualDiscountFactor(%),WaferPriceYr1($),WaferPriceYr2($),WaferPriceYr3($),WaferPriceYr4($),WaferPriceYr5($),MaskSetCost,NRE($),AspYr1($),AspYr2($),AspYr3($),AspYr4($),AspYr5($),N,DefectDensityYr1(Defects/cm^2),DefectDensityYr2(Defects/cm^2),DefectDensityYr3(Defects/cm^2),DefectDensityYr4(Defects/cm^2),DefectDensityYr5(Defects/cm^2),Insrtn1,Sites1,Insrtn2,Sites2,ProberRate($/hr),ProbeCost($),YieldModel,RecBaseline,RecArea,RecSpares,WaferYieldYr1,WaferYieldYr2,WaferYieldYr3,WaferYieldYr4,WaferYieldYr5,ForecastUnitPriceYr1($),ForecastUnitPriceYr2($),ForecastUnitPriceYr3($),ForecastUnitPriceYr4($),ForecastUnitPriceYr5($),ForecastDemandYr1,ForecastDemandYr2,ForecastDemandYr3,ForecastDemandYr4,ForecastDemandYr5,AssemblySteps,AssyPerStepYield1,AssyPerStepYield2,AssyPerStepYield3,AssyPerStepYield4,AssyPerStepYield5,AssyPerStepYield6,AssyPerStepYield7,AssyYield1,AssyYield2,AssyYield3,AssyYield4,AssyYield5,AssyYield6,AssyYield7,AssemblySeq1,AssemblySeq2,AssemblySeq3,AssemblySeq4,AssemblySeq5,AssemblySeq6,AssemblySeq7,PackageAssemblyCostYr1($),PackageAssemblyCostYr2($),PackageAssemblyCostYr3($),PackageAssemblyCostYr4($),PackageAssemblyCostYr5($),FinalPackageTestCostYr1($),FinalPackageTestCostYr2($),FinalPackageTestCostYr3($),FinalPackageTestCostYr4($),FinalPackageTestCostYr5($),FinalPackageTestYieldYr1,FinalPackageTestYieldYr2,FinalPackageTestYieldYr3,FinalPackageTestYieldYr4,FinalPackageTestYieldYr5,SLTCostYr1($),SLTCostYr2($),SLTCostYr3($),SLTCostYr4($),SLTCostYr5($),SLTYieldYr1,SLTYieldYr2,SLTYieldYr3,SLTYieldYr4,SLTYieldYr5,QualityYr1,QualityYr2,QualityYr3,QualityYr4,QualityYr5,OperatingUnitCostYr1($),OperatingUnitCostYr2($),OperatingUnitCostYr3($),OperatingUnitCostYr4($),OperatingUnitCostYr5($),IpInterfaceCostYr1($),IpInterfaceCostYr2($),IpInterfaceCostYr3($),IpInterfaceCostYr4($),IpInterfaceCostYr5($),IpInterfaceCostAspYr1,IpInterfaceCostAspYr2,IpInterfaceCostAspYr3,IpInterfaceCostAspYr4,IpInterfaceCostAspYr5,WSa($/hr),WSh($/hr),WSci,WSdi,WSxi,WSri,FTa($/hr),FTh($/hr),FTxi,FTdi,FTri,FTci,SLTa($/hr),SLTh($/hr),SLTdi 2 | ,,,,,,,,,,,,,,,,,,,,800-1000,850-1000,800-1000,850-1000,900-1000,,,,,,,,,,,,,Bose Einstein,32,10,0,,,,,,,,,,,,,,,,7,0.99,0.99,0.99,0.99,0.99,0.99,0.95,,,,,,,0.95,,,,,,,,20,20,20,20,20,1.74,1.74,1.74,1.74,1.74,0.99,0.99,0.99,0.99,0.99,0.33,0.33,0.33,0.33,0.33,0.99,0.99,0.99,0.99,0.99,,,,,,,,,,,,,,,,,,,,,150,50,2,15,0.8,2,250,250,0.9,25,0,1,30,80,360 3 | 0,Substrate,,68.5,68.5,50,50,50,50,50,0,0,,,,,,,,50000,,,,,,10,,,,,,,,,,,,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,71.43,70.42,66.67,62.5,60.98,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,1000000,1000000,1000000,1000000,1000000,0.01,0.01,0.01,0.01,0.01,,,,,,,,,,,,,,, 4 | 1,Active,5,25.8,25.8,0,0,0,0,0,300,0.1,2,16888 -17088,16888 -17088,16888 -17088,16888 -17088,16888 -17088,1000000,2000000,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,30,1,0,1,200,1.666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,587.46,538.71,454.87,382.36,342.3,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,1500,1500,1500,1500,1500,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 5 | 2,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,300000,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 6 | 3,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 7 | 4,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 8 | 5,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 9 | 6,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 10 | 7,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 11 | 8,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 12 | 9,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 13 | 10,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 14 | 11,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 15 | 12,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 16 | 13,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 17 | 14,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 18 | 15,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 19 | 16,Active,0,0,0,0,0,0,0,0,300,0.1,0,16888 -17088,16888 -17088,16888 -17088,16888 -17088,16888 -17088,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 20 | 17,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 21 | 18,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 22 | 19,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 23 | 20,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 24 | 21,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 25 | 22,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 26 | 23,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 27 | 24,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 28 | 25,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 29 | 26,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 30 | 27,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 31 | 28,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 32 | 29,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 33 | 30,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 34 | 31,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 35 | 32,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 36 | 33,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 37 | 34,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 38 | 35,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 39 | 36,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, -------------------------------------------------------------------------------- /simulation/data_option2.csv: -------------------------------------------------------------------------------- 1 | SN,DeviceType,SiliconNode,DimensionX,DimensionY,WaferSize(mm),SawStreet(mm),SubstrateUnitPriceYr1($),SubstrateUnitPriceYr2($),SubstrateUnitPriceYr3($),SubstrateUnitPriceYr4($),SubstrateUnitPriceYr5($),WaferPriceAnnualDiscountFactor(%),WaferPriceYr1($),WaferPriceYr2($),WaferPriceYr3($),WaferPriceYr4($),WaferPriceYr5($),MaskSetCost,NRE($),AspYr1($),AspYr2($),AspYr3($),AspYr4($),AspYr5($),N,DefectDensityYr1(Defects/cm^2),DefectDensityYr2(Defects/cm^2),DefectDensityYr3(Defects/cm^2),DefectDensityYr4(Defects/cm^2),DefectDensityYr5(Defects/cm^2),Insrtn1,Sites1,Insrtn2,Sites2,ProberRate($/hr),ProbeCost($),YieldModel,RecBaseline,RecArea,RecSpares,WaferYieldYr1,WaferYieldYr2,WaferYieldYr3,WaferYieldYr4,WaferYieldYr5,ForecastUnitPriceYr1($),ForecastUnitPriceYr2($),ForecastUnitPriceYr3($),ForecastUnitPriceYr4($),ForecastUnitPriceYr5($),ForecastDemandYr1,ForecastDemandYr2,ForecastDemandYr3,ForecastDemandYr4,ForecastDemandYr5,AssemblySteps,AssyPerStepYield1,AssyPerStepYield2,AssyPerStepYield3,AssyPerStepYield4,AssyPerStepYield5,AssyPerStepYield6,AssyPerStepYield7,AssyYield1,AssyYield2,AssyYield3,AssyYield4,AssyYield5,AssyYield6,AssyYield7,AssemblySeq1,AssemblySeq2,AssemblySeq3,AssemblySeq4,AssemblySeq5,AssemblySeq6,AssemblySeq7,PackageAssemblyCostYr1($),PackageAssemblyCostYr2($),PackageAssemblyCostYr3($),PackageAssemblyCostYr4($),PackageAssemblyCostYr5($),FinalPackageTestCostYr1($),FinalPackageTestCostYr2($),FinalPackageTestCostYr3($),FinalPackageTestCostYr4($),FinalPackageTestCostYr5($),FinalPackageTestYieldYr1,FinalPackageTestYieldYr2,FinalPackageTestYieldYr3,FinalPackageTestYieldYr4,FinalPackageTestYieldYr5,SLTCostYr1($),SLTCostYr2($),SLTCostYr3($),SLTCostYr4($),SLTCostYr5($),SLTYieldYr1,SLTYieldYr2,SLTYieldYr3,SLTYieldYr4,SLTYieldYr5,QualityYr1,QualityYr2,QualityYr3,QualityYr4,QualityYr5,OperatingUnitCostYr1($),OperatingUnitCostYr2($),OperatingUnitCostYr3($),OperatingUnitCostYr4($),OperatingUnitCostYr5($),IpInterfaceCostYr1($),IpInterfaceCostYr2($),IpInterfaceCostYr3($),IpInterfaceCostYr4($),IpInterfaceCostYr5($),IpInterfaceCostAspYr1,IpInterfaceCostAspYr2,IpInterfaceCostAspYr3,IpInterfaceCostAspYr4,IpInterfaceCostAspYr5,WSa($/hr),WSh($/hr),WSci,WSdi,WSxi,WSri,FTa($/hr),FTh($/hr),FTxi,FTdi,FTri,FTci,SLTa($/hr),SLTh($/hr),SLTdi 2 | ,,,,,,,,,,,,,,,,,,,,800-1000,850-1000,800-1000,850-1000,900-1000,,,,,,,,,,,,,Bose Einstein,32,10,0,,,,,,,,,,,,,,,,7,0.99,0.99,0.99,0.99,0.98,0.99,0.95,,,,,,,0.95,,,,,,,,20,20,20,20,20,1.74,1.74,1.74,1.74,1.74,0.99,0.99,0.99,0.99,0.99,0.33,0.33,0.33,0.33,0.33,0.99,0.99,0.99,0.99,0.99,,,,,,,,,,,,,,,,,,,,,150,50,2,15,0.8,2,250,250,0.9,25,0,1,30,80,360 3 | 0,Substrate,0,68.5,68.5,0,0,50,50,50,50,50,0,0,0,0,0,0,,50000,,,,,,0,0,0,0,0,0,,,,,,,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,71.43,70.42,66.67,62.5,60.98,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,1000000,1000000,1000000,1000000,1000000,0.01,0.01,0.01,0.01,0.01,,,,,,,,,,,,,,, 4 | 1,Active,5,14.5,25.8,300,0.1,0,0,0,0,0,2,16888 -17088,,,,,1000000,2000000,,,,,,2,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,30,1,0,1,200,1.666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,219.46,202.25,180.96,163.17,149.49,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,1500,1500,1500,1500,1500,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 5 | 2,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,300000,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 6 | 3,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 7 | 4,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 8 | 5,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 9 | 6,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 10 | 7,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 11 | 8,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 12 | 9,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 13 | 10,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 14 | 11,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 15 | 12,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 16 | 13,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 17 | 14,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 18 | 15,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 19 | 16,Active,5,14.5,25.8,300,0.1,0,0,0,0,0,2,16888 -17088,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,30,1,0,1,200,1.666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,567.93,491.32,381.09,303.35,250.38,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 20 | 17,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 21 | 18,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 22 | 19,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 23 | 20,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 24 | 21,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 25 | 22,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 26 | 23,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 27 | 24,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 28 | 25,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 29 | 26,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 30 | 27,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 31 | 28,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 32 | 29,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 33 | 30,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 34 | 31,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 35 | 32,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 36 | 33,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 37 | 34,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 38 | 35,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 39 | 36,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, -------------------------------------------------------------------------------- /simulation/inputs/data_option1.csv: -------------------------------------------------------------------------------- 1 | SN,DeviceType,SiliconNode,DimensionX,DimensionY,SubstrateUnitPriceYr1($),SubstrateUnitPriceYr2($),SubstrateUnitPriceYr3($),SubstrateUnitPriceYr4($),SubstrateUnitPriceYr5($),WaferSize(mm),SawStreet(mm),WaferPriceAnnualDiscountFactor(%),WaferPriceYr1($),WaferPriceYr2($),WaferPriceYr3($),WaferPriceYr4($),WaferPriceYr5($),MaskSetCost,NRE($),AspYr1($),AspYr2($),AspYr3($),AspYr4($),AspYr5($),N,DefectDensityYr1(Defects/cm^2),DefectDensityYr2(Defects/cm^2),DefectDensityYr3(Defects/cm^2),DefectDensityYr4(Defects/cm^2),DefectDensityYr5(Defects/cm^2),Insrtn1,Sites1,Insrtn2,Sites2,ProberRate($/hr),ProbeCost($),YieldModel,RecBaseline,RecArea,RecSpares,WaferYieldYr1,WaferYieldYr2,WaferYieldYr3,WaferYieldYr4,WaferYieldYr5,ForecastUnitPriceYr1($),ForecastUnitPriceYr2($),ForecastUnitPriceYr3($),ForecastUnitPriceYr4($),ForecastUnitPriceYr5($),ForecastDemandYr1,ForecastDemandYr2,ForecastDemandYr3,ForecastDemandYr4,ForecastDemandYr5,AssemblySteps,AssyPerStepYield1,AssyPerStepYield2,AssyPerStepYield3,AssyPerStepYield4,AssyPerStepYield5,AssyPerStepYield6,AssyPerStepYield7,AssyYield1,AssyYield2,AssyYield3,AssyYield4,AssyYield5,AssyYield6,AssyYield7,AssemblySeq1,AssemblySeq2,AssemblySeq3,AssemblySeq4,AssemblySeq5,AssemblySeq6,AssemblySeq7,PackageAssemblyCostYr1($),PackageAssemblyCostYr2($),PackageAssemblyCostYr3($),PackageAssemblyCostYr4($),PackageAssemblyCostYr5($),FinalPackageTestCostYr1($),FinalPackageTestCostYr2($),FinalPackageTestCostYr3($),FinalPackageTestCostYr4($),FinalPackageTestCostYr5($),FinalPackageTestYieldYr1,FinalPackageTestYieldYr2,FinalPackageTestYieldYr3,FinalPackageTestYieldYr4,FinalPackageTestYieldYr5,SLTCostYr1($),SLTCostYr2($),SLTCostYr3($),SLTCostYr4($),SLTCostYr5($),SLTYieldYr1,SLTYieldYr2,SLTYieldYr3,SLTYieldYr4,SLTYieldYr5,QualityYr1,QualityYr2,QualityYr3,QualityYr4,QualityYr5,OperatingUnitCostYr1($),OperatingUnitCostYr2($),OperatingUnitCostYr3($),OperatingUnitCostYr4($),OperatingUnitCostYr5($),IpInterfaceCostYr1($),IpInterfaceCostYr2($),IpInterfaceCostYr3($),IpInterfaceCostYr4($),IpInterfaceCostYr5($),IpInterfaceCostAspYr1,IpInterfaceCostAspYr2,IpInterfaceCostAspYr3,IpInterfaceCostAspYr4,IpInterfaceCostAspYr5,WSa($/hr),WSh($/hr),WSci,WSdi,WSxi,WSri,FTa($/hr),FTh($/hr),FTxi,FTdi,FTri,FTci,SLTa($/hr),SLTh($/hr),SLTdi 2 | ,,,,,,,,,,,,,,,,,,,,800-1000,850-1000,800-1000,850-1000,900-1000,,,,,,,,,,,,,Bose Einstein,32,10,0,,,,,,,,,,,,,,,,7,0.99,0.99,0.99,0.99,0.99,0.99,0.95,,,,,,,0.95,,,,,,,,20,20,20,20,20,1.74,1.74,1.74,1.74,1.74,0.99,0.99,0.99,0.99,0.99,0.33,0.33,0.33,0.33,0.33,0.99,0.99,0.99,0.99,0.99,,,,,,,,,,,,,,,,,,,,,150,50,2,15,0.8,2,250,250,0.9,25,0,1,30,80,360 3 | 0,Substrate,,68.5,68.5,50,50,50,50,50,0,0,,,,,,,,50000,,,,,,10,,,,,,,,,,,,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,71.43,70.42,66.67,62.5,60.98,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,1000000,1000000,1000000,1000000,1000000,0.01,0.01,0.01,0.01,0.01,,,,,,,,,,,,,,, 4 | 1,Active,5,25.8,25.8,0,0,0,0,0,300,0.1,2,16888 -17088,16888 -17088,16888 -17088,16888 -17088,16888 -17088,1000000,2000000,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,30,1,0,1,200,1.666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,587.46,538.71,454.87,382.36,342.3,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,1500,1500,1500,1500,1500,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 5 | 2,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,300000,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 6 | 3,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 7 | 4,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 8 | 5,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 9 | 6,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 10 | 7,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 11 | 8,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 12 | 9,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 13 | 10,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 14 | 11,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 15 | 12,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 16 | 13,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 17 | 14,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 18 | 15,Active,16,6.7,5,0,0,0,0,0,300,0.1,1,3974-3994,3974-3994,3974-3994,3974-3994,3974-3994,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.84,2.81,2.79,2.77,2.75,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 19 | 16,Active,0,0,0,0,0,0,0,0,300,0.1,0,16888 -17088,16888 -17088,16888 -17088,16888 -17088,16888 -17088,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 20 | 17,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 21 | 18,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 22 | 19,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 23 | 20,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 24 | 21,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 25 | 22,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 26 | 23,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 27 | 24,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 28 | 25,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 29 | 26,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 30 | 27,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 31 | 28,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 32 | 29,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 33 | 30,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 34 | 31,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 35 | 32,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 36 | 33,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 37 | 34,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 38 | 35,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 39 | 36,Active,0,0,0,0,0,0,0,0,300,0.1,0,0,0,0,0,0,,,,,,,,10,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, -------------------------------------------------------------------------------- /simulation/inputs/data_option2.csv: -------------------------------------------------------------------------------- 1 | SN,DeviceType,SiliconNode,DimensionX,DimensionY,WaferSize(mm),SawStreet(mm),SubstrateUnitPriceYr1($),SubstrateUnitPriceYr2($),SubstrateUnitPriceYr3($),SubstrateUnitPriceYr4($),SubstrateUnitPriceYr5($),WaferPriceAnnualDiscountFactor(%),WaferPriceYr1($),WaferPriceYr2($),WaferPriceYr3($),WaferPriceYr4($),WaferPriceYr5($),MaskSetCost,NRE($),AspYr1($),AspYr2($),AspYr3($),AspYr4($),AspYr5($),N,DefectDensityYr1(Defects/cm^2),DefectDensityYr2(Defects/cm^2),DefectDensityYr3(Defects/cm^2),DefectDensityYr4(Defects/cm^2),DefectDensityYr5(Defects/cm^2),Insrtn1,Sites1,Insrtn2,Sites2,ProberRate($/hr),ProbeCost($),YieldModel,RecBaseline,RecArea,RecSpares,WaferYieldYr1,WaferYieldYr2,WaferYieldYr3,WaferYieldYr4,WaferYieldYr5,ForecastUnitPriceYr1($),ForecastUnitPriceYr2($),ForecastUnitPriceYr3($),ForecastUnitPriceYr4($),ForecastUnitPriceYr5($),ForecastDemandYr1,ForecastDemandYr2,ForecastDemandYr3,ForecastDemandYr4,ForecastDemandYr5,AssemblySteps,AssyPerStepYield1,AssyPerStepYield2,AssyPerStepYield3,AssyPerStepYield4,AssyPerStepYield5,AssyPerStepYield6,AssyPerStepYield7,AssyYield1,AssyYield2,AssyYield3,AssyYield4,AssyYield5,AssyYield6,AssyYield7,AssemblySeq1,AssemblySeq2,AssemblySeq3,AssemblySeq4,AssemblySeq5,AssemblySeq6,AssemblySeq7,PackageAssemblyCostYr1($),PackageAssemblyCostYr2($),PackageAssemblyCostYr3($),PackageAssemblyCostYr4($),PackageAssemblyCostYr5($),FinalPackageTestCostYr1($),FinalPackageTestCostYr2($),FinalPackageTestCostYr3($),FinalPackageTestCostYr4($),FinalPackageTestCostYr5($),FinalPackageTestYieldYr1,FinalPackageTestYieldYr2,FinalPackageTestYieldYr3,FinalPackageTestYieldYr4,FinalPackageTestYieldYr5,SLTCostYr1($),SLTCostYr2($),SLTCostYr3($),SLTCostYr4($),SLTCostYr5($),SLTYieldYr1,SLTYieldYr2,SLTYieldYr3,SLTYieldYr4,SLTYieldYr5,QualityYr1,QualityYr2,QualityYr3,QualityYr4,QualityYr5,OperatingUnitCostYr1($),OperatingUnitCostYr2($),OperatingUnitCostYr3($),OperatingUnitCostYr4($),OperatingUnitCostYr5($),IpInterfaceCostYr1($),IpInterfaceCostYr2($),IpInterfaceCostYr3($),IpInterfaceCostYr4($),IpInterfaceCostYr5($),IpInterfaceCostAspYr1,IpInterfaceCostAspYr2,IpInterfaceCostAspYr3,IpInterfaceCostAspYr4,IpInterfaceCostAspYr5,WSa($/hr),WSh($/hr),WSci,WSdi,WSxi,WSri,FTa($/hr),FTh($/hr),FTxi,FTdi,FTri,FTci,SLTa($/hr),SLTh($/hr),SLTdi 2 | ,,,,,,,,,,,,,,,,,,,,800-1000,850-1000,800-1000,850-1000,900-1000,,,,,,,,,,,,,Bose Einstein,32,10,0,,,,,,,,,,,,,,,,7,0.99,0.99,0.99,0.99,0.98,0.99,0.95,,,,,,,0.95,,,,,,,,20,20,20,20,20,1.74,1.74,1.74,1.74,1.74,0.99,0.99,0.99,0.99,0.99,0.33,0.33,0.33,0.33,0.33,0.99,0.99,0.99,0.99,0.99,,,,,,,,,,,,,,,,,,,,,150,50,2,15,0.8,2,250,250,0.9,25,0,1,30,80,360 3 | 0,Substrate,0,68.5,68.5,0,0,50,50,50,50,50,0,0,0,0,0,0,,50000,,,,,,0,0,0,0,0,0,,,,,,,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,71.43,70.42,66.67,62.5,60.98,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,100,100,100,100,100,0,0,0,0,0,1000000,1000000,1000000,1000000,1000000,0.01,0.01,0.01,0.01,0.01,,,,,,,,,,,,,,, 4 | 1,Active,5,14.5,25.8,300,0.1,0,0,0,0,0,2,16888 -17088,,,,,1000000,2000000,,,,,,2,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,30,1,0,1,200,1.666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,219.46,202.25,180.96,163.17,149.49,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,1500,1500,1500,1500,1500,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 5 | 2,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,300000,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 6 | 3,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 7 | 4,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 8 | 5,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 9 | 6,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 10 | 7,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 11 | 8,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 12 | 9,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 13 | 10,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 14 | 11,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 15 | 12,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 16 | 13,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 17 | 14,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 18 | 15,Active,16,6.7,5,300,0.1,0,0,0,0,0,1,3974-3994,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,12,1,0,1,200,0.6666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,2.97,2.95,2.92,2.9,2.88,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0.1,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 19 | 16,Active,5,14.5,25.8,300,0.1,0,0,0,0,0,2,16888 -17088,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,30,1,0,1,200,1.666666667,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,567.93,491.32,381.09,303.35,250.38,90000 -110000,140000-160000,240000-260000,900000-1100000,900000-1100000,,,,,,,,,,,,,,,,0,0,0,0,0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,50,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 20 | 17,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 21 | 18,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 22 | 19,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 23 | 20,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 24 | 21,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 25 | 22,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 26 | 23,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 27 | 24,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 28 | 25,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 29 | 26,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 30 | 27,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 31 | 28,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 32 | 29,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 33 | 30,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 34 | 31,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 35 | 32,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 36 | 33,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 37 | 34,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,,,,,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 38 | 35,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, 39 | 36,Active,0,0,0,300,0.1,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,5,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,0.05-0.1,,,,,,0,,,,,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0.1-0.99,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,, -------------------------------------------------------------------------------- /simulation/inputs/input_template.csv: -------------------------------------------------------------------------------- 1 | SN,DeviceType,SiliconNode,DimensionX,DimensionY,WaferSize(mm),SawStreet(mm),SubstrateUnitPriceYr1($),WaferPriceAnnualDiscountFactor(%),WaferPriceYr1($),MaskSetCost,NRE($),AspYr1($),N,DefectDensityYr1(Defects/cm^2),Insrtn1,Sites1,Insrtn2,Sites2,ProberRate($/hr),ProbeCost($),YieldModel,RecBaseline,RecArea,RecSpares,WaferYieldYr1,ForecastUnitPriceYr1($),ForecastDemandYr1,AssemblySteps,AssyPerStepYield1,AssyYield1,AssemblySeq1,PackageAssemblyCostYr1($),FinalPackageTestCostYr1($),FinalPackageTestYieldYr1,SLTCostYr1($),SLTYieldYr1,QualityYr1,OperatingUnitCostYr1($),IpInterfaceCostYr1($),IpInterfaceCostAspYr1,WSa($/hr),WSh($/hr),WSci,WSdi,WSxi,WSri,FTa($/hr),FTh($/hr),FTxi,FTdi,FTri,FTci,SLTa($/hr),SLTh($/hr),SLTdi 2 | ,,,,,,,,,,,,800-1000,,,,,,,,,Bose Einstein,32,10,0,,,,1,0.99,,,20,1.74,0.99,0.33,0.99,,,,,150,50,2,15,0.8,2,250,250,0.9,25,0,1,30,80,360 3 | 0,Substrate,0,68.5,68.5,0,0,50,0,0,,50000,,0,0,,,,,,,,,,,0.7,71.43,90000 -110000,,,,0,,,,,,100,0,1000000,0.01,,,,,,,,,,,,,,, 4 | 1,Active,5,14.5,25.8,300,0.1,0,2,16888 -17088,1000000,2000000,,2,0.1,30,1,0,1,200,1.666666667,,,,,0.5265,219.46,90000 -110000,,,,0,,,,,,1500,1,0,0,,,,,,,,,,,,,,, -------------------------------------------------------------------------------- /simulation/inputs/params.csv: -------------------------------------------------------------------------------- 1 | NumOfYears,NumOfSteps,NumOfSimulation 2 | 5,10,5000 -------------------------------------------------------------------------------- /simulation/outputs/CostDiffYr1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/simulation/outputs/CostDiffYr1.png -------------------------------------------------------------------------------- /simulation/outputs/CostDiffYr2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/simulation/outputs/CostDiffYr2.png -------------------------------------------------------------------------------- /simulation/outputs/CostDiffYr3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/simulation/outputs/CostDiffYr3.png -------------------------------------------------------------------------------- /simulation/outputs/CostDiffYr4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/simulation/outputs/CostDiffYr4.png -------------------------------------------------------------------------------- /simulation/outputs/CostDiffYr5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/simulation/outputs/CostDiffYr5.png -------------------------------------------------------------------------------- /simulation/outputs/cost_diff_summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/simulation/outputs/cost_diff_summary.png -------------------------------------------------------------------------------- /simulation/outputs/stochastic_analysis.csv: -------------------------------------------------------------------------------- 1 | ,CostDiffYr1,CostDiffYr2,CostDiffYr3,CostDiffYr4,CostDiffYr5 2 | count,5000.0,5000.0,5000.0,5000.0,5000.0 3 | mean,219.37,169.01,117.55,92.1,64.0 4 | std,48.64,42.2,34.9,29.71,26.15 5 | min,33.49,31.45,-4.32,-15.47,-44.02 6 | 5%,140.02,99.51,61.7,43.49,20.78 7 | 50%,219.36,168.57,117.75,92.18,63.73 8 | 95%,300.93,239.0,175.2,141.96,106.59 9 | max,417.17,324.18,256.97,214.44,155.54 10 | -------------------------------------------------------------------------------- /simulation/outputs/summary_output.csv: -------------------------------------------------------------------------------- 1 | CostCategory,ChipletYr1,ChipletYr2,ChipletYr3,ChipletYr4,ChipletYr5,2SocChipsYr1,2SocChipsYr2,2SocChipsYr3,2SocChipsYr4,2SocChipsYr5 2 | Material($),69851457.00763008,97241025.195408,140061662.97269857,483766535.43803245,441794380.3534745,90069705.30638042,120782922.07567884,167431629.67775935,569788174.7873365,501354377.3702044 3 | Mask Set($),1000000.0,0.0,0.0,0.0,0.0,1000000.0,0.0,0.0,0.0,0.0 4 | NRE($),2350000.0,0,0,0,0,2350000.0,0,0,0,0 5 | KGD($),3492572.850381508,4862051.259770404,7003083.148634935,24188326.77190164,22089719.01767375,4503485.265319025,6039146.103783947,8371581.483887974,28489408.73936685,25067718.868510243 6 | Quality($),89002.38442993705,122522.40539907225,172590.1046589884,581995.1738206898,521531.6847017044,36683.465744671645,50578.86866059205,74858.833057545,268029.64393456717,244911.2601195364 7 | Operating Cost($),239991.6627519847,359920.184711563,599816.1447641004,2400595.919386198,2400178.22893664,240009.06902486278,360074.7487145625,600228.8100231657,2399161.8980297386,2400030.0182971084 8 | IP Interface Cost($),1900958.4264864621,2387680.6823180527,3249306.372364422,10245559.615861792,10494841.429455213,1898944.4341364242,2388184.4642705387,3253556.0339822685,10250863.479414498,10496899.520010114 9 | "Misc Cost (Assy, Test)($)",2001665.2083940643,2999148.129469234,5001644.441781608,19981423.78958082,19990757.869681336,1998990.6840803074,2999510.3757461826,5004275.909879476,20004062.886388518,19993924.326548036 10 | Total($),89607368.10364565,120678054.08857012,175880569.62021402,614476400.1264926,568248343.9988719,111172139.80150154,145795907.46398404,205082206.10520023,706295650.5429541,631709887.3427502 11 | Material(%),0.7795280509392418,0.8057888066710057,0.7963452885963432,0.7872825308481286,0.7774670793485877,0.8101823484480947,0.8284383572667555,0.8164122712424529,0.8067275713071721,0.7936465574080557 12 | Mask Set(%),0.011159796578818559,0.0,0.0,0.0,0.0,0.008995059389749135,0.0,0.0,0.0,0.0 13 | NRE(%),0.026225521960223614,0.0,0.0,0.0,0.0,0.02113838956591047,0.0,0.0,0.0,0.0 14 | KGD(%),0.038976402546962136,0.040289440333550315,0.0398172644298172,0.03936412654240646,0.03887335396742943,0.040509117422404775,0.041421917863337814,0.04082061356212267,0.04033637856535864,0.03968232787040282 15 | Quality(%),0.0009932485052679056,0.001015283237075968,0.0009812914810980494,0.0009471399938238207,0.0009177883054292539,0.0003299699529951494,0.00034691555847057333,0.0003650186648525955,0.0003794864710387547,0.0003876957841355641 16 | Operating Cost(%),0.002678258136924576,0.002982482502140813,0.003410360485295832,0.0039067341217531295,0.004223819135214945,0.0021588958299570402,0.0024697178060605835,0.0029267717634911174,0.0033968238317557517,0.00379925986023852 17 | IP Interface Cost($)(%),0.02121430934437993,0.019785541790105804,0.018474504485519804,0.016673642167140512,0.018468758493163418,0.0170811179628907,0.016380325797968588,0.015864643236348376,0.014513558835502247,0.016616645916632228 18 | "Misc Cost (Assy, Test)(%)",0.022338176544576215,0.024852473402231425,0.0284377316526883,0.032517805053973683,0.03517961483002759,0.017981039922857617,0.02057335098028833,0.024401316939766347,0.02832250612192033,0.03165048502034895 19 | Material Total Unit Cost($),703.5977756697055,653.7142502539739,564.459956207986,487.91396783144137,445.3151451918139,908.9924413884487,812.1054712505397,674.6491957196598,574.2654772419055,505.37715474536634 20 | NRE Total Unit Cost($),23.67101337117701,0.0,0.0,0.0,0.0,23.71643417724754,0.0,0.0,0.0,0.0 21 | KGD Total Unit Cost($),35.17988878348531,32.685712512698714,28.222997810399328,24.395698391572086,22.265757259590718,45.44962206942248,40.605273562527024,33.73245978598302,28.713273862095303,25.26885773726834 22 | Quality Total Unit Cost($),0.8965006944287984,0.8236713076997695,0.6955522364227097,0.5869847410186896,0.5256878951453695,0.37021319179864676,0.34007602451605456,0.3016362655729057,0.2701357771184182,0.24687638403308265 23 | Operating Total Unit Cost($),2.4173812161588226,2.4196058528504905,2.4173081171568205,2.421176733787782,2.419305821975344,2.422195441476859,2.421026652319597,2.4185626378316716,2.4180141205402643,2.419287427612966 24 | IP Interface Total Unit Cost($),19.147920141026663,16.051464738785487,13.094970413200528,10.333396956245315,10.578477325093383,19.16433645891365,16.057383249715052,13.109882319006992,10.331413091092495,10.581124754304348 25 | Misc Total Unit Cost($),20.162316558517325,20.162126704410486,20.15703614147634,20.15272874397644,20.150068989354285,20.17401318294538,20.167741807819205,20.16423494328517,20.161251546711295,20.154351980223726 26 | Gross Margin($),-2.4276058863101753,114.11372862111239,190.63263105392957,305.73808130467444,377.1056052260109,-221.79336223043606,-54.89856254266101,73.08723992001251,213.63691056712253,313.10384198342797 27 | Gross Margin(%),-0.0026968396071198296,0.12331471190364661,0.2119445663660253,0.33035532890249697,0.3970023900262592,-0.24639136329021522,-0.059325030438275195,0.08125808937376776,0.23083840768198102,0.32962377612851057 28 | Cost Difference(Option2 - Option1),219.3657563441261,169.01229116377334,117.54539113391712,92.1011707375519,64.00176324258285,,,,, 29 | -------------------------------------------------------------------------------- /simulation/outputs/tornado.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/simulation/outputs/tornado.png -------------------------------------------------------------------------------- /simulation/outputs/tornado_yr1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/simulation/outputs/tornado_yr1.png -------------------------------------------------------------------------------- /simulation/outputs/tornado_yr2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/simulation/outputs/tornado_yr2.png -------------------------------------------------------------------------------- /simulation/outputs/tornado_yr3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/simulation/outputs/tornado_yr3.png -------------------------------------------------------------------------------- /simulation/outputs/tornado_yr4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/simulation/outputs/tornado_yr4.png -------------------------------------------------------------------------------- /simulation/outputs/tornado_yr5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/simulation/outputs/tornado_yr5.png -------------------------------------------------------------------------------- /simulation/outputs/total_cost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/simulation/outputs/total_cost.png -------------------------------------------------------------------------------- /simulation/outputs/total_unit_cost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/simulation/outputs/total_unit_cost.png -------------------------------------------------------------------------------- /simulation/params.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2022 Google LLC 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | https://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | """ 16 | 17 | 18 | # Simulation parameters 19 | # In case if Monte Carlo analysis is required, then 20 | # specify the values in input data options csv as 'NumOfSteps' and 'NumOfSimulations' 21 | 22 | class Params(object): 23 | def __init__(self, steps, simulations): 24 | self.num_of_steps = steps 25 | self.num_of_simulations = simulations 26 | 27 | def __str__(self): 28 | return f"steps: {self.num_of_steps}, simulations: {self.num_of_simulations}" -------------------------------------------------------------------------------- /simulation/plotter.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2022 Google LLC 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | https://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | """ 16 | 17 | 18 | from turtle import width 19 | import numpy as np 20 | import plotly.graph_objects as go 21 | import locale 22 | 23 | from matplotlib import pyplot as plt 24 | 25 | locale.setlocale(locale.LC_ALL, '') 26 | 27 | def plot_graph(years, costsA, costsB, title): 28 | x = np.arange(1, years + 1) 29 | plt.title(title) 30 | plt.xlabel('Year') 31 | plt.ylabel('Cost($)') 32 | plt.plot(x, costsA, color='r', label='Option 1 (Chiplet)') 33 | plt.plot(x, costsB, color='g', label='Option 2 (2 SOC Chips)') 34 | plt.legend() 35 | plt.savefig(f'outputs/{title.lower().replace(" ", "_")}.png') 36 | plt.clf() 37 | 38 | 39 | def plot_df(df, suffix=''): 40 | 41 | for col in df.columns: 42 | file_name = f'{col}_{suffix}.png' if suffix else f'{col}.png' 43 | plt.figure() 44 | plt.ylabel('Frequency') 45 | plt.xlabel('Unit Cost Diff (Option2 - Option1)') 46 | plt.hist(df[col], bins=25, histtype='stepfilled') 47 | plt.savefig(f'outputs/{file_name}') 48 | plt.clf() 49 | 50 | # plot cost diff for all years in a single diagram 51 | col = len(df.columns) 52 | axarr = df.hist(bins=25, figsize=(5, col * 5), layout=(col, 1)) 53 | for ax in axarr.flatten(): 54 | ax.set_ylabel('Frequency') 55 | ax.set_xlabel('Unit Cost Diff (Option2 - Option1)') 56 | plt.savefig(f'outputs/cost_diff_summary.png') 57 | plt.clf() 58 | 59 | """ 60 | The input param `values` should in format: 61 | [ 62 | [ 63 | { 64 | 'name': 'variable name1', 65 | 'high': high_val1, 66 | 'low': low_val1 67 | }, 68 | { 69 | 'name': 'variable name2', 70 | 'high': high_val2, 71 | 'low': low_val2 72 | } 73 | ] 74 | ] 75 | """ 76 | def plot_tornado(values): 77 | def cost_diff(val): 78 | return abs(val['high'] - val['low']) 79 | 80 | for year in range(1, len(values) + 1): 81 | value_yr = values[year - 1] 82 | value_yr.sort(reverse = False, key=cost_diff) 83 | arr_len = len(value_yr) 84 | start = max(0, arr_len - 6) # to take max 6 inputs 85 | trimmed_values = value_yr[start:arr_len] 86 | cols = list(map(lambda val: val['name'].replace('{year}', f'Yr{year}'), trimmed_values)) 87 | highs = list(map(lambda val: val['high'], trimmed_values)) 88 | lows = list(map(lambda val: val['low'], trimmed_values)) 89 | plot_tornado_chart(cols, highs, lows, year) 90 | 91 | 92 | def plot_tornado_chart(cols, highs, lows, year): 93 | n = len(highs) 94 | 95 | def find_baseline(): 96 | avg_sum = 0 97 | 98 | for i in range(0, n): 99 | avg_sum += (highs[i] + lows[i]) / 2 100 | 101 | return avg_sum / n 102 | 103 | baseline = find_baseline() # (highs[n - 1] + lows[n - 1])/2 104 | 105 | def move(lst): 106 | return [i - baseline for i in lst] 107 | 108 | moved_highs = move(highs) 109 | moved_lows = move(lows) 110 | 111 | def format(lst): 112 | return [locale.currency(i, grouping=True) for i in lst] 113 | 114 | text_highs = format(highs) 115 | text_lows = format(lows) 116 | 117 | fig = go.Figure() 118 | fig.add_trace(go.Bar(y=cols, x=moved_highs, 119 | base=baseline, # take average value of low and high 120 | marker_color='darkblue', 121 | name='InputHigh', 122 | marker_line_color='darkblue', 123 | orientation='h', 124 | marker_line_width=1.5, 125 | opacity=0.7, 126 | text=text_highs, 127 | textposition='auto' 128 | )) 129 | fig.add_trace(go.Bar(y=cols, x=moved_lows, 130 | base=baseline, 131 | marker_color='darkred', 132 | name='InputLow', 133 | marker_line_color='darkred', 134 | orientation='h', 135 | marker_line_width=1.5, 136 | opacity=0.7, 137 | text=text_lows, 138 | textposition='auto' 139 | )) 140 | fig.update_layout( 141 | height=500, 142 | width=1000, 143 | margin=dict(t=50, l=10, b=10, r=10), 144 | title_text=f"Cost Difference ($)/ Yr{year}", 145 | title_font_family="sans-serif", 146 | title_font_size=25, 147 | title_font_color="darkblue", 148 | title_x=0.5 # to adjust the position along x-axis of the title 149 | ) 150 | fig.update_layout(barmode='overlay', 151 | xaxis_tickangle=baseline, 152 | legend=dict( 153 | x=0.80, 154 | y=0.01, 155 | bgcolor='rgba(255, 255, 255, 0)', 156 | bordercolor='rgba(255, 255, 255, 0)' 157 | ), 158 | yaxis=dict( 159 | titlefont_size=16, 160 | tickfont_size=14 161 | ), 162 | bargap=0.20) 163 | fig.write_image(file=f'outputs/tornado_yr{year}.png', format='png') 164 | -------------------------------------------------------------------------------- /simulation/preprocessor.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2022 Google LLC 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | https://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | """ 16 | 17 | import math 18 | from operator import mod 19 | from scipy.special import comb 20 | 21 | import numpy as np 22 | from params import Params 23 | 24 | # Yield model names 25 | MURPHY_MODEL = 'Murphy' 26 | BOSE_EINSTEIN_MODEL = 'Bose Einstein' 27 | 28 | # Device Type 29 | DEVICE_TYPE_SUBSTRATE = 'Substrate' 30 | 31 | params = Params(1, 1) 32 | 33 | def validate(reads, template, years): 34 | input_headers = set(reads[0].keys()) 35 | template_headers = set(template[0].keys()) 36 | 37 | missing_columns = template_headers - input_headers 38 | if len(missing_columns) > 0: 39 | raise Exception(f"Following columns are missing, please use the template file inside input folder: {missing_columns}") 40 | 41 | assembly_steps = int(reads[0]['AssemblySteps']) 42 | for assembly_step in range(1, assembly_steps + 1): 43 | validate_col(input_headers, f'AssyPerStepYield{assembly_step}') 44 | validate_col(input_headers, f'AssyYield{assembly_step}') 45 | validate_col(input_headers, f'AssemblySeq{assembly_step}') 46 | 47 | for year in range(1, years + 1): 48 | validate_col(input_headers, f'SubstrateUnitPriceYr{year}($)') 49 | validate_col(input_headers, f'SubstrateUnitPriceYr{year}($)') 50 | validate_col(input_headers, f'DefectDensityYr{year}(Defects/cm^2)') 51 | validate_col(input_headers, f'WaferYieldYr{year}') 52 | validate_col(input_headers, f'ForecastUnitPriceYr{year}($)') 53 | validate_col(input_headers, f'ForecastDemandYr{year}') 54 | validate_col(input_headers, f'PackageAssemblyCostYr{year}($)') 55 | validate_col(input_headers, f'FinalPackageTestCostYr{year}($)') 56 | validate_col(input_headers, f'FinalPackageTestYieldYr{year}') 57 | validate_col(input_headers, f'SLTCostYr{year}($)') 58 | validate_col(input_headers, f'SLTYieldYr{year}') 59 | validate_col(input_headers, f'QualityYr{year}') 60 | validate_col(input_headers, f'OperatingUnitCostYr{year}($)') 61 | validate_col(input_headers, f'IpInterfaceCostYr{year}($)') 62 | validate_col(input_headers, f'IpInterfaceCostYr{year}($)') 63 | validate_col(input_headers, f'IpInterfaceCostAspYr{year}') 64 | 65 | 66 | def validate_col(columns, column): 67 | if column not in columns: 68 | raise Exception(f"Following columns are missing, please use the template file inside input folder: {column}") 69 | 70 | 71 | def cleanse(reads, args): 72 | input = [] 73 | # Update the params values 74 | params.num_of_steps = args['steps'] 75 | params.num_of_simulations = args['simulations'] 76 | 77 | years = args['years'] 78 | for row in reads: 79 | # Calculations not required for metadata row 80 | if meta_data_row(row): 81 | for year in range(1, years + 1): 82 | row[f'AspYr{year}($)'] = get_asp(row, year) 83 | input.append(row) 84 | continue 85 | 86 | row['EffA'] = calculate_effective_area(input, row) 87 | 88 | # GDPW 89 | row['GDPW'] = calculate_gdpw(row) 90 | 91 | row['ProbeCost($)'] = float( 92 | row['ProbeCost($)']) if row['ProbeCost($)'] else calculate_probe_cost(row) 93 | 94 | for year in range(1, years + 1): 95 | # Wafer price 96 | row[f'WaferPriceYr{year}($)'] = calculate_wafer_price(row, year) 97 | # Wafer Yield 98 | row[f'WaferYieldYr{year}'] = calculate_wafer_yield(row, input[0], year) 99 | 100 | # Forecast Unit Price ($) per die 101 | row[f'ForecastUnitPriceYr{year}($)'] = calculate_forcast_unit_price(row, year) 102 | 103 | row[f'ForecastDemandYr{year}'] = calculate_forcast_demand(row, year) 104 | # total operating cost 105 | forecast_demand = row[f'ForecastDemandYr{year}'] 106 | op_unit_cost = float(row[f'OperatingUnitCostYr{year}($)']) 107 | row[f'OpCostYr{year}'] = forecast_demand * op_unit_cost 108 | 109 | # Total IP Interface Cost 110 | # Total_Ip_Cost = IP_Cost + (IP_Pct_per_ASP * ASP) / 100 * FD 111 | ip_cost = float(row[f'IpInterfaceCostYr{year}($)']) 112 | ip_cost_per_asp = float(row[f'IpInterfaceCostAspYr{year}']) 113 | asps = input[0][f'AspYr{year}($)'] 114 | row[f'TotalIpInterfaceCostYr{year}'] = calculate_total_ip_cost(ip_cost, ip_cost_per_asp, forecast_demand, asps) 115 | 116 | # Material Cost 117 | # MatCost = FUP * FD 118 | forecast_unit_prices = row[f'ForecastUnitPriceYr{year}($)'] 119 | row[f'MatCostYr{year}'] = calculate_mat_cost(forecast_unit_prices, forecast_demand) 120 | 121 | # Field Quality Cost 122 | field_quality_fr = float(row[f'QualityYr{year}']) 123 | row[f'QualityCostYr{year}'] = calculate_quality_cost(field_quality_fr, forecast_unit_prices, forecast_demand) 124 | 125 | # mask set cost and nre 126 | row[f'MaskCost{year}'] = get_mask_set_cost(row, year) 127 | # row[f'Nre{year}'] = get_nre(row, year) 128 | 129 | # test cost 130 | row[f'TestCost{year}'] = get_test_cost(input, row[f'WaferYieldYr{year}']) 131 | input.append(row) 132 | 133 | return input 134 | 135 | def calculate_quality_cost(field_quality_fr, forecast_unit_prices, forecast_demands): 136 | return forecast_unit_prices * forecast_demands * (field_quality_fr/1000000) 137 | 138 | def calculate_mat_cost(forecast_unit_prices, forecast_demands): 139 | return forecast_unit_prices * forecast_demands 140 | 141 | def calculate_total_ip_cost(ip_cost, ip_cost_per_asp, demands, asps): 142 | return (asps * ip_cost_per_asp) * demands + ip_cost 143 | 144 | def calculate_wafer_price(row, year): 145 | if row['DeviceType'] == DEVICE_TYPE_SUBSTRATE: 146 | return get_transformed_matrix(0) 147 | 148 | if year == 1: 149 | if "-" not in row['WaferPriceYr1($)']: 150 | return get_transformed_matrix(float(row['WaferPriceYr1($)'])) 151 | 152 | return get_normal_distribution(row['WaferPriceYr1($)']) 153 | 154 | wf_col = f'WaferPriceYr{year}($)' 155 | if row[wf_col]: 156 | if "-" not in row[wf_col]: 157 | return get_transformed_matrix(float(row[wf_col])) 158 | 159 | return get_normal_distribution(row[wf_col]) 160 | 161 | wafer_prices = row[f'WaferPriceYr{year - 1}($)'] 162 | discount_rate = float(row['WaferPriceAnnualDiscountFactor(%)']) 163 | return wafer_prices * (1 - discount_rate/100) 164 | 165 | def calculate_forcast_demand(row, year): 166 | fd = row[f'ForecastDemandYr{year}'] 167 | if "-" not in fd: 168 | return get_transformed_matrix(int(fd)) 169 | 170 | return get_normal_distribution(row[f'ForecastDemandYr{year}']) 171 | 172 | 173 | def calculate_effective_area(input, row): 174 | # EffA = (L + ss ) x (W + ss ) + rec_area * rec_spares Effective Area of each die 175 | L = float(row['DimensionX']) 176 | W = float(row['DimensionY']) 177 | ss = float(row['SawStreet(mm)']) 178 | rec_spares = int(input[0]['RecSpares']) 179 | rec_area = int(input[0]['RecArea']) 180 | return (L + ss) * (W + ss) + rec_area * rec_spares 181 | 182 | 183 | def meta_data_row(row): 184 | device_type = row['DeviceType'] 185 | return device_type is None or device_type == '' 186 | 187 | # GDPW = ((Wfr - 6) * PI * (Wfr / (4 * EffA) - 1 / sqrt(2 * EffA))) 188 | def calculate_gdpw(row): 189 | if float(row['DimensionX']) == 0 or float(row['DimensionY']) == 0: 190 | return 0 191 | wfr = float(row['WaferSize(mm)']) 192 | return round((wfr - 6) * math.pi * ((wfr / (4 * row['EffA'])) - (1 / math.sqrt(2 * row['EffA']))), 0) 193 | 194 | 195 | def calculate_probe_cost(row): 196 | if row['DeviceType'] == DEVICE_TYPE_SUBSTRATE: 197 | return 0 198 | 199 | return float(row['ProberRate($/hr)']) * ((float(row['Insrtn1']) / 3600) / float(row['Sites1']) + (float(row['Insrtn2']) / 3600) / float(row['Sites2'])) 200 | 201 | 202 | def calculate_wafer_yield(row, metadata, year): 203 | wafer_yield = row[f'WaferYieldYr{year}'] 204 | if wafer_yield: 205 | if "-" not in wafer_yield: 206 | return get_transformed_matrix(float(wafer_yield)) 207 | 208 | return get_normal_distribution(wafer_yield) 209 | 210 | model = get_yield_model(metadata) 211 | defect_density = get_defect_density(row[f'DefectDensityYr{year}(Defects/cm^2)']) 212 | model_yield_fn = calculate_murphy_yield if model == MURPHY_MODEL else calculate_bose_einstein_yield 213 | model_yield = model_yield_fn(row, defect_density) 214 | rec_yield = calculate_rec_yield(metadata, defect_density) 215 | 216 | return model_yield + rec_yield 217 | 218 | 219 | def calculate_murphy_yield(row, defect_density): 220 | return ((1 - math.exp(-defect_density * row['EffA'] * 0.01)) / (defect_density * row['EffA'] * 0.01)) ** 2 221 | 222 | 223 | def calculate_bose_einstein_yield(row, defect_density): 224 | return (1.0 / (1 + defect_density * row['EffA'] * 0.01)) ** int(row['N']) 225 | 226 | 227 | # Yield Adjusted Forcast Unit Price 228 | # For Device Type = Active, FUP = Pwafer / (GDPW * WaferYield) + ProbeCost 229 | # For Device Type = Substrace, FUP = SubsCost = SubsUnitPrice/WaferYield 230 | def calculate_forcast_unit_price(row, year): 231 | fup = row[f'ForecastUnitPriceYr{year}($)'] 232 | if fup: 233 | return get_transformed_matrix(float(fup)) 234 | 235 | return calculate_substrate_fup(row, year) if row['DeviceType'] == DEVICE_TYPE_SUBSTRATE else calculate_active_fup(row, year) + row['ProbeCost($)'] 236 | 237 | 238 | def calculate_active_fup(row, year): 239 | gdpw = row['GDPW'] 240 | if gdpw == 0: 241 | return 0 242 | pWafer = row[f'WaferPriceYr{year}($)'] 243 | pYield = row[f'WaferYieldYr{year}'] 244 | return pWafer / (pYield * gdpw) 245 | 246 | 247 | def calculate_substrate_fup(row, year): 248 | subs_unit_price = get_transformed_matrix(float(row[f'SubstrateUnitPriceYr{year}($)'] or '0')) 249 | subs_yield = row[f'WaferYieldYr{year}'] 250 | return subs_unit_price/subs_yield 251 | 252 | 253 | def get_defect_density(dd): 254 | if "-" not in dd: 255 | return get_transformed_matrix(float(dd)) 256 | return get_normal_distribution(dd) 257 | 258 | 259 | def get_asp(row, year): 260 | asp = row[f'AspYr{year}($)'] 261 | if "-" not in asp: 262 | return get_transformed_matrix(float(asp)) 263 | 264 | return get_normal_distribution(row[f'AspYr{year}($)']) 265 | 266 | 267 | def get_yield_model(metadata): 268 | model = metadata['YieldModel'] 269 | 270 | if model != MURPHY_MODEL and model != BOSE_EINSTEIN_MODEL: 271 | raise Exception('Yield model should be one of Murphy or Bose Einstein') 272 | 273 | return model 274 | 275 | 276 | def get_nre(row, year): 277 | nre = row['NRE($)'] 278 | if year > 1 or nre is None or nre == '': 279 | return 0.0 280 | if "-" in nre: 281 | return get_normal_distribution(nre) 282 | return get_transformed_matrix(float(nre)) 283 | 284 | 285 | def get_mask_set_cost(row, year): 286 | if year > 1: 287 | return 0.0 288 | return float(row['MaskSetCost'] or '0') 289 | 290 | 291 | def calculate_rec_yield(metadata, dd): 292 | k = int(metadata['RecSpares']) 293 | n = int(metadata['RecBaseline']) + int(metadata['RecSpares']) 294 | p = int(metadata['RecArea']) / 100 * dd 295 | return comb(n, k) * p**k * (1 - p)**(n - k) 296 | 297 | def wafer_sort_test_cost(input, yield_i): 298 | ws_a = float(input[0]['WSa($/hr)']) # Wafer sort automated test equipment loaded rate 299 | ws_h = float(input[0]['WSh($/hr)']) # Wafer sort prober loaded rate ($/hr) 300 | ws_ci = float(input[0]['WSci']) # Wafer Sort insertion per unit 301 | ws_di = float(input[0]['WSdi']) # Probe (Wafer Sort) time duration per insertion 302 | ws_xi = float(input[0]['WSxi']) # Wafer sort test coverage 303 | ws_ri = float(input[0]['WSri']) # Wafer sort retest attempts for failing unit 304 | return ((ws_a + ws_h) / 3600) * (ws_di * ws_ci + (1 - yield_i * ws_xi) * ws_di * ws_ri) 305 | 306 | def final_test_cost(input, yield_i): 307 | ft_a = float(input[0]['FTa($/hr)']) 308 | ft_h = float(input[0]['FTh($/hr)']) # final test handler loaded rate 309 | ws_xi = float(input[0]['WSxi']) # Wafer sort test coverage 310 | ft_xi = float(input[0]['FTxi']) 311 | ft_di = float(input[0]['FTdi']) 312 | ft_ri = float(input[0]['FTri']) 313 | ft_ci = float(input[0]['FTci']) 314 | return ((ft_a + ft_h) / 3600) * (ft_ci * ft_di + (1 - yield_i * (ws_xi - ft_xi)) * (ft_ri * ft_di)) 315 | 316 | def slt_test_cost(input, yield_i): 317 | slt_a = float(input[0]['SLTa($/hr)']) 318 | slt_h = float(input[0]['SLTh($/hr)']) # final test handler loaded rate 319 | slt_di = float(input[0]['SLTdi']) # system level test duration per unit 320 | ftx_i = float(input[0]['FTxi']) 321 | return ((slt_a + slt_h) / 3600) * (slt_di * (yield_i + (1 - yield_i) * (1 - ftx_i))) 322 | 323 | def get_test_cost(input, yield_i): 324 | return wafer_sort_test_cost(input, yield_i) + final_test_cost(input, yield_i) + slt_test_cost(input, yield_i) 325 | 326 | def get_normal_distribution(range_val): 327 | first, second = range_val.split("-") 328 | low, high = float(first), float(second) 329 | avg = (low + high) / 2 330 | sd = avg / 10 331 | return np.random.normal(avg, sd, size = (params.num_of_steps, params.num_of_simulations)) 332 | 333 | def get_transformed_matrix(val): 334 | return np.array([[val] * params.num_of_simulations] * params.num_of_steps) 335 | 336 | def simulation(input, years): 337 | for row in input: 338 | if meta_data_row(row): 339 | for year in range(1, years + 1): 340 | asp = row[f'AspYr{year}($)'] 341 | if "-" in asp: 342 | return True 343 | 344 | for year in range(1, years + 1): 345 | dd = row[f'DefectDensityYr{year}(Defects/cm^2)'] 346 | wafer_yield = row[f'WaferYieldYr{year}'] 347 | wafer_price = row[f'WaferPriceYr{year}($)'] 348 | forecast_demad = row[f'ForecastDemandYr{year}'] 349 | 350 | if "-" in dd or "-" in wafer_yield or "-" in wafer_price or "-" in forecast_demad: 351 | return True 352 | return False -------------------------------------------------------------------------------- /simulation/processor.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2022 Google LLC 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | https://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | """ 16 | 17 | import numpy as np 18 | from preprocessor import cleanse 19 | from preprocessor import DEVICE_TYPE_SUBSTRATE, meta_data_row 20 | from writer import create_row, write_to_file 21 | 22 | def calculate_summary(read, args): 23 | years = args['years'] 24 | input = cleanse(read, args) 25 | 26 | operating_cost = calculate_cost(input, 'OpCostYr', years) 27 | ip_interface_cost = calculate_cost(input, 'TotalIpInterfaceCostYr', years) 28 | misc_cost = calculate_misc_cost(input, years) 29 | # print(misc_costA) 30 | # [array([[2000000., 2000000., .. to num of simulation.], 31 | # to num of REPS 32 | # [2000000., 2000000., 2000000., 2000000., 2000000.]]), 33 | # array([[3000000., 3000000., to num of simulation.], 34 | # to num of REPS 35 | # ]), 36 | # to num of years 37 | # ] 38 | 39 | quality_cost = calculate_cost(input, 'QualityCostYr', years) 40 | material_cost = calculate_cost(input, 'MatCostYr', years) 41 | nre = calculate_nre_cost(input, years) 42 | asp = calculate_asp(input, years) 43 | mask_cost = calculate_cost(input, 'MaskCost', years) 44 | assy_scrap = calculate_assy_scrap(input, years) 45 | subs_cost = calculate_substrate_cost(input, years) 46 | test_cost = calculate_cost(input, 'TestCost', years) 47 | total_cost = calculate_total_cost(input, years, misc_cost, assy_scrap, material_cost, 48 | quality_cost, operating_cost, ip_interface_cost, 49 | mask_cost, nre, subs_cost, test_cost) 50 | 51 | total_unit_cost_arr = calculate_total_unit_cost(input, total_cost, years) 52 | # Preparing values for summary output 53 | return { 54 | 'operating_costs': find_xy_mean(operating_cost), 55 | 'ip_interface_costs': find_xy_mean(ip_interface_cost), 56 | 'misc_costs': find_xy_mean(misc_cost), 57 | 'quality_costs': find_xy_mean(quality_cost), 58 | 'material_costs': find_xy_mean(material_cost), 59 | 'assy_scraps': find_xy_mean(assy_scrap), 60 | 'total_costs': find_xy_mean(total_cost), 61 | 'total_unit_cost_arr': total_unit_cost_arr, 62 | 'total_unit_costs': find_xy_mean(total_unit_cost_arr), 63 | 'mask_costs': mask_cost, 64 | 'nre': nre, 65 | 'asp': asp 66 | } 67 | 68 | 69 | def filter_metadata_row(input): 70 | return filter(lambda row: meta_data_row(row) == False, input) 71 | 72 | def calculate_assy_scrap(input, years=5): 73 | 74 | assy = [] 75 | assy_yield = [] 76 | numOfAssemblySteps = int(input[0]['AssemblySteps']) 77 | # we create 2D matrix of assemby seq of (i x assembly_steps) 78 | # [[ 1. 1 . . . to i] 79 | # [ 1. 1 . . . to i] 80 | # [ 1. 1 . . . to i] 81 | # . . . to num of assembly steps 82 | # [ 1. 1 . . . to i]] 83 | for i in range(1, numOfAssemblySteps + 1): 84 | assy_col = f'AssemblySeq{i}' 85 | # only the assembly sequence with dimension should be considered 86 | assy_i = list(map(lambda row: int(row[assy_col]) if float(row['DimensionX']) > 0 and float( 87 | row['DimensionY']) > 0 else 0, filter_metadata_row(input))) 88 | assy.append(assy_i) 89 | 90 | # assy and assy_per_step_yield should have same column numbers 91 | # if assy_yield is provided, then do not calculate it 92 | input_assy_yield = input[0][f'AssyYield{i}'] 93 | assy_yield_i = float(input_assy_yield) if input_assy_yield else float( 94 | input[0][f'AssyPerStepYield{i}']) ** sum(assy_i) 95 | assy_yield.append(assy_yield_i) 96 | 97 | assy_scraps = [] 98 | 99 | for year in range(1, years + 1): 100 | # we create 3D matrix of material cost for each die (i x NUM_OF_STEPS x NUM_OF_SIMULATIONS) 101 | # [[[ 3493250. 4863525. . . to NUM_OF_SIMULATIONS 22089000.], [ 3493250. 4863525. . . to NUM_OF_SIMULATIONS 22089000.] 102 | # [ 3493250. 4863525. . . to NUM_OF_SIMULATIONS 22089000.], [ 3493250. 4863525. . . to NUM_OF_SIMULATIONS 22089000.] 103 | # ..... to NUM of REPS], 104 | # [[ 3493250. 4863525. . . to NUM_OF_SIMULATIONS 22089000.], [ 3493250. 4863525. . . to NUM_OF_SIMULATIONS 22089000.] 105 | # [ 3493250. 4863525. . . to NUM_OF_SIMULATIONS 22089000.], [ 3493250. 4863525. . . to NUM_OF_SIMULATIONS 22089000.] 106 | # ..... to NUM of REPS] 107 | # ... to i ] 108 | 109 | mat_cost_col = f'MatCostYr{year}' 110 | mat_cost = list(map(lambda row: row[mat_cost_col], filter_metadata_row(input))) 111 | assy_scrap_t = [] 112 | # for each assembly sequence, find sum product and add to find scrap cost for given time t 113 | for j in range(0, len(assy)): 114 | assy_j = assy[j] 115 | # [ 1. 1 . . . to NUM_OF_STEPS 0.], [ 1. 1 . . . to NUM_OF_STEPS 0.] ... to i 116 | assy_yield_j = assy_yield[j] 117 | assy_scrap_j = sum(list(mat_cost[k] * assy_seq for (k, assy_seq) in enumerate(assy_j))) * (1 - assy_yield_j) 118 | assy_scrap_t.append(assy_scrap_j) 119 | 120 | assy_scraps.append(sum(assy_scrap_t)) 121 | 122 | return assy_scraps 123 | 124 | 125 | def calculate_cost(input, colName, years=5): 126 | costs = [] 127 | for year in range(1, years + 1): 128 | cost_t = sum(list(map(lambda row: row[colName + str(year)], filter_metadata_row(input)))) 129 | costs.append(cost_t) 130 | 131 | return costs 132 | 133 | 134 | def get_substrate_row(input): 135 | return list(filter(lambda row: row['DeviceType'] == DEVICE_TYPE_SUBSTRATE, input))[0] 136 | 137 | 138 | def calculate_substrate_cost(input, numOfYears): 139 | substrate_costs = [] 140 | substrate_row = get_substrate_row(input) 141 | for year in range(1, numOfYears + 1): 142 | yield_adjusted_fup = substrate_row[f'ForecastUnitPriceYr{year}($)'] 143 | subs_demand = substrate_row[f'ForecastDemandYr{year}'] 144 | substrate_costs.append(yield_adjusted_fup * subs_demand) 145 | 146 | return substrate_costs 147 | 148 | def calculate_misc_cost(input, years=5): 149 | misc_costs = [] 150 | substrate_row = get_substrate_row(input) 151 | for year in range(1, years + 1): 152 | package_assy_cost = float( 153 | input[0][f'PackageAssemblyCostYr{year}($)'] or '0') 154 | forecast_demand = substrate_row[f'ForecastDemandYr{year}'] 155 | misc_costs.append(forecast_demand * package_assy_cost) 156 | 157 | return misc_costs 158 | 159 | 160 | def calculate_total_cost(input, years, misc_costs, assy_scraps, total_mat_costs, total_quality_costs, total_op_costs, total_ip_interface_costs, mask_costs, nre, subs_costs, test_costs): 161 | # make sure all inputs are of same length 162 | total_costs = [] 163 | 164 | for i in range(0, years): 165 | fpty = float(input[0][f'FinalPackageTestYieldYr{i + 1}']) 166 | slt = float(input[0][f'SLTYieldYr{i + 1}']) 167 | total_cost = misc_costs[i] + test_costs[i] + mask_costs[i] + assy_scraps[i] + ( 168 | total_mat_costs[i] + subs_costs[i]) * (1 + (1 - fpty) + (1 - slt) * fpty) + total_op_costs[i] + total_quality_costs[i] + total_ip_interface_costs[i] + nre[i] 169 | total_costs.append(total_cost) 170 | 171 | return total_costs 172 | 173 | 174 | def cost_contribution(costs, total): 175 | contribution = [] 176 | for i in range(0, len(costs)): 177 | contribution.append(costs[i] / total[i]) 178 | 179 | return contribution 180 | 181 | 182 | def calculate_total_unit_cost(input, total_costs, numOfYrs): 183 | total_unit_costs = [] 184 | 185 | for year in range(1, numOfYrs + 1): 186 | total_cost_t = total_costs[year - 1] 187 | demands = input[1][f'ForecastDemandYr{year}'] 188 | total_unit_costs.append(total_cost_t / demands) 189 | 190 | return total_unit_costs 191 | 192 | 193 | def calculate_unit_cost_contribution(total_unit_cost, cost_contribution): 194 | unit_cost_contribution = [] 195 | for i in range(0, len(total_unit_cost)): 196 | unit_cost_contribution.append( 197 | total_unit_cost[i] * cost_contribution[i]) 198 | 199 | return unit_cost_contribution 200 | 201 | 202 | def calculate_gross_margin(total_unit_costs, asps): 203 | gross_margins = [] 204 | for i in range(0, len(total_unit_costs)): 205 | gross_margins.append(asps[i] - total_unit_costs[i]) 206 | 207 | return gross_margins 208 | 209 | 210 | def calculate_gross_margin_percent(gross_margins, asps): 211 | gross_margin_percent = [] 212 | for i in range(0, len(gross_margins)): 213 | gross_margin_percent.append(gross_margins[i] / asps[i]) 214 | 215 | return gross_margin_percent 216 | 217 | 218 | def calculate_asp(input, numOfYears): 219 | asps = [] 220 | for year in range(1, numOfYears + 1): 221 | asp = input[0][f'AspYr{year}($)'] 222 | asps.append(asp.mean()) 223 | 224 | return asps 225 | 226 | def calculate_nre_cost(input, numOfYears): 227 | nre = [0] * numOfYears 228 | nre[0] = sum(list(map(lambda row: float(row['NRE($)'] or '0'), input))) 229 | return nre 230 | 231 | def find_xy_mean(lst): 232 | return np.average(find_x_mean(lst), axis = 1) 233 | 234 | def find_y_mean(lst): 235 | return list(map(lambda arr: arr.mean(axis = 1), lst)) 236 | 237 | def find_x_mean(lst): 238 | return list(map(lambda arr: arr.mean(axis = 0), lst)) 239 | 240 | 241 | def write_summary(summaryA, summaryB, years): 242 | 243 | material_costsA = summaryA['material_costs'] 244 | material_costsB = summaryB['material_costs'] 245 | 246 | mask_costsA = summaryA['mask_costs'] 247 | mask_costsB = summaryB['mask_costs'] 248 | 249 | nreA = summaryA['nre'] 250 | nreB = summaryB['nre'] 251 | 252 | assy_scrapsA = summaryA['assy_scraps'] 253 | assy_scrapsB = summaryB['assy_scraps'] 254 | 255 | quality_costsA = summaryA['quality_costs'] 256 | quality_costsB = summaryB['quality_costs'] 257 | 258 | operating_costsA = summaryA['operating_costs'] 259 | operating_costsB = summaryB['operating_costs'] 260 | 261 | ip_interface_costsA = summaryA['ip_interface_costs'] 262 | ip_interface_costsB = summaryB['ip_interface_costs'] 263 | 264 | misc_costsA = summaryA['misc_costs'] 265 | misc_costsB = summaryB['misc_costs'] 266 | 267 | total_costsA = summaryA['total_costs'] 268 | total_costsB = summaryB['total_costs'] 269 | 270 | summary = [] 271 | summary.append(create_row('Material($)', material_costsA, material_costsB, years)) 272 | summary.append(create_row('Mask Set($)', mask_costsA, mask_costsB, years)) 273 | summary.append(create_row('NRE($)', nreA, nreB, years)) 274 | summary.append(create_row('KGD($)', assy_scrapsA, assy_scrapsB, years)) 275 | summary.append(create_row('Quality($)', quality_costsA, quality_costsB, years)) 276 | summary.append(create_row('Operating Cost($)', 277 | operating_costsA, operating_costsB, years)) 278 | summary.append(create_row('IP Interface Cost($)', 279 | ip_interface_costsA, ip_interface_costsB, years)) 280 | summary.append(create_row('Misc Cost (Assy, Test)($)', 281 | misc_costsA, misc_costsB, years)) 282 | summary.append(create_row( 283 | 'Total($)', total_costsA, total_costsB, years)) 284 | 285 | # % of Total Cost Contribution 286 | summary.append(create_row('Material(%)', cost_contribution( 287 | material_costsA, total_costsA), cost_contribution(material_costsB, total_costsB), years)) 288 | summary.append(create_row('Mask Set(%)', cost_contribution( 289 | mask_costsA, total_costsA), cost_contribution(mask_costsB, total_costsB), years)) 290 | summary.append(create_row('NRE(%)', cost_contribution( 291 | nreA, total_costsA), cost_contribution(nreB, total_costsB), years)) 292 | summary.append(create_row('KGD(%)', cost_contribution( 293 | assy_scrapsA, total_costsA), cost_contribution(assy_scrapsB, total_costsB), years)) 294 | summary.append(create_row('Quality(%)', cost_contribution( 295 | quality_costsA, total_costsA), cost_contribution(quality_costsB, total_costsB), years)) 296 | summary.append(create_row('Operating Cost(%)', cost_contribution( 297 | operating_costsA, total_costsA), cost_contribution(operating_costsB, total_costsB), years)) 298 | summary.append(create_row('IP Interface Cost($)(%)', cost_contribution( 299 | ip_interface_costsA, total_costsA), cost_contribution(ip_interface_costsB, total_costsB), years)) 300 | summary.append(create_row('Misc Cost (Assy, Test)(%)', cost_contribution( 301 | misc_costsA, total_costsA), cost_contribution(misc_costsB, total_costsB), years)) 302 | # print(summary) 303 | 304 | total_unit_costA = summaryA['total_unit_costs'] 305 | total_unit_costB = summaryB['total_unit_costs'] 306 | 307 | summary.append(create_row('Material Total Unit Cost($)', calculate_unit_cost_contribution(total_unit_costA, cost_contribution( 308 | material_costsA, total_costsA)), calculate_unit_cost_contribution(total_unit_costB, cost_contribution(material_costsB, total_costsB)), years)) 309 | summary.append(create_row('NRE Total Unit Cost($)', calculate_unit_cost_contribution(total_unit_costA, cost_contribution( 310 | nreA, total_costsA)), calculate_unit_cost_contribution(total_unit_costB, cost_contribution(nreB, total_costsB)), years)) 311 | summary.append(create_row('KGD Total Unit Cost($)', calculate_unit_cost_contribution(total_unit_costA, cost_contribution( 312 | assy_scrapsA, total_costsA)), calculate_unit_cost_contribution(total_unit_costB, cost_contribution(assy_scrapsB, total_costsB)), years)) 313 | summary.append(create_row('Quality Total Unit Cost($)', calculate_unit_cost_contribution(total_unit_costA, cost_contribution( 314 | quality_costsA, total_costsA)), calculate_unit_cost_contribution(total_unit_costB, cost_contribution(quality_costsB, total_costsB)), years)) 315 | summary.append(create_row('Operating Total Unit Cost($)', calculate_unit_cost_contribution(total_unit_costA, cost_contribution( 316 | operating_costsA, total_costsA)), calculate_unit_cost_contribution(total_unit_costB, cost_contribution(operating_costsB, total_costsB)), years)) 317 | summary.append(create_row('IP Interface Total Unit Cost($)', calculate_unit_cost_contribution(total_unit_costA, cost_contribution( 318 | ip_interface_costsA, total_costsA)), calculate_unit_cost_contribution(total_unit_costB, cost_contribution(ip_interface_costsB, total_costsB)), years)) 319 | summary.append(create_row('Misc Total Unit Cost($)', calculate_unit_cost_contribution(total_unit_costA, cost_contribution( 320 | misc_costsA, total_costsA)), calculate_unit_cost_contribution(total_unit_costB, cost_contribution(misc_costsB, total_costsB)), years)) 321 | 322 | aspA = summaryA['asp'] 323 | aspB = summaryA['asp'] 324 | gross_marginsA = calculate_gross_margin(total_unit_costA, aspA) 325 | gross_marginsB = calculate_gross_margin(total_unit_costB, aspB) 326 | # print(gross_marginsA) 327 | # print(gross_marginsB) 328 | summary.append(create_row('Gross Margin($)', 329 | gross_marginsA, gross_marginsB, years)) 330 | summary.append(create_row('Gross Margin(%)', calculate_gross_margin_percent( 331 | gross_marginsA, aspA), calculate_gross_margin_percent(gross_marginsB, aspB), years)) 332 | 333 | total_unit_cost_diff = np.array(summaryB['total_unit_cost_arr']) - np.array(summaryA['total_unit_cost_arr']) 334 | # print(find_xy_mean(total_unit_cost_diff)) 335 | summary.append(create_row('Cost Difference(Option2 - Option1)', find_xy_mean(total_unit_cost_diff), [ 336 | ''] * years, years)) 337 | write_to_file(summary, years) -------------------------------------------------------------------------------- /simulation/reader.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2022 Google LLC 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | https://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | """ 16 | 17 | import csv 18 | 19 | def readFile(fileName): 20 | input = [] 21 | with open('inputs/' + fileName) as file: 22 | reader = csv.DictReader(file) 23 | for row in reader: 24 | input.append(row) 25 | return input 26 | -------------------------------------------------------------------------------- /simulation/requirements.txt: -------------------------------------------------------------------------------- 1 | numpy==1.22.3 2 | matplotlib==3.5.1 3 | pandas==1.4.2 4 | seaborn==0.11.2 5 | jinja2==3.1.1 6 | plotly==5.7.0 7 | kaleido==0.2.1 -------------------------------------------------------------------------------- /simulation/test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/chiplets-cost-model/2cbd30caebf696f022aa99215f23907234b32aec/simulation/test/__init__.py -------------------------------------------------------------------------------- /simulation/test/test_preprocessor.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2022 Google LLC 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | https://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | """ 16 | 17 | import unittest 18 | 19 | from preprocessor import calculate_bose_einstein_yield, calculate_rec_yield, wafer_sort_test_cost, slt_test_cost, final_test_cost 20 | 21 | 22 | class TestReader(unittest.TestCase): 23 | def test_bose_einstein_yield(self): 24 | row = {'EffA': 378.14, 'N': '2'} 25 | 26 | yield_yr = calculate_bose_einstein_yield(row, 0.1) 27 | 28 | self.assertEqual(52.65, round(yield_yr * 100, 2)) 29 | 30 | def test_calculate_rec_yield(self): 31 | metadata = {'RecBaseline': '32', 'RecSpares': '0', 'RecArea': '10'} 32 | 33 | rec_yield = calculate_rec_yield(metadata, 0.1) 34 | 35 | self.assertEqual(0.72498, round(rec_yield, 6)) 36 | 37 | def test_wafer_sort_test_cost(self): 38 | input = [{'WSa($/hr)':'150', 'WSh($/hr)': '50', 'WSci': '2', 'WSdi': '15', 'WSxi': '0.8', 'WSri': '2'}] 39 | yield_i = 0.7 40 | 41 | cost = wafer_sort_test_cost(input, yield_i) 42 | 43 | self.assertEqual(2.400, round(cost, 3)) 44 | 45 | def test_final_test_cost(self): 46 | input = [{'FTa($/hr)':'250', 'FTh($/hr)': '250', 'FTdi': '25', 'FTxi': '0.9', 'WSxi': '0.8', 'FTri': '0', 'FTci': '1'}] 47 | yield_i = 0.8 48 | 49 | cost = final_test_cost(input, yield_i) 50 | 51 | self.assertEqual(3.472, round(cost, 3)) 52 | 53 | def test_slt_test_cost(self): 54 | input = [{'SLTa($/hr)':'30', 'SLTh($/hr)': '80', 'SLTdi': '360', 'FTxi': '0.9'}] 55 | yield_i = 0.8 56 | 57 | cost = slt_test_cost(input, yield_i) 58 | 59 | self.assertEqual(9.020, round(cost, 3)) 60 | 61 | 62 | if __name__ == '__main__': 63 | unittest.main() 64 | -------------------------------------------------------------------------------- /simulation/test/test_processor.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2022 Google LLC 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | https://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | """ 16 | 17 | import unittest 18 | import numpy as np 19 | 20 | from processor import calculate_assy_scrap 21 | 22 | 23 | class TestReader(unittest.TestCase): 24 | def test_assy_scrap_cost(self): 25 | input = [ 26 | { 27 | 'DeviceType': '', 28 | 'AssemblySteps': '7', 29 | 'AssyPerStepYield1': '0.99', 30 | 'AssyPerStepYield2': '0.99', 31 | 'AssyPerStepYield3': '0.99', 32 | 'AssyPerStepYield4': '0.99', 33 | 'AssyPerStepYield5': '0.98', 34 | 'AssyPerStepYield6': '0.99', 35 | 'AssyPerStepYield7': '0.95', 36 | 'AssyYield1': '', 37 | 'AssyYield2': '', 38 | 'AssyYield3': '', 39 | 'AssyYield4': '', 40 | 'AssyYield5': '', 41 | 'AssyYield6': '', 42 | 'AssyYield7': '', 43 | }, 44 | { 45 | 'DeviceType': 'Substrate', 46 | 'DimensionX': '68.5', 47 | 'DimensionY': '68.5', 48 | 'MatCostYr1': 10204081.63, 49 | 'MatCostYr2': 14878000.40, 50 | 'MatCostYr3': 22222222.22, 51 | 'MatCostYr4': 78125000.00, 52 | 'MatCostYr5': 74360499.70, 53 | 'AssemblySeq1': '0', 54 | 'AssemblySeq2': '0', 55 | 'AssemblySeq3': '0', 56 | 'AssemblySeq4': '0', 57 | 'AssemblySeq5': '0', 58 | 'AssemblySeq6': '0', 59 | 'AssemblySeq7': '1', 60 | }, 61 | { 62 | 'DeviceType': 'Active', 63 | 'DimensionX': '68.5', 64 | 'DimensionY': '68.5', 65 | 'MatCostYr1': 157969593.24, 66 | 'MatCostYr2': 197670554.29, 67 | 'MatCostYr3': 240957514.71, 68 | 'MatCostYr4': 700308744.26, 69 | 'MatCostYr5': 568219101.94, 70 | 'AssemblySeq1': '0', 71 | 'AssemblySeq2': '0', 72 | 'AssemblySeq3': '0', 73 | 'AssemblySeq4': '0', 74 | 'AssemblySeq5': '0', 75 | 'AssemblySeq6': '0', 76 | 'AssemblySeq7': '1', 77 | } 78 | ] 79 | expected_assy_scrap = [16396933.299825005, 20723484.082275007, 25660024.35067501, 75897290.06535003, 62651511.15990003] 80 | 81 | assy_scrap = calculate_assy_scrap(input, 5) 82 | print(assy_scrap) 83 | 84 | self.assertAlmostEqual(assy_scrap, expected_assy_scrap) 85 | 86 | 87 | if __name__ == '__main__': 88 | unittest.main() 89 | -------------------------------------------------------------------------------- /simulation/writer.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2022 Google LLC 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | https://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | """ 16 | 17 | import csv 18 | 19 | def create_row(category, option1, option2, numOfYr): 20 | row = {'CostCategory': category} 21 | 22 | for year in range(1, numOfYr + 1): 23 | col_name = f'ChipletYr{year}' 24 | row[col_name] = option1[year - 1] 25 | 26 | for year in range(1, numOfYr + 1): 27 | col_name = f'2SocChipsYr{year}' 28 | row[col_name] = option2[year - 1] 29 | 30 | return row 31 | 32 | 33 | def write_to_file(summary, years): 34 | with open('outputs/summary_output.csv', 'w') as file: 35 | 36 | field_names = ['CostCategory'] 37 | 38 | for year in range(1, years + 1): 39 | col_name = f'ChipletYr{year}' 40 | field_names.append(col_name) 41 | 42 | for year in range(1, years + 1): 43 | col_name = f'2SocChipsYr{year}' 44 | field_names.append(col_name) 45 | 46 | writer = csv.DictWriter(file, field_names) 47 | writer.writeheader() 48 | writer.writerows(summary) 49 | --------------------------------------------------------------------------------