Goal Voltage scaling on Zynq
Approach Using PMBus protocol to change the value on voltage rails
Benefits Power and energey reduction
Credit  This work has been done under the ENPOWER project (funded by EPSRC) at University of Bristol.

The power monitoring library contains a few functions to determine the value of voltage on a given voltage rail available on the ZC702 Evaluation Board.

The two function to scale the voltage rails VCCINT and VCCPINT are

int set_VCCINT_voltage(float target_voltage);

int set_VCCPINT_voltage(float target_voltage);

in which target_voltage is a value less than 1.0.


#include "stdio.h"
#include <stdlib.h>
#include "measurement.h"

int main(int argc, char *argv[]) {
float target_value;
if (argc == 2) {
target_value = atof(argv[1]);
if (target_value < 0.7 || target_value > 1) {
printf("target voltage should be less than 1 v and greater than 0.7 v\n");
return -1;
} else {
printf("The command had no other arguments.\n");
return -1;
printf("target voltage would be = %f v\n", target_value);
return 0;

The monitoring library can be found at here.


Please use this citation to refer to this work.

  • Hosseinabady, M & Nunez-Yanez, JL, 2014, ‘Run-time power gating in hybrid ARM-FPGA devices’. in: Conference Digest – 24th International Conference on Field Programmable Logic and Applications, FPL 2014. Institute of Electrical and Electronics Engineers (IEEE)