Patent Publication Number: US-10318243-B2

Title: Integrated circuit design

Description:
BACKGROUND 
     This disclosure relates to integrated circuit design. 
     In the design of some integrated circuits such as (for example) so-called network on chip (NoC) devices, multiple data handling nodes are connected together to form data communication paths. 
     In the case of data communication paths between two data handling nodes associated with different power and/or clock domains, there can be a need for power and/or clock domain conversion at some point along the data communication path. 
     SUMMARY 
     In an example arrangement there is provided a computer-implemented method of integrated circuit design, the method comprising: using a computer, detecting communication paths between data handling nodes, the data handling nodes comprising data source nodes, data sink nodes and data routing nodes operating according to respective power domains, clock domains and data traffic parameters, in a network of data handling nodes; and using the computer, for a given communication path in a direction of data flow from a data source node to a data sink node, for each given data routing node in the given communication path to which data is communicated in the direction of data flow by a set of one or more other data handling nodes: (i) detecting a power domain and data traffic parameters of each of the set of one or more other data handling nodes communicating data to the given data routing node; (ii) assigning a power domain to the given data routing node in dependence upon the detected power domains and data traffic parameters of the set of one or more other data handling nodes; and (iii) assigning a clock domain to the given data routing node, from a set of one or more candidate clock domains applicable to the assigned power domain, so that the given data routing node, operating in the assigned clock domain, provides data routing according to the data traffic parameters of at least those of the set of one or more other data handling nodes operating according to the assigned power domain of the given data routing node. 
     In another example arrangement there is provided an integrated circuit having an integrated circuit design produced by the method defined above. 
     In another example arrangement there is provided a computer program product comprising a non-transitory machine-readable storage medium on which are stored program instructions which, when executed by a computer processor, cause the computer processor to perform a method of integrated circuit design, the method comprising: detecting communication paths between data handling nodes, the data handling nodes comprising data source nodes, data sink nodes and data routing nodes operating according to respective power domains, clock domains and data traffic parameters, in a network of data handling nodes; and for a given communication path in a direction of data flow from a data source node to a data sink node, for each given data routing node in the given communication path to which data is communicated in the direction of data flow by a set of one or more other data handling nodes: (i) detecting a power domain and data traffic parameters of each of the set of one or more other data handling nodes communicating data to the given data routing node; (ii) assigning a power domain to the given data routing node in dependence upon the detected power domains and data traffic parameters of the set of one or more other data handling nodes; and (iii) assigning a clock domain to the given data routing node, from a set of one or more candidate clock domains applicable to the assigned power domain, so that the given data routing node, operating in the assigned clock domain, provides data routing according to the data traffic parameters of at least those of the set of one or more other data handling nodes operating according to the assigned power domain of the given data routing node. 
     Further respective aspects and features of the present technology are defined by the appended claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present technique will be described further, by way of example only, with reference to embodiments thereof as illustrated in the accompanying drawings, in which: 
         FIG. 1  schematically illustrates an example computer system; 
         FIG. 2  schematically illustrates an NoC; 
         FIGS. 3 a  and 3 b    are schematic flowcharts illustrating methods of integrated circuit design; 
         FIG. 4  schematically illustrates an NoC; 
         FIG. 5  schematically illustrates a network graph representation; 
         FIGS. 6 and 7  schematically illustrate data communication paths; 
         FIG. 8  schematically illustrates an NoC; 
         FIG. 9  schematically illustrates a hierarchy of voltage, power and clock domains; 
         FIG. 10  schematically illustrates connections to a data handling node; 
         FIGS. 11 and 12  are schematic flowcharts illustrating respective methods; and 
         FIGS. 13 and 14  schematically illustrate data flow in data communication paths. 
     
    
    
     DESCRIPTION OF EMBODIMENTS 
     Before discussing the embodiments with reference to the accompanying figures, the following description of embodiments is provided. 
     An example embodiment provides a computer-implemented method of integrated circuit design, the method comprising: using a computer, detecting communication paths between data handling nodes, the data handling nodes comprising data source nodes, data sink nodes and data routing nodes operating according to respective power domains, clock domains and data traffic parameters, in a network of data handling nodes; and using the computer, for a given communication path in a direction of data flow from a data source node to a data sink node, for each given data routing node in the given communication path to which data is communicated in the direction of data flow by a set of one or more other data handling nodes: (i) detecting a power domain and data traffic parameters of each of the set of one or more other data handling nodes communicating data to the given data routing node; (ii) assigning a power domain to the given data routing node in dependence upon the detected power domains and data traffic parameters of the set of one or more other data handling nodes; and (iii) assigning a clock domain to the given data routing node, from a set of one or more candidate clock domains applicable to the assigned power domain, so that the given data routing node, operating in the assigned clock domain, provides data routing according to the data traffic parameters of at least those of the set of one or more other data handling nodes operating according to the assigned power domain of the given data routing node. 
     As discussed above, in an integrated circuit design process, a significant part of the design process is a method or step of assigning power properties to the various circuit elements. For any change in clock and power domain between two elements, a power and/or clock domain conversion circuit needs to be inserted as well, potentially leading to an increase in one or more of logic area, power and latency. 
     The example embodiments provide a computer-implemented technique to detect an assignment of power and clock domains to data handling nodes. Examples of the technique can provide a more efficient allocation, potentially alleviating the increase in one or more of logic area, power and latency. 
     The process can be carried out according to a single direction of data flow or, in situations where data can flow bidirectionally, it can be useful to carry it out in both directions. In example embodiments, in which the data handling nodes comprise master nodes and slave nodes, the method comprises: performing the steps (i)-(iii) for the given communication path in which the data source node is a given master node and the data sink node is a given slave node, in respect of a direction of data flow from the given master node to the given slave node so as to assign a first power domain and a first clock domain to each given data routing node in the given communication path; performing the steps (i)-(iii) for the given communication path in which the data source node is the given slave node and the data sink node is the given master node, in respect of a direction of data flow from the given slave node to the given master node so as to assign a second power domain and a second clock domain to each given data routing node in the given communication path; and selecting, for data routing nodes in the given communication path, either (a) the first power domain and the first clock domain, or (b) the second power domain and the second clock domain. 
     In order to select between the first and second outcomes, in example embodiments the selecting step comprises: detecting a number of power and clock domain conversions required for the given communication path when the first power domain and first clock domain are used for each data routing node in the given communication path; detecting a number of power and clock domain conversions required for the given communication path when the second power domain and second clock domain are used for each data routing node in the given communication path; and determining whether to use the first power domain and the first clock domain for each data routing node in the given communication path or the second power domain and the second clock domain for each data routing node in the given communication path, in dependence upon the detected numbers of power and clock domain conversions. In order to generate a solution which takes into account the whole device, the method may comprise performing the detecting steps for all communication paths in the network of data handling nodes. For example, the determining step may comprise determining which of using the first power domain and the first clock domain for each data routing node in the given communication path and using the second power domain and the second clock domain for each data routing node in the given communication path, provides a lower required number of power and clock domain conversions. 
     As part of the design process, the method may comprise using the computer, providing a power and clock domain conversion node at each circuit position at which a power and clock domain conversion is required. 
     An example of step (i) discussed above comprises: detecting which power domain, of a set of one or more power domains associated with the set of one or more other data handling nodes, is associated with the highest number of the set of one or more power domains. Another example of step (i) comprises: detecting which power domain, of a set of one or more power domains associated with the set of one or more other data handling nodes, is associated with those of the set of one or more power domains having data traffic parameters fulfilling a data traffic parameter condition. For example, the data traffic parameter condition may be a highest aggregate data traffic. 
     In some examples, both detections can be carried out, by step (i) comprising: detecting, which power domain, of a set of one or more power domains associated with the set of one or more other data handling nodes, is associated with the highest number of the set of one or more power domains; and detecting which power domain, of a set of one or more power domains associated with the set of one or more other data handling nodes, is associated with those of the set of one or more power domains having data traffic parameters fulfilling a data traffic parameter condition. In such a case, step (ii) can comprise assigning one of the two detected power domains, according to a selection criterion. 
     In some examples, the selection criterion can comprise whether a difference in aggregate data traffic between power domains of the set of one or more other data handling nodes exceeds a threshold difference. For example, the threshold difference can be a predetermined proportion of a greatest aggregate traffic amongst power domains of the set of one or more other data handling nodes. As another example, the selection criterion may comprise which of the power domains is associated with a data handling node of the set of one or more other data handling nodes having a lowest data communication latency requirement. 
     The present techniques can also advantageously be applied to other types of data handling nodes such as one or more non-routing nodes (such as, for example, serializer/deserializer nodes and/or data buffer nodes (such as pipeline registers)) providing a data path between a pair of ports; in this case, in example arrangements the method comprises, using the computer, for the given communication path in a direction of data flow from a data source node to a data sink node, for each given non-routing node in the given communication path to which data is communicated in the direction of data flow by a set of one or more other data handling nodes, performing the steps (i)-(iii) to assign a power domain and a clock domain to that given non-routing node. 
     As an optional step, the method can comprise the step of generating an integrated circuit layout according to the integrated circuit design. 
     Another example embodiment provides an integrated circuit having an integrated circuit design produced by the method as defined above. 
     Another example embodiment provides a computer program product comprising a non-transitory machine-readable storage medium on which are stored program instructions which, when executed by a computer processor, cause the computer processor to perform a method of integrated circuit design, the method comprising: detecting communication paths between data handling nodes, the data handling nodes comprising data source nodes, data sink nodes and data routing nodes operating according to respective power domains, clock domains and data traffic parameters, in a network of data handling nodes; and for a given communication path in a direction of data flow from a data source node to a data sink node, for each given data routing node in the given communication path to which data is communicated in the direction of data flow by a set of one or more other data handling nodes: (i) detecting a power domain and data traffic parameters of each of the set of one or more other data handling nodes communicating data to the given data routing node; (ii) assigning a power domain to the given data routing node in dependence upon the detected power domains and data traffic parameters of the set of one or more other data handling nodes; and (iii) assigning a clock domain to the given data routing node, from a set of one or more candidate clock domains applicable to the assigned power domain, so that the given data routing node, operating in the assigned clock domain, provides data routing according to the data traffic parameters of at least those of the set of one or more other data handling nodes operating according to the assigned power domain of the given data routing node. 
     Example embodiments of the present disclosure relate to a method performed by a computer or data processing system such as a computer processor.  FIG. 1  is a schematic diagram of an example computer apparatus appropriate to the performance of such a method. 
     Referring to  FIG. 1 , various components are shown schematically, interconnected by a bus arrangement  170 . Other components may also be provided even if they are not shown (for clarity of the diagram and explanation) in  FIG. 1 . 
     The example computer  100  comprises: a central processing unit (CPU)  110 , a random access memory (RAM)  120 , a non-volatile memory (NVM)  130  such as a hard disk drive, an interface (I/F)  140  for connecting to other components such as peripheral devices, a network connection, the internet and so on, a user interface (UI)  150  providing, for example, a keyboard, mouse, display or the like, and a non-transitory machine readable medium (NTMRM)  160  such as a magnetic or optical disk, a flash memory or other non-volatile memory or the like. 
     In example arrangements, the NTMRM  160  can embody a computer program product comprising the NTMRM  160  on which are stored program instructions which, when executed by the computer processor  110  of the computer  100 , cause the computer processor to perform a method of the type described below, such as the method of  FIG. 3 b    to be discussed below. 
     Example arrangements relate to the design, by a computer system, of an integrated circuit device such as a so-called network on chip (NoC), although the design of other types of integrated circuit is also envisaged within the scope of the present disclosure. 
     An NoC represents a system of interconnected processing devices or other devices embodied on a single integrated circuit. An example schematic representation of an NoC  310  is provided as  FIG. 2 . Here, multiple so-called IP blocks  300  are connected to one another to provide a network of such blocks. In this example, an “IP block” is a unit of circuitry with particular functionality, which typically (though not necessarily) represents the intellectual property or IP of a single party. Commonly, in integrated circuit design, these so-called IP blocks are treated as units within the integrated circuit design process, even though an IP block may comprise very many gates, transistors or other components in its own right. The term “IP block” is used here in a generic illustrative sense; the IP blocks  300  are simply functional blocks with the capability of communicating data with other such functional blocks. Their precise function is a matter of system design and is not relevant to the communication arrangements which will be discussed in more detail below. Similarly, although the term “IP block” implies ownership of rights in the module design, the present disclosure is not limited to any particular ownership arrangement. 
     So, for the purposes of  FIG. 2 , it is sufficient to note that the IP blocks  300  are capable of communicating with other IP blocks  300  within the NoC  310 . 
     Communication between IP blocks may be according to so-called virtual channels (VCs). Virtual channels assign a respective time slot (in a time division multiplexed arrangement) or (in other examples) an identifier to packets being transmitted via a physical connection between two data handling nodes, so as to allow multiple communication paths (such as paths in each direction) to use that physical connection in such a way that packets associated with different VCs do not collide or otherwise interfere with one another. 
     Each IP block comprises a bridge  320  shown as a shaded box at an input/output of the IP block. The purpose of the bridge is as follows. In general terms, within an NoC such as the schematic NoC  310 , data is transferred in packetized form, for example as so-called flits (flow control units). The routing and transmission of the flits is under the control of various interconnected routers (R)  330 . The data transport mechanism used by the routers  330  and connections such as connections  340  between the routers and the IP blocks is generic, which is to say the same protocol is used regardless of the nature of the IP blocks  300  forming the NoC  310 . In other words, the transport protocol is “agnostic” to the nature or design of the individual IP blocks. The bridges  320  convert a particular IP block&#39;s data protocol (which may not be necessarily a packetized protocol) into the generic transport protocol used by the network connections  340  and the routers  330 . Similarly, for packets or flits received from the network, the bridges  320  convert the generic transport protocol of the network into the specific data input requirements of the respective IP block. 
     So, a particular bridge is specific to its associated IP block in terms of its interface with that IP block, but it generic to the network in terms of its interface with the network. 
     The routers  330  in  FIG. 2  are shown schematically as octagonal blocks, which schematically represents the fact they are 8-port routers. However, other numbers of router ports could be provided. The routers could all have a similar design, or different types of routers could be used within a single NoC. 
     A data link  350  is drawn schematically using a wider or thicker line than other data links in the schematic representation of  FIG. 2 . This is to provide a schematic representation of a wider data link, which is to say that more conductors are provided so that the data link  350  can carry more data in parallel than other narrower data links of  FIG. 2 . This could represent a greater capacity of that data link in terms of bits per second transferred, if the data link  350  runs at the same clock speed as other, narrower, data links in  FIG. 2 . Alternatively, the clock speed of the data link  350  could be proportionately slower so that although more physical wires are used for the data link  350 , its transport capacity in bits per second is the same as that of other data links such as the data links  340 . In general, the data transport capacity of each of the data links is dependent upon by its width multiplied by its operating clock speed. 
     In the example of  FIG. 2 , between any one of the IP blocks  300  and any other one of the IP blocks  300 , there is only one valid data transfer route. The routing is statically determined at the integrated circuit design stage. If the interconnection of routers  330  provides multiple potential data transport routes, a particular route between a first and a second IP block is selected and established statically in advance rather than being allocated dynamically in use. This provides a safer mode of operation avoiding potential deadlocks or other hazardous situations which might occur if the routing of data packets was selectable in operation. So, regardless of how many potential connections there are between a particular IP block pair of one IP block and another, the data will be routed by a pre-selected one of those connection routes. 
     Referring to  FIG. 3 a   , the schematic diagram of  FIG. 2  represents an example of a circuit design  370  forming an input to an integrated circuit design process implemented by a computer. 
     At a step  375 , the computer processor generates a draft physical layout of the integrated circuit, using known techniques and involving selecting physical locations on an integrated circuit substrate for the various components of the integrated circuit according to parameters such as proximity to power supply rails and clock supply connectors, proximity to other components to which as physical connection is required, avoiding crosstalk of other unwanted interaction between conductors, and the like. The draft physical layout may include one or more other components (examples of so-called non-routing nodes) such as pipeline registers (data buffers) and serdes (serializer/deserializer nodes) providing a data path between a pair of ports and which will be discussed in more detail with reference to  FIG. 4  below. 
     At a step  380 , the computer processor allocates or assigns a power domain (PD) and clock domain (CD) to each of the router devices. PDs and CDs will be discussed in more detail below. 
     Then, at a step  385  the computer processor generates a final layout in which transitions between clock domains and/or power domains are handled by using so-called PCDC (power clock domain crossing) circuits. This provides an example of using the computer, providing a power and clock domain conversion node at each circuit position at which a power and clock domain conversion is (detected by the step  380  to be) required. 
     The production of the final layout at the step  385  represents the end of the process carried out by the computer processor, but at a further optional step  390 , an integrated circuit is fabricated (by fabrication machinery) according to the finalised layout. The particular details of the fabrication process are not discussed further here. However, it is noted that the step  390  provides an example of generating an integrated circuit layout according to the integrated circuit design. Such an integrated circuit, having an integrated circuit design produced by the method defined above (including at least the step  380 ) is also considered as an embodiment of the present disclosure. 
     The step  380 , that is to say, PD and CD assignment, represents at least a part of the computer-implemented integrated circuit design process.  FIG. 3 b    provides more detail of operations relating to the step  380  and represents a method in its own right. In particular,  FIG. 3 b    is a schematic flowchart illustrating a summary computer-implemented method of integrated circuit design, the method comprising: 
     using a computer such as the computer  100 , detecting (at a step  200 ) communication paths between data handling nodes, the data handling nodes comprising data source nodes, data sink nodes and data routing nodes operating according to respective power domains, clock domains and data traffic parameters, in a network of data handling nodes; and 
     using the computer, for a given communication path in a direction of data flow from a data source node to a data sink node, for each given data routing node in the given communication path to which data is communicated in the direction of data flow by a set of one or more other data handling nodes: 
     (i) detecting (at a step  210 ) a power domain and data traffic parameters of each of the set of one or more other data handling nodes communicating data to the given data routing node; 
     (ii) assigning (at a step  220 ) a power domain to the given data routing node in dependence upon the detected power domains and data traffic parameters of the set of one or more other data handling nodes; and 
     (iii) assigning (at a step  230 ) a clock domain to the given data routing node, from a set of one or more candidate clock domains applicable to the assigned power domain, so that the given data routing node, operating in the assigned clock domain, provides data routing according to the data traffic parameters of at least those of the set of one or more other data handling nodes operating according to the assigned power domain of the given data routing node. 
     These steps will be discussed in more detail below. 
     Turning to  FIG. 4 , the diagram does not necessarily directly represent a draft or final layout but does represent the further components and other factors introduced into such a layout, for the purposes of the present discussion. 
     A pipeline register  400  or data buffer is introduced where a length or distance of conductor between one component such as a router  410  and an IP block  420  is so long that transmission along that conductor would potentially cause issues if it were attempted to be carried out within a single clock cycle. So, by placing the pipeline register (or in the example case of pipeline registers  430 , more than one pipeline register) along that conductor path, the transit between the components  410 ,  420  can be split into multiple partial transits, in respective clock cycles. For example, data can be transferred from the router  410  to the pipeline register  400  in a first clock cycle and then, in a next or subsequent clock cycle, from the pipeline register  400  to the IP block  420 . 
     Serdes  440  are used to transition between data connections such as connections  450 ,  460  of different widths. Here, as discussed above, the width may refer to the number of conductors, or in other words the quantity of data which can be conveyed in parallel. In the example shown, the data path  450  has a narrower width than the data path  460 . So, in the case of transmission of a packet on the (wider) data path  460  from the router  410  to the serdes  440 , the data packet is received and buffered by the serdes  440  and then output as multiple successive packets on the narrower data connection  450 . Similarly, an incoming packet on the data connection  450  is buffered at the serdes  440  and can be aggregated with other incoming packets to form a suitably wider packet for transmission on the data connection  460 . In general terms, serdes are used to manage transitions between data connections of different widths. 
     The IP blocks or other components such as routers operate in various power domains and clock domains. In  FIG. 4 , just two clock domains are shown, one for a circuitry region  470  and one for the remainder of the NoC. However, as discussed below, multiple power domains and clock domains can be provided. At an interface between two different domains, a so-called PCDC circuit, for example implemented as an asynchronous FIFO, is provided. Examples of PCDC circuits  480  are shown in  FIG. 4  at transitions between the clock domain  470  and the remainder of the NoC of  FIG. 4 . PCDC circuits are needed at each such transition, but the introduction of PCDC circuits can lead to an increase in one or more: circuit area on the integrated circuit substrate; power consumption; and data transmission latency. Therefore, using the present techniques (of  FIG. 3 b   ) which represent an embodiment of the step  380  of  FIG. 3 a   , techniques are provided to assign power domains and clock domains to circuit elements of the NoC, for example in such a way as to provide an improved or potentially improved efficiency of use of PCDC circuits. Further details of the present embodiments of the circuits will be discussed below. 
     The circuitry of  FIG. 4  can be represented as a so-called graph. This does not change the logical interconnections between nodes within the circuitry but simply provide a representation in which the paths between them can more easily be envisaged. So,  FIG. 5  is an example graph illustrating, purely as an example, connections between three IP blocks  500 , labelled as master (M)  0 , master  1  and slave (S)  0 . 
     The master and slave nodes are example categorizations of the IP blocks, in that a master node can initiate a data transfer transaction with a slave node; the slave node can respond to such a transaction but a slave node cannot itself initiate such a transaction. However, having said this, in the course of a data transfer transaction initiated by a master node and occurring with a slave node, there can be data transferred in either direction. For example, in the case of a data write transaction, the master node sends data to the slave node to be written, and the slave node sends an acknowledgement back to the master node. In the case of a data read transaction, the master node sends data to the slave node indicating or specifying the data to be read, and the slave node returns the requested data to the master node. So, a typical transaction between a master and a slave node can involve both data flow directions, from the master to the slave and from the slave to the master. However, the difference between the master and the slave is which of the nodes can initiate or request that transaction. 
     Connections between the IP blocks  500  in  FIG. 5  are provided by routers as discussed above. In particular, three routers R 0 , R 1  and R 4  are involved in data transfer between the three IP blocks  500 . Other routers are shown schematically in  FIG. 5  and may be involved in other data transfers not represented by the simplified example of  FIG. 5 . Solid lines between data handling nodes (IP blocks and routers) schematically represent data connections. 
     Another representation of the routing of data in  FIG. 5  is provided in  FIG. 6  in which, starting at the left hand side representing a master node M 0  or M 1 , the series of routers involved in a data connection with the slave node S 0  is shown. So, from the master node M 0 , data is transferred to the router R 0 , then to the router R 1 , then to the slave node S 0 . From the master node M 1 , data is routed to the router R 4 , then to the router R 1 , then to the slave node S 0 . These interconnections can be represented equivalently by the representation of  FIG. 7 , given that the router R 1  and the slave node S 0  are common between the two paths. 
     Power domains and clock domains will now be discussed before further detail of the power domain and clock domain assignment techniques is provided. 
     Referring to  FIGS. 8 and 9 , example circuitry such as an NoC device of the type discussed above is provided with two voltage supplies or rails referred to as VD 0  and VD 1  (voltage domain 0 and voltage domain 1). Respective portions of circuitry within the NoC device are physically connected to either VD 0  or VD 1 . Each of these portions of circuitry corresponds to a respective power domain PD 0  . . . PD 3 . The power domains form a hierarchy under the voltage domains such that (as shown in  FIG. 9 ) within the voltage domain VD 0 , power domains PD 0  and PD 1  are provided, and within the voltage domain VD 1 , power domains PD 2  and PD 3  are provided. 
     Clock domains are made available within the circuitry associated with a particular power domain. As shown in  FIGS. 8 and 9 , within circuitry in power domain PD 0 , a single clock domain CD 0  is available. Within the circuitry associated with power domain PD 1 , two different clock domains CD 1 , CD 2  are available. Within the circuitry associated with PD 1 , three clock domains CD 3 , CD 4 , CD 5  are available, and within circuitry associated with PD 3 , one clock domain PD 6  is available. 
     As part of the preparation of the initial circuit at the step  370  of  FIG. 3 a   , power domains and clock domains are generally associated with the IP blocks of the NoC. However, between IP blocks, the routers (which represent a part of the design process represented by the step  375  . . .  385  of  FIG. 3 a   ) can be assigned to various different power domains and clock domains as part of the computer-implemented layout design process. 
     In a simple example of two IP blocks having different power and clock domains with a single router between them, the intervening router can be associated (as part of the computer-implemented layout design process) with the power and clock domains of the master device or the power and clock domains of the slave device. In general terms, either option would provide a working circuit. If the single router were associated with the power and clock domains of the master device, a PCDC circuit would be required between the router and the slave device. If the single router were associated with the power and clock domains of the slave device, a PCDC circuit would be required between the router and the master device. So in some respects the selection is arbitrary, in that either option would work. But in a complicated circuit having many different IP blocks and interconnected routers, the choice of power and clock domains for the routers can make a large difference to the number and nature of the required PCDC circuits, because different choices of power and clock domains for the individual routers can vary the overall number of clock and/or power domain transitions within the overall circuit. So in that sense, the choice is not arbitrary. As mentioned above, it can be desirable to reduce the number of PCDC circuits (and, in other examples, avoid their use in certain high traffic data paths) in order to improve the efficiency of layout and/or operation of the integrated circuit. The present techniques aim to provide a method which can improve the allocation or assignment of clock and power domains. 
       FIG. 10  schematically illustrates an example router (R)  1000 . It forms part of circuitry represented by the type of representation shown in  FIG. 7  and described above, except that as inputs to the router  1000  there are connections with five other data handling nodes (nodes such as master nodes, slave nodes or other routers). Each of these has an associated power domain, assigned in the design  370  (in the case of master nodes or slave nodes) or already assigned by the present process (given that the flow of the process as described is in a data flow direction). In the example shown in  FIG. 10 , two power domains are represented amongst the five inputs to the router  1000 , namely power domains PD-A and PD-B. However, this is just an example; more than (or fewer than) two power domains could be represented amongst the inputs to a given router. 
     Also associated with each input to the router  1000  are so-called traffic parameters. These could define a required data transport speed or bandwidth, for example represented as a required number of bits per second or bytes per second, and/or other traffic parameters such as a maximum permissible latency. The traffic parameters in  FIG. 10  are shown as parameters T1, T2, T3, T4 and T5. 
     An output  1010  from the router passes to the next data handling node in the circuit representation. 
       FIG. 11  is a schematic diagram representing in more detail an example arrangement falling within the scope of the computer-implemented method of integrated circuit design shown in  FIG. 3 b    and described above. 
     The flowchart of  FIG. 11  relates to the assignment of a power domain and a clock domain to a particular router in a data communication path of a particular data flow direction. Then, this method will be used within another flowchart in  FIG. 12  to be discussed below, indicating how these techniques can be used across multiple routers in a circuit. 
     Referring to  FIG. 11 , at a step  1100 , a data communication path is detected in a data flow order. For example, the order could be from the master node to the slave node, as shown by a schematic representation of  FIG. 13 , or from a slave node to a master node as shown by a schematic representation of  FIG. 14 . In some examples of the arrangement shown in  FIG. 12  and described below, both directions are considered and the results compared in various ways. For the purposes of  FIG. 11 , however, either a direction from master to slave or a direction from slave to master is selected. Note again that as discussed above, even though the master devices are responsible for initiating data transfer transactions, data can be passed in either direction during implementation of such a data transfer transaction. The step  1100  therefore provides an example of using a computer, detecting communication paths between data handling nodes, the data handling nodes comprising data source nodes, data sink nodes and data routing nodes operating according to respective power domains, clock domains and data traffic parameters, in a network of data handling nodes. 
     At a step  1105 , a router within the particular data communication path under consideration is selected. As mentioned above, generally speaking, IP blocks (forming the master and slave nodes) tend to be assigned to power and clock domains in the preparation in the initial circuit design  370 . So, in the present examples, the present process is applied to router nodes. A particular router is selected for analysis at the step  1105 . Therefore, using the computer, for a given communication path in a direction of data flow from a data source node to a data sink node, the process is performed for a given data routing node in the given communication path to which data is communicated in the direction of data flow by a set of one or more other data handling nodes. (According to a step  1210 / 1225  to be discussed below, the process can be carried out for each given router). 
     Ata step  1110 , two parameters are detected: PD-dominant and PD-max-used. 
     Referring to the example of  FIG. 10 , PD-dominant is derived as follows:
         List the candidate PD for each input to the router (so as to detect a power domain and data traffic parameters of each of the set of one or more other data handling nodes communicating data to the given data routing node), noting that because the present method proceeds in a data flow direction, each input to the router will have only one candidate PD; and   Select the candidate PD for which the associated group of one or more inputs has the greatest aggregate traffic across all of its virtual channels.       

     So, in the example case of  FIG. 10 , the candidate PDs are PD-A and PD-B. Assuming that the traffic parameters T1 . . . T5 represent (for example) a required bit rate or byte transfer rate, the aggregate traffic for PD-A is T1+T2. The aggregate traffic for PD-B is T3+T4+T5. Whichever of these aggregate traffic values ((T1+T2) or (T3+T4+T5)) is greater provides an indication of whether to select PD-A or PD-B as the parameter PD-dominant. 
     PD-max-used is derived as follows:
         For each input to the router  1000  (referring to the example of  FIG. 10 ), find the associated PD of the node sending data to that router  1000 ; and   Select the power domain which corresponds to the greatest number of such inputs.       

     So, in the example of  FIG. 10 , PD-B (being associated with three inputs, rather than the two inputs associated with PD-A) is the PD-max-used parameter for the router  1000 . 
     So, the step  1110  results in the detection of two parameters, PD-dominant and PD-max-used. In the present example, assume (just for the purposes of the present discussion) that the traffic figures led to the selection of PD-A as PD-dominant, and the number of inputs led to the selection of PD-B as PD-max-used. However, in other examples, just one parameter could be detected and that parameter used as the selection of the PD for that router. In the case that two (or more) such parameters are detected, each having associated power domains, the method can comprise (as the outcomes of the steps  1130 ,  1150 ) assigning one of the two (or more) detected power domains, according to a selection criterion. 
     The detection of the parameter PD-max-used, as discussed above, provides an example of detecting which power domain, of a set of one or more power domains associated with the set of one or more other data handling nodes, is associated with the highest number of the set of one or more power domains. 
     The detection of the parameter PD-dominant, as discussed above, provides an example of detecting which power domain, of a set of one or more power domains associated with the set of one or more other data handling nodes, is associated with those of the set of one or more power domains having data traffic parameters fulfilling a data traffic parameter condition. For example, the data traffic parameter condition may be a highest aggregate data traffic. 
     Various criteria can then be used to decide whether to assign PD-dominant or PD-max-used (or, indeed, another PD) to the router  1000 . An example to be discussed here is based upon traffic parameters. 
     At a step  1120 , the traffic difference between the PD with maximum traffic and that with a minimum amongst those forming an input to the router  1000  is detected. In the example of  FIG. 10 , there are only two PDs represented, and (based on the assumption that PD-dominant is PD-A) it is assumed that (T1+T2) is greater than (T3+T4+T5). The difference in traffic is therefore ((T1+T2)−(T3+T4+T5)). However, if more PDs were associated with inputs, the step  1120  would detect the difference between that PD having the greatest associated traffic and that PD having the lowest associated traffic. 
     This traffic difference figure will be used to decide which PD to assign. First, however, an optional step  1130  detects whether there is even any traffic at that router. If the answer is no then at a step  1135 , an arbitrary one of the available PDs is assigned to the router, for example the least-loaded available PD (which is to say, the PD available at that physical location in the draft laid-out integrated circuit which has the fewest nodes currently associated with it and/or which has the lowest current draw currently associated with it). An arbitrary clock domain is simply assigned as the lowest frequency clock domain from the least loaded power domain in the system (at a step  1140 ) because there is no traffic at that router. 
     Assuming, however, that the router does carry traffic, then at a step  1150  a detection is made as to whether the traffic difference detected at the step  1120  exceeds a threshold. 
     The threshold could be, for example, 20% of the higher traffic value (T1+T2), or 20% of the lower value (T3+T4+T5). Or another proportion could be used other than 20%, which is simply an example. Or a fixed threshold (which is to say, one which does not depend on the particular traffic values under consideration) such as a threshold difference of 100 MBPS (megabytes per second) could be used. 
     These arrangements provide an example in which the selection criterion comprises whether a difference in aggregate data traffic between power domains of the set of one or more other data handling nodes exceeds a threshold difference. For example the threshold difference may be a predetermined proportion (such as 20% of a greatest aggregate traffic amongst power domains of the set of one or more other data handling nodes. 
     If the traffic difference exceeds the threshold, then control passes to a step  1160  at which the power domain PD-dominant is assigned to that router  1000 . Then, at a step  1165 , a clock domain is assigned to the router  1000  as follows. The assigned clock domain is one which is available within the power domain PD-dominant, and amongst those which are available within that power domain, the minimum clock speed which maintains the traffic throughput for the maximum traffic power domain PD-dominant (in this case, T1+T2) is selected. 
     If the outcome at the step  1150  is no, control passes to a step  1170  at which the power domain PD-max-used is assigned to that router  1000 . Again, of those clock domains available within the power domain PD-max-used, the minimum clock speed which will provide for the traffic level (T3+T4+T5) of the power domain PD-max-used is assigned at a step  1175 . 
     The steps  1135 ,  1160 ,  1170  provide an example of assigning a power domain to the given data routing node in dependence upon the detected power domains and data traffic parameters of the set of one or more other data handling nodes. The steps  1165 ,  1175  provide an example of assigning a clock domain to the given data routing node, from a set of one or more candidate clock domains applicable to the assigned power domain, so that the given data routing node, operating in the assigned clock domain, provides data routing according to the data traffic parameters of at least those of the set of one or more other data handling nodes operating according to the assigned power domain of the given data routing node. If, at the step  1175 , it is the case that none of the clocks associated with the PD-max-used can support sufficient data bandwidth required by that data handling node, another PD can be selected from those available at that physical location. 
     The process of  FIG. 11  has been described with respect to routers. It may also be other data handling nodes such as non-routing nodes (such as serializer/deserializer nodes and/or data buffer or pipeline nodes) providing a data path between a pair of ports. Here, because (in the direction of data flow) there is only one input, PD-dominant and PD-max-used may be the same PD. In such examples, the method comprises, using the computer, for the given communication path in a direction of data flow from a data source node to a data sink node, for each given non-routing node in the given communication path to which data is communicated in the direction of data flow by a set of one or more other data handling nodes, performing the steps (i)-(iii) to assign a power domain and a clock domain to that given non-routing node. 
     As mentioned above, the arrangement of  FIG. 11  related to an operation which may be carried out in respect of a single router or a single non-routing node and a single data flow direction.  FIG. 12  provides an optional process to build upon these detections and assign PD and CD parameters to multiple routers in an NoC. 
     A process is carried out starting at a step  1200  to perform the process of  FIG. 11  based on a data flow order from master to slave nodes within the data communication paths. This results in the assignment at a step  1205  of a first PD and a first CD to each router. The process is repeated across all routers in the draft layout at a step  1210 , which may involve multiple iterations of the step  1205 . 
     The term “first” PD, CD and (as used later) “second” PD, CD are simply terms to distinguish between a pair of sets of parameters for PD, CD and do not imply any order of priority, preference or generation between the sets of parameters. 
     A similar process is carried out starting at a step  1215  at which a data flow order is established as slave node to master node, a second PD, CD pair is assigned to each router at a step  1220  and, at a step  1225  the step  1220  is repeated across all routers. 
     The steps  1210 ,  1225  provide an example of performing the detecting steps for all communication paths in the network of data handling nodes. 
     The steps  1200  . . .  1210  and the steps  1215  . . .  1225  can be carried out in series, or in parallel as shown schematically in  FIG. 12 . The outcome, at a point  1230  in the flowchart of  FIG. 12  is a pair of sets of PD, CD parameters (first and second sets) for each router in a communication path. The first PD, CD parameters are derived by analysing in a data flow order from master to slave, and a second PD, CD parameters are derived by analysis in a data flow order form slave to master. 
     Therefore, in a case in which the data handling nodes comprise master nodes and slave nodes, an example of the method comprises: performing ( 1200 ,  1205 ) the steps (i)-(iii) for the given communication path in which the data source node is a given master node and the data sink node is a given slave node, in respect of a direction of data flow from the given master node to the given slave node so as to assign a first power domain and a first clock domain to each given data routing node in the given communication path; performing ( 1215 ,  1220 ) the steps (i)-(iii) for the given communication path in which the data source node is the given slave node and the data sink node is the given master node, in respect of a direction of data flow from the given slave node to the given master node so as to assign a second power domain and a second clock domain to each given data routing node in the given communication path; and selecting ( 1235  onwards), for data routing nodes in the given communication path, either (a) the first power domain and the first clock domain, or (b) the second power domain and the second clock domain. 
     At a step  1235 , a selection criterion (or more than one selection criteria) is detected. Examples of such selection criteria will be discussed below. 
     At a step  1240 , if the criterion is met, then control passes to a step  1245  at which the first PD, CD pair is selected. Otherwise, control passes to a step  1250  at which the second CD, PD is selected. The selection is made for all routers in a communication path, which is to say either all routers in that communication path are assigned the first PD, CD pair or all routers in the communication path are assigned the second PD, CD pair. 
     Examples of the selection criterion used at the step  1235  are that according to each set (first and second) of PD, CD pairs, the number of PCDC circuits required is detected. As discussed above, a PCDC circuit is required at any transition between power and clock domains, so for any two adjacent nodes in a communication path, a PCDC circuit is required if either or both of the power or clock domains is different between those two nodes. So, the number of PCDC circuits can be detected by detecting differences between adjacent nodes in each communication path. The criterion can then be a detection of which set of PD, CD parameters gives rise to the lowest number of PCDC circuits being required, or—in the format shown in the  FIG. 12 —the criterion can be “does the use of the first PD, CD pair give rise to a lower number of PCDC circuits being required?”. This provides an example of detecting a number of power and clock domain conversions required for the given communication path when the first power domain and first clock domain are used for each data routing node in the given communication path; detecting a number of power and clock domain conversions required for the given communication path when the second power domain and second clock domain are used for each data routing node in the given communication path; and determining whether to use the first power domain and the first clock domain for each data routing node in the given communication path or the second power domain and the second clock domain for each data routing node in the given communication path, in dependence upon the detected numbers of power and clock domain conversions. This also provides an example of determining which of using the first power domain and the first clock domain for each data routing node in the given communication path and using the second power domain and the second clock domain for each data routing node in the given communication path, provides a lower required number of power and clock domain conversions. 
     Another example is one in which the selection criterion comprises which of the power domains is associated with a data handling node of the set of one or more other data handling nodes having a lowest data communication latency requirement. 
     Finally, as part of the integrated circuit design process at the step  385 , according to the selected (assigned) PD/CD pairs, the appropriate PCDC circuits are provided as part of the layout design within the NoC. 
     Various alternative arrangements are possible and are within the scope of the present disclosure. 
     For example, the traffic parameters used in any of the above techniques could be weighted according to a traffic class, so that instead of comparing traffic parameters which directly indicate rates of data flow, the indications could be weighted so as to assign more or less significance to some classes of traffic. 
     If a PD is not available in a given physical location in a final layout, another PD could be assigned. 
     In the present application, the words “configured to . . . ” are used to mean that an element of an apparatus has a configuration able to carry out the defined operation. In this context, a “configuration” means an arrangement or manner of interconnection of hardware or software. For example, the apparatus may have dedicated hardware which provides the defined operation, or a processor or other processing device (such as a processing element as discussed above) may be programmed to perform the function. “Configured to” does not imply that the apparatus element needs to be changed in any way in order to provide the defined operation. 
     Although illustrative embodiments of the present techniques have been described in detail herein with reference to the accompanying drawings, it is to be understood that the present techniques are not limited to those precise embodiments, and that various changes, additions and modifications can be effected therein by one skilled in the art without departing from the scope and spirit of the techniques as defined by the appended claims. For example, various combinations of the features of the dependent claims could be made with the features of the independent claims without departing from the scope of the present techniques.