Commit ac0f39d
authored
Optimize buck/boost converter calculations, experimental infrastructure for serialized functions (#410)
Optimizes component calculation for buck and boost converters by
allowing the inductor picker to trade-off inductance and max current
rating. This is enabled by new experimental infrastructure for
serialized functions, that allows the inductor to take in an additional
functional filter that encodes this trade-off calculated per-part,
instead of static (and worst-case) inductance / current pairs, which
would lead to over-sized (and higher-DCR) inductors.
Changes the buck / boost converter calculation to be more principled. It
now uses two bounds, the optional ripple ratio at the actual output
current (defaults to unbounded / unused, allowing wide range for
optimization), and the fallback ripple ratio (0.1-0.5) at the switch
current limits. The fallback ratio provides a minimum ripple current and
maximum inductance at light-load operations where the converter will
likely go into DCM.
DCM effects are not modeled, since that would require additional
parameters like t_on, min. Instead, the fallback / limit ripple ratio is
meant to provide a sane component sizing for DCM operation.
THIS IS AN API-BREAKING CHANGE. In most cases,
Buck/BoostConverterPowerPath users will only need to delete the
ripple_current parameter, which is now calculated in the power path.
SwitchingVoltageRegulator also no longer provides a
ripple_current_factor variable, and the passthrough to the power path
can be eliminated.
Updates netlists too, the new inductor sizes are closer to values given
in the datasheet. This mostly affects IC-based converters that are
operating at a fraction of their rated load, and where the ripple ratio
can be wider. For custom converters which have a specified ripple ratio,
there is less room to optimize.
Detailed changes:
- Ripple current factor removed from SwitchingVoltageRegulator - it's an
internal variable that the system optimizes now. This also better
accommodates all-in-one switching regulators where this may not be a
specified parameter.
- This is still required for custom buck / boost converters, since there
isn't a reasonable fallback and is required to constrain inductance.
- For custom converters, the parameter is renamed to ripple_ratio for
consistency.
- Buck/BoostConverterPowerPath _calculate_parameters now returns scales
for inductance and capacitance (buck only, boost capacitance not
dependent on ripple current)
- Clarifies current_limits as sw_current_limits (peak current limit)
- Adds optional ripple_ratio parameter
- Inductor currents account for efficiency factor
- Refactor all buck / boost converters to remove the
inductor_current_ripple
- Validate and correct that switch currents are used in the *PowerPath
constructors
- Remove fixed inductors in examples to allow new inductors to be tested
Infrastructure changes:
- Add CastableTypes to all ConstraintExpr
- Add tighter bounds to then_else type and allow casting in one of then
or else exprs.
Resolves #4051 parent c01d3e6 commit ac0f39d
61 files changed
Lines changed: 855 additions & 647 deletions
File tree
- edg
- abstract_parts
- core
- parts
- examples
- Fcml
- IotDisplay
- IotFan
- IotIron
- IotLedDriver
- Multimeter
- RobotDriver
- Simon
- TestBlinkyArray
- TestBlinkyChain
- TestBlinkyComplete
- TestBlinkyExpanded
- TestBlinkyImplicit
- TestBlinkyMicro
- TestBlinkyPacked
- TestBlinkyWithLibraryExport
- TestBlinkyWithLibrary
- TestBlinkyWithModeledSchematicImport
- TestBlinkyWithSchematicImport
- UsbSourceMeasure
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| |||
94 | 94 | | |
95 | 95 | | |
96 | 96 | | |
97 | | - | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
98 | 100 | | |
99 | 101 | | |
100 | 102 | | |
| |||
105 | 107 | | |
106 | 108 | | |
107 | 109 | | |
| 110 | + | |
108 | 111 | | |
109 | 112 | | |
110 | 113 | | |
| |||
136 | 139 | | |
137 | 140 | | |
138 | 141 | | |
139 | | - | |
| 142 | + | |
| 143 | + | |
140 | 144 | | |
141 | 145 | | |
142 | 146 | | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
143 | 153 | | |
144 | 154 | | |
145 | 155 | | |
146 | 156 | | |
147 | | - | |
| 157 | + | |
| 158 | + | |
148 | 159 | | |
149 | 160 | | |
150 | 161 | | |
| |||
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
6 | 5 | | |
7 | | - | |
| 6 | + | |
8 | 7 | | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
13 | 11 | | |
14 | 12 | | |
15 | 13 | | |
| |||
152 | 150 | | |
153 | 151 | | |
154 | 152 | | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
| 30 | + | |
31 | 31 | | |
32 | | - | |
| 32 | + | |
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
| 39 | + | |
40 | 40 | | |
41 | | - | |
| 41 | + | |
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
48 | | - | |
49 | | - | |
50 | | - | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
| 55 | + | |
| 56 | + | |
56 | 57 | | |
57 | 58 | | |
58 | | - | |
59 | | - | |
60 | | - | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
61 | 62 | | |
62 | 63 | | |
63 | 64 | | |
| |||
66 | 67 | | |
67 | 68 | | |
68 | 69 | | |
69 | | - | |
70 | | - | |
| 70 | + | |
71 | 71 | | |
72 | | - | |
| 72 | + | |
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
76 | 76 | | |
| 77 | + | |
77 | 78 | | |
78 | 79 | | |
79 | | - | |
| 80 | + | |
80 | 81 | | |
81 | | - | |
| 82 | + | |
82 | 83 | | |
83 | 84 | | |
84 | 85 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| 29 | + | |
| 30 | + | |
29 | 31 | | |
30 | 32 | | |
31 | 33 | | |
| |||
101 | 103 | | |
102 | 104 | | |
103 | 105 | | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
104 | 109 | | |
105 | 110 | | |
106 | 111 | | |
| |||
159 | 164 | | |
160 | 165 | | |
161 | 166 | | |
162 | | - | |
| 167 | + | |
| 168 | + | |
163 | 169 | | |
164 | | - | |
165 | | - | |
166 | | - | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
167 | 184 | | |
168 | 185 | | |
169 | 186 | | |
| |||
173 | 190 | | |
174 | 191 | | |
175 | 192 | | |
176 | | - | |
177 | | - | |
178 | 193 | | |
179 | 194 | | |
180 | 195 | | |
| |||
479 | 494 | | |
480 | 495 | | |
481 | 496 | | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
482 | 500 | | |
483 | 501 | | |
484 | 502 | | |
| |||
596 | 614 | | |
597 | 615 | | |
598 | 616 | | |
599 | | - | |
600 | | - | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
601 | 620 | | |
602 | 621 | | |
0 commit comments