A method for mapping between physical functions (PF0, PF1) and virtual functions (VF0, VF1, VF2, VF3), the method comprising: receiving, at a virtualization management unit, data indicating virtual machines (110a, 110b, 110c, 110d) to be provided access to functionality implemented in function blocks (130a, 130b); and establishing, by the virtualization management unit, a mapping between the virtual machines (110a, 110b, 110c, 110d) and the function blocks (130a, 130b) to provide the virtual machines (110a, 110b, 110c, 110d) access to the functionality implemented in the function blocks (130a, 130b), the mapping indicating each virtual machine (110a, 110b, 110c, 110d) associated with a corresponding virtual function (VF0, VF1, VF2, VF3), each virtual function (VF0, VF1, VF2, VF3) associated with one or more of the physical functions (PF0, PF1), and each of the one or more physical functions (PF0, PF1) associated with the one or more function blocks (130a, 130b), wherein the mapping is based on characteristics of the virtual machines (110a, 110b, 110c, 110d); wherein the one or more physical functions (PF0, PF1) include a first physical function and a second physical function, the first physical function mapped to a first function block, the second physical function mapped to the first function block and a second function block; wherein the first function block provides a first functionality and the second function block provides a second functionality; characterized by reconfiguring the second function block to provide a third functionality; and updating the mapping based on the reconfiguration of the second function block to provide the third functionality. receiving, at a virtualization management unit, data indicating virtual machines (110a, 110b, 110c, 110d) to be provided access to functionality implemented in function blocks (130a, 130b); and establishing, by the virtualization management unit, a mapping between the virtual machines (110a, 110b, 110c, 110d) and the function blocks (130a, 130b) to provide the virtual machines (110a, 110b, 110c, 110d) access to the functionality implemented in the function blocks (130a, 130b), the mapping indicating each virtual machine (110a, 110b, 110c, 110d) associated with a corresponding virtual function (VF0, VF1, VF2, VF3), each virtual function (VF0, VF1, VF2, VF3) associated with one or more of the physical functions (PF0, PF1), and each of the one or more physical functions (PF0, PF1) associated with the one or more function blocks (130a, 130b), wherein the mapping is based on characteristics of the virtual machines (110a, 110b, 110c, 110d); wherein the one or more physical functions (PF0, PF1) include a first physical function and a second physical function, the first physical function mapped to a first function block, the second physical function mapped to the first function block and a second function block; wherein the first function block provides a first functionality and the second function block provides a second functionality; characterized by reconfiguring the second function block to provide a third functionality; and updating the mapping based on the reconfiguration of the second function block to provide the third functionality.