#set_property OUTPUT_VALUE 0 [get_hw_probes num_heaters_on -of_objects [get_hw_vios hw_vio_1]] #commit_hw_vio [get_hw_probes {num_heaters_on} -of_objects [get_hw_vios hw_vio_1]] #after 5000 #setup ADC lsb sizes set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 40 3012 set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 49 0105 set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 4D 0000 set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 41 20A0 set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 42 7000 set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 46 0007 set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 48 7F01 set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 47 0007 set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 4A 4F01 set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 4B 00FF after 1000 set supply_lsb [expr {3.0/65536.0}] set adc_lsb [expr {1.0/65536.0}] #set up current lsb's for each rail (see KCU105 schematic) set vccint_current_lsb [expr {$adc_lsb/(12.5*0.002)}] set vccaux_current_lsb [expr {$adc_lsb/(38*0.005)}] set vccBRAM_current_lsb [expr {$adc_lsb/(30*0.005)}] set vccO_1V8_current_lsb [expr {$adc_lsb/(100*0.005)}] set vccO_ADJ_current_lsb [expr {$adc_lsb/(20*0.005)}] set vccO_1V2_current_lsb [expr {$adc_lsb/(60*0.005)}] set MGTAVCC_current_lsb [expr {$adc_lsb/(30*0.005)}] set MGTAVTT_current_lsb [expr {$adc_lsb/(30*0.005)}] #read temperature and voltages set temp [get_property TEMPERATURE [lindex [get_hw_sysmons] 0]] puts "Tj is: $temp degC" set VCCINT_ADC [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 01 ] scan $VCCINT_ADC %x VCCINT_DEC set VCCINT [expr {$VCCINT_DEC*$supply_lsb}] set VCCAUX_ADC [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 02 ] scan $VCCAUX_ADC %x VCCAUX_DEC set VCCAUX [expr {$VCCAUX_DEC*$supply_lsb}] #puts "VCCAUX is: $VCCAUX V" set VCCBRAM_ADC [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 06 ] scan $VCCBRAM_ADC %x VCCBRAM_DEC set VCCBRAM [expr {$VCCBRAM_DEC*$supply_lsb}] #puts "VCCBRAM is: $VCCBRAM V" set MGTAVCC_ADC [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 10 ] scan $MGTAVCC_ADC %x MGTAVCC_DEC set MGTAVCC [expr {$MGTAVCC_DEC*2*$adc_lsb}] #puts "MGTAVCC is: $MGTAVCC V" set MGTAVTT_ADC [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 18 ] scan $MGTAVTT_ADC %x MGTAVTT_DEC set MGTAVTT [expr {$MGTAVTT_DEC*2*$adc_lsb}] #puts "MGTAVTT is: $MGTAVTT V" set VCCO_1V8_ADC [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 80 ] scan $VCCO_1V8_ADC %x VCCO_1V8_DEC set VCCO_1V8 [expr {$VCCO_1V8_DEC*2*$supply_lsb}] #puts "VCCO_1V8 is: $VCCO_1V8 V" set VCCO_1V2_ADC [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 81 ] scan $VCCO_1V2_ADC %x VCCO_1V2_DEC set VCCO_1V2 [expr {$VCCO_1V2_DEC*$supply_lsb}] #puts "VCCO_1V2 is: $VCCO_1V2 V" set VCCO_ADJ_ADC [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 82 ] scan $VCCO_ADJ_ADC %x VCCO_ADJ_DEC set VCCO_ADJ [expr {$VCCO_ADJ_DEC*$supply_lsb}] #puts "VCCO_ADJ is: $VCCO_ADJ V" #All voltage reading complete #Change to external mux mode and sequence to look at ch0->7 to read currents set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 41 00A0 set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 40 3812 set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 41 20A0 set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 46 0000 set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 48 0000 set_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 49 00FF after 1000 #read currents and display power set VCCINT_ADC_I [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 10 ] scan $VCCINT_ADC_I %x VCCINT_DEC_I puts $VCCINT_DEC_I set IVCCINT [expr {$VCCINT_DEC_I*$vccint_current_lsb}] set VCCINT_POWER [expr {$VCCINT*$IVCCINT}] puts "VCCINT is: $VCCINT V" puts "IVCCINT is: $IVCCINT A" puts "VCCINT Power is: $VCCINT_POWER W" set VCCAUX_ADC_I [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 11 ] scan $VCCAUX_ADC_I %x VCCAUX_DEC_I set IVCCAUX [expr {$VCCAUX_DEC_I*$vccaux_current_lsb}] set VCCAUX_POWER [expr {$VCCAUX*$IVCCAUX}] puts "VCCAUX is: $VCCAUX V" puts "IVCCAUX is: $IVCCAUX A" puts "VCCAUX Power is: $VCCAUX_POWER W" set VCCBRAM_ADC_I [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 12 ] scan $VCCBRAM_ADC_I %x VCCBRAM_DEC_I set IVCCBRAM [expr {$VCCBRAM_DEC_I*$vccBRAM_current_lsb}] set VCCBRAM_POWER [expr {$VCCBRAM*$IVCCBRAM}] puts "VCCBRAM is: $VCCBRAM V" puts "IVCCBRAM is: $IVCCBRAM A" puts "VCCBRAM Power is: $VCCBRAM_POWER W" set VCCO_1V8_ADC_I [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 13 ] scan $VCCO_1V8_ADC_I %x VCCO_1V8_DEC_I set IVCCO_1V8 [expr {$VCCO_1V8_DEC_I*$vccO_1V8_current_lsb}] set VCCO_1V8_POWER [expr {$VCCO_1V8*$IVCCO_1V8}] puts "VCCO_1V8 is: $VCCO_1V8 V" puts "IVCCO_1V8 is: $IVCCO_1V8 A" puts "VCCO_1V8 Power is: $VCCO_1V8_POWER W" set VCCO_ADJ_ADC_I [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 14 ] scan $VCCO_ADJ_ADC_I %x VCCO_ADJ_DEC_I set IVCCO_ADJ [expr {$VCCO_ADJ_DEC_I*$vccO_ADJ_current_lsb}] set VCCO_ADJ_POWER [expr {$VCCO_ADJ*$IVCCO_ADJ}] puts "VCCO_ADJ is: $VCCO_ADJ V" puts "IVCCO_ADJ is: $IVCCO_ADJ A" puts "VCCO_ADJ Power is: $VCCO_ADJ_POWER W" set VCCO_1V2_ADC_I [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 15 ] scan $VCCO_1V2_ADC_I %x VCCO_1V2_DEC_I set IVCCO_1V2 [expr {$VCCO_1V2_DEC_I*$vccO_1V2_current_lsb}] set VCCO_1V2_POWER [expr {$VCCO_1V2*$IVCCO_1V2}] puts "VCCO_1V2 is: $VCCO_1V2 V" puts "IVCCO_1V2 is: $IVCCO_1V2 A" puts "VCCO_1V2 Power is: $VCCO_1V2_POWER W" set MGTAVCC_ADC_I [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 16 ] scan $MGTAVCC_ADC_I %x MGTAVCC_DEC_I set IMGTAVCC [expr {$MGTAVCC_DEC_I*$MGTAVCC_current_lsb}] set MGTAVCC_POWER [expr {$MGTAVCC*$IMGTAVCC}] puts "MGTAVCC is: $MGTAVCC V" puts "IMGTAVCC is: $IMGTAVCC A" puts "MGTAVCC Power is: $MGTAVCC_POWER W" set MGTAVTT_ADC_I [get_hw_sysmon_reg [lindex [get_hw_sysmons] 0 ] 17 ] scan $MGTAVTT_ADC_I %x MGTAVTT_DEC_I set IMGTAVTT [expr {$MGTAVTT_DEC_I*$MGTAVTT_current_lsb}] set MGTAVTT_POWER [expr {$MGTAVTT*$IMGTAVTT}] puts "MGTAVTT is: $MGTAVTT V" puts "IMGTAVTT is: $IMGTAVTT A" puts "MGTAVTT Power is: $MGTAVTT_POWER W"