The subject matter disclosed herein generally relates to modeling random latch values during simulation testing and, more particularly, to increasing performance when modeling random latch values.
Increasing power consumption in semiconductor chips has led to entire portions of the chips being turned off to save power, when the system does not require the use of these portions of the chip. The portions that can be turned on and off while other portions of the chip remain on and operational can be referred to as power islands. These portions, or power islands, that are turned off can include one or more latches that can hold signals that correspond to data.
However, when a power island is turned off, an adjacent “on” portion of the chip may receive an unintended logic input from the power island. This can occur for a number of reasons, such as, for example a latch that outputs an unwanted output when a power signal to that latch is in a low state thereby placing the latch in an “off” state. While logical simulation may be used to test for the problem using multi-state logic, power management logic can take multiple cycles to switch between and on and off state and as a consequence slows down simulation significantly.
Accordingly, there is a desire to provide simulation improvements to improve the time such simulations take to run thereby improving the performance of the simulation modeling of the portions being tested.
According to one embodiment a system for increasing performance when modeling random latch values is provided. The system including a power management logic that provides a power signal (VDD) that includes a high portion and a low portion, a transformation logic that receives the VDD from the power management logic, generates a updated signal (VDD2) based on the VDD, and outputs the updated signal (VDD2), wherein the VDD2 includes a low portion that extends one cycle, and a latch connected to transformation logic, wherein the latch receives VDD2.
In addition to one or more of the features described above, or as an alternative, further embodiments may include wherein the latch is further connected to a random generation logic, wherein the random generation logic generates a random value for the one cycle that VDD2 is low, and wherein the random value (D) is stored by the latch.
In addition to one or more of the features described above, or as an alternative, further embodiments may include a plurality of latches connected to the transformation logic, and a plurality of random generation logic, wherein each of the plurality of random generation logic is connected to one of the plurality of latches.
In addition to one or more of the features described above, or as an alternative, further embodiments may include wherein the low portion of the power signal (VDD) extends for a plurality of cycles.
In addition to one or more of the features described above, or as an alternative, further embodiments may include wherein the VDD2 that includes the low portion extends for one cycle corresponds to a first down cycle in the low portion of the VDD.
In addition to one or more of the features described above, or as an alternative, further embodiments may include wherein the latch is one selected from a group consisting of a simple set-reset latch, a gated latch with conditional transparency, a D flip-flop, a T flip-flop, and a JK flip-flop.
In addition to one or more of the features described above, or as an alternative, further embodiments may include wherein the simple set-reset latch is one selected from a group consisting of a SR NOR latch, a SR NAND latch, a SR AND-OR latch, and a JK latch.
In addition to one or more of the features described above, or as an alternative, further embodiments may include wherein the gated latch with conditional transparency is one selected from a group consisting of a gated SR latch, a gated D latch, and an Earle latch.
In addition to one or more of the features described above, or as an alternative, further embodiments may include wherein the D flip-flop is selected from a group consisting of a classical positive-edge-triggered D flip-flop, a master-slave edge-triggered D flip-flop, and an Edge-triggered dynamic D storage element.
In addition to one or more of the features described above, or as an alternative, further embodiments may include wherein the transformation logic provided the VDD2 to the plurality of latches and the plurality of random generation logic.
In addition to one or more of the features described above, or as an alternative, further embodiments may include wherein the random generation logic generates a pseudo random value for each cycle that an input signal is low.
According to one embodiment a computer implemented method for increasing performance when modeling random latch values is provided. The method including providing, using a power management logic, a power signal (VDD) that includes a high portion and a low portion, wherein the low portion extends for a plurality of cycles, receiving, at a transformation logic, the VDD from the power management logic, generating a updated signal (VDD2) based on the VDD, outputting the updated signal (VDD2), wherein the VDD2 includes a low portion that extends one cycle that corresponds to a first down cycle in the low portion of the VDD, and receiving the VDD2 at a latch connected to the transformation logic.
In addition to one or more of the features described above, or as an alternative, further embodiments may include generating, using a random generation logic, a random value for the one cycle that VDD2 is low, and storing, using the latch connected to the random generation logic, the random value.
In addition to one or more of the features described above, or as an alternative, further embodiments may include wherein the low portion of the power signal (VDD) extends for a plurality of cycles.
In addition to one or more of the features described above, or as an alternative, further embodiments may include wherein the VDD2 that includes the low portion extends for one cycle corresponds to a first down cycle in the low portion of the VDD.
According to one embodiment a computer implemented method of setting up a system for increasing performance when modeling random latch values is provided. The method including searching for and identifying one or more power pins, performing structural analysis of a wire based on the identified power pin connected to the wire, identifying power management (PM) logic connected to the wire, and inserting transformation logic along with the identified power management logic.
In addition to one or more of the features described above, or as an alternative, further embodiments may include receiving, at the transformation logic, an output from the PM logic, and
generating an updated output with a one cycle low portion that corresponds to the start of a low portion of the output from the PM logic.
In addition to one or more of the features described above, or as an alternative, further embodiments may include identifying any power pins that have not been identified and repeating the searching, performing, identifying, and inserting.
In addition to one or more of the features described above, or as an alternative, further embodiments may include determining all power pins have been identified.
The foregoing features and elements may be combined in various combinations without exclusivity, unless expressly indicated otherwise. These features and elements as well as the operation thereof will become more apparent in light of the following description and the accompanying drawings. It should be understood, however, that the following description and drawings are intended to be illustrative and explanatory in nature and non-limiting.
The foregoing and other features, and advantages of the present disclosure are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:
As shown and described herein, various features of the disclosure will be presented. Various embodiments may have the same or similar features and thus the same or similar features may be labeled with the same reference numeral, but preceded by a different first number indicating the figure to which the feature is shown. Thus, for example, element “a” that is shown in FIG. X may be labeled “Xa” and a similar feature in FIG. Z may be labeled “Za.” Although similar reference numbers may be used in a generic sense, various embodiments will be described and various features may include changes, alterations, modifications, etc. as will be appreciated by those of skill in the art, whether explicitly described or otherwise would be appreciated by those of skill in the art.
Embodiments described herein are directed to a system and a method for increasing performance when modeling random latch values. For example, the method includes providing, using power management logic, a power signal (VDD) that comprises a high portion and a low portion, wherein the low portion extends for a plurality of cycles. The method also includes receiving, at transformation logic, the VDD from the power management logic. Further, the method includes generating a updated signal (VDD2) based on the VDD and outputting the updated signal (VDD2), wherein the VDD2 includes a low portion that extends one cycle that corresponds to a first down cycle in the low portion of the VDD. Finally, the method includes generating, using random generation logic, a random value for the one cycle that VDD2 is low and storing, using a latch connected to the random generation logic, the random value.
Additionally, embodiments described herein are directed to a system and a computer implemented method of setting up a system for increasing performance when modeling random latch values, the method including searching for and identifying one or more power pins. The method also includes performing structural analysis of a wire based on the identified power pin connected to the wire and identifying power management (PM) logic connected to the wire. The method also includes inserting transformation logic along with the identified power management logic.
Referring to
In exemplary embodiments, the processing system 100 includes a graphics processing unit 130. Graphics processing unit 130 is a specialized electronic circuit designed to manipulate and alter memory to accelerate the creation of images in a frame buffer intended for output to a display. In general, graphics processing unit 130 is very efficient at manipulating computer graphics and image processing, and has a highly parallel structure that makes it more effective than general-purpose CPUs for algorithms where processing of large blocks of data is done in parallel.
Thus, as configured in
According to one or more embodiments, the latch 340 can be a simple set-reset latch, a gated latch with conditional transparency, a D (“data” or “delay”) flip-flop, a T (“toggle”) flip-flop, a JK flip-flop, a combination of such latches, or some other type of latch. Further, according to one or more embodiments, if the latch is the simple set-reset latch, the latch can be a SR (“set-reset”) NOR latch, a SR NAND latch, a SR AND-OR latch, or a JK latch. Further, according to one or more embodiments, if the latch is the gated latch with conditional transparency, the latch can be a gated SR latch, a gated D latch, or a Earle latch. Additionally, according to one or more embodiments, if the latch is the D flip-flop, the latch can be a classical positive-edge-triggered D flip-flop, a master-slave edge-triggered D flip-flop, or an edge-triggered dynamic D storage element.
Also shown in signal VDD_IN_2315 that is generated by the transformation logic 320 based on VDD_IN 305 and is out from the transformation logic 320 to the latch 340 and random generation logic 330. The VDD_IN_2 signal 315 is generated such that it also beginning in a power providing high state. The VDD_IN_2 signal 315 then transitions into a low section that does not provide power at time t1 then returns to a high state at time t2. The amount of time between t1 and t2 is equal to one clock cycle of the system. Accordingly the random generation logic 330 is only able to generate one random value during the low state. Specifically as shown, when signal VDD is received at the random generation logic 330 it is the VDD_IN_2 signal along with any noise or signal dissipation included. The VDD signal 325 includes the one cycle transition into and out of the low state as shown. During this low state portion the random generation logic 330 generates a single value x0 that is stored in the latch. Accordingly, the overall system is able to respond within one clock cycle with a random value generated and stored in the latch for testing.
Specifically,
In accordance with one or more embodiments, a system for increasing performance when modeling random latch values can have multiple different arrangements and still provide the above single cycle feature.
For example,
According to one or more embodiments, the latch 440 can be a simple set-reset latch, a gated latch with conditional transparency, a D flip-flop, a T flip-flop, a JK flip-flop, a combination of such latches, or some other type of latch. Further, according to one or more embodiments, if the latch is the simple set-reset latch, the latch can be a SR NOR latch, a SR NAND latch, a SR AND-OR latch, or a JK latch. Further, according to one or more embodiments, if the latch is the gated latch with conditional transparency, the latch can be a gated SR latch, a gated D latch, or a Earle latch. Additionally, according to one or more embodiments, if the latch is the D flip-flop, the latch can be a classical positive-edge-triggered D flip-flop, a master-slave edge-triggered D flip-flop, or an edge-triggered dynamic D storage element.
In accordance with one or more embodiments of the present disclosure,
According to one or more embodiments, the latch 540 can be a simple set-reset latch, a gated latch with conditional transparency, a D flip-flop, a T flip-flop, a JK flip-flop, a combination of such latches, or some other type of latch. Further, according to one or more embodiments, if the latch is the simple set-reset latch, the latch can be a SR NOR latch, a SR NAND latch, a SR AND-OR latch, or a JK latch. Further, according to one or more embodiments, if the latch is the gated latch with conditional transparency, the latch can be a Gated SR latch, a Gated D latch, or a Earle latch. Additionally, according to one or more embodiments, if the latch is the D flip-flop, the latch can be a Classical positive-edge-triggered D flip-flop, a Master-slave edge-triggered D flip-flop, or an Edge-triggered dynamic D storage element.
According to another embodiment,
According to one or more embodiments, the latch 640 can be a simple set-reset latch, a gated latch with conditional transparency, a D flip-flop, a T flip-flop, a JK flip-flop, a combination of such latches, or some other type of latch. Further, according to one or more embodiments, if the latch is the simple set-reset latch, the latch can be a SR NOR latch, a SR NAND latch, a SR AND-OR latch, or a JK latch. Further, according to one or more embodiments, if the latch is the gated latch with conditional transparency, the latch can be a gated SR latch, a gated D latch, or a Earle latch. Additionally, according to one or more embodiments, if the latch is the D flip-flop, the latch can be a classical positive-edge-triggered D flip-flop, a master-slave edge-triggered D flip-flop, or an edge-triggered dynamic D storage element.
Advantageously, embodiments described herein provide randomization for only one cycle, which can lead to performance enhancement of the system and method.
While the present disclosure has been described in detail in connection with only a limited number of embodiments, it should be readily understood that the present disclosure is not limited to such disclosed embodiments. Rather, the present disclosure can be modified to incorporate any number of variations, alterations, substitutions, combinations, sub-combinations, or equivalent arrangements not heretofore described, but which are commensurate with the scope of the present disclosure. Additionally, while various embodiments of the present disclosure have been described, it is to be understood that aspects of the present disclosure may include only some of the described embodiments.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the embodiments in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope of the disclosure. The embodiments were chosen and described in order to best explain the principles of the disclosure and the practical application, and to enable others of ordinary skill in the art to understand various embodiments with various modifications as are suited to the particular use contemplated.
The present embodiments may be a system, a method, and/or a computer program product at any possible technical detail level of integration. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present disclosure.
The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
Computer readable program instructions for carrying out operations of the present disclosure may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuitry, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++, or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure.
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the Figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
The descriptions of the various embodiments have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.
Accordingly, the present disclosure is not to be seen as limited by the foregoing description, but is only limited by the scope of the appended claims.