You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/src/vtr/power_estimation/index.rst
+21-11Lines changed: 21 additions & 11 deletions
Original file line number
Diff line number
Diff line change
@@ -43,6 +43,16 @@ $VTR_ROOT/vtrflow/tech/*
43
43
44
44
See :ref:`power_technology_properties` for information on how to generate an XML file for your own SPICE technology model.
45
45
46
+
In this mode, the VTR will run ODIN->ABC->ACE->VPR. The ACE stage is additional and specific to this power estimation flow. Using run_vtr_flow.py will automatically run ACE 2.0 to generate activity information and a new BLIF file (see ::ref:`power_ace` for details).
47
+
48
+
The final power estimates will be available in file named <circuit_name>.power in the result directory.
* ``<activities.act>``: Is the activity file to be created.
134
144
* ``<new.blif>``: The new BLIF file.
135
145
136
-
This will be functionally identical in function to the ABC blif; however, since ABC does not maintain internal node names, a new BLIF must be produced with node names that match the activity file.
146
+
This will be functionally identical in function to the ABC blif; however, since ABC does not maintain internal node names, a new BLIF must be produced with node names that match the activity file. This blif file is fed to the subsequent parts of the flow (to VPR). If a user is using run_vtr_flow.py (which will run ACE 2.0 underneath if the options mentioned earlier like -power are used), then the flow will copy this ACE2 generated blif file (<circuit_name>.ace.blif) to <circuit_name>.pre-vpr.blif and then launch VPR with this new file.
137
147
138
148
User’s may with to use their own activity estimation tool.
139
149
The produced activity file must contain one line for each net in the BLIF file, in the following format::
@@ -202,7 +212,7 @@ Other methods of estimation:
202
212
203
213
204
214
``specify-size``
205
-
~~~~~~~~~~~~~~~~
215
+
""""""""""""""""
206
216
This estimation method provides a detailed transistor level modelling of CLBs, and will provide the most accurate power estimations.
207
217
For each ``pb_type``, power estimation accounts for the following components (see :numref:`fig_power_sample_block`).
208
218
@@ -257,13 +267,13 @@ If necessary, the user can seperate a port into multiple ports with different wi
257
267
For all child ``pb_types``, the algorithm performs a recursive call.
258
268
Eventually ``pb_types`` will be reached that have no children.
259
269
These are primitives, such as flip-flops, LUTs, or other hard-blocks.
260
-
The power model includes functions to perform transistor-level power estimation for flip-flops and LUTs.
270
+
The power model includes functions to perform transistor-level power estimation for flip-flops and LUTs (Note: the power model doesn't, by default, include power estimation for single-bit adders that are commonly found in logic blocks of modern FPGAs).
261
271
If the user wishes to use a design with other primitive types (memories, multipliers, etc), they must provide an equivalent function.
262
-
If the user makes such a function, the ``power_calc_primitive`` function should be modified to call it.
272
+
If the user makes such a function, the ``power_usage_primitive`` function should be modified to call it.
263
273
Alternatively, these blocks can be configured to use higher-level power estimation methods.
264
274
265
275
``auto-size``
266
-
~~~~~~~~~~~~~
276
+
""""""""""""""""
267
277
This estimation method also performs detailed transistor-level modelling.
268
278
It is almost identical to the ``specify-size`` method described above.
269
279
The only difference is that the local wire capacitance and buffers are automatically inserted for all pins, when necessary.
@@ -274,7 +284,7 @@ This is equivalent to using the ``specify-size`` method with the ``wire_length=a
274
284
Although not as accurate as user-provided buffer and wire sizes, it is capable of automatically capturing trends in power dissipation as architectures are modified.
275
285
276
286
``pin-toggle``
277
-
~~~~~~~~~~~~~~
287
+
""""""""""""""""
278
288
This method allows users to specify the dynamic power of a block in terms of the energy per toggle (in Joules) of each input, output or clock pin for the ``pb_type``.
279
289
The static power is provided as an absolute (in Watts).
280
290
This is done using the following construct:
@@ -304,7 +314,7 @@ It is assumed that the power usage specified here includes power of all child ``
304
314
No further recursive power estimation will be performed.
305
315
306
316
``C-internal``
307
-
~~~~~~~~~~~~~~
317
+
""""""""""""""""
308
318
This method allows the users to specify the dynamic power of a block in terms of the internal capacitance of the block.
309
319
The activity will be averaged across all of the input pins, and will be supplied with the internal capacitance to the standard equation:
310
320
@@ -327,7 +337,7 @@ It is assumed that the power usage specified here includes power of all child ``
327
337
No further recursive power estimation will be performed.
328
338
329
339
``absolute``
330
-
~~~~~~~~~~~~
340
+
""""""""""""""""
331
341
This method is the most basic power estimation method, and allows users to specify both the dynamic and static power of a block as absolute
332
342
values (in Watts).
333
343
This is done using the following construct:
@@ -345,12 +355,12 @@ It is assumed that the power usage specified here includes power of all child ``
345
355
No further recursive power estimation will be performed.
346
356
347
357
Global Routing
348
-
--------------
358
+
~~~~~~~~~~~~~~
349
359
350
360
Global routing consists of switch boxes and input connection boxes.
351
361
352
362
Switch Boxes
353
-
~~~~~~~~~~~~
363
+
""""""""""""""""
354
364
355
365
Switch boxes are modelled as the following components (:numref:`fig_power_sb`):
356
366
@@ -389,7 +399,7 @@ The user may override this method by providing the buffer size as shown below:
389
399
The size is the drive strength of the buffer, relative to a minimum-sized inverter.
390
400
391
401
Input Connection Boxes
392
-
~~~~~~~~~~~~~~~~~~~~~~
402
+
""""""""""""""""
393
403
394
404
Input connection boxes are modelled as the following components (:numref:`fig_power_cb`):
0 commit comments