Joules CMD Ref
Joules CMD Ref
Joules CMD Ref
Contents
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
About This Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Additional References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Reporting Problems or Errors in Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
What We Changed in this Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
17.11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
17.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
16.23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
16.22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
16.21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
16.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
16.14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
16.12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
16.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
15.23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Customer Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Cadence Online Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Other Support Offerings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Command-Line Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Getting the Syntax for a Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Getting the Syntax for an Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Searching for Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Searching For Commands When You Are Unsure of the Name . . . . . . . . . . . . . . . . 16
Documentation Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1
General Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
bexpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
cdn_table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
plot_piechart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
plot_data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
voltus_compare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
write_db . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
compare_db . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
read_netlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
set_mbci_controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
write_template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2
Library Read and Analysis Commands . . . . . . . . . . . . . . . . . . . . . . . . 47
report_libs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
compare_libs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
get_libcells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
plot_cell_sensitivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
plot_drive_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
plot_lib_quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
get_libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
read_libs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
get_lib_domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
get_lib_param . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
set_lib_param . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
show_lib_params . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
get_cell_param . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
get_cell_pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
show_cell_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
get_cell_pin_type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
report_libcells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
show_cell_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
tag_memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
infer_memory_cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
infer_x1_cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
compare_memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
scrub_library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
3
Design Read and Elaboration Commands . . . . . . . . . . . . . . . . . . . 109
read_hdl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
read_power_intent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
elaborate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
4
Power Intent Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
get_domain_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
get_power_domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
get_power_modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
get_cell_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
5
Simulation and SDB Creation Commands . . . . . . . . . . . . . . . . . . . 121
read_stimulus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
write_sdb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
write_fsaif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
rtlstim2gate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
set_sdb_alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
get_sdb_alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
delete_sdb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6
Clock Tree - Setup and Analysis Commands . . . . . . . . . . . . . . . . 143
get_ctg_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
tag_clock_tree_for_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
report_clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
infer_clock_buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
gen_clock_tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
report_clock_tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
delete_clock_tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
scrub_cglar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
7
Mapping and DFT Insertion Commands . . . . . . . . . . . . . . . . . . . . . . 163
power_map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
synthesize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
apply_drc_rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
set_joules_cost_groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
estimate_data_buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
8
Stimulus Interface, Vectorless, and Activity Commands. . . . 173
get_default_activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
plot_activity_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
plot_sdb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
propagate_activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
reset_default_activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
set_default_activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
set_pin_activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
reset_pin_activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
report_activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
report_user_activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
get_pin_activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
get_sdb_stims . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
get_pdb_stims . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
get_sdb_frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
get_pdb_frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
get_stim_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
get_frame_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
get_frame_duration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
get_inst_activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
copy_activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
gen_power_critical_signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
report_sdb_annotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
report_stim_hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
generate_joules_monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
write_stimulus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
read_spef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
set_vectorless_controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
get_domain_activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
9
Power Analysis and PPA Reporting Commands . . . . . . . . . . . . 233
compute_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
set_power_scale_factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
report_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
plot_power_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
dump_power_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
dump_activity_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
report_ppa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
set_inst_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
collate_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
report_net_switching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
tune_ple_from_spef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
sweep_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
track_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
get_power_rails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
compute_logic_scale_factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
report_power_efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
compute_efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
10
Design Query and Navigation Commands . . . . . . . . . . . . . . . . . . . 287
get_inst_area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
get_inst_delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
get_seqs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
report_design_hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
get_insts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
get_inst_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
get_inst_slack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
get_inst_pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
get_clock_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
get_clock_trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
get_combs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
get_design_clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
plot_slack_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
plot_activity_distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
get_icgc_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
report_icgc_efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
report_icgc_scrub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
plot_net_distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
plot_inst_distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
report_area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
report_design_stats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
report_naming_rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
11
Joules Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Preface
Additional References
The following sources are helpful references, but are not included with the product
documentation:
■ TclTutor, a computer aided instruction package for learning the Tcl language:
http://www.msen.com/~clif/TclTutor.html.
■ TCL Reference, Tcl and the Tk Toolkit, John K. Ousterhout, Addison-Wesley
Publishing Company
■ IEEE Standard Hardware Description Language Based on the Verilog Hardware
Description Language (IEEE Std.1364-1995)
■ IEEE Standard Hardware Description Language Based on the Verilog Hardware
Description Language (IEEE Std. 1364-2001)
■ IEEE Standard VHDL Language Reference Manual (IEEE Std. 1076-1987)
■ IEEE Standard VHDL Language Reference Manual (IEEE Std. 1076-1993)
Note: For information on purchasing IEEE specifications go to http://shop.ieee.org/store/ and
click on Standards.
17.11
Added new attribute in Chapter “Joules Attributes” on page 339.
17.10
■ Added following commands:
❑ set_sdb_alias
❑ get_sdb_alias
❑ write_template
❑ compute_logic_scale_factor
❑ delete_sdb
❑ get_domain_activity
❑ get_cell_power
❑ report_design_stats
❑ report_naming_rules
❑ report_power_efficiency
❑ scrub_library
❑ compute_efficiency
■ Added information on Joules-specific attributes - “Joules Attributes” on page 339
16.23
Following commands have been updated:
■ plot_slack_profile
■ get_lib_param
■ get_icgc_info
■ get_libcells
■ report_libcells
■ show_lib_params
16.22
Following commands have been updated:
■ report_net_switching
■ get_power_rails
■ rtlstim2gate
■ compute_power
16.21
Added the following commands:
■ copy_activity
■ set_mbci_controls
■ set_vectorless_controls
■ plot_inst_distribution
■ get_power_rails
■ get_pdb_frames
■ get_pdb_stims
■ scrub_cglar
Removed commands:
■ write_saif
■ write_tcf
16.20
Added the following commands:
■ report_user_activity
■ write_stimulus
■ report_stim_hierarchy
16.14
■ Added new command compare_memory
16.12
Added the following commands:
■ read_spef
■ dump_activity_profile
16.10
Added the following commands:
■ report_area
■ rtlstim2gate
15.23
Added the following commands:
■ generate_joules_monitor
■ set_power_scale_factor
■ report_libs
■ compare_libs
■ sweep_power
■ track_power
■ read_netlist
■ dump_power_profile
Customer Support
Cadence offers live and online support, as well as customer education and training programs.
http://support.cadence.com
Command-Line Help
Note: The command syntax representation in this document does not necessarily match the
information that you get when you type help command_name. In many cases, the order of
the arguments is different. Furthermore, the syntax in this document includes all of the
dependencies, where the help information does this only to a certain degree.
For example:
Joules> help read_libs
or
Joules> read_libs -h
Returns the syntax and example usage for the read_libs command.
Note: Examples are shown using Joules tutorial design.
For example:
Joules> get_attribute libs * -help
You can type a sequence of letters after the set_attribute command and press Tab to
get a list of all attributes that contain those letters.
Joules> set_attribute li
Documentation Conventions
The list below describes the syntax conventions used for the Joules commands and
attributes.
literal Non italic words indicate keywords that you must type literally.
These keywords represent command, attribute or option names
arguments and options Words in italics indicate user-defined arguments or options for
which you must substitute a name or a value.
| Vertical bars (OR-bars) separate possible choices for a single
argument.
[ ] Brackets denote options. When used with OR-bars, they
enclose a list of choices from which you can choose one.
{ } Braces denote arguments and are used to indicate that a
choice is required from the list of arguments separated by OR-
bars. You must choose one from the list
{ argument1 | argument2 | argument3 }
Braces, used in Tcl command examples, indicate that the
braces must be typed in.
... Three dots (...) indicate that you can repeat the previous
argument. If the three dots are used with brackets (that is,
[argument]...), you can specify zero or more arguments.
If the three dots are used without brackets (argument...),
you must specify at least one argument, but can specify more.
# The pound sign precedes comments in command examples.
1
General Commands
■ bexpr
■ cdn_table
■ plot_piechart
■ plot_data
■ voltus_compare
■ write_db
■ compare_db
■ read_netlist
■ set_mbci_controls
■ write_template
bexpr
Boolean algebra version of Tcl expr command. Boolean expressions are created using
symbols/variables and operators (see below). Round brackets '()' can be used to group
expressions and force precedence.
Syntax
Functions
Example(s)
■ bexpr ((a+!b).(!b + c).(!a + !c))
■ bexpr pos(a + a.~b + b.!c) ;# show in POS form
■ bexpr leq((a + b), (a + !a . b))
■ bexpr leq((a . b), (c . d)) ;# will return 0
■ bexpr leq_isomorphic((a . b), (c . d)) ;# will return 1
■ set f1 "a + b" ; set f2 "a + ~a.b + !b.c"
■ bexpr contains($f1, $f2)
■ bexpr cof(a.b, a)
■ bexpr diff(a+b, b)
■ bexpr mutex((a.b), (!a.c), (!b.!c))
■ set f1 "(a+b).c" ; set f2 "(a+b).(c+!d)"
■ bexpr gcd($f1, $f2)
cdn_table
Creates a table in Cadence standard format with the specified list of lists.
Syntax
cdn_table [-table] $table \
[-validate]
[-get <row_idx> <col_idx>]
[-insert row|col <idx>]
[-replace row|col <idx1> [<idx2>]]
(<idx> = index where row/col will be inserted/replaced, for example 1,2, ..)
[-data <data>]
[-sort_by <col_id>]
[-scale table|row|col <scale_fac>+]
[-transpose]
[-compare <table1> <table2>]
[-cols <col_id>+]
[-extract <f_rpt>+]
[-lsep <regexp_pattern>]
[-row_range <idx1>[:<idx2>][,<idx3>]+]
[-col_range <idx1>[:<idx2>][,<idx3>]+]
[-stats row|col]
[-metrics {sum|avg|min|max|stddev|pct}+]
[-dump]
[-add_stats {{row|col|both}:{sum|pct|min|max|stddev}}+]
[-row_range <idx1>[:<idx2>][,<idx3>]]
[-col_range <idx1>[:<idx2>][,<idx3>]]
[-format <fmt>]
[-header <table_header>]
[-row_names <row_name>+]
[-col_names <col_name>+]
[-row_head left|right|skip]
[-col_head top|bot|skip]
[-line_sep {top|bot|left|right|all|skip}+]
[-prefix <string>]
[-widget]
[-win_title <window_title>]
[>|-out <f_dat>]
[-dump] Dump the contents of the table to either stdout or the specified
file.
[-add_stats] Add a row or column or both showing the specified statistics
(sum, percentage, minimum, maximum, standard deviation).
[-row_range] Suboption of -add_stats. Show statistics of the specified
range of rows.
[-col_range] Suboption of -add_stats. Show statistics of the specified
range of columns.
[-format] Format of the table, for example, "%.2f", "%.3e". By default, the
table is auto formatted based on the table data.
[-header] Specify the table header string.
[-row_names] List of row names. If not specified, the rows are named as r1, r2,
and so on.
[-col_names] List of column names. If not specified, the columns are named
as c1, c2, and so on.
[-row_head] Specify where to add row header. By default, it is placed on the
right.
[-col_head] Specify where to add column header. By default, it is placed on
the top.
[-line_sep] Specify where to add line separator(s).
[-prefix] Suboption of -line_sep. Specify the prefix for line separators.
This option applies to non data rows such as -line_sep, -
col_head, -line_sep, -header. The default value is "".
[-widget] Pop up smart table if running in GUI mode. The default value is
false.
[-win_title] Suboption of -widget. Specify the title of the smart table
widget.
[>|-out] Output the table in the specified file. By default, the output is
directed to stdout.
Example(s)
■ set table { {1 2 3 4 5} {11 12 13 14 15} {31 32 33 34 35} }
■ cdn_table $table -get 2 -1 ;# get 2nd row, returns: 11 12 13 14 15
■ cdn_table $table -get -1 3 ;# get 3rd col, returns: 3 13 33
■ cdn_table $table -get 2:3 3:5 ;# get sub-table, rows 2,3, and cols 3,4,5
■ cdn_table $table -validate ;# validate the table
■ set t2 [cdn_table $table -insert row 2 -data {21 22 23 24 25}]
■ cdn_table $t2 -replace col 3 -data {33 23 13 3}
■ cdn_table $table -scale table 1.5 ;# return table scaled by factor of 1.5
■ cdn_table $table -scale row 10.0 0.5 0.1 ;# return table by scaling r1 by 10,
r2 by 0.5, and r3 by 0.1
■ cdn_table $table -stats row -metrics sum avg min max pct ;# return table with
added stats
■ cdn_table $table -transpose ;# return transposed table
■ cdn_table $table -dump ;# dump the table
■ cdn_table $table -dump -add_stats both:sum # dump table w/ col and row sums
■ cdn_table -compare $table1 $table2 -cols "1 3:4" ;# compare cols 1, 3, 4 of
$table1 and $table2 both with same number of rows and cols
■ set triple [lindex [cdn_table -extract joules_work/joules.log] 0]
■ set row_names [lindex $triple 0] ; set col_names [lindex $triple 1]
■ set table [lindex $triple 2]
■ cdn_table $table -dump -row_names $row_names -col_names $col_names -prefix "#"
Return Value
plot_piechart
Plots data from a given data file in form of piechart.
Syntax
plot_piechart
[-data <f_data>]
[-chartcols <column>+]
[-chartlabels <chart-label>+]
[-labelcol <column>]
[-chartdata {{pie1 cat11:<val> cat12:<val> ...}{pie2 cat21:<val>
cat22:<val>...} ...}]
[-chartfont <font>]
[-labelfont <font>]
[-title <title>]
[-image <f_image>.<ext>]
[-save dir]
[-help|-h]
Extract the list of data for the piechart from the data file in the
format of category: value for the category
[-chartfont] Font for the piechart, for example, -chartfont lucidasans-bold-18.
[-labelfont] Font for the piechart labels, for example, lucidasans-14.
[-title] Title for the piechart.
[-image] Save the image in the file specified as filename.ext, where
the file extension can be jpg, png, gif or ps. The default extension
is ps.
[-save] Save the gnuplot command file in the specified directory.
Example(s)
■ Sample data file
# CDN_DATA_FORMAT_BEG
# Category Leakage Internal Switching Total
# CDN_DATA_FORMAT_END
memory 2.46300e-08 3.53839e-04 4.08240e-05 3.94688e-04
flop 1.82368e-08 9.91160e-05 6.18359e-05 1.60970e-04
logic 1.98244e-08 2.31849e-04 2.84305e-04 5.16174e-04
bbox 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00
clock 1.10521e-08 1.48320e-04 3.21670e-04 4.70001e-04
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
plot_data
Compares and plots data for two sets of data.
Syntax
plot_data -data f_data [-gold f_gold]
[-plot scatter|histogram|bell]
[-with {points|lines|linespoints|boxes}+]
[-compare f1:k1 f2:k2]
[-insert_png <f_png>]
[-location top_right|top_left|bot_right|bot_left]
[-shrink_range <min>:<max>]
[-xkey [file:]key]
[-ykey {[file:]key}+]
[-when {<expr>}+]
[-group_by [file:]key]
[-lckey {[file:]key}+]
[-yscale <list-of-scale-factors>]
[-key {[file:]key}+]
[-weight {file:key}+]
[-missing <string>]
[-fill_missing]
[-xrange x_from:x_to]
[-yrange y_from:y_to]
[-title title_string]
[-xlabel xlabel_string]
[-ylabel ylabel_string]
[-ykeylabel <list-of-ykey-labels>]
[-vlines {x_val[:line_width][:label]}+]
[-line_fit {cx:cy [<slope> <yintc>]}+]
[-xtics|-x2tics "('label1' x_val1, 'label2' x_val2, ...) [rotate by <val>]"]
[-other_plot_cmds {<gnuplot_cmd>}+]
[-image <f_image>.<ext>]
[-save dir]
[-bg]
Example(s)
■ plot_data -data sim1.data -xkey c2 -ykey c3 c4 -ylabel "Power" -image sim1.png
■ plot_data -data sim2.data -xkey c1 -ykey c2 -lckey c3 -xlabel "Simulation Time"
-xlabel "Power"
■ plot_data -data data -gold gold -compare data:c0 gold:c0
■ plot_data -data data -gold gold -ykey data:c2 gold:c3
■ plot_data -data data -plot histogram -key c2 -bin_size pct:0.01 ;# 100 bins
■ plot_data -data data -plot bell -key c1 -weight c2
■ plot_data -data data -gold gold -plot scatter -xkey data:c2 -ykey gold:c
■ plot_data -data data -xkey c1 -ykey c2 -when {{c5 == "and"} {c5 == "flop"}}
■ plot_data -data data -xkey c1 -ykey c2 -group_by data:c5
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
voltus_compare
Generates scripts and data necessary to run Voltus, extracts pin activity information,
compares it with Joules’ pin activity and generates comparison plots.
Syntax
voltus_compare \
[-stimulus <stim_id>]
[-generate script|data|both]
[-skip_compare]
[-skip_pin_list]
[-use_joules_tcf] (
[-nodes {<obj_type>[:<annotation_type>]}+]
obj_type = port|seq|comb|all
annotation_type = asserted|computed|all
[-duration <duration in ns>]
[-use_joules_slew] (
[-use_eps]
[-work_dir <work_dir>]
[-bname <script_basename>]
[-f_voltus_data <voltus_computed_activity_file>]
[-f_joules_data <joules_computed_activity_file>]
[-f_pin_list <pin_list_file>]
[-root <inst>+]
[-rtl_type
{memory|register|flop|latch|icgc|add|sub|mult|div|decoder|comp|shift|mmux|
buf|inv|and|nand|or|nor|xor|xnor|ao|aoi|oa|oai|mux|tri|tie|pad|fadd|hadd|
delay|iso|srpg|ls|els|ps}+]
[-rtl_group seq|macro|alu|dpx|logic|pm]
[-leaf_insts {<leaf_inst>}+]
[-pin_dir in|out|inout]
[-pin_type
{data|address|clock|enable|select|reset|set|scan|tie|rail|vdd|gnd|save|
restore}+]
[-pin_name <pin_name_regexp>]
[-max_points <num>]
[-compute_stats]
[-tolerance <frac>]
[-plot duty|toggle|all]
[-xrange x_from:x_to]
[-yrange y_from:y_to]
[-title title_string]
[-xlabel xlabel_string]
[-ylabel ylabel_string]
[-ykeylabel <list-of-ykey-labels>]
[-png <f_png>]
[-save <dir>]
Example(s)
Return Value
Also See
write_db
Writes the netlist to a database file or returns a Tcl list. Root attributes with non-default settings
can be included in the database.
Syntax
write_db
<design>
[-quiet]
[-all_root_attributes]
[-no_root_attributes]
[-verbose]
[-to_file <f_db>]
[-script <f_tcl>]
Example(s)
■ write_db -to_file joules.jdb ; # Write to a file
■ set jdb [write_db] ; # Write to a variable
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
compare_db
Compares two databases generated by Joules and highlights the difference in properties
such as drive strength and slack with the help of a plot.
Syntax
compare_db <f_jdb1> <f_jdb2> \
[-compute_stats]
[-f_stimulus <stimulus-file>]
[-top_instance <top-inst-path>]
[-plot_profile {ds|slack|all}+]
[-resolution <frac>]
[-ykey count|pct]
[-xrange <from>:<to>] )
[-yrange <from>:<to>] )
[-title <title-string>] )
[-png <f_png>]
[>|-out <f_data>]
If you are specifying any stimulus other than SDB with this
option, then specify the top instance of the stimulus with -
top_instance option.
[-top_instance] Suboption of -f_stimulus. Top module of stimulus mentioned
with -f_stimulus option.
[-plot_profile] The profile for the plot. This option can have one of the following
values:
■ ds - Plot for cell count vs driving strength will be generated.
■ slack - Plot for flop count vs slack will be generated.
■ all - Two plots will be generated, one each for:
❑ Cell Count vs Driving strength
❑ Flop Count vs Slack
By default, plot will be generated for the profiling of driving
strength.
[-resolution] Sampling interval while generating the plot.
Example(s)
■ compare_db cpu_10bit_proto.jdb cpu_10bit_synth.db -plot_profile ds slack
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
read_netlist
Reads (and elaborates) Structural Verilog (v2001) files.
Syntax
read_netlist [-top <string>] [-define <string>]+ <string>+
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
set_mbci_controls
Applies MBCI mapping controls in a cumulative way.
Syntax
set_mbci_controls \
[-min_bit_width <mbw>]
[-root <root_inst>+]
[-enable]
[-module <module>+]
[-inst <inst>+]
Example(s)
■ set_mbci_controls -min_bit_width 2 ; #Skip all single bit registers
■ set_mbci_controls -min_bit_width 5 -root /cpu_10bit/FSM ; #Also, under FSM,
skip registers less than or equal to 4 bits
■ set_mbci_controls -min_bit_width 7 -root /cpu_10bit/DP ; #Also, under DP, skip
registers less than 7 bits
■ set_mbci_controls -enable -inst {/cpu_10bit/DP/PC_reg/qout_reg[0:5]}; #Enable
6-bit register /cpu_10bit/DP/PC_reg/qout_reg[0:5]
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
write_template
Generates a template script with the commands and attributes needed to run Joules. Use the
command options to include specific commands and attributes in the script.
Syntax
write_template
[-n2n]
[-rtlstim2gate]
[-physical]
[-cpf]
[-clock_tree]
[-out <output-template-file-name>]
[-help|-h]
Example(s)
■ write_template
■ write_template -out template.txt
■ write_template -out template.txt -cpf
■ write_template -out template.txt -cpf -clock_tree
Return Value
2
Library Read and Analysis Commands
Note: In Joules terminology, library set and library domain are used interchangeably when
referring to libraries.
■ report_libs
■ compare_libs
■ get_libcells
■ plot_cell_sensitivity
■ plot_drive_profile
■ plot_lib_quality
■ get_libraries
■ read_libs
■ get_lib_domains
■ get_lib_param
■ set_lib_param
■ show_lib_params
■ get_cell_param
■ get_cell_pins
■ show_cell_info
■ get_cell_pin_type
■ report_libcells
■ show_cell_tables
■ tag_memory
■ infer_memory_cells
■ infer_x1_cell
■ compare_memory
■ scrub_library
report_libs
Reports the specified information about design libraries.
Syntax
report_libs \
[-domain <lib_domain>+]
[-name <lib_name_regexp>]
[-ldb_libpath [/libraries/][<domain>/]<lib>/+]
[-op_cond <opc>]
[-op_volt <val>] )
[-op_temp <val>]
[-cell_count <cnt> [<op>]]
(<op> :: eq|ne|lt|gt|le|ge, default=ge)
[-cols
{op_cond|op_volt|op_temp|cells|ldb_libpath|node|vt|domain|lib|rails|memory|
flop|icgc|latch|comb|seq|pm|avoid|area|delay|leakage_power}+]
[-cols_add
{node|vt|domain|lib|rails|memory|flop|icgc|latch|comb|seq|pm|avoid|area|
delay|leakage_power}+]
[-cols_del{op_cond|op_volt|op_temp|cells|ldb_libpath}+]
[-sort_by <col_title>]
[-out <f_dat>]
[-widget]
Example(s)
■ report_libs -cols volt temp cells
■ report_libs -ldb_libpath [get_libraries -op_volt 1.2 -full_path]
Return Value
Also See
compare_libs
Compares the plots data for two libraries.
Syntax
compare_libs \
[-ldb_libpath <x_ldb_libpath> <y_ldb_libpath>+]
[-lib <xlib> <ylib>+]
[-domain <lib_domain>]
[-prop leakage_power|internal_power|delay|transition|avg_ipin_cap]
[-force]
[-cells <cell>+]
[-cell_type
{memory|flop|latch|icgc|buf|inv|and|nand|or|nor|xor|xnor|ao|aoi|oa|oai|mux|
tri|tie|pad|fadd|hadd|delay|iso|srpg|ls|els|ps|scan|unknown}+]
[-cell_group {comb|seq|memory|pm}+]
[-name <cell_name_regexp>]
[-ipin_cnt <cnt>]
[-drive_strength <ds> <ds_margin>]
[-group_by {cell_type|ipin_cnt|drive_strength|none}+]
[-slew <slew>+]
[-max_slew_points <N>] )
[-load <load>+]
[-max_load_points <N>]
[-lut_idx_range_pct <%beg>:<%end>]
[-match_names <lib1_mask> <lib2_mask>]
[-plot scatter|ratio]
[-ignore_neg_points]
[-xrange <min>:<max>]
[-yrange <min>:<max>]
[-out <f_data>]
[-png <f_png>]
Example(s)
■ compare_libs -ldb_libpath [get_libraries -op_volt 1.2 -full_path]
Return Value
Also See
get_libcells
Returns cells that meet specific condition.
Syntax
get_libcells \
[-lib <library>]
[-domain <domain>]
[-ldb_libpath [/libraries/][<domain>/]<lib>/]
[-avoid true|false]
[-name <cell_name_regexp>]
[-cell_function {"<func-string>"}+]
[-cell_type
<memory|flop|latch|icgc|buf|inv|and|nand|or|nor|xor|xnor|ao|aoi|oa|oai|mux|
tri|tie|pad|fadd|hadd|delay|iso|srpg|ls|els|ps|scan|unknown>+]
[-cell_group <comb|seq|memory|pm>]
[-ipin_cnt <cnt>]
[-opin_cnt <cnt>]
[-bit_width <n>]
[-op eq|ne|gt|lt|ge|le]
[-drive_strength <ds> [<ds_margin>]]
[-sense <rise|fall|avg>]
[-slew <slew>] [-load <load>]
[-x1_cell <x1_cell>]
[-common <lib>+]
[-match_names <pat>+]
[-by_score]
[-weights {<prop>=<val>}+]
(<prop> = area|delay|transition|leakage_power|internal_power)
(default: area=1 delay=2 transition=1 leakage=1 internal=1)
[-cells_per_ds_cluster <num>]
[-pct_keep <pct>]
[-slew <slew>]
[-load <load>]
[-full_path]
You can also query libcells from specific library and library
domain as shown below:
By default, this option returns all cells from all library domains.
[-cell_function] Return libcells whose function matches user-specified function.
[-cell_type] Return list of libcells belonging to the specified type.
Default is eq.
[-drive_strength] Drive strength of the cell. By default, ds_margin is calculated as
+/- 10% of ds or +/- (0.1)*ds.
[-sense] Suboption of -drive_strength. Driving direction of the cell.
The default sense is the average of both rising and falling
directions.
[-slew] Suboption of -drive_strength. Slew value for the cell.
[-load] Suboption of -drive_strength. External fanout load and the
capacitance values of the cell.
[-x1_cell] Suboption of -drive_strength. X1 cell name.
[-common <lib>+] Report common cells in the specified list of libraries.
[-match_names <pat>+] Suboption of -common. Match the library names with the
specified pattern(s).
[-by_score] Return cells based on computed scores. The default value is
false.
[-weights] Suboption of -by_score. Compute score by <prop>=<val>.
[-cells_per_ds_cluster] Suboption of -common. Specify the number of cells per DS
cluster. The default value is 1.
[-pct_keep] Suboption of -common. Return top <pct> cells by score. The
default value is don't care.
[-slew] Suboption of -common. Slew value for the cell.
[-load] Suboption of -common. External fanout load and the
capacitance values of the cell.
[-full_path] Report the full name of libcell with library and domain
information. By default, this is set to false.
Example(s)
■ get_libcells -lib $lvt_lib -cell_type and # get a list of AND cells from LVT
library
■ get_libcells -lib slow -cell_type and -cell_function {a.b} # get cells of type
AND but exclude cells with function a.!b
■ get_libcells -cell_group comb -drive_strength 1.0 0.2 # get all x1
combinational cells (use DS margin of 20%)
■ get_libcells -cell_group comb -drive_strength 2:4 # get x2 to x4 AND cells
■ get_libcells -common slow typical -cell_type flop # get flops common in slow
and typical libraries
■ get_libcells -avoid false -cell_type buf -lib slow # get buffers marked avoid
= false from slow library
Return Value
Also See
plot_cell_sensitivity
Uses gnuplot to plot cell sensitivity, which is useful for trend analysis. Before running this
command, ensure that DISPLAY is set properly.
Syntax
plot_cell_sensitivity \
[-cells] <cell>+
[-show_all_arcs]
[-lib <library_name>] [-domain <domain>]
[-ldb_libpath [/libraries/][<domain>/]<lib>]
[-ldb_cellpath {[/libraries/][<domain>/][<lib>/]<cell>}+]
[-xkey slew|load]
[-ykey
cell_rise|cell_fall|trans_rise|trans_fall|delay|transition|slew_degradation|
internal_power]
[-zval <val>+]
[-png <f_png>]
[-xrange <min>:<max>]
[-yrange <min>:<max>]
[-save <dir>]
[-bname <tag>]
[>|-out <f_dat>]
This option works only with -cells option and can accept
single value /.lib.
[-domain] Plot sensitivity of cells in the specified domain.
[-ldb_libpath] Full vdir path of the library.
[-ldb_cellpath] Full vdir path of the cell.
[-xkey] Value to be display on X axis. The default is slew.
[-ykey] Value to be display on Y axis. The default is delay.
[-zval] List of load values for -xkey slew.
[-png] If specified, the generated sensitivity plot will be saved as the
specified PNG file.
[-xrange] Range (minimum and maximum) for the X axis.
[-yrange] Range (minimum and maximum) for the Y axis.
[-save] Save the gnuplot data/command files in the specified directory.
[-bname] Sub-option of -save. Basename for the gnuplot file. By default,
it is:
<dir>/<tag>_gnuplot.[cmd,data]
[>|-out] If specified, redirect the output of the command in the specified
file.
By default, the output of the command is dumped in
<work_dir>/<cell>_sens.data
If the specified file needs to be created in some other directory
then make sure the directory exists.
Example(s)
■ plot_cell_sensitivity BUFX1 -lib slow -xkey slew
■ plot_cell_sensitivity -cells BUFX2 -png bufx2_load_sens.png
■ plot_cell_sensitivity -cells BUFX1 BUFX2 BUFX3 BUFX4 -zval 0.050 ;# use
load=0.050 for each cell
Return Value
Also See
■ Library Read and Analysis in Joules User Guide.
plot_drive_profile
Plots the driving strength of design cells.
Syntax
plot_drive_profile
[-lib <library_name>+] [-domain <domain_name>+]
[-cells <cell>+]
[-ldb_libpath [/libraries/][<domain>/]<lib>]
[-ldb_cellpath {[/libraries/][<domain>/][<lib>/]<cell>}+]
[-cell_type
{flop|latch|icgc|comp|shift|buf|inv|and|nand|or|nor|xor|xnor|ao|aoi|oa|oai|
mux|tri|tie|pad|fadd|hadd|delay|iso|srpg|ls|els|ps|scan|unknown}+]
[-cell_group <comb|seq|pm>]
[-ipin_cnt <cnt>]
[-name <cell_name_regexp>]
[-by_score]
[-weights {<prop>=<val>}+]
(<prop> = area|delay|transition|leakage_power|internal_power)
[-cells_per_ds_cluster <num>]
[-pct_keep <pct>]
[-slew <slew>]
[-load <load>]
[-lines
area|delay|transition|leakage_power|internal_power|setup|hold|
slew_degradation|ipin_cap|max_cap]
[-pin_type {data|clock|enable|select|reset|set|scan|save|restore}]
[-slew <slew>]
[-load <load]
[-show_cell]
[-x1_cell <x1_cell>]
[-xrange <xmin>:<xmax>]
[-yrange <ymin>:<ymax>]
[-show_line_fit]
[-png <f_png>]
[-save <dir>]
[-bname <tag>]
prop=area|delay|transition|leakage_power|inter
nal_power
Example(s)
■ plot_drive_profile -cell_type inv -lines area leakage_power
■ plot_drive_profile -cell_type inv buf nand -lines area
■ plot_drive_profile -cell_type and -ipin_cnt 2 -lines area
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
plot_lib_quality
Plots waterfall chart of cell types and drive_strengths for a library.
Syntax
plot_lib_quality [-lib <library_name>+] [-domain <domain>+]
[-ldb_libpath [/libraries/][<domain>/]<lib>]
[-cell_type
{memory|register|flop|latch|icgc|add|sub|mult|div|decoder|comp|shift|mmux|
buf|inv|and|nand|or|nor|xor|xnor|ao|aoi|oa|oai|mux|tri|tie|pad|fadd|hadd|
delay|iso|srpg|ls|els|ps}+]
[-cell_group seq|dpx|logic|pm]
[-ipin_cnt <cnt>]
[-opin_cnt <cnt>]
[-design_context]
[-param cnt|area|power|leakage|internal]
[-ykey drive_strength|drive_res|leakage_power|internal_power]
[-x1_cell <x1_cell>]
[-yrange <ymin>:<ymax>]
[-png <f_png>]
[-save <dir>]
[-bname <tag>]
Example(s)
■ plot_lib_quality -lib slow -cell_group logic
■ plot_lib_quality -cell_type inv buf nand nor
■ plot_lib_quality -cell_type mux -save "./data" -bname mux ;# will save ./data/
mux_gnuplot.[cmd,data]
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
get_libraries
Returns the list of libraries (LIBs).
Syntax
get_libraries \
[-domain <domain_name>]
[-name <lib_name_regexp>]
[-files <src_file_path>+]
[-op_volt|-op_temp|-op_cond|-node|-vt <val>]
[-cell_count <num> [<op>]]
(<op> :: eq|ne|lt|gt|le|ge, default=ge)
[-full_path]
Example(s)
■ get_libraries ; # get list of ALL libraries
■ get_libraries -name "*LVT*" ; # get a LVT library
■ get_libraries -name "*HVT*"; # get a HVT library
■ get_libraries -name "^p*" # get library name starting with p
Return Value
Also See
■ Library Read and Analysis in Joules User Guide.
read_libs
Reads a list of libraries into Joules.
Syntax
read_libs [-libs] <path-to-lib>+ \
[-flist <file_with_list_of_LIBs>]
[-domain <domain-name>]
[-infer_memory_cells]
[-node <text>]
[-vt <text>]
[-skip_libscore]
[-quiet]
Example(s)
■ set_attribute lib_search_path /path/to/libs
■ read_libs typical.lib ;# goes to 'default' domain
■ read_libs hvt_slow.lib hvt_fast.lib -domain hvt
■ read_libs lvt_slow.lib lvt_fast.lib -domain lvt
Return Value
Also See
■ Library Read and Analysis in Joules User Guide.
get_lib_domains
Returns the list of library domains read into Joules.
Syntax
get_lib_domains \
[-name <glob>]
[-nocase]
[-invert]
Example(s)
■ get_lib_domains ; # get list of ALL library domains
■ get_lib_domains -name "*1p2*" ; # get a LVT/HVT library
■ get_lib_domains -name "1P2" -nocase -invert ; # get a LVT/HVT library
Return Value
Also See
■ Library Read and Analysis in Joules User Guide.
get_lib_param
Returns queried library parameter.
Syntax
get_lib_param \
[-lib <library_name>] [-domain <domain_name>]
[-ldb_libpath [/libraries/][<domain>/]<lib>]
[-unit <voltage|current|time|slew|energy|area|delay|power|res[istance]|
cap[acitance]>]
[-default op_cond|power_rail|max_fanout|max_trans|wire_load|wlm]
[-power_rails]
[-rail_voltage <rail_name>]
[-op_conds]
[-pvt <op_condition_name>]
[-op_slew|-op_load|-op_rail|-x1_cell|-node|-vt]
[-area|-avg_ipin_cap|-max_load|-max_fanout]
[-avoid]
(use following options to select list of cells)
[-cells <cell>+]
[-cell_type
<memory|flop|latch|icgc|buf|inv|and|nand|or|nor|xor|xnor|ao|aoi|oa|oai|
mux|tri|tie|pad|fadd|hadd|delay|iso|srpg|ls|els|ps|scan|unknown>+]
[-cell_group <comb|seq|memory|pm>+]
[-drive_strength <ds> <ds_margin>]
[-delay|-transition|-slew_degradation|-internal_power|-leakage_power|
-rf_ratio|-setup|-hold|-recovery|-removal|-min_pulse_width]
(use following options to further qualify param values)
[-sense rise|fall|avg]
[-constr rise|fall]
[-slew <slew>]
[-load <load>]
[-rail <power_rail_name>]
[-files]
Return the slew value, load, rail, and x1 cell set using
set_lib_param command
[-area|-avg_ipin_cap|-max_load|-max_fanout]
Example(s)
■ get_lib_param -lib $hvt_lib -avg_ipin_cap -cell_type inv ; # what is the avg
pin cap of all INV cells in the HVT library
Return Value
Also See
■ Library Read and Analysis in Joules User Guide.
set_lib_param
Sets a parameter on a library.
Syntax
set_lib_param [-lib <library_name>] [-domain <library_domain>]
[-ldb_libpath [/libraries/][<domain>/]<lib>]
[-op_rail <operating_rail>]
[-op_slew <operating_slew>]
[-op_load <operating_load>]
[-x1_cell <x1_cell_name>]
[-unit <voltage|current|time|slew|delay|power|res[istance]|cap[acitance]>]
[-node <node_name>]
[-vt <vt_name>]
[-avoid true|false]
Example(s)
■ set_lib_param -lib $lvt_lib -unit power uW ; # set LVT library power unit to
uW (micro watt)
■ set_lib_param -node 28nm|65nm ; # estimate power across two tech nodes
Return Value
Also See
■ Library Read and Analysis in Joules User Guide.
show_lib_params
Shows summary information for specified library.
Syntax
show_lib_params [-libs <lib>+] [-domain <domain>]
[-ldb_libpath {[/libraries/][<domain>/]<lib>}+]
[-groups {unit|default|op_set|lib_params|cell_params}+]
[-lib_params {power_rails|op_conds|rail_voltages|pvts}+]
[-cell_params
{area|delay|transition|internal_power|leakage_power|hold|recovery|removal|
min_pulse_width|slew_degradation|rf_ratio|setup|avg_ipin_cap|max_load|
max_fanout}+]
[>|-out outfile]
Default:
Default:
power_rails op_conds
[-cell_params] Show information for specified cell parameters.
Default:
Example(s)
■ show_lib_params -lib slow -out slow.params
Return Value
Also See
■ Library Read and Analysis in Joules User Guide.
get_cell_param
Returns cell parameter values.
Syntax
get_cell_param [-cell] <cell_name>
[-owning_lib|-all_owning_libs]
[-full_path]
[-lib <library_name>]
[-domain <lib_domain_name>]
[-ldb_libpath [/libraries/][<domain>/]<lib>]
[-ldb_cellpath [/libraries/][<domain>/][<lib>/]<cell>]
[-avoid|-function|-cell_type]
[area|-max_cap|-max_fanout]
[-ipin_cap <input_pin>]
[-avg_ipin_cap]
[-load_threshold]
[-slew_margin <frac>]
[-ipin <input_pin>] [-opin <output_pin>]
[-delay|-transition|-slew_degradation|-internal_power|-leakage_power|
-rf_ratio|-setup|-hold|-recovery|-removal|-min_pulse_width|-retaining|
-retain_slew]
[-ipin <input_pin>] [-opin <output_pin>]
[-sense rise|fall|avg]
[-constr rise|fall]
[-related_pins]
[-when_conditions]
[-slew <slew>]
[-load <load>]
[-cond <condition>]
[-rail <power_rail_name>]
[-drive_strength | -drive_res]
[-sense <rise|fall|avg>]
[-slew <slew>] [-load <load>]
[-x1_cell <x1_cell>]
[-allow_cross_lib_compare]
[-score]
[-weights {<prop>=<val>}+]
(<prop> = area|delay|transition|leakage_power|internal_power|)
[-slew <slew>] [-load <load>]
[-x1_cell <x1_cell>]
[-allow_cross_lib_compare]
[-lut_values <slew|load>]
[-ipin <input_pin>] [-opin <output_pin>]
[-table_type
cell_rise|cell_fall|trans_rise|trans_fall|rise_power|fall_power|
retaining_rise|retaining_fall|retain_slew_rise|retain_slew_fall]
Suboption of -load_threshold.
Default values:
area=1 delay=2 transition=1 leakage=1 internal=1
■ -slew
■ -load
■ -x1_cell
Example(s)
■ get_cell_param AOI2BB2X2 -function ;# get cell function
■ get_cell_param BUFX1 -lut_values slew # get lut slew values for BUFX1
■ get_cell_param FD2SQX4_D -setup -sense rise -constr rise -ipin D
■ get_cell_param FD2SQX4_D -hold -sense fall -constr rise -ipin D
■ get_cell_param FD2SQX4_D -recovery -sense rise -constr fall -ipin CD
■ get_cell_param -cell ADDFHX2 -domain lib_1p08v -area
Return Value
Also See
■ Library Read and Analysis in Joules User Guide.
get_cell_pins
Returns a list of cell pins.
Syntax
get_cell_pins \
-cell <cell_name>
[-lib <lib_name>]
[-domain <domain_name>]
[-ldb_libpath [/libraries/][<domain>/]<lib>] (
[-ldb_cellpath [/libraries/][<domain>/][<lib>/]<cell>]
[-name <pin_name_regexp>]
[-direction <input|output|inout|any>]
[-pin_type
<data|address|clock|enable|select|reset|set|scan|tie|rail|vdd|gnd|save|
restore>]
[-bus]
[-arcs]
Example(s)
■ get_cell_pins -cell $and_cell -lib $lvt_lib -direction input ; # get a list of
input pins of a cell
Return Value
Also See
■ Library Read and Analysis in Joules User Guide.
show_cell_info
Shows summary information for specified cell. If an x1_cell is specified, then drive strength
of the cell w.r.t. the specified x1_cell will be shown.
Syntax
show_cell_info \
[-cell] <cell> [-lib <lib>] [-domain <domain>]
[-ldb_libpath [/libraries/][<domain>/]<lib>]
[-ldb_cellpath [/libraries/][<domain>/][<lib>/]<cell>]
[-x1_cell <x1_cell>]
Example(s)
■ show_cell_info -cell BUFX1
■ show_cell_info -cell BUFX4 -lib $lib -x1_cell $x1_cell
Return Value
Also See
■ Library Read and Analysis in Joules User Guide.
get_cell_pin_type
Returns pin type for specified cell pin.
Syntax
get_cell_pin_type [-pin] <pin_name>
-cell <cell_name>
[-lib <lib_name>]
[-domain <domain>]
[-ldb_libpath [/libraries/][<domain>/]<lib>]
[-ldb_cellpath [/libraries/][<domain>/][<lib>/]<cell>]
Example(s)
■ get_cell_pin_type D -cell $flop_cell -lib $slow_lib ; # get pin type for the D
pin of a cell
Return Value
Also See
■ Library Read and Analysis in Joules User Guide.
report_libcells
Generates a tabular report for specified cells.
Syntax
report_libcells \
[-lib <lib_name>] [-domain <lib_domain>]
[-cells <cell>+]
[-ldb_libpath [/libraries/][<domain>/]<lib>]
[-ldb_cellpath {[/libraries/][<domain>/][<lib>/]<cell>}+]
[-name <cell_name_regexp>]
[-cell_type
<memory|flop|latch|icgc|buf|inv|and|nand|or|nor|xor|xnor|ao|aoi|oa|oai|mux|
tri|tie|pad|fadd|hadd|delay|iso|srpg|ls|els|ps|scan|unknown>+]
[-cell_group <comb|seq|memory|pm>]
[-drive_strength <ds> <ds_margin>]
[-sense <rise|fall|avg>]
[-slew <slew>]
[-load <load>]
[-x1_cell <x1_cell>]
[-ipin_cnt <num>]
[-opin_cnt <num>]
[-bit_width <n>]
[-op eq|ne|gt|lt|ge|le]
[-cols
{avoid|drive_strength|load_threshold|rf_ratio|avg_ipin_cap|max_cap|
max_fanout|pin_cnt|ipin_cnt|opin_cnt|bit_width|rail_cnt|area|cell_type|
function|delay|transition|slew_degradation|internal_power|leakage_power|
setup|hold|score}+]
[-cols_add
{max_fanout|pin_cnt|opin_cnt|bit_width|rail_cnt|cell_type|function|delay|
transition|slew_degradation|internal_power|leakage_power|score}+]
[-cols_del
{area|ipin_cnt|drive_strength|max_cap|load_threshold|avg_ipin_cap|rf_ratio}
+]
[-slew_margin <frac>]
[-weights {<prop>=<val>}+]
(<prop> = area|delay|transition|leakage_power|internal_power)
[-infer_x1_cell_per_cell_type]
[-ds_margin <frac>]
[-sort_by <col_title>]
[-out <f_dat>]
[-widget]
Default is eq.
[-cols] Columns to show in the report.
[-cols_add] Columns to add to the default columns.
[-cols_del] Columns to delete from the default columns.
[-slew_margin] Applies to load_threshold. The default slew_margin is 0.0.
<prop>=<val>
Default is:
Infer x1_cell for each cell type. Drive strength of the x1_cell
should not be greater than the -ds_margin option given below.
Default is false.
[-ds_margin] Sub-option of -infer_x1_cell_per_cell_type.
Example(s)
■ report_libcells -cell_type buf -lib slow -cols drive_strength load_threshold
rf_ratio
■ report_libcells -cells [get_libcells -cell_type flop]
Return Value
Also See
■ Library Read and Analysis in Joules User Guide.
show_cell_tables
Displays specified cell table.
Syntax
show_cell_tables \
[-cell] <cell> [-lib <lib>] [-domain <domain>]
[-ldb_libpath [/libraries/][<domain>/]<lib>]
[-ldb_cellpath [/libraries/][<domain>/][<lib>/]<cell>]
[-ipin <input_pin>+]
[-opin <output_pin>+]
[-table_type
{cell_rise|cell_fall|trans_rise|trans_fall|rise_power|fall_power}]+
[-delay|-transition |-internal_power|-drive_res]
[-sense rise|fall||avg|both]
[-mode avg|max|min]
[-slew <slew>+]
[-load <load>+]
[-out <outfile>]
Example(s)
■ show_cell_tables BUFX1 -table_type trans_rise trans_fall
■ show_cell_tables BUFX4 -drive_res -sense both
Return Value
Also See
■ Library Read and Analysis in Joules User Guide.
tag_memory
Tags (annotate) information on the memory.
Syntax
tag_memory \
[-cell] <cell>
[-lib <lib>]
[-domain <domain>]
[-ldb_libpath [/libraries/][<domain>/]<lib>]
[-ldb_cellpath [/libraries/][<domain>/][<lib>/]<cell>]
[-clock <glob_clock_port>]
-addr <glob_rd_addr_port>+
[-rd_addr <glob_rd_addr_port>+]
[-wr_addr <glob_wr_addr_port>+]
-mem_enable <glob_rd_enable_port>+
-wr_enable <glob_wr_enable_port>+
-din <glob_data_in_port>+
[-dout <glob_data_out_port>+]
[-depth num]
[-width num]
Example(s)
■ tag_memory CDK_S256x12 \
-addr ADDR* -din DATA_IN -clock CLOCK \
-wr_enable WR_EN* -mem_enable ENABLE \
-depth 256 -width 12
Return Value
Also See
infer_memory_cells
Infers memory cells from library.
Syntax
infer_memory_cells \
[-tag_as_memory]
[-memory2cell_area_multiple <factor>]
[-base_cell <cell>]
[-min_word_width <integer>]
[-min_addr_width <integer>]
[-match_rom]
[-lib <lib_name>]
[-domain <domain_name>]
[-ldb_libpath [/libraries/][<domain>/]<lib>/] )
[-name <cell_name_regexp>]
Example(s)
■ infer_memory_cells -name {CDK_*}
■ infer_memory_cells -memory2cell_area_multiple 200 -base_cell DFFX1
Return Value
Also See
■ Library Read and Analysis in Joules User Guide.
infer_x1_cell
Searches the design library for probable X1 cells
Syntax
infer_x1_cell [-lib] <lib_name> [-domain <domain>] \
[-ldb_libpath [/libraries/][<domain>/]<lib>/]
[-has_xl_cell]
[-use_cell_types
{memory|flop|latch|icgc|comp|shift|buf|inv|and|nand|or|nor|xor|xnor|ao|aoi|
oa|oai|mux|tri|tie|pad|fadd|hadd|delay|iso|srpg|ls|els|ps|scan|unknown}+]
[-force]
Example(s)
■ infer_x1_cell -lib $lvt_lib
Return Value
Also See
■ Activity Processing and Reporting in Joules User Guide.
compare_memory
Compares two libraries of the same memory, presumably characterized for different corners.
Syntax
compare_memory \
[-ldb_libpath <x_ldb_libpath> <y_ldb_libpath>+]
[-lib <xlib> <ylib>+] [-domain <lib_domain>]
[-cells <cell>+]
[-name <cell_name_regexp>]
[-match_names <lib1_mask> <lib2_mask>]
[-arc_prop
delay|transition|internal_power|setup|hold|recovery|removal|min_pulse_width]
[-sense {rise|fall|avg|both}]
[-constraint {rise|fall|avg}]
[-slew <slew>]
[-load <load>]
[-cols {prop|pin|related_pin|slew|load|sense|constraint|rail|when}+]
[-diff_threshold <pct>]
[-out <f_data>]
-arc_prop
setup|hold|recovery|removal|pulse_width
[-slew] Use the specified slew for comparison.
[-load] Use the specified load for comparison.
[-cols] List specified columns in the comparison table. By default, the
following columns are listed:
Example(s)
■ compare_memory -arc_prop setup -cells RAM16Kx32 -ldb_libpath $libpath1
$libpath2 -diff_threshold 0.05 ;# show setup variance with diff > 5%
■ compare_memory -arc_prop delay -cells RAM8Kx16 -ldb_libpath $libpath1
$libpath2 -diff_threshold 0.05 -cols prop pin related_pin slew load -arc_prop
delay -out joules_work/compare_memory.rpt
Return Value
Also See
scrub_library
Scores cells in a library and selects the best cells.
■ Scores are computed based on cell area, delay, transition, leakage_power,
internal_power values and weights specified using -weights option.
■ By default, cells are bucketized by cell type and input pin count. Use -buckets option
to change this.
■ Cells in each bucket are clustered by their drive_strength. By default, cell with highest
score is kept. Use -cells_per_ds_cluster or -pct_keep option to change this.
■ If -buckets option is used, you can use -per_bucket_cells_per_ds_cluster or
-per_bucket_pct_keep options to specify cells_per_ds_cluster and pct_keep values
for each specified bucket.
■ Script file with cell dont_use commands is generated in joules_work/
dont_use_<lib_name>.tcl, where <lib> = logical name of the library. Use the -
f_script option to change this.
Syntax
scrub_library \
[-handle <handle>]
[-work_dir <work_dir>]
[-set]
[-lib <library_name>+] [-domain <domain_name>+]
[-ldb_libpath [/libraries/][<domain>/]<lib>]
[-cell_type
{memory|flop|latch|icgc|comp|shift|buf|inv|and|nand|or|nor|xor|xnor|ao|
aoi|oa|oai|mux|tri||pad|fadd|hadd|delay|iso|srpg|ls|els|ps|scan|unknown}
+]
[-cell_group <comb|seq|memory>]
[-ipin_cnt <cnt>[:<cnt2>][,<cnt3>]]
[-weights {<prop>=<val>}+]
(<prop> = area|delay|transition|leakage_power|internal_power)
[-cells_per_ds_cluster <num>]
[-pct_keep <pct>]
[-buckets {<cell_type>[:<ipin_cnt>]}+]
(<cell_type> =
memory|flop|latch|icgc|comp|shift|buf|inv|and|nand|or|nor|xor|xnor|ao|
aoi|oa|oai|mux|tri||pad|fadd|hadd|delay|iso|srpg|ls|els|ps|scan|unknown)
[-per_bucket_cells_per_ds_cluster <num>+]
[-per_bucket_pct_keep <pct>+]
[-f_config <file>]
[-scrub]
[-handle <handle>]
[-pset <pset>]
[-f_config <file>]
[-x1_cell <x1_cell>]
[-slew <slew>]
[-load <slew>]
[-force]
[-action script|live]
[-mark avoid|keep|both]
[-f_script <file>]
[-report summary|table|both]
[-handle <handle>]
[-f_report <file>]
[-append]
[-plot {lib_quality|drive_profile}+]
[-handle <handle>] )
[-pset <pset>]
[-lines {<param>[:<ltype>]}+]
<param> = area|delay|transition|leakage_power|internal_power
<ltype> = orig|scored|both
[-buckets {<cell_type>[:<ipin_cnt>]}+]
(<cell_type> =
memory|flop|latch|icgc|comp|shift|buf|inv|and|nand|or|nor|xor|xnor|ao|
aoi|oa|oai|mux|tri||pad|fadd|hadd|delay|iso|srpg|ls|els|ps|scan|unknown)
[-show_cell]
<cell_type>[:<ipin_cnt>]
[-per_bucket_cells_per_ds_cluster]
For example, for a library with 150 cells, the tool may decide 50
cells should be marked avoid. In that case,
■ -mark avoid : will only mark 50 cells as avoid = true
■ -mark keep: will mark 100 cells as avoid = false
■ -mark both: will mark 50 cells as avoid = true, and 100
cells avoid = false
[-f_script] Sub-option of -action. Specify script file. Default file is
joules_work/dont_use_cells.tcl.
[-report] Specify the type of scrub report - summary, table, or both.
Default is summary.
[-handle] Sub-option of -report. Scrub run handle.
[-f_report] Sub-option of -report. Specify report file.
[-append] Sub-option of -report. Append if file exists. Applies to both -
f_script and -f_report. By default, the file is overwriten.
[-plot] Specify library quality or drive_profile to plot scrub results.
[-handle] Sub-option of -plot. Scrub run handle.
[-pset] Sub-option of -plot. Plot specified pset.
[-lines] Sub-option of -plot. Specify plot lines. Applies to -plot
drive_profile.
Example(s)
■ # Step 1. set scrub params and associate a handle
scrub_library -handle slow_flop -set -lib slow -cell_type flop -
cells_per_ds_cluster 2
■ # Step 2. do the scrubbing
scrub_library -handle slow_flops -scrub
■ # Step 3. generate avoid script
scrub_library -handle slow_flops -action script -f_script avoid_flops.tcl
■ # Step 4. report scrub results
scrub_library -handle slow_flops -report summary table
■ # Step 5. plot scrub results
scrub_library -handle slow_flops -plot
Return Value
Also See
3
Design Read and Elaboration Commands
■ read_hdl
■ read_power_intent
■ elaborate
read_hdl
Reads in Verilog or VHDL files.
Syntax
read_hdl [-vhdl] [-v1995] [-v2001] [-sv] [-library <string>] [-netlist] [-define
<string>]+ [<string>+] [-f <string>]
Return Value
Also See
■ Design and Power Intent - Read and Elaboration in Joules User Guide.
read_power_intent
Reads the power intent files for a design.
Syntax
read_power_intent [-module <string>] [-1801] [-cpf] [-version <string>]
<string>+
Return Value
Also See
■ Design and Power Intent - Read and Elaboration in Joules User Guide.
elaborate
Creates the design hierarchy. Use this command after:
❑ Reading the library and creating necessary library domains
❑ Reading the HDL design
❑ Reading the power intent
Syntax
elaborate [<top_module>] \
[-parameters { <tuple>+ }]
[-libpath <string>]+
[-libext <string>]+
Example(s)
■ elaborate -parameters {5 1} ; #Set a top-level parameter by positions.
■ elaborate -parameters { {FOO 1} {BAR 5} } ; #Set a top-level parameter by names.
■ elaborate -libpath {LIBp LIBq} -libext {.vp .vq} ; #Set a library path.
Return Value
Also See
■ Design and Power Intent - Read and Elaboration in Joules User Guide.
4
Power Intent Commands
■ get_domain_power
■ get_power_domains
■ get_power_modes
■ get_cell_power
get_domain_power
Returns leakage, internal, switching, and total power for specified power and clock domains.
Syntax
get_domain_power -clock_domain <prim-clock-net>|-power_domain <prim-clock-net>
[-frame <frame_id>]
[-power_mode <power_mode>]
[-power_rail <power_rail>]
[-category memory|register|latch|logic|bbox|clock|pad|pm]
[-add_clkpin_power]
[-skip_port_switching_power]
Example(s)
■ get_domain_power -clock_domain /cpu_10bit/clk -power_mode pwr_all_on
■ get_domain_power -power_domain PD_fsm -category logic
Return Value
Also See
get_power_domains
Returns power domains in the design.
Syntax
get_power_domains [-root] <design>+
Example(s)
■ get_power_domains ; # get power domains for current design
■ get_power_domains -root /cup_10bit
Return Value
Also See
■ Clock Gating in Joules User Guide.
get_power_modes
Returns power modes in the design.
Syntax
get_power_modes [-design] <design>+
Example(s)
■ get_power_modes ; return power modes for current design
■ get_power_modes -design /cup_10bit
Return Value
Also See
■ Power Structures in Design in Joules User Guide.
get_cell_power
Returns cell power in the following format:
Syntax
get_cell_power [-cell <cell_name>]
[-lib <library_name>]
[-domain <lib_domain_name>]
[-ldb_libpath [/libraries/][<domain>/]<lib>]
[-ldb_cellpath [/libraries/][<domain>/][<lib>/]<cell>]
[-slew \{\{<ipin>|default\}:<val>\}+]
[-load \{\{<opin>|default\}:<val>+\}+]
[-activity \{\{<pin>|default\}:<duty>:<freq>\}+]
Example(s)
■ get_cell_power AOI2BB2X2 -activity {default:0.5:5000}
■ get_cell_power AOI2BB2X2 -activity {{A0:0.25:2500} {default:0.5:5000}} -slew
{{A0:30} {default:12}}
Return Value
Also See
■ Power Structures in Design in Joules User Guide.
5
Simulation and SDB Creation Commands
■ read_stimulus
■ write_sdb
■ write_sdb
■ write_fsaif
■ rtlstim2gate
■ set_sdb_alias
■ get_sdb_alias
■ delete_sdb
read_stimulus
Reads stimulus into Joules and creates SDB.
Syntax
read_stimulus [-file] <stimulus-file-name>
[-dut_instance <dut-inst-name>]
[-design_root <top_design_name>]
[-tb_design_tuple <{dut_instance design_root}>]
[-format vcd|shm|phy|fsdb|saif|tcf|sdb]
[-start <window-start-time>]
[-end <window-end-time>]
[-append]
[-interval_size <time-val>]
[-interval_list <{<time-val>[:<time-val>]}+>]
<time-val> = <num>[<unit>] (e.g. 5ns, 5e-9)
<unit> = ms|us|ns|ps|fs
[-cycles <num> <design_signal_name>[<edge_type>]]
(extract frames of size = <num> * period of specified signal)
(edge_type=pos|neg|none)
[-frame_count <cnt>]
[-compat voltus|pt]
[-alias <alias_name>]
[-ignorecase]
[-allow_n_nets]
[-trace_arcs <mem|icgc|all>+]
[-arc_counting_method <at_eot|at_event>]
[-filter_zero_delay_glitch]
[-dump_sdb <num>]
[-master_slave]
[-scrub_prep]
[-resim_cg_enables]
[-report_missing_signals <all|design|stim|none>]
[-out <report_file_name>]
[-help|-h]
Tb (module testbench)
M1 (module foo)
M2 (module car)
B1 (module bar)
[-interval_size] Divide the stimulus into frames of the specified interval size;
average activity of signals over each interval will be computed
and saved in SDB. This option, in conjunction with –start and
-finish options, would determine the number of frames
extracted from the stimulus.
For example,
[-cycles] Using this option, you can extract frames based on number of
cycles of a specified signal. A cycle is a pair of rise and fall (or
fall and rise) transitions of the signal. This is intended to be used
in conjunction with repetitive signals such as a clock. If the
specified signal is a clock, the extracted frames will be of the
same size. If the signal is not a clock (for example, memory
write_enable), the frame sizes will likely be different.
For example,
[-filter_zero_delay_glitch]
Example(s)
■ read_stimulus cpu_10bit_pgm_hash.vcd -dut_instance /cpu_10bit_tb/CPU
■ read_stimulus -file cpu_10bit_pgm_gcf.fsdb -start 10ns ;# infer -dut_instance
■ read_stimulus cpu_10bit_pgm_gcf.fsdb -append ;# append mode
■ read_stimulus -file ./trace.phy -dut_instance /CPU
■ read_stimulus -file ./trace.phy -start 10ns
■ read_stimulus cpu_10bit_pgm_hash.vcd -interval_size 20ns # extract fixed sized
frames
■ read_stimulus cpu_10bit_pgm_hash.fsdb -interval_list 10ns 25ns 35ns 60ns #
extract contiguous variable sized frames
■ read_stimulus cpu_10bit_pgm_hash.vcd -interval_list 10ns:20ns 40ns:65ns
85ns:100e-9 # extract non contiguous variable sized frames
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
write_sdb
Writes out all in-memory frames onto the disk.
Syntax
write_sdb \
[-stims <stim_id>+]
[-frames <frame_id>+]
[-average]
[-merge]
[>|-out <output-sdb-file-name>]
Example(s)
■ write_sdb ; # create joules_work/joules.sdb (default SDB file name) with all
frames from all stims
■ write_sdb -out cpu_10bit.sdb ; # create ./cpu_10bit.sdb with all frames from
all stims
■ write_sdb -average -out cpu_10bit.sdb ; # create average of all frames from all
stims and write to file ./cpu_10bit.sdb
■ write_sdb -stims {/stim#5} ; # create an sdb file with all frames from /stim#5
■ write_sdb -average -frames {/stim#1/frame#1 /stim#2/frame#3} -out
cpu_10bit.sdb ; # create average of /stim#1/frame#1, /stim#2/frame#3 and write
to the file ./cpu_10bit.sdb
■ write_sdb -merge -frames {/stim#1/frame#1 /stim#2/frame#3} -out cpu_10bit.sdb
; # Merge /stim#1/frame#1 and /stim#2/frame#3 and write to the file ./
cpu_10bit.sdb
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
write_fsaif
Writes the library forward SAIF file. This file contains the state-dependent and path-
dependent (SDPD) directives needed to generate backward SAIF files during simulation.
Syntax
write_fsaif \
[-root <design|instance>]
[-design_state <elab|mapped>]
[-rtl_nodes {<obj_type>[:<port_type>]}+]
obj_type = port|memory|flop|icgc|latch|seq|bbox|logic|all
port_type = input|output|all
[-hier_separator <separator>]
separator = .|/ (default : /)
[-sdpd {<cell_type>}+ ]
cell_type =
memory|flop|latch|icgc|hadd|fadd|mux|inv|buf|and|nand|or|nor|xor|xnor|ao|
aoi|oa|oai|ls|els|iso|pad|tri|tie|srpg
[-lib <lib>+]
[-domain <domain>+
[-dut_instance <dut-inst-name>]
[-rtl_out <output-rtl-fsaif-file-name>]
[-sdpd_out <output-sdpd-fsaif-file-name>]
[-lib] Specify the list of libraries for which to generate the forward
SAIF information.
For RTL forward SAIF file, only the instances whose library cells
exist in the specified library are written in the forward SAIF file.
For SDPD forward SAIF file, only the library cells from the
specified library are written in the forward SAIF file.
If not specified, the information is generated for all libraries that
are loaded.
[-domain] Specify the path to the library domain containing the libraries for
which to generate the forward SAIF information.
For RTL forward SAIF file, only the instances whose library cells
exist in the specified library domain are written in the forward
SAIF file.
For SDPD forward SAIF file, only the library cells from the
specified library domain are written in the forward SAIF file.
Example(s)
■ write_fsaif ;# create joules_work/joules_SDPD.forward_saif joules_work/
joules_RTL.forward_saif (default SAIF file name)
■ write_fsaif -root /cpu_10bit -sdpd_out cpu.forward_saif;# create forward
cpu.forward_saif
■ write_fsaif -lib slow.lib typical.lib -domain ld1 -sdpd_out ld1.forward_saif
■ write_fsaif -rtl_nodes memory:output flop:all port:all -rtl_out
rtl.forward_saif
■ write_fsaif -rtl_nodes memory:output flop:all port:all -rtl_out
rtl.forward_saif -dut_instance cpu_10bit_inst
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
rtlstim2gate
Allows name mapping support with Joules. Sets separate naming rules for simulation/
emulation and implementation (synthesis/P&R). The naming rules mimic the common RTL
name transformations.
Syntax
rtlstim2gate \
[-init <f_elab_db>]
[-tcl <f_elab_tcl>]
[-keep_libraries]
[-map_file <f_conformal_map>]
[-hier_separator <char>]
[-golden rtl|gate]
[-force_qn_invert]
[-rule <type> <format>]
[-get]
[-target syn|sim]
<type> =
ungroup|reg_ext|bit_slice|array_slice|hier_slice|generate|record|proc|
flop_slice
<format> = string format
To
Example(s)
■ rtlstim2gate -init ./joules_work/cpu_10bit.elab.db ;# initialize rtlstim2gate
■ rtlstim2gate -rule ungroup "%s/%s" ;# ungrouping rule
■ rtlstim2gate -rule reg_ext "%s_reg%s" ;# register name extension rule
■ rtlstim2gate -rule bit_slice {[%s]} ;# bit slicing rule
■ rtlstim2gate -rule array_slice {[%s]} ;# array (except LSB) slicing rule
■ rtlstim2gate -rule generate "%s.%s" ;# generate statement expansion rule
■ rtlstim2gate -rule flop_slice {[%s] _%s_} ;# flop slice expansion rule
■ rtlstim2gate -rule proc "my_custom_rename" ;# custom renaming proc
my_custom_rename { type name hierarchy }
Return Value
Also See
■ Using rtlstim2gate on Netlist in Joules User Guide.
set_sdb_alias
Assigns alias names for the stims and frames. After assigning alias names to the stims or
frames, you can use the alias names as arguments to all commands that accept stim ID or
frame ID as an argument.
Syntax
set_sdb_alias
[-alias <alias-name>]
[-stim <stim-id>]
[-frame_bname <frame-bname>]
[-frame_seperator <frame-seperator>]
[-frame_idx_start <frame-idx-start>]
[-frame_idx_incr <frame-idx-incr>]
[-frame <frame-id>]
Example(s)
■ set_sdb_alias -alias /gcf -stim /stim#1; /stim#1 can be referenced using /gcf
■ set_sdb_alias -alias /gcf/idle -frame /stim#1/frame#20; /stim#1/frame#20 can
be referenced using /gcf/idle
Return Value
Also See
■ Adding Alias Names to Stims and Frames in Joules User Guide.
get_sdb_alias
Retrieve the alias name associated with a stim ID or frame ID. The command can also be
used to retrieve the stim ID (or frame ID) associated with an alias name.
Syntax
get_sdb_alias
[-stim <stim-id>]
[-handle <handle>]
[-frame <frame-id>]
Example(s)
■ get_sdb_alias -stim /stim#1; Returns the alias name of /stim#1
■ get_sdb_alias -handle /gcf; Returns the stim id of the alias name /gcf
■ get_sdb_alias -frame /stim#1/frame#20; Returns the alias name of the specified
frame (frame#20 of stim#1)
Return Value
Also See
■ Adding Alias Names to Stims and Frames in Joules User Guide.
delete_sdb
Removes a stimulus database (SDB) from the disk.
Syntax
delete_sdb \
[-stims <stim_id>+]
Example(s)
■ delete_sdb ;# remove all stims from SDB
■ delete_sdb -stims {/stim#5} ;# remove /stim#5 from SDB
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
6
Clock Tree - Setup and Analysis
Commands
■ get_ctg_info
■ tag_clock_tree_for_power
■ report_clocks
■ infer_clock_buffers
■ gen_clock_tree
■ report_clock_tree
■ delete_clock_tree
■ scrub_cglar
get_ctg_info
Returns the required clock gate information.
Syntax
get_ctg_info \
[-active]
[-ctg_name] <clock_tree_name>
[-active]
[-clock_roots]
[-power]
[-stims <stim_id>+]
[-frames <frame_id>+]
[-depth]
[-buffers leaf|branch|root|all]
[-buffer_cnt leaf|branch|root|all]
[-buffer_ds leaf|branch|root|all]
[-fanout leaf|branch|root|all]
[-add_min_max]
[-level <num>]
Example(s)
■ get_ctg_info -ctg_name CT1 -depth
■ get_ctg_info -ctg_name CT1 -buffers branch
■ get_ctg_info -ctg_name CT1 -buffer_cnt leaf
Return Value
Also See
■ Clock Gating in Joules User Guide.
tag_clock_tree_for_power
Tags (annotate) the clock tree for power.
Syntax
tag_clock_tree_for_power \
[-ctg_name] <clock_tree_name>
[-clock_root <clock_root>+]
[-sdc_name <sdc_clock_name>+]
Example(s)
■ tag_clock_tree_for_power -ctg_name CT1
Return Value
Also See
■ Clock Gating in Joules User Guide.
report_clocks
Reports clocks with output sorted based on the specified properties.
Syntax
report_clocks \
[-clocks] <prim_clock>+
[-stims <stim_id>+]
[-frames <frame_id>+]
[-power tree|tree_seq|tree_comb|tree_icgc|domain|network]
tree = power of clock tree
tree_seq = power of clock tree seq elements
tree_comb = power of clock tree comb elements
tree_icgc = power of clock tree ICGCs
domain = power of clock domain elements
network = power of clock tree + clock domain
[-cols
{sdc_freq|gates|flops|icgcs|area|sim_freq|leakage|internal|switching|total|
sdc_name|clock_pin}+]
[-sort_by
{sdc_freq|gates|flops|icgcs|area|sim_freq|leakage|internal|switching|total|
clkpin}]
[-header]
[>|-out <output-file-name>] [-append]
[-widget]
If the specified frame does not exist, then the command will
return NULL.
If both the -stims and -frames options are specified, then the
command will print the required information for all the valid
frames that are specified with -frames option. In the following
example, the command will display info for both frames
irrespective of whether /stim#2 is mentioned with -stims or not.
[-cols] Report the clock properties in the specified columns. The valid
stimulus and non-stimulus specific values are mentioned above
with the syntax.
Example(s)
■ # report all clock domains list of primary clock nets
report_clocks ;
■ # report sdc_freq, flops, leakage, and dynamic power for clock /cpu_10bit/clk
for stimulus /stim#1
report_clocks -clock /cpu_10bit/clk -cols sdc_freq flops leakage dynamic -stim
/stim#1
Return Value
Also See
infer_clock_buffers
Infers clock buffers from library.
Syntax
infer_clock_buffers
[-lib <lib_name>] [-domain <domain>]
[-ldb_libpath [/libraries/][<domain>/]<lib>]
[-rf_margin <frac>]
[-name <cell_name_regexp>]
[-cell_type inv|buf|both]
[-drive_strength <ds> <ds_margin>] )
[-x1_cell <x1_cell>] )
[-full_path]
Example(s)
■ infer_clock_buffers -cell_type buf -name {CK*}
■ infer_clock_buffers -drive_strength 2.0 -rf_margin 0.15
■ infer_clock_buffers -drive_strength 4 0.8 -x1_cell INVX16
Return Value
Also See
■ Library Read and Analysis in Joules User Guide.
gen_clock_tree
Generates the clock tree structure for the ideal or partially specified RTL clock, including
presence of ICGCs (post clock gating) and generated clocks; returns handle/path (string) of
the generated clock tree.
Syntax
gen_clock_tree \
[-ideal_clock]
[-name <clock_tree_name>]
[-clock_root <pin|port>+]
[-arch balanced]
[-max_skew <val>[<unit>]]
[-max_skew_frac <frac>]]
[-max_sink_slew <val>[<unit>]]
[-max_slew_degradation <frac>]
[-max_insertion_delay <val>[<unit>]]
[-max_tree_depth <val>]
[-clock_buffers {[/libraries/][<domain>/][<lib>/]<cell>}+]
[-root_buffers {[/libraries/][<domain>/][<lib>/]<cell>}+]
[-branch_buffers {[/libraries/][<domain>/][<lib>/]<cell>}+]
[-leaf_buffers {[/libraries/][<domain>/][<lib>/]<cell>}+]
[-infer_clock_buffers]
[-lib <lib>] [-domain <domain>]
[-ds_range <min_ds> <max_ds>]
[-x1_cell {[/libraries/][<domain>/][<lib>/]<x1_cell>}]
[-rf_margin]
[-fanout root=<val> branch=<val> leaf=<val>|compute]
[-strict_fanout_target]
[-show_computed_params]
[-edi_spec <f_edi_spec>]
[-ccopt_spec <f_ccopt_spec>]
Example(s)
■ gen_clock_tree -clock_root /top/clock1 -name myCT
■ gen_clock_tree -clock_buffers CLKBUFX1:slow:domain1 -clock_root /top/clock1 -
name myCT
■ gen_clock_tree -fanout root=2 branch=5 leaf=8
■ gen_clock_tree -max_insertion_delay 3.5ns
■ gen_clock_tree -edi_spec edi.cts -out joules_clk_tree
Return Value
Also See
report_clock_tree
Reports information about the structure of the generated clock tree.
Syntax
report_clock_tree \
[-ctg_name] {<clock_tree_name>}+
[-clock_root <clock_root>+]
[-sdc_name <sdc_clock_name>+]
[-summary]
[>|-out <file_name>]
Example(s)
■ report_clock_tree -ctg_name CTG1 -out ctg1.rpt
Return Value
Also See
delete_clock_tree
Deletes the specified clock tree.
Syntax
delete_clock_tree \
[-ctg_name <clock_tree_name>]
[-clock_root <pin|port>+]
[-sdc_name <sdc_clock_name>+]
Example(s)
■ delete_clock_tree -ctg_name CT1 ; # deletes clock tree CT1
■ delete_clock_tree -all
■ delete_clock_tree ; # deletes all clock trees
Return Value
Also See
scrub_cglar
Identifies clock gate (CGLAR) opportunities for non-enabled low activity registers in the
design.
Note: Run this command on a post-mapped design after power has been computed
(compute_power has been run).
Syntax
scrub_cglar \
[-root <hier>+]
[-clock_domain <prim_clock_net>]
[-power_domain <power_domain_name>] (
[-reg_list <register>+]
[-process_gated_flops]
[-stims <stim_id>+]
[-frames <frame_id>+]
[-da_threshold <ratio>]
[-ps_threshold <ratio>]
[-ps_absolute <power_val>]
[-bit_blast]
[-cols
{flops|avg_data_freq|clk_freq|+gates|+icgcs|enable_freq|orig_power|
cglar_power|save_power|clock_power_save|pct_redn|min_data_freq|
max_data_freq|flop_indices}+]
[-report by_frame|by_register|summary]
[-plot_summary
[-png <f_png>]
[-out <f_rpt>]
[-append]
[-return error|table|cglar_registers]
Example(s)
■ scrub_cglar -da_threshold 0.25 -process_gated_flops -ps_absolute 20uW
■ set reg_list [get_registers -inst /cpu_10bit/DP]
■ scrub_cglar -reg_list $reg_list -da_threshold 0.25 -ps_threshold 0.07
Return Value
Also See
■ Identifying CGLARs in Joules User Guide.
7
Mapping and DFT Insertion Commands
■ power_map
■ synthesize
■ apply_drc_rules
■ set_joules_cost_groups
■ estimate_data_buffers
power_map
Performs synthesis and creates a fully functional prototype netlist for power analysis and PPA
exploration.
Syntax
power_map \
[-root] <root>
[-effort low|medium|high]
[-max_cg_fanout] <count>
[-to_file] <filename>
[-auto_identify_shift_register]
[-shift_register_min_length <integer>]
[-shift_register_max_length <integer>]
Specify this option to auto detect shift registers for scan use. Use
this option after -to_generic.
[-shift_register_min_length]
Example(s)
Return Value
Also See
synthesize
Use this command for synthesis.
Syntax
synthesize \
[-root] <root>
[-to_generic]
[-to_clock_gated]
[-to_mapped]
[-to_placed]
[-spatial]
[-effort express|low|medium|high]
[-incremental]
[-no_incremental]
[-auto_identify_shift_register]
[-shift_register_min_length <integer>]
[-shift_register_max_length <integer>]
Tip
Use this option with -to_mapped after specifying the
-to_generic option
[-shift_register_min_length]
Example(s)
Return Value
Also See
apply_drc_rules
Modifies the specified max_fanout, max_capacitance, and max_transition attributes for the
design.
Syntax
apply_drc_rules \
[-type {max_fanout|max_capacitance|max_transition}+]
[-max_fanout <integer>]
[-max_capacitance <cap_value>]
[-max_transition <transition_time>]
Example(s)
■ apply_drc_rules
■ apply_drc_rules -type max_fanout
■ apply_drc_rules -max_fanout 20 -max_transition 200
Return Value
Also See
■ Design and Power Intent - Read and Elaboration in Joules User Guide.
set_joules_cost_groups
Defines a cost group (a set of critical paths to which you can apply weights or priorities that
the optimizer will recognize). The command returns the directory path to the object that it
creates.
Syntax
set_joules_cost_groups \
[-cost_groups] {-1}+
(I2C=input2clock, C2C=clock2clock, C2O=clock2output, I2O=input2output,
2M=to_memory, FM=from_memory)
[-design <design>]
[-mode <timing_mode>]
Example(s)
■ set_joules_cost_groups ;# set cost_groups: -1
■ set_joules_cost_groups I2C C2O
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
estimate_data_buffers
Estimates the number of additional data buffers and the estimated buffer power.
Syntax
estimate_data_buffers \
[-max_fanout <integer>]
[-detailed]
Example(s)
■ estimate_data_buffers
■ estimate_data_buffers -max_fanout 20
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
8
Stimulus Interface, Vectorless, and
Activity Commands
■ get_default_activity
■ plot_activity_profile
■ plot_sdb
■ propagate_activity
■ reset_default_activity
■ set_default_activity
■ set_pin_activity
■ reset_pin_activity
■ report_activity
■ report_user_activity
■ get_pin_activity
■ get_sdb_stims
■ get_pdb_stims
■ get_sdb_frames
■ get_pdb_frames
■ get_stim_info
■ get_frame_info
■ get_frame_duration
■ get_inst_activity
■ copy_activity
■ gen_power_critical_signals
■ report_sdb_annotation
■ report_stim_hierarchy
■ generate_joules_monitor
■ write_stimulus
■ read_spef
■ set_vectorless_controls
■ get_domain_activity
get_default_activity
Returns the default activity value for the specified pin.
Syntax
get_default_activity
-activity_type default|system
-pin_types
{primary_input|seq_out|flop_out|latch_out|memory_out|icgc_out|icgc_enable|
bbox_out|all}+
-global
[-stim <stim_name>]
Example(s)
■ get_default_activity -pin_type primary_input
■ get_default_activity -pin_type all -stim /stim#1
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
plot_activity_profile
If you have extracted multiple frames from a stimulus and run the compute_power command
in time-based mode, you can plot the activity profile for pins, leaf insts, categories of hier insts,
clock_domain, or power_domain, for the specified stim/frames using this command.
For hier insts, activity on output pins of each leaf element for each category is collated and
displayed.
The activity profile plot assumes that the specified SDB frames are contiguous in time. This
command uses gnuplot to plot time-based profile of activities. Before running this command,
ensure that DISPLAY is set properly.
Note: You can run this command after read_stimulus, propagate_activity, or
compute_power commands. However, on running this command after read_stimulus,
only the annotated pins information is reported.
Syntax
plot_activity_profile \
[-stims {<stim_id>}+]
[-frames {<frame_id>|<frame_range>}+]
[-pin <pin>+]
[-inst <inst>+]
[-module {<module-name>}+]
[-levels <levels>|all]
[-clock_domain {<prim-clock-net>}+]
[-power_domain {<domain_name>}+]
[-category {memory|register|flop|latch|logic|bbox|clock|pad|pm}+]
[-annotation_type
{asserted|user_asserted|computed|default|clock_source|constant|unasserted|
all}]
[-collate annotation_type|none]
[-xkey simtime|frame_id]
[-ykey freq|toggle|toggles|duty]
[-mode {sum|avg}]
[-format fsdb|shm|gnuplot|png]
[>|-out <f_dat>]
By default, the command plots the activity profile of the first read
SDB stim.
[-frames] Specify the list of frames for activity profile display. The list can
include individual frames (for example, /stim#1/frame#1) or
a range of frames.
When both inst and module names are specified, then the
command ignores the module name.
[-levels] A suboption for –module option. If specified, all children
hierarchical instances upto the specified level are used for the
plot. Its default value is 0.
[-clock_domain] Display the activity profile of all elements in the domain of the
specified clocks.
Note: -inst and -module options are not compatible with the
-clock_domain option.
[-power_domain] Display the power profile for the specified list of power domains
as defined in the CPF/1801 power intent.
Note: -inst and -module options are not compatible with -
power_domain option.
[-category] Display a line for each specified category in the activity plot. For
FSDB or SHM formats (set using -format option), all
categories are considered by default.
[-annotation_type] Type of annotation to include in the plot. By default, all
annotations are plotted.
[-collate] Criteria to collate plot data. By default, the data is not collated.
[-xkey] Display the simtime or frame ID as specified on X axis. By
default, simtime is displayed on X axis.
[-ykey] Display the selected criteria on Y axis. By default, the Y axis
displays frequency.
[-mode] Specify whether to plot the data by sum or average (default).
This option applies to -ykey freq|tog.
[-format] Specify the plotting program to use. Valid values are:
■ gnuplot (default format)
■ PNG
■ FSDB (FastSignal Database) - a binary format (fsdb);
output can be viewed using Verdi waveform viewer.
■ SHM (Simulation History Manager) - a binary format (*.trn
*.shm); output can be viewed using the NCSim simvision
utility.
[>|-out] Redirect the output of the command to the specified file.
By default, the output of the command is dumped in
<work_dir>/joules_waveform_act.<format>.
If the file specified with this option needs to be created in some
other directory, then ensure that the directory exists.
Example(s)
■ plot_activity_profile -inst /cpu_10bit/FSM -category flop icgc memory -stim /
stim#1
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
plot_sdb
Plots the SDB properties through gnuplot.
Syntax
plot_sdb
[-out <output-plot-file-name>]
Example(s)
■ plot_sdb
■ plot_sdb -out design_sdb.dat
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
propagate_activity
Propagates the activity for all primary inputs, nets, and other elements in the design.
Syntax
propagate_activity
[-mode average|time_based|vectorless]
[-force]
[-stim <stim ids>+]
[-scale_frequency {<scale_factor> <obj_path>}+ ]
(<obj_path> = clock pin/net or hierarchy or power domain)
[-scale_to_sdc_frequency]
[-append]
factor = sdc_freq/stim_freq
Example(s)
■ propagate_activity
■ propagate_activity -stim /stim#1 /stim#2
■ propagate_activity -stim /stim#3 -append
Return Value
Also See
■ Activity Processing and Reporting in Joules User Guide.
reset_default_activity
Resets the default activity and power information for design elements.
Syntax
reset_default_activity
-activity_type default|system
[-pin_types
{primary_input|seq_out|flop_out|latch_out|memory_out|icgc_out|icgc_enable|
bbox_out|all}+]
-global
[-stim <stim_name>]
Example(s)
■ reset_default_activity -pin_types flop_out -stim /stim#1 ; # Reset the default
activity for flop_out
■ reset_default_activity -stim /stim#1 ; # Reset all default activities for the
stimulus
■ reset_default_activity -activity_type system -stim /stim#1 ; # Reset all system
default activities for the stimulus
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
set_default_activity
Defines the default activity for design elements.
Syntax
set_default_activity \
-duty <val>
-freq <val>
[-clock related|<clock_pin_or_net>]
[-pin_types
{primary_input|seq_out|flop_out|latch_out|memory_out|icgc_out|icgc_enable|
bbox_out|all}+]
[-global]
[-stim <stim_name>]
-pin_types Design objects for which the default activity needs to be set.
Joules will use the activity specified with this option only when it
is not able to compute the activity from any other sources such
as stimulus, activity supplied through set_pin_activity, or
.sdc (in case of clocks only).
[-global] Apply the default activity on all the pins in the design.
Then:
■ All the primary inputs get activity as (0.3, 3333).
■ All the memory outputs get activity as (0.4, 4444).
■ All the pins other than primary inputs and memory
outputs(i.e flop_out, icgc_out, latch_out, bbox_out,
combination outputs) get activity as (0.5, 5555)
[-stim] Apply the default activity for the specified stimulus.
Example(s)
■ set_default_activity -pin_types primary_input -freq 25MHz -duty 0.20
■ set_default_activity -pin_types icgc_enable -duty 0.20 -freq 0.15 -clock
related
■ set_default_activity -global -duty 0.5 -freq 50MHz
Return Value
Also See
set_pin_activity
Specifies activity for design pins.
Syntax
set_pin_activity [-pin] <pin-path> \
-activity_type user|default|system
-duty <duty>
-freq <freq>
[-toggles <tcnt>]
-pin_types
{primary_input|seq_out|flop_out|latch_out|memory_out|icgc_out|icgc_enable
|bbox_out|all}+
[-clock related|<clock_pin_or_net>]
[-global]
[-stims <stim_id>+]
[-frames <frame_id>+]
[-silent]
Example(s)
■ set_pin_activity /cpu_10bit/clk -duty 0.4 -freq 200e6 -stim /stim#1
■ set_pin_activity /cpu_10bit/rst -duty 0.02 -toggles 2 -frames /stim#1/frame#7
/stim#2/frame#12
■ set_pin_activity -activity_type default -pin_types primary_input -duty 0.3 -
freq 2e7 -stims /stim#1
■ set_pin_activity -activity_type system -pin_types flop_out -duty 0.5 -freq 2e6
■ set_pin_activity -activity_type system -pin_types flop_out -duty 0.5 -freq 0.3
-clock related
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
reset_pin_activity
Resets all activity and power information for design pins.
Syntax
reset_pin_activity [-pin] <pin-path>
-activity_type user|default|system
[-pin_types
{primary_input|seq_out|flop_out|latch_out|memory_out|icgc_out|icgc_enable|
bbox_out|all}+]
[-all]
[-global]
[-stims <stim_id>+]
[-frames <frame_id>+]
Example(s)
■ reset_pin_activity -activity_type user -pin /cpu_10bit/clk -frames /stim#1/
frame#1
■ reset_pin_activity -activity_type user -all
■ reset_pin_activity -activity_type default -pin_types primary_input -stims /
stim#1
■ reset_pin_activity -activity_type system -global
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
report_activity
Reports activity post SDB creation.
Syntax
report_activity
[-stims {<stim_id>}+]
[-frames {<frame_id>|<frame_range>}+]
[-inst {<inst-path>}+]
[-module {<module-name>}+]
[-levels <levels>|all]
[-collate frames|hier|domain|all|none]
[-clock_domain {<prim-clock-net>}+]
[-power_domain {<domain-name>}+]
[-by_macro]
[-by_category](default)
[-cols {cells|area|duty|freq|toggles|pins}+]
[-category
{memory|register|latch|icgc|logic|bbox|clock|pad|pm}+]
[-sort_by <category>[:<type>]]
[-by_hierarchy]
[-levels <num>]
[-min_leaf_cnt <min>]
[-cols
{cells pct_cells flops pct_flops area pct_area pins toggles duty freq
hier level}+]
[-sort_by duty|freq|toggles|pins|none]
[-increasing]
[-indent_inst]
[-by_path]
[-from <pin>+]
[-thru <pin>+]
[-to <pin>+]
[-num_paths <integer>]
[-min_level <integer>]
[-max_level <integer>]
[-format <format>]
[-header]
[>|-out <output-file-name>] [-append]
[-widget]
Example(s)
■ report_activity ;# report power for top-level design(s)
■ report_activity -frames /stim#1/frame#1 {/stim#1/frame#[5:8]}
■ report_activity -module cpu_10bit__fsm
■ report_activity -inst /cpu_10bit/DP -levels 1
■ report_activity -by_path -from /cpu_10bit/DP/ACC_reg/qout_reg[8]/Q
Return Value
Also See
report_user_activity
Reports the user activity set by set_pin_activity or set_default_activity in a
tabular format.
Syntax
report_user_activity
-activity_type user|default|system
[-pins <pin>+]
[-pin_types
{primary_input|seq_out|flop_out|latch_out|memory_out|icgc_out|icgc_enable|
bbox_out|all}+]
[-global]
[-stims <stim_id>+]
[-frames <frame_id>+]
[-out <out_file>]
Example(s)
■ report_user_activity -activity_type user -frames /stim#1/frame#1
■ report_user_activity -activity_type user -pins clk rst
■ report_user_activity -activity_type default -stims /stim#1
■ report_user_activity -activity_type system -pin_types primary_input flop_out
-global -stims /stim#1 -out system.rpt
Return Value
Also See
get_pin_activity
Returns the source of activity for the specified pin.
Note: After read_stimulus, only the annotated pins can be queried using this command;
for all other non-annotated pins, the command returns -1. After propagate_activity/
compute_power, activities of all pins can be queried.
Syntax
get_pin_activity [-pin] <pin-path> \
[-props {duty|freq|toggles|toggle_rate|type}+]
[-stims <stim_id>+]
[-frames <frame_id>+]
Example(s)
■ get_pin_activity /cpu_10bit/clk ; #returns 0.498:4.976e+08:Act_Asserted
■ get_pin_activity /cpu_10bit/DP/ACC_reg/qout_reg[0]/Q -prop toggle_count -stim
/stim#1 # Returns: 4
Return Value
Also See
■ Activity Processing and Reporting in Joules User Guide.
get_sdb_stims
Returns information about stimuli read into Joules SDB.
Syntax
get_sdb_stims \
[-range <val>:<val2>]
[-list <num>+]
[-name <pattern>]
[-count]
Example(s)
■ get_sdb_stims ;# returns list of all stimuli
■ get_sdb_stims -range 2:4 ;# returns /stim#2 /stim#3 /stim#4
■ get_sdb_stims -count ;# returns the total number of stimuli present in the SDB
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
get_pdb_stims
Returns information about stimuli read into Joules power DB (PDB).
Syntax
get_sdb_stims \
[-count]
Example(s)
■ get_pdb_stims ;# returns list of all stimuli.
■ get_pdb_stims -count ;# returns the total number of stimuli present in the PDB
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
get_sdb_frames
Returns information about frames present in Joules SDB.
Syntax
get_sdb_frames \
[-stims <stimID>+]
[-range <val>[:<val2>]]
[-list <num>+]
[-name <pattern>]
[-count]
Example(s)
■ get_sdb_frames ;# returns list of all stimuli.
■ get_sdb_frames -stim /stim#1 /stim#3 ;# returns /stim#1/frame#0 /stim#1/
frame#1 /stim#3/frame#1
■ get_sdb_frames -stim /stim#1 -range 4:6 ;# returns /stim#1/frame#4 /stim#1/
frame#5 /stim#1/frame#6
■ get_sdb_frames -count ;# returns the count of frames in the specified stimulus
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
get_pdb_frames
Returns information about frames present in Joules power DB (PDB).
Syntax
get_pdb_frames \
[-stim <stimID>+]
[-count]
Example(s)
■ get_pdb_frames ;# returns list of all frames.
■ get_pdb_frames -stim /stim#1 /stim#3 ;# returns /stim#1/frame#0 /stim#1/
frame#1 /stim#3/frame#1
■ get_pdb_frames -count ;# returns the count of frames in the specified stimulus
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
get_stim_info
Returns requested information about the stimuli present in Joules SDB.
Syntax
get_stim_info [-stim] <stim_id>
[-src_file|-file_format|-start_time|-end_time|-duration|-top_instance|
-frame_count|-signal_count]
Example(s)
■ get_stim_info /stim#1 -src_file ;# return source stimulus file path
■ get_stim_info /stim#2 -top_instance ;# return top_instance name in stimulus
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
get_frame_info
Returns requested information about a specific frame in the SDB.
Syntax
get_frame_info [-frame] <frame_id>
[-owning_stim|-start_time|-end_time|-duration]
Example(s)
■ get_frame_info /stim#1/frame#1 -owning_stim ;# returns /stim#1
■ get_frame_info /stim#1/frame#1 -start_time ;# returns start_time for /stim#1/
frame#1
■ get_frame_info /stim#2/frame#2 -end_time ;# returns end_time for /stim#2/
frame#2
■ get_frame_info /stim#2/frame#3 -duration ;# returns duration (in ns) for /
stim#2/frame#3
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
get_frame_duration
Returns sum of durations of specified list of frames.
Note: This command can be run after read_stimulus or compute_power commands.
Syntax
get_frame_duration \
[-frames] <frame_id>+
[-stims] <stim_id>+
Example(s)
■ get_frame_duration ; # returns total duration of all SDB stims
■ get_frame_duration /stim#1/frame#1 /stim#2/frame#7 ; # returns sum of duration
of /stim#1/frame#1 and /stim#2/frame#7
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
get_inst_activity
Returns pin activity of specified instance in form of:
Syntax
get_inst_activity [-inst] <inst>
[-direction {in|out}]
[-frames <frame_id>+]
[-rtl_type
{memory|register|flop|latch|icgc|add|sub|mult|div|decoder|comp|shift|mmux|
buf|inv|and|nand|or|nor|xor|xnor|ao|aoi|oa|oai|mux|tri|tie|pad|fadd|hadd|
delay|iso|srpg|ls|els|ps}+]
[-rtl_group seq|macro|alu|dpx|logic|pm]
Example(s)
■ get_inst_activity /cpu_10bit/FSM
■ get_inst_activity /cpu_10bit/DP/ALU/add_55_37
■ get_inst_activity /cpu_10bit/FSM/pst_reg[3]
Return Value
Also See
copy_activity
Copies activity (toggle/duty) from stims/frames specified using -from option and apply them
to stims/frames specified with -to option.
Note: Use the -apply option to apply the activity copy in the current session.
Syntax
copy_activity \
[-from] <stim_or_frame_id>+
[-to <stim_or_frame_id>+]]
[-annotation_type
{asserted|user_asserted|computed|default|clock_source|constant|unasserted|
unconnected|all}+]
[-apply]
# Use the following options to specify leaf insts for selective activity copy
[-root <inst>+]
[-module <module-name>+]
[-levels <levels>|all]
[-clock_domain {<prim-clock-net>}+]
[-power_domain {<domain_name>}+]
[-rtl_type
{none|bbox|memory|register|flop|latch|icgc|add|sub|mult|div|decoder|comp|
shift|mmux|buf|inv|and|nand|or|nor|xor|xnor|ao|aoi|oa|oai|mux|tri|tie|pad|
fadd|hadd|delay|iso|srpg|ls|els|ps}+]
[-rtl_group {seq|macro|alu|dpx|logic|pm}+]
[-leaf macro|gate]
# Use following options to select pins of selected leaf insts
[-pin_type
{data|address|clock|enable|select|reset|set|scan|tie|rail|vdd|gnd|save|
restore}+]
[-port_type {clock|data|reset|set|test}+]
[-direction in|out|inout]
[>|-out <f_activity>]
Example(s)
■ copy_activity -from /stim#1/frame#5 -to /stim#2/frame#14
■ copy_activity -from /stim#2 -to /stim#2 -rtl_type icgc -pin_type enable ;# copy
ICGC/enable activity
Return Value
Also See
gen_power_critical_signals
Generates power critical signals for the specified design elements.
Syntax
gen_power_critical_signals \
[-root <root_inst>]
[-tb_dut_inst <dut_inst_path_in_tb>]
[-nodes {<obj_type>[:<port_type>]}+]
obj_type = port|memory|flop|icgc|latch|seq|bbox|mux|xor|adder|alu|all
pin_type = input|output|data|clock|enable|reset|all
[-target_tool pxp|ies|fsdb]
[>|-out <output-file-name>]
If not specified, all primary input and output ports of seq nodes
are reported.
[-target_tool] The target tool that will use the generated power signals file.
Default is pxp.
[>|-out] Direct the output to the specified file. By default, the output goes
to the file joules_work/
<root>.power_critical_signals.
Example(s)
■ gen_power_critical_signals ; # dump primary in/out ports and all ports of seq
nodes
■ gen_power_critical_signals -tb_dut_inst /cpu_10bit_tb/CPU ; # prefix testbench
DUT path to signals
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
report_sdb_annotation
Reports the annotations on a design.
Syntax
report_sdb_annotation
[-inst <design|inst>]
[-stims <stim_id>+] (default: all stims)
[-inputs]
[-show_details <obj_type>[:<annotation_type>[:<pin_prop_type>]]]
<obj_type>=port|port_dft|seq|comb|reg|reg_dft|mem|mem_dft|icgc|latch|bbox
|pad|pm|mux|all
<annotation_type>=asserted|unasserted|unconnected|all
(after read_stimulus and before compute_power)
=asserted|user_asserted|computed|default|clock_source|
constant|unasserted|unconnected|all
(after compute_power or propagate_activity)
<pin_prop_type> = in|out|clock|enable|all
[-out <file name>]
[-widget]
If not specified, details of all annotation types for all object and
pin types is reported.
[-out] Direct the output to the specified file.
[-widget] Display the output in form of GUI widget.
Example(s)
■ report_sdb_annotation -stims /stim#1
■ report_sdb_annotation -stims /stim#1 /stim#2 -out annot.rpt
■ report_sdb_annotation -stims /stim#1 -show_details seq:computed:out
Return Value
Also See
report_stim_hierarchy
Reports stimulus hierarchy of the specified stimulus in text format.
Syntax
report_stim_hierarchy \
[-file <stimulus-file>]
[-format <stimulus-file-format>]
[-stim <stim_id>]
[-levels <num>]
[-out <output-file-name>]
Example(s)
■ report_stim_hierarchy -file activity.vcd -format vcd -out output_file # Writes
the stimulus hierarchy of activity.vcd to output_file
■ report_stim_hierarchy -file activity.vcd -format vcd # Writes the stimulus
hierarchy of activity.vcd to stdout
■ report_stim_hierarchy -stim /stim#1 -out output_file # Writes the stimulus
hierarchy of /stim#1 to output_file
■ report_stim_hierarchy -stim /stim#1 -levels 10 # Writes the first 10 levels of
stimulus hierarchy of /stim#1 to stdout
Return Value
Also See
generate_joules_monitor
Generates a module having extra probe signals to monitor ICGC enables. The generated
module is in system verilog (.sv) format.
Syntax
generate_joules_monitor
[-out <output-verilog-file-name>]
[-dut_instance <dut_inst_name>]
[-max_expr_rtl_signal_count <integer(power of 2)>]
For ICGC enable expression generation, the tool back traces the
enable pin all the way till a named RTL net is encountered.
Example(s)
■ generate_joules_monitor
■ generate_joules_monitor -out design_sdb.dat
Return Value
Also See
write_stimulus
Writes a stimulus database in either TCF or SAIF format. The command writes out a
compressed file if you add the .gz extension to the file name.
Syntax
write_stimulus \
[-format] <tcf|saif|vsdb>
[-root <design|instance>]
[-frames <frame_ids>+]
[-weight <factor>]
[-rfw_triple {<root> <frame_id>+ <weight>}+}]
[-hierarchical]
[-prefix_top_instance <top_instance>]
[-nodes {<obj_type>[:<annotation_type>]}+]
obj_type = port|seq|comb|reg|mem|icgc|latch|all
annotation_type = asserted|computed|all
[-inpins]
[-duration <duration in ns>]
[>|-out <output-file-name>]
Additional options for vsdb format:
[-input_file <file-name>]
[-dut_instance <dut-inst-name>]
[-input_format fsdb|vcd|phy|shm]
[-start <window-start-time>]
[-end <window-end-time>]
Example(s)
■ write_stimulus -format vsdb -input_file cpu_10bit_pgm_gcf.fsdb -start 10ns;#
infer -dut_instance
■ write_stimulus -format vsdb -input_file ./trace.phy -dut_instance /CPU -start
10ns -end 40ns
■ write_stimulus -format tcf ;# saved in joules_work/joules.tcf (default TCF
file name)
■ write_stimulus -format saif ;# saved in joules_work/joules.saif (default SAIF
file name)
■ # write a flat TCF activity for /cpu_10bit from /stim#1/frame#0 and scale
frequency by 0.8
write_stimulus -format tcf -root /cpu_10bit -frames /stim#1/frame#0 -weight 0.8
■ # write a flat SAIF file with asserted sequential input and output pins for
duration of 10ns
write_stimulus -format saif -duration 10 -inpins
■ # write flat TCF with asserted seq input+output pins for duration of 15ns, infer
sim top instance from the stimulus
write_stimulus -format saif -duration 20 -inpins -hierarchical
■ # write a flat TCF file named cpu_10bit.tcf with all seq outputs and comb
asserted outputs
write_stimulus -format tcf -nodes comb seq:all -out cpu_10bit.tcf
■ # write vectorless activity
write_stimulus -format saif -nodes port:all seq:all -frames /stim#0/frame#1 -
out cpu_10bit_vectorless.saif
■ # write activity of /cpu_10bit from /stim#1/frame#0 and scale frequency by 0.8
write_stimulus -format tcf -rfw_triple { {/cpu_10bit /stim#1/frame#0 0.8} }
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
read_spef
Reads the parasitics in SPEF format and loads the resistance and grounded capacitors from
the file. Gzip compressed files (.gz extension) can also be loaded.
Syntax
read_spef [ -detailed_parasitics | -lumped_cap_only ][-hierarchical]
[-max_fanout <integer>][-incremental][-rc_corner <rc_corner>] <string>
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
set_vectorless_controls
Applies vectorless settings to specified list of root instances or power domains. Frequency of
ICGC enables, outputs of memory, and register, can be specified per clock, as percentage of
related clock frequency. Frequency of primary inputs (pi) related to clock, can be specified as
percentage of related clocks.
For primary inputs (pi) not related to clock and latches, frequency can be specified either as
an absolute value or as percentage of fastest clock using the -clock_unrelated option.
Effect of the command is cumulative. In case of conflict, the last command wins.
Syntax
set_vectorless_controls \
[[-root] <root_inst>+]
[-power_domain <pd_name>+]
[-cg_enable_rate <pct> [<primary_clock>+]]
[-memory_rate <pct> [<primary_clock>+]]
[-register_rate <pct> [<primary_clock>+]]
[-latch_enable_rate <pct_of_fastest_clock>|<freq>]
[-pi_rate <pct_of_related_clock_freq>]
[-clock_unrelated <pct_of_fastest_clock>|<freq>]
Example(s)
■ set_vectorless_controls -root /cpu_10bit/DP -cg_enable_rate 0.2
■ set_vectorless_controls -root /cpu_10bit/FSM -cg_enable_rate 0.3 # set ICGC
enable freq (relative to clock) of 20% for DP, and 30% for FSM
■ set_vectorless_controls -memory_rate 0.08 -register_rate 0.1 # set data freq
(relative to clock) of 10% for registers, and 8% for memories
■ set_vectorless_controls -pi_rate 0.05 -clock_unrelated 10MHz # for primary
inputs (PIs) related to clock, set data freq 5% of clock, for PIs unrelated to
clock, set freq of 10MHz
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
get_domain_activity
Returns the following activity values for the specified power domain:
Syntax
get_domain_activity -clock_domain <prim-clock-net>|-power_domain
<power_domain_name>
[-frame <frame_id>]
[-power_mode <power_mode>]
[-category memory|register|latch|logic|bbox|clock|pad|pm]
Example(s)
■ get_domain_activity -clock_domain /cpu_10bit/clk -power_mode pwr_all_on
■ get_domain_activity -power_domain PD_fsm -category logic
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
9
Power Analysis and PPA Reporting
Commands
■ compute_power
■ set_power_scale_factor
■ report_power
■ plot_power_profile
■ dump_power_profile
■ dump_activity_profile
■ report_ppa
■ set_inst_power
■ collate_power
■ report_net_switching
■ tune_ple_from_spef
■ sweep_power
■ track_power
■ get_power_rails
■ compute_logic_scale_factor
■ report_power_efficiency
■ compute_efficiency
compute_power
Performs power analysis.
Syntax
compute_power
[-mode average|time_based|vectorless]
[-post_cts_clock]
[-clock_network_slew propagate|mixed|generic]
[-skip_propagation]
[-frequency_scale_factor <factor>]
[-scale_frequency { <factor> <name> }+]
(<factor> = scale factor)
(<name> = clock pin/net or hierarchy or power domain)
[-scale_to_sdc_frequency]
[-auto_tune {clock|memory|logic}+]
[-levels <hier_depth>]
[-stim <stim_id>]
[-append]
[-by_rail]
[-master_slave <config-file>]
[-batch]
[-help|-h]
[-scale_to_sdc_frequency] If specified, all clock domain, clock network, and clk pins activity
is computed by factor where
factor = sdc_freq/stim_freq
Default is false.
Example(s)
■ compute_power
■ compute_power -mode average
■ compute_power -mode time_based
■ compute_power -mode vectorless ;# run compute_power in vectorless mode
■ compute_power -frequency_scale_factor 0.6 ;# reduce frequency of signals by 40%
■ compute_power -frequency_scale_factor 1.5 ;# increase frequency of signals by
50%
Return Value
Also See
set_power_scale_factor
Sets scaling factors for power analysis.
Syntax
set_power_scale_factor \
[-reset]
[-leakage <fac>]
[-internal <fac>]
[-switching <fac>]
[-clock_pin <fac>]
[-frames <frames>]
[-stims <stims>]
[-category {memory|register|latch|logic|bbox|clock|pad|pm}]
[-root <insts>+]
[-iter <iter>]
[-power_domain <power_domain_name>]
[-clock_domain <prim_clock_net>]
[-sticky]
Example(s)
■ set_power_scale_factor -reset ;# reset scaling
■ set_power_scale_factor -category logic -leakage 0.75
■ set_power_scale_factor -category register -internal 1.1 -root /cpu_10bit/DP
Return Value
Also See
report_power
Report power for the specified parameter.
Syntax
report_power \
[-stims {<stim_id>}+]
[-frames {<frame_id>|<frame_range>}+]
[-inst {<inst-path>}+]
[-module {<module-name>}+]
[-levels <levels>|all]
[-clock_domain {<prim-clock-net>}+]
[-power_domain {<domain-name>}+]
[-collate frames|hier|domain|all|none]
[-power_mode {<power_mode>}+]
[-power_rail {<power_rail>}+]
[-assign2clk {memory|register|latch|pad}+]
[-by_category]
[-cols {cells|area|leakage|internal|switching|static|dynamic|total}+]
[-category
{memory|register|latch|logic|bbox|clock|clock_comb|clock_seq|pad|pm}+]
[-sort_by <category>[:<type>]]
[-reassign_power <from_cat> <to_cat>[<iter>]]
[-root <hier_inst>]
[-module {<module-name>}+]
[-levels <levels>|all]
[-power_domain <power_domain>]
[-clock_domain <clock_domain>]
[-power_rail {<power_rail>}]
[-rtl_type
{hier|hadd|fadd|bbox|memory|register|flop|latch|icgc|add|sub|mult|div|
decoder|comp|shift|mmux|buf|inv|and|nand|or|nor|xor|xnor|ao|aoi|oa|
oai|mux|tri|tie|pad|fadd|hadd|delay|iso|srpg|ls|els|ps}+]
[-rtl_group {seq|macro|alu|dpx|logic|pm}+]
[-name <glob>]
[-cell <glob>]
[-lib <glob>]
[-nocase]
[-invert]
[-by_hierarchy]
[-levels <num>]
[-min_leaf_cnt <min>]
[-cols
{cells|pct_cells|flops|pct_flops|area|pct_area|dynamic|pct_power|hier|
level|leakage|internal|switching|static|dynamic|total}+]
[-sort_by leakage|internal|switching|static|dynamic|total|none]
[-indent_inst]
[-by_leaf_instance]
[-rtl_type
{hier|hadd|fadd|bbox|memory|register|flop|latch|icgc|add|sub|mult|div|
decoder|comp|shift|mmux|buf|inv|and|nand|or|nor|xor|xnor|ao|aoi|oa|oai|
mux|tri|tie|pad|fadd|hadd|delay|iso|srpg|ls|els|ps}+]
[-rtl_group {seq|macro|alu|dpx|logic|pm}+]
[-leaf macro|gate]
[-name <glob>]
[-nocase]
[-invert]
[-cols
{cell|lib|domain|type|leakage|internal|switching|static|dynamic|total}+]
[-sort_by leakage|internal|switching|static|dynamic|total]
[-increasing]
[-by_rail]
[-by_tiles <rows>X<cols>]
[-style simple|transient]
[-cols {leakage|internal|switching|total}+]
[-unit W|mW|uW|nW]
[-format <format>]
[-header]
[-skip_port_switching_power]
[>|-out <output-file-name>] [-append]
[-widget]
[-invert] Suboption of -name. Filter out names that match the pattern and
return those that do not.
[-cols] Suboption for –by_leaf_instance. Columns to report.
Default columns that are reported are:
Example(s)
■ report_power ;# report power for top level design(s)
■ report_power -frames /stim#1/frame#1 {/stim#1/frame#[5:8]}
■ report_power -module cpu_10bit__fsm
■ report_power -inst /cpu_10bit/DP -levels 1
■ report_power -inst /cpu_10bit/FSM -level 1 -unit mW -format %.5f
Return Value
Also See
plot_power_profile
If you have extracted multiple frames from a stimulus and run the compute_power command
in time-based mode, you can view the power profile over time using the
plot_power_profile command. The power profile plot assumes that the specified SDB
frames are contiguous in time.
Syntax
plot_power_profile \
[-stims {<stim_id>}+]
[-frames {<frame_id>|<frame_range>}+]
[-inst <inst>+]
[-module {<module-name>}+]
[-levels <levels>|all]
[-clock_domain {<prim-clock-net>}+]
[-power_domain {<domain_name>}+]
[-power_mode {<power_mode>}+]
[-power_rail {<power_rail>}]
[-category {memory|register|flop|latch|logic|bbox|clock|pad|pm}+]
[-types {leakage|internal|switching|dynamic|total}+]
[-unit W|mW|uW|nW]
[-xkey simtime|frame_id]
[-format fsdb|shm|gnuplot|png]
[>|-out <f_dat>]
[-types] If specified, the plot will contain a line for each specified power
type.
The specified power type will be shown for all the hierarchies and
the categories within each hierarchy.
For FSDB or SHM formats (set using -format option), all power
types are considered by default.
[-unit] Specify unit for power profile. W (default) = Watt, mW = milliWatt,
uW = microWatt, nW = nanoWatt.
[-xkey] Show the value specified with this option on X axis. By default,
simtime is displayed on X axis.
[-format] Specify the plotting program to use. Valid values are:
■ gnuplot (default format)
■ PNG
■ FSDB (FastSignal Database) - a binary format (fsdb);
output can be viewed using Verdi waveform viewer.
■ SHM (Simulation History Manager) - a binary format (*.trn
*.shm); output can be viewed using the NCSim simvision
utility.
[>|-out] Save the power report in the specified file. By default, the output
is saved in <work_dir>/
joules_waveform_pwr.<format>
Example(s)
■ plot_power_profile -frames /stim#1/frame#1 {/stim#1/frame#[2:9]}
■ plot_power_profile -category memory register logic clock
■ plot_power_profile -types internal switching
■ plot_power_profile -inst [get_insts -rtl_type hier -levels 1:1]
■ plot_power_profile -clock_domain /cpu_10bit/clk
Return Value
Also See
dump_power_profile
Profiles all power types on all categories for all the sub-hierarchies for a given design
instance.
Syntax
dump_power_profile \
[-root <root_inst>+]
[-levels <depth_from_root>]
[-rtl_type {hier|bbox|memory|register|add|sub|mult|div|decoder|comp|shift}+]
[-stims {<stim_id>}+]
[-frames {<frame_id>|<frame_range>}+]
[-unit W|mW|uW|nW]
[-xkey simtime|frame_id]
[-format fsdb|shm]
[>|-out <f_dat>]
Example(s)
■ dump_power_profile -frames /stim#1/frame#1 {/stim#1/frame#[2:9]}
■ dump_power_profile -root [get_insts -rtl_type hier]
Return Value
Also See
dump_activity_profile
Profiles all power types on all categories for all the sub-hierarchies for a given design
instance.
Syntax
dump_activity_profile \
[-root <root_inst>+]
[-levels <depth_from_root>]
[-rtl_type {hier|bbox|memory|register|add|sub|mult|div|decoder|comp|shift}+]
[-stims {<stim_id>}+]
[-frames {<frame_id>|<frame_range>}+]
[-xkey simtime|frame_id]
[-format fsdb|shm]
[>|-out <f_dat>]
Example(s)
■ dump_activity_profile -frames /stim#1/frame#1 {/stim#1/frame#[2:9]}
■ dump_activity_profile -root [get_insts -rtl_type hier]
Return Value
Also See
report_ppa
Reports power, performance, and area characteristics of key design elements.
Syntax
report_ppa \
[-root {<root-inst-path>}+]
[-module {<module-name>}+]
[>|-out <output-file-name>] [-append]
[-widget]
Example(s)
■ report_ppa -out sample1
Return Value
Also See
set_inst_power
Defines the specified power on instances. You must specify this command before
report_power.
Syntax
set_inst_power [-inst <inst>]
[-frames <frame_id>]
[-stims <stim_id> ]
[-power {leakage internal switching <clock_pin>}]
[-clear]
Example(s)
■ set_inst_power -inst /cpu_10bit/FSM -power { 1.0 3.4 2.1 0.01 }
■ set_inst_power -inst /cpu_10bit/DP/ALU -frames /stim#1/frame#1 -power { 0.0 0.0
0.0 }
■ set_inst_power -inst /cpu_10bit/RAM_64x10/RAM_64x10 -power { -1.0 3.4 2.1 }
■ set_inst_power -clear
Return Value
Also See
collate_power
Computes power of the blocks with specified settings and collates power at SoC level.
Syntax
collate_power \
-reset
-set
[-inst {<inst>}+]
[-module {<module-name>}+]
[-levels <levels>|all]
[-stims {<stim_id>}+]
[-frames {<frame_id>|<frame_range>}+]
[-weights {<val>+}]
[-power_mode {<power_mode>}+]
[-power_rail {<power_rail>}+]
[-scale_freq {<factor>]
[-scale_power
{<category>=<leakage_factor>:<internal_factor>:<switching_factor>}
+]
[-assign2clk {memory|flop|latch}+]
-report
[-by_category]
[-cols {leakage|internal|switching|total}+]
[-category {memory|register|latch|logic|bbox|clock|pad|pm}+]
[-sort_by <category>[:<type>]]
[-by_hierarchy]
[-inst <root>]
[-levels <num>]
[-cols
{cells|pct_cells|flops|pct_flops|area|pct_area|dynamic|hier|level|
leakage|internal|switching|total}+]
[-indent_inst]
[-tab]
[-sort_by leakage|internal|switching|total]
[-unit W|mW|uW|nW]
[-format <format>]
[>|-out <f_rpt>] [-append]
[-widget]
Example(s)
Return Value
Also See
report_net_switching
Syntax:
report_net_switching \
[-stim {<stim_id>}+]
[-frame {<frame_id>|<frame_range>}+]
[-power_mode {<power_mode>}+]
[-inst {<root>}+]
[-clock_domain {<prim-clock-net>}+]
[-power_domain {<domain-name>}+]
[-skip_ports in|out|inout]
[-cols
{fanout|drivers|wire_cap|wire_res|sink_cap|load_cap|voltage|freq|power}+]
[-min_fanout <min>]
[-max_fanout <min>]
[-cap_worst <cnt>]
[-sort_by fanout|wire_res|wire_cap|sink_cap|load_cap|voltage|freq|power]
[-skip_header]
[-spef_annotated_nets]
[>|-out <f_rpt>]
[-append]
[-widget]
By default, the command will report data as the average of all the
frames for a given stimulus, that is, /frame#0 of given stimulus.
[-power_mode] Power mode based on which the nets will be reported.
[-max_fanout] Report nets with fanout less than or equal to the specified
value.
[-cap_worst] Report nets with worst load capacitance.
[-sort_by] Sort the reported data based on specified parameter. By
default, the data is sorted by fanout.
[-skip_header] Skip the header in the generated output. By default, it is set to
false.
[-spef_annotated_nets] If specified, displays the distribution of SPEF annotated nets.
Default is false.
[>|-out] Save report in the specified file.
[-append] Suboption of -out. Append to the specified file.
[-widget] Display the output in form of GUI widget.
Example(s)
■ report_net_switching -hierarchical -out cpu_10bit.all_nets.rpt
■ report_net_switching /cpu_10bit/DP/ALU -cap_worst 20 -sort_by load_cap ; #
report top 20 nets with worst load in /cpu_10bit/DP/ALU
■ report_net_switching -min_fanout 20 -max_fanout 64 ; # report nets with: fanout
greater than 10, and less than 64
Return Value
Also See
tune_ple_from_spef
Tunes the physical layout estimation (PLE) model using the specified SPEF file. This
command should be run post synthesis.
Syntax
tune_ple_from_spef
[-f_spef] <f_spef>
[-refine_net_cap {memory|clock}+]
[-help|-h]
Example(s)
■ tune_ple_from_spef /full/path/to/design1.spef
■ tune_ple_from_spef -f_spef /another/gz/spef/file/design2.spef.gz -refine
memory clock
Return Value
Also See
■ Simulation, Simulation Read, and SDB Creation in Joules User Guide.
sweep_power
Executes power sweep using the specified parameters. The effect of the command is
cumulative; in case of conflict, the last run of the command overrides.
Syntax
sweep_power \
[-reset]
[-axis freq|volt|temp]
[-effort fast|accurate]
[-handle <sweep_axis_handle>+]
[-sdc_name <sdc_name>+] (
[-max_val <max_val>]
[-min_val <min_val>]
[-incr <incr>|-points <N>]
[-auto_sweep]
[-num_clocks <N>]
[-num_roots <N>]
[-points <N>]
[-set] )
[-plot]
[-by_clock_domain]
[-by_hierarchy]
[-root <root>+]
[-power_domain <pd>+]
[-stims <stim>+]
[-max_points <N>]
[-show_sweep_table]
[-shrink_range <min>:<max>]
[-location top_left|bot_left|bot_right|top_right]
[-unit W|mW|uW|nW]
[-png <f_png>]
Example(s)
■ # reset sweep_power settings
sweep_power -reset
■ # sweep /cpu_10bit/clk freq from 500MHz to 250MHz in increments of 50MHz
sweep_power -set -axis freq -max_val 500e6 -min_val 250e6 -incr 50e6 -handle /
cpu_10bit/clk
■ # sweep voltage from 1.08V downto 0.84V in increments of 0.04V
sweep_power -set -axis volt -max_val 1.08 -min_val 0.84 -incr 0.04 -handle VDD
;# coming soon
■ # sweep power by clock_domain and plot
sweep_power -plot -by_clock_domain
■ # sweep power by hierarchy and plot
sweep_power -plot -by_hier -root /cpu_10bit/DP/ALU /cpu_10bit/FSM -
show_sweep_table
■ # plot with xkey = volt, zkey = freq
sweep_power -plot -xkey volt -zkey freq ;# coming soon
■ # auto sweep and plot
sweep_power -auto_sweep -num_roots 2 -num_points 5
Return Value
Also See
■ Power Sweep in Joules User Guide.
track_power
Creates, populates, reports, and plots power regression DB (PRDB) data.
Syntax
track_power \
-prdb_id <id>
[-create]
[-work_dir <work_dir>]
[-power_mode {<power_mode>}+]
[-power_rail {<power_rail>}]
[-assign2clk {memory|flop|latch}+]
[-save_db <d> <m> <w>]
[-record]
[-today <yyyy-dd-mm>]
[-get <obj_key>]
(<obj_key> =
config_file|work_dir|start_date|end_date|date_list|design|item_list|
item_id_list|item|item_id)
[-key_val <val>]
[-plot|-report]
[-start_date <start-date>]
[-end_date <end-date>]
[-category {memory|register|latch|logic|bbox|clock|pad|pm}+]
[-type {leakage|internal|switching|total}+]
[-ykey {<catg>[:<type>]}+]
(<catg> = memory|register|latch|logic|bbox|clock|pad|pm, default = all)
(<type> = leakage|internal|switching|total, default = total)
[-png <f_png>]
[-inst {<root>}+]
[-module {<module>}+]
[-levels <num>|all]
[-clock_domain {<prim-clock-net>}+]
[-power_domain {<domain-name>}+]
[-stims {<stim_id>}+]
[-frames {<frame_id>|<frame_range>}+]
For example:
Example(s)
■ track_power -prdb_id cpu_10bit -create -work_dir cpu_10bit_prdb \
-inst /cpu_10bit -levels 1 -power_domain PD_alu -clock_domain /cpu_10bit/clk \
-save_db * * 7 ; # create PRDB of ID "cpu_10bit" and save db every sunday
■ track_power -prdb_id cpu_10bit -record ;# record today's data
■ track_power -prdb_id cpu_10bit -plot -inst /cpu_10bit -category register logic
clock -stim /stim#1 ; # plot/report PRDB history by category
■ track_power -prdb_id cpu_10bit -report -inst /cpu_10bit -type leakage internal
switching total -stim /stim#2 ; # report by power_type
■ track_power -prdb_id cpu_10bit -plot -inst /cpu_10bit /cpu_10bit/DP -
power_domain PD_alu -stim /stim#1 ; # plot by item (hierarchy, clock/power
domain)
■ track_power -prdb_id cpu_10bit -report -ykey register:internal logic:switching
-stim /stim#2 ; # report by mix of category X power_type
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
get_power_rails
Returns list of all power rails in the libraries used for the design.
Syntax
get_power_rails /
[-power_domain <pd_name>+]
[-power_format]
[-domain <lib_domain_name>+]
[-lib <lib_name>+]
[-cell <cell_name>+]
[-inst <inst_name>+]
[-ldb_libpath [/libraries/][<domain>/]<lib>+]
[-ldb_cellpath [/libraries/][<domain>/][<lib>/]<cell>+]
Example(s)
■ get_power_rails
■ get_power_rails -domain lib_1p08v
■ get_power_rails -lib slow -cell TLATX4
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
compute_logic_scale_factor
Computes scaling factor to dampen amplification of activity through logic cones due to activity
propagation.
Syntax
compute_logic_scale_factor \
[-root <root_inst>]
[-stim <stim>+]
[-power_domain <power_domain>]
[-clock_domain <clock_domain>]
[-levels <levels>|<min_level>:<max_level>]
[-tcl]
[-legacy]
[-out <f_rpt>]
[-f_script <f_script>]
[-apply]
[-return error|factor]
Example(s)
■ compute_logic_scale_factor -out joules_work/compute_logic_scale_factor.rpt
■ compute_logic_scale_factor -root top -stim /stim#1
■ compute_logic_scale_factor -return factor -clock_domain /top/clk
■ compute_logic_scale_factor -power_domain PD_def
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
report_power_efficiency
Reports power efficiencies for design components, such as for blocks, instances, clocks, and
interfaces.
Syntax
report_power_efficiency \
[-inst {<inst_path>}+]
[-indent_insts]
[-levels <num|all>]
[-show_zero_flop_hierarchies]
[-skip_unconnected_flops]
[-cols {flops cg toggles cg_eff dag_eff clk_eff level inst wasted_power
total_power clock_power seq_power logic_power eff_type}+]
[-module {<module>}+]
[-by_block]
[-by_enable]
[-by_leaf]
[-cols {flops cg toggles cg_eff dag_eff clk_eff bit_activity inst
wasted_power seq_power eff_type}+]
[-by_memory]
[-by_module]
[-by_tiles <rows>X<cols>]
[-clock_domain {<prim-clock-net>}+]
[-power_domain {<domain-name>}+]
[-stims {<stim_id>}+]
[-frames {<frame_id>|<frame_range>}+]
[-show_power_data <abs|pct|both>]
[-unit W|mW|uW|nW]
[-power_type leakage|internal|dynamic|total]
[>|-out <output_file_name>]
[-header]
[-append]
Example(s)
■ report_power_efficiency ; # report power efficiency by hierarchy starting from
the design root
■ report_power_efficiency -inst /top/blk1 ; # report power efficiency by
hierarchy starting from /top/blk1
■ report_power_efficiency -inst /top/blk1 -indent_insts; # report power
efficiency by hierarchy in indented fashion
■ report_power_efficiency -inst /top/blk1 -levels 2 ; # report power efficiency
by hierarchy for 2 levels starting from /top/blk1
■ report_power_efficiency -inst /top/blk1 -by_leaf ; # report power efficiency
for leaf instances in /top/blk1
■ report_power_efficiency -stims {/stim#1 /stim#2} ; # report power efficiency
based on the two stim ids
■ report_power_efficiency -frames {/stim#1/frame#1 /stim#1/frame#10]} ; # report
power efficiency based on the specified frames
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
compute_efficiency
Performs efficiency computation once activities have been propagated or power has been
computed.
Syntax
compute_efficiency \
[-mode average|time_based]
[-stims {<stim_id>}+]
[-frames {<frame_id>|<frame_range>}+]
Example(s)
■ compute_efficiency
■ compute_efficiency -mode average
■ compute_efficiency -mode time_based
■ compute_efficiency -mode average -stims {/stim#1 /stim#2}
■ compute_efficiency -mode time_based -stims {/stim#1 /stim#2} -frames {/frame#1
/frame#2}
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
10
Design Query and Navigation Commands
■ get_inst_area
■ get_inst_delay
■ get_seqs
■ report_design_hierarchy
■ get_insts
■ get_inst_slack
■ get_inst_power
■ get_inst_pins
■ get_clock_info
■ get_clock_trees
■ get_combs
■ get_design_clocks
■ plot_slack_profile
■ plot_activity_distribution
■ get_icgc_info
■ report_icgc_efficiency
■ report_icgc_scrub
■ plot_net_distribution
■ plot_inst_distribution
■ report_area
■ report_design_stats
get_inst_area
Returns (i) cell area, (ii) routing area, and (iii) total area for the specified leaf or hierarchical
instance.
Syntax
get_inst_area [-inst] <inst>
Example(s)
■ get_inst_area /cpu_10bit/FSM
Return Value
Also See
get_inst_delay
Returns: (i) worst pin to pin (or port to port) delay, and (ii) worst delay arc for the specified
hierarchical or leaf instance.
Syntax
get_inst_delay <inst>
Example(s)
■ get_inst_delay /cpu_10bit/FSM ;
#returns 45.0 /cpu_10bit/FSM/ovrfl->/cpu_10bit/FSM/pc_mux_sel
Return Value
Also See
get_seqs
Returns all sequential instances such as flops, latches, and ICGCs
Syntax
get_seqs \
[-root] <root_inst>
[-module <module>]
[-levels <num>]
[-rtl_type memory|register|flop|latch|icgc]
[-clock_domain <clock_pin_or_net>]
[-power_domain <power_domain_name>]
[-name <glob>]
[-cell <glob>]
[-nocase]
[-invert]
[-wns <val>[:<val2>]]
[-width num]
[-op eq|gt|lt|ge|le]
[-bit_blast]
[-cg_status gated|enabled_but_ungated|not_enabled]
get_seqs -width lt 10
[-bit_blast] Return bit-blasted list of sequential instances.
[-cg_status] Return sequential instances with the specified clock gate
status. The default status is dont care.
Example(s)
■ get_seqs -rtl_type register -root /cpu_10bit/FSM ;# get seqs in hierarchy /
cpu_10bit/FSM
■ get_seqs -rtl_type register -module cpu_10bit__fsm ;# get seqs in module /
cpu_10bit/FSM
■ get_seqs -rtl_type register -name *DFT* ;# get seqs matching DFT in name
■ get_seqs -rtl_type register -clock_domain /cpu_10bit/clk ;# get seqs in domain
of clock /cpu_10bit/clk
■ get_seqs -rtl_type register -cg_status gated ;# get clock_gated seqs
Return Value
Also See
■ Activity Processing and Reporting in Joules User Guide.
report_design_hierarchy
Reports the specified hierarchy of a design in text format. The command reports only
hierarchical instances.
Syntax
report_design_hierarchy \
[-root {<root-inst-path>}+]
[-module {<module-name>}+]
[-levels <num>]
[-out <output-file-name>] [-append]
Example(s)
■ report_design_hierarchy -out output_file # Writes the design hierarchy to
output_file
■ report_design_hierarchy -levels 10 # Writes the first 10 levels of design
hierarchy to stdout
Return Value
Also See
get_insts
Returns the list of hierarchical/leaf instances based on specified parameters.
Syntax
get_insts \
[-root <root_inst>+ | -clk_tree <clk_tree_name>+]
[-levels <levels>|<min_level>:<max_level>]
[-clock_domain <prim_clock_net>]
[-power_domain <power_domain_name>]
[-power_rails <power_rail_name>+]
[-rtl_type
{hier|bbox|memory|register|flop|latch|icgc|add|sub|mult|div|decoder|comp|
shift|mmux|buf|inv|and|nand|or|nor|xor|xnor|ao|aoi|oa|oai|mux|tri|tie|pad|
fadd|hadd|delay|iso|srpg|ls|els|ps}+]
[-rtl_group {seq|macro|alu|dpx|logic|pm}+]
[-leaf macro|gate|no]
[-name <glob>]
[-nocase]
[-cell <glob>]
[-lib <list>]
[-invert]
[-wns <val>[:<val2>]]
[-bit_blast]
[-lindex <idx>]
[-lrange <idx1> <idx2>]
[-count]
[-skip_clock_path]
[-iter]
Example(s)
■ get_insts /cpu_10bit -rtl_type hier ;# return design hierarchy
■ get_insts -root [lindex [get_alus] 1] -leaf gate ;# get leaf instances of adder
■ get_insts /cpu_10bit/DP -leaf gate -wns -50:100 -count ;# get count of leaf
instances with slack of -50ps to +100ps
Return Value
Also See
get_inst_power
Returns leakage, internal, switching, and total power for the specified leaf or hierarchical
instance.
Syntax
get_inst_power [-inst] <inst>
[-stims <stim_id>+]
[-frames <frame_id>]
[-power_mode <power_mode>]
[-power_rail <power_rail>]
[-category memory|register|latch|logic|bbox|clock|pad|pm]
[-add_clkpin_power]
[-show_details]
[-by_rail]
[-skip_port_switching_power]
[-compute]
[-slew \{<ipin>:<val>\}+]
[-load \{<opin>:<val>+\}+]
[-activity \{<ipin>:<duty>:<freq>\}]
Example(s)
■ get_inst_power /cpu_10bit/FSM
Return Value
Also See
get_inst_slack
Returns the worst pin to pin (or port to port) slack of the specified instance.
Syntax
get_inst_slack \
[-inst] <inst>
[-add_ws_pin]
[-pin <leaf_inst_pin>]
Example(s)
■ get_inst_slack -inst [lindex [get_registers] end] -add_ws_pin
■ get_inst_slack -inst [get_insts -rtl_type div] -add_ws_pin
■ get_inst_slack -inst /cpu_10bit/DP
■ set adder [lindex [get_insts -rtl_type add] 0] ; set pin "$adder/Z\[1\]"
■ get_inst_slack -pin $pin
Return Value
Also See
get_inst_pins
Returns the pin/port of any hierarchical/leaf instance based on different properties of the pin/
port.
Syntax
get_inst_pins \
[-inst] <inst>
[-direction in|out|inout]
[-pin_type
{data|address|clock|enable|select|reset|set|scan|tie|rail|vdd|gnd|save|
restore}+] (for hier insts, -pin_type = {clock|data|reset|set|test}+)
[-name <port_name_regexp>]
[-bus]
[-full_path]
[-name] Match the pin/port with the regular expression specified with
this option.
[-bus] If specified, the output does not bit-blast the BUS while
reporting.
[-full_path] Report the complete hierarchical path of each pin.
Example(s)
■ get_inst_pins /cpu_10bit/DP -bus
■ get_inst_pins /cpu_10bit/DP/ALU -direction in
■ get_inst_pins /cpu_10bit/RAM_64x10/RAM_64x10 -pin_type address
Return Value
Also See
get_clock_info
Return information on a clock defined in SDC and related parameters.
Syntax
get_clock_info \
[-clock <prim_clock_pin>]
[-sdc_name <sdc_name>]
[-sdc_name]
[-clock_obj]
[-master]
[-ctg]
[-active]
[-freq|-duty_cycle]
[-stim <stim_id>]
[-frame <frame_id>]
[-power tree|tree_seq|tree_comb|tree_icgc|domain|network]
tree = power of clock tree
tree_seq = power of clock tree seq elements
tree_comb = power of clock tree comb elements
tree_icgc = power of clock tree ICGCs
domain = power of clock domain elements
network = power of clock tree + clock domain)
[-add_clkpin_power]
[-stim <stim_id>] )
[-frame <frame_id>]
[-inst <inst>]
[-domain_elements]
[-domain_seqs]
[-domain_flops]
[-domain_latches]
[-domain_icgcs]
[-count]
[-iter]
[-bit_blast]
[-domain_area]
Tip
Use after clock-gating logic insertion.
[-count] Suboption for -domain_icgcs option.
Return count instead of list.
[-iter] Suboption for -domain_icgcs option.
Return iterator instead of list.
[-bit_blast] Suboption for -domain_icgcs option.
Return bit-blast registers.
[-domain_area] Return the total area of clock domain elements.
Example(s)
■ get_clock_info -clock /cpu_10bit/clk -freq ;# return frequency of clock /
cpu_10bit/clk
■ get_clock_info -clock /cpu_10bit/clk -sdc_name ;# return SDC name of clock /
cpu_10bit/clk
■ get_clock_info -sdc_name clk -duty_cycle ;# return duty_cycle of SDC clock clk
Return Value
Also See
get_clock_trees
Return information on the specified clock tree.
Syntax
get_clock_trees \
[-clock_root <pin|port>+]
[-sdc_name <sdc_clock_name>+]
Example(s)
■ get_clock_trees -clock_root /top/clk1 /top/clk2
■ get_clock_trees -sdc_name clk1 clk2
Return Value
Also See
get_combs
Gets combinatorial gate level items.
Syntax
get_combs \
[-inst] <inst_path>
[-rtl_group macro|alu|dpx|logic|pm]
[-rtl_type
add|sub|mult|div|decoder|comp|shift|mmux|buf|inv|and|nand|or|nor|xor|xnor|
ao|aoi|oa|oai|mux|tri|tie|pad|fadd|hadd|delay|iso|srpg|ls|els|ps]
[-module <module>]
[-levels <num>]
[-width num]
[-op eq|gt|lt|ge|le]
[-name <glob>]
[-cell <glob>]
[-nocase]
[-invert]
get_combs -width lt 10
[-name] Return combinatorial entries with inst name matching the
specified pattern.
[-cell] Return combinatorial entries mapped to cell matching the
specified pattern.
[-nocase] Suboption of -cell. Perform case insensitive match.
[-invert] Suboption of -cell. Filter out names that match the pattern and
return those that do not.
Example(s)
■ get_combs -inst /cpu_10bit/DP ;# gets combs under inst /cpu_10bit/DP
■ get_combs -width 4 ;# gets 4-bit wide combs
Return Value
Also See
■ Clock Gating in Joules User Guide.
get_design_clocks
Returns the list of primary clocks of the design.
Syntax
get_design_clocks
[-root <design name>]
[-sdc_name <sdc_name>]
[-derivative_clocks]
[-prim_clocks]
[-overlapping_sets]
[-count]
[-sort_by
freq|domain_area|domain_elements|domain_seqs|domain_flops|domain_latches|
domain_icgcs|domain_tns|domain_wns]
[-increasing]
[-ntop <N>]
[-fastest_clock]
Example(s)
■ get_design_clocks -root /cpu_10bit
■ get_design_clocks -root /cpu_10bit -overlapping_sets
Return Value
Also See
■ Clock Gating in Joules User Guide.
plot_slack_profile
Plots the slack and timing profile for the design.
Syntax
plot_slack_profile \
[-root <root_inst>+]
[-levels <levels>|<min_level>:<max_level>]
[-leaf <leaf_inst>+]
[-name <glob>]
[-nocase]
[-invert]
[-clock_domain {<prim-clock-net>}+]
[-power_domain <domain-name>]
[-wns <V>[:<V2>]
[-yrange <ymin>:<ymax>]
[-resolution <val>] )
[-png <f_png>]
[-tag <tag>]
[>|-out <f_dat>]
Example(s)
■ plot_slack_profile -clock_domain /cpu_10bit/clk
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
plot_activity_distribution
Plots output pin activity distribution of selected leaf instances.
Syntax
plot_activity_distribution \
[-stims {<stim_id>}+]
[-frames {<frame_id>|<frame_range>}+]
[-activity_types
{Act_Default|Act_Computed|Act_ClkFromSDC|Act_Constant|Act_Asserted|
Act_UserAsserted+}]
[-root <inst>+]
[-module {<module-name>}+]
[-levels <levels>|all]
[-clock_domain {<prim-clock-net>}+]
[-power_domain {<domain_name>}+]
[-rtl_type
{bbox|memory|register|flop|latch|icgc|add|sub|mult|div|decoder|comp|shift|
mmux|buf|inv|and|nand|or|nor|xor|xnor|ao|aoi|oa|oai|mux|tri|tie|pad|fadd|
hadd|delay|iso|srpg|ls|els|ps}+]
[-rtl_group {seq|macro|alu|dpx|logic|pm}+]
[-leaf macro|gate]
[-xkey freq|toggle_cnt|toggle_ratio]
[-bin_cnt <cnt>]
[-title <title>]
[-group_gap <val>]
[-png <f_png>]
[>|-out <f_dat>]
Example(s)
■ plot_activity_distribution -frames /stim#1/frame#1 {/stim#1/frame#[7:9]}
■ plot_activity_distribution -rtl_type mult flop icgc
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
get_icgc_info
Returns information about the specified ICGC.
Syntax
get_icgc_info [-inst] <icgc>
[-frames <frame_id>+
[-power_mode <power_mode>]
[-power_rail <power_rail>]
[-type]
[-cell]
[-clock_pin]
[-clock_net]
[-clock_freq in|out]
[-clock_domain]
[-enable_pin]
[-enable_net]
[-enable_duty]
[-enable_toggles]
[-enable_freq]
[-enable_eff]
[-cum_enable_eff]
[-enable_expr]
[-flops all|direct|indirect]
[-data_freq in|out]
[-fanout all|direct|indirect)
[-downstream_cgs]
[-downstream_power]
[-downstream_clkpin_power]
[-downstream_clkpin_cap]
[-clock_power]
[-impact]
[-level]
[-rtl_info]
Example(s)
■ set icgc /cpu_10bit/FSM/RC_CG_HIER_INST8/RC_CGIC_INST
■ get_icgc_info -inst $icgc -clock_domain all
■ get_icgc_info -inst $icgc -enable_net
■ get_icgc_info $icgc -downstream_power
Return Value
Also See
Clock Gating in Joules User Guide.
report_icgc_efficiency
Reports the clock gating efficiency report in a tabular format, with a line for each ICGC. It is
recommended to run this command when stimulus has already been read in and the power
numbers have been generated through the compute_power command.
Syntax
report_icgc_efficiency
[-inst {<inst-path>}+]
[-module {<module-name>}+]
[-levels <levels>|all]
[-clock_domain {<prim-clock-net>}+]
[-power_domain {<domain-name>}+]
[-cg_list $icgc_list]
[-cg_wrapper {<module>[:<enable_pin>]}+]
[-stims {<stim_id>}+]
[-frame <frame_id>+]
[-collate]
[-power_mode <power_mode>]
[-power_rail <power_rail>]
[-cols
{flops|direct_flops|data_freq_in|data_freq_out|enable_duty|enable_freq|
enable_eff|cum_enable_eff|impact|clock_power|clock_freq|gated_clock_freq|
downstream_power|downstream_dynamic_power|downstream_clkpin_power|
downstream_clkpin_cap|cell|type|annot|power_delta_per_pct_enable_eff}+]
(impact = clock_power/enable_eff)
[-sort_by clock_power|downstream_power|enable_eff|impact]
[-header]
[>|-out report_filename]
[-append]
[-csv]
[-help|-h]
If both -stim and -frame are specified, then the command will
first print the required information for all the valid frames that are
specified with the -frame option. Then, the command will
display the information for both frames irrespective of whether /
stim#2 is mentioned with -stim or not, as shown in the
following example:
Example(s)
■ set cg_list [get_icgcs -clock /cpu_10bit/clk]
■ report_icgc_efficiency -cg_wrapper cg_wrapper1 -sort_by clock_power -out
cpu_10bit_icgc_efficiency.rpt -cg_list $cg_list
Return Value
Also See
■ Clock Gating in Joules User Guide.
report_icgc_scrub
Identifies and reports lint errors in a design.
Syntax
report_icgc_scrub
[-stims <stim_id>+]
[-frames <frame_id>+]
[-root <root_inst>+]
[-double_icgcs]
[-help|-h]
Example(s)
report_icgc_scrub -double_icgcs
Return Value
Also See
■ Clock Gating in Joules User Guide.
plot_net_distribution
Plots net distribution histogram for fanout, load (capacitance), or resistance.
Syntax
plot_net_distribution \
[-inst <inst>+]
[-module {<module-name>}+]
[-spef_annotated_nets]
[-f_net_rpt <f_rpt>]
[-xkey fanout|wire_cap|sink_cap|load_cap|wire_res]
[-xrange <min>:<max>]
[-yrange <min>:<max>]
[-bin_cnt <cnt>]
[-bin_size {abs|pct}:<val>]
[-title <title>]
[-png <f_png>]
[>|-out|-f_net_data <f_net_data>]
Example(s)
■ plot_net_distribution ;# plot net fanout distribution histogram of entire
design
■ plot_net_distribution -inst /cpu_10bit/DP/ALU -xkey cap
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
plot_inst_distribution
Plots distribution of design objects by specified object type (-xkey).
Syntax
plot_inst_distribution \
[-root <inst>+]
[-module {<module-name>}+]
[-levels <levels>|all]
[-clock_domain {<prim-clock-net>}+]
[-power_domain {<domain_name>}+]
[-rtl_type
{bbox|memory|register|flop|latch|icgc|add|sub|mult|div|decoder|comp|shift|
mmux|buf|inv|and|nand|or|nor|xor|xnor|ao|aoi|oa|oai|mux|tri|tie|pad|fadd|
hadd|delay|iso|srpg|ls|els|ps}+]
[-rtl_group {seq|macro|alu|dpx|logic|pm}+]
[-leaf macro|gate]
[-xkey bit_width|drive_strength|cell|lib|func]
[-ykey count|pct|area]
[-xrange <min>:<max>]
[-yrange <min>:<max>]
[-png <f_png>]
[-title <title_string>]
Example(s)
■ plot_inst_distribution -xkey drive_strength
■ plot_inst_distribution -rtl_type register -xkey bit_width
■ plot_inst_distribution -root /cpu_10bit/DP -xkey cell
■ plot_inst_distribution -root /cpu_10bit/DP/ALU -xkey func
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
report_area
Reports:
■ Total count of cells mapped against the hierarchical blocks in the current design
■ Combined cell area in each of the blocks and the top level design (hierarchical breakup)
❑ Cell Area numbers are based on the cell implementations taken from the technology
library after mapping.
❑ Net Area refers to the estimated post-route net area and is only meaningful if you
read in the LEF libraries.
■ The wireload model adopted for each of the blocks
Note: The units used in the report depend on the units used in the library.
Syntax
report area \
[-summary]
[-depth <integer>]
[-min_count <integer>]
[-physical]
[-hinst <object>]
[-gates]
[-normalize_with_gate <object>]
[-show_leaf_cells]
[-skip_modules_logical_hier_false]
[<object>+]
[> file]
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
report_design_stats
Reports various statistics for a design.
Syntax
report_design_stats \
[-out <output-file-name>]
[-append]
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
report_naming_rules
Reports the rules applied for naming design components.
Syntax
report_design_stats \
[-out <output-file-name>]
[-append]
Return Value
Also See
■ Power Analysis and Reporting in Joules User Guide.
11
Joules Attributes
Joules supports most of the attributes used in Genus. This chapter provides information on
attributes that are specific to Joules. Refer to Genus Attribute Reference for information on
Genus attributes.
Default Related
Attribute Category Desciption
Value Command