Chip Package Co-Simulation » History » Version 1
jun chen, 03/29/2025 10:03 PM
1 | 1 | jun chen | # Chip Package Co-Simulation |
---|---|---|---|
2 | |||
3 | ## Overall Flow |
||
4 | ``` |
||
5 | 1. Import Chip Design Data |
||
6 | 1.Def-in flow |
||
7 | 2.DB-in flow |
||
8 | 2. Import Package Data |
||
9 | 1.Import Package SPICE netlist |
||
10 | 2.Import chip-package port mapping file |
||
11 | 3. Run chip-package co-simulation |
||
12 | 1.DC simulation: static IR analysis |
||
13 | 2.Transient simulation: dynamic IR analysis |
||
14 | ``` |
||
15 | |||
16 | ## Tcl Commands |
||
17 | |||
18 | ### 1. import_package_model |
||
19 | ``` |
||
20 | import—package—model [-spice—netlist <package—netlist—file>] [-port—name—map <chip—to—package—port |
||
21 | —name—map—csv>] [-reset] |
||
22 | ``` |
||
23 | |||
24 | Import package model components including a package SPICE netlist file and a chip-to-package port name map CSV file. |
||
25 | |||
26 | #### Examples |
||
27 | |||
28 | 1. Import package SPICE netlist file pkg.sp. |
||
29 | |||
30 | ``` |
||
31 | import—package—model -spice—netlist pkg.sp |
||
32 | ``` |
||
33 | |||
34 | 2. Import chip-to-package port name map CSV file. |
||
35 | |||
36 | ``` |
||
37 | import—package—model -port—name—map chip-to-package-port-name-map.csv |
||
38 | ``` |
||
39 | |||
40 | chip-to-package-port-name-map.csv, saying, PLOC file, is a column-based CSV text file. We support a two-column PLOC file: |
||
41 | * the 1st column contains chip port names (i.e. source node); |
||
42 | * the 2nd column contains package port names. |
||
43 | chip-to-package-port-name-map.csv example: |
||
44 | |||
45 | ``` |
||
46 | VDD8—15388—2591210,Vo·T—0 |
||
47 | VDD8—15388—923,Vo·T—1 |
||
48 | VDD8—l290l—2591210,Vo·T—2 |
||
49 | VDD8—l290l—923,Vo·T—3 |
||
50 | ...... |
||
51 | ``` |
||
52 | |||
53 | 3. Remove all old results created by last import_package_model and then import package SPICE netlist file pkg.sp and chip-to-package port map file chip-to-package-port-name-map.csv |
||
54 | Note: -reset clean up all old results before importing anything. |
||
55 | |||
56 | ``` |
||
57 | import—package—model -spice—netlist pkg.sp -port—name—map chip-to-package-port-name-map.csv -r eset |
||
58 | ``` |
||
59 | ### 2. report_package |
||
60 | |||
61 | report—package |
||
62 | |||
63 | Report package netlist statistics, such as the number of resistors(R), capacitors(C), inductors(L), mutual inductors(K), voltage sources (V), etc.. |
||
64 | |||
65 | Print the records to console. For example, |
||
66 | |||
67 | ``` |
||
68 | % report—package 髻C = 6 |
||
69 | 髻K = 190653 |
||
70 | 髻l . = 618 |
||
71 | 髻R = 292 |
||
72 | 髻V = 2 |
||
73 | ``` |
||
74 | report_package also does package static diagnostic before running the chip-package co-simulation. It checks following items: |
||
75 | |||
76 | 1.Connection between package and chip. For example, short/open bump or pad. |
||
77 | 2.Package internal short check. |
||
78 | |||
79 | For example, regression case ut_run/ir/package_flow/qa_static_ir_with_package generate following package diagnostic report: |
||
80 | |||
81 |  |
||
82 |  |
||
83 | |||
84 | |||
85 | ### 3.set_package_port_current* |
||
86 | |||
87 | **Caution:** set_package_port_current is a hidden Tcl command as part of the built-in static IR drop Tcl iteration procedure: work/src/emirTcl/pkgIteration.tcl |
||
88 |  |
||
89 | |||
90 | ``` |
||
91 | set—package—port—current -type [staticldynamic] -file <supply—location—current—file> -reset |
||
92 | ``` |
||
93 | Load the output dumped by continue_analyze_power_network -report_supply_location_current. |
||
94 | |||
95 | * -reset removes last package port current data before setting new package port current data. |
||
96 | * type static is default for static IR drop with package. |
||
97 | * -type dynamic is used for dynamic IR drop with package. (Deprecated since 2022/7/25) |
||
98 | * <supply_location_current_file> is created by VP Tcl commands as follows: |
||
99 | |||
100 | > Static IR drop |
||
101 | |||
102 | continue—analy江e—power—network -report—supply—location—current > supply—location—current—f ile.static.txt |
||
103 | |||
104 | > Dynamic IR drop (Deprecated since 2022/7/25) |
||
105 | |||
106 | continue—analy江e—power—network -report—supply—location—current -simtime 0.5 > supply—locat ion—current—file.dynamic.txt |
||
107 | |||
108 | ### 4. run_package_simulation* |
||
109 | **Caution:** run_package_simulation is a hidden Tcl command as part of the built-in static IR drop Tcl iteration procedure: work/src/emirTcl/pkgIteration.tcl |
||
110 | You should NOT use it directly in customer cases. See also set_package_port_current. |
||
111 | ``` |
||
112 | run—package—simulation -type [staticldynamic] -file <supply—location—current—file> -reset |
||
113 | ``` |
||
114 | Run package SPICE simulation. |
||
115 | |||
116 | * -reset removes last package port current data before setting new package port current data. |
||
117 | * -type static is default for static package SPICE simulation. |
||
118 | * -type dynamic is used for dynamic package SPICE simulation. (Deprecated since 2022/07/25) |
||
119 | |||
120 | ### 5. report_package_voltage* |
||
121 | **Caution:** report_package_voltage is a hidden Tcl command as part of the built-in static IR drop Tcl iteration procedure: work/src/emirTcl/pkgIteration.tcl |
||
122 | You should NOT use it directly in customer cases. See also set_package_port_current. |
||
123 | ``` |
||
124 | report—package—voltage |
||
125 | ``` |
||
126 | |||
127 | Report package port voltages to console for both static and dynamic IR drop analysis. Report contents are a group of Tcl command set_supply_location_voltage . |
||
128 | Redirect the output to a Tcl file and source the Tcl file for next IR drop analysis iteration. |
||
129 | |||
130 | **Examples** |
||
131 | |||
132 | ``` |
||
133 | % report—package—voltage > "pkg—port—voltage.tcl" |
||
134 | % source "pkg—port—voltage.tcl" |
||
135 | 髻 next IR drop iteration |
||
136 | ``` |
||
137 | |||
138 | pkg_port_voltage.tcl looks like |
||
139 | |||
140 | ``` |
||
141 | set—supply—location—voltage -port—name VDD8—15388—2591210 -voltage—value 1.08 |
||
142 | set—supply—location—voltage -port—name VDD8—15388—923 -voltage—value 1.08 |
||
143 | set—supply—location—voltage -port—name VDD8—l290l—2591210 -voltage—value 1.08 |
||
144 | set—supply—location—voltage -port—name VDD8—l290l—923 -voltage—value 1.08 |
||
145 | ...... |
||
146 | ``` |
||
147 | |||
148 | Chip updates supply node voltage with values given by -voltage_value and continue to analyze the power network. |
||
149 | |||
150 | ### 6.Report Generation |
||
151 | |||
152 | For either VDD or VSS analysis, following report commands dumps the IR drop/bounce reports for dynamic IR with package analysis. |
||
153 | |||
154 | ``` |
||
155 | report—misc -dynamic—ir vdd—inst—dvd.rpt 髻 Generate instance-based IR report |
||
156 | report—misc -ploc—current vdd—ploc—current.rpt 髻 Generate current waveforms for every supply loca tion |
||
157 | report—misc -ploc—voltage vdd—ploc—voltage.rpt 髻 Generate voltage waveforms for every supply loca tion |
||
158 | report—supply—location—current -output—file vdd—supply—current.inc -format spice 髻 Generate curre nt waveform in SPICF PWl . current source format for every supply location report—supply—location—current -output—file vdd—supply—sumup.rpt -sum—up 髻 Generate the total cur rent waveform of VDD or VSS |
||
159 | ``` |
||
160 | |||
161 | **Typical Supply Node Voltage/Current Waveform Example - Dynamic IR with Package** |
||
162 | The waveform files are generated by report_supply_location_current and report_misc . |
||
163 | 1.Supply node voltage waveform |
||
164 |  |
||
165 | 2.Supply node current waveform |
||
166 |  |
||
167 | |||
168 | |||
169 | ## Static IR Drop with Package |
||
170 | |||
171 | After importing chip and package design data, static IR drop with package analysis only need an extra -with_package option. |
||
172 | |||
173 | * VDD static anlaysis: analyze_power_network -net VDD -with_package |
||
174 | * VSS static analysis: analyze_power_network -net VDD -with_package |
||
175 | |||
176 | Regression case: ut_run/ir/package_flow/qa_static_ir_with_package |
||
177 | |||
178 | ## Dynamic IR Drop with Package |
||
179 | Since 2022/07/25, -with_package is deprecated for dynamic IR drop with package. |
||
180 | For package flow, only need to add following Tcl command to no package dynamic IR drop flow: |
||
181 | |||
182 | ``` |
||
183 | import—package—model -spice—netslit <package—top—spice—netlist—file—name> \ |
||
184 | -port—name—map <two—column—csv—Pl.oC—file—name> \ |
||
185 | -integ—method be -skip—calc—ix -skip—calc—source—i -package—dim 10000 |
||
186 | ``` |
||
187 | |||
188 | Regression case: ut_run/ir/package_flow/qa_dynamic_ir_vector_base_with_L0_newflow |
||
189 | |||
190 | |||
191 | ## TODO (202208-01) |
||
192 | |||
193 | 1. Multi-solver solution: GSS solver for chip matrix and spsolver for package matrix. |
||
194 | 2. Combined PG package flow |