Abstract:
A method for simulating a circuit. The method includes, in response to a first mode change triggering event at a first time point and in response to a first data transfer triggering event at a second time point after the first time point, generating a random value of at least a first random value and a second random value. In response to the generated random value being the first random value, a first input value of an input of the circuit is assigned to an output of the circuit. In response to the generated random value being the second random value, an output value of the output of the circuit is maintained. In response to a second data transfer triggering event at a third time point after the second time point, a second input value of the input of the circuit is assigned to the output of the circuit.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention relates generally to digital circuits and more particularly to simulation of digital circuits. 
       BACKGROUND OF THE INVENTION 
       [0002]    In an integrated circuit having multiple registers, a change in a mode/gating signal may arrive at the registers at different times. As a result, at a first rising edge of the clock, these registers may behave differently. Therefore, there is a need for a simulation method that simulates the difference in the behaviours of the registers of the integrated circuit. 
       SUMMARY OF THE INVENTION 
       [0003]    The present invention provides a method for simulating a circuit, comprising in response to a first mode change triggering event at a first time point and in response to a first data transfer triggering event at a second time point after the first time point, generating a random value selected from the group consisting of a first random value and a second random value; in response to the generated random value being the first random value, assigning a first input value of an input variable to an output variable, wherein the input variable simulates an input of the circuit, and wherein the output variable simulates an output of the circuit; in response to the generated random value being the second random value, maintaining an output value of the output variable; and in response to a second data transfer triggering event at a third time point after the second time point, assigning a second input value of the input variable to the output variable. 
         [0004]    The present invention provides a simulation method that simulates the difference in the behaviour of the registers of the integrated circuit. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS  
         [0005]      FIG. 1  shows a block diagram of a circuit, in accordance with embodiments of the present invention. 
           [0006]      FIG. 2A  shows a block diagram of a simulation circuit that simulates a register of  FIG. 1 , in accordance with embodiments of the present invention. 
           [0007]      FIG. 2B  shows a flowchart that illustrates the operation of the simulation circuit of  FIG. 2A  during simulation, in accordance with embodiments of the present invention. 
           [0008]      FIG. 3  shows a register that has two mode/gating inputs receiving two respective mode/gating signals. 
           [0009]      FIG. 4  shows a block diagram of another simulation circuit that simulates the register of  FIG. 3 . 
           [0010]      FIG. 5  illustrates a computer system used for simulating the register of  FIG. 1 , in accordance with embodiments of the present invention. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0011]      FIG. 1  shows a block diagram of a circuit  100 , in accordance with embodiments of the present invention. More specifically, with reference to  FIG. 1 , the circuit  100  comprises registers  112 A and  112 B. The register  112 A comprises inputs I, A, D, M, and CLK and an output OP. The inputs I and A of the register  112 A receive testing signals during testing. The input D of the register  112 A is configured to receive data signal. The inputs M and CLK of the register  112 A receive mode/gating signal M and clock signal CLK, respectively. 
         [0012]    In one embodiment, the register  112 A operates in two modes: test mode and functional mode. Whether the register  112 A is in the test mode or the functional mode depends on the mode/gating signal M at the input M of the register  112 A. More specifically, illustratively, if the mode/gating signal M rises, then the register  112 A enters the functional mode, whereas if the mode/gating signal M falls, then the register  112 A exits the functional mode and enters the test mode. 
         [0013]    In one embodiment, in the test mode, the inputs I and A of the register  112 A receive testing signals for testing. The method for testing the register  112 A is well known in the art. During the test mode, the clock signal CLK is gated off by the mode/gating signal M and has no effect on the testing operation of the register  112 A. At a rising edge of the mode/gating signal M, the register  112 A is switched from the test mode to the functional mode. In the functional mode, at a rising edge of the clock signal CLK, the output OP receives and maintains the value of the input D (OP=D) until the next rising edge of the clock signal CLK. In one embodiment, the structure and operation of the register  112 B are similar to the structure and operation of the register  112 A. 
         [0014]    Assume that the registers  112 A and  112 B are situated in the chip (not shown) such that the inputs CLK of the registers  112 A and  112 B receive a change in the clock signal CLK at essentially the same time. Assume further that the inputs M of the registers  112 A and  112 B receive a change in the mode/gating signal M at different times. 
         [0015]    Assume initially that the registers  112 A and  112 B are in the test mode. Assume further that, as an example, at a time t 1 , a change in the mode/gating signal M from low to high (i.e., a rising edge of the mode/gating signal M) arrives at the input M of the register  112 A but has not yet arrived at the input M of the register  112 B. As a result, the register  112 A switches from the test mode to the functional mode, whereas the register  112 B remains in the test mode. 
         [0016]    Assume further that, at a time t 2  after time t 1 , a change in the clock signal CLK from low to high (i.e., a first rising edge of the clock signal CLK) arrives at the inputs CLK of the register  112 A and  112 B. As a result, for the register  112 A, the output OP receives and maintains the value of the input D, whereas for the register  112 B, the output OP remains electrically disconnected from the input D and maintains whatever value it currently has. 
         [0017]    Assume further that, at a time t 3  after time t 2 , the rising edge of the mode/gating signal M arrives at the input M of the register  112 B. As a result, the register  112 B switches from the test mode to the functional mode. Assume further that, at a time t 4  after the time t 3 , a next rising edge (second rising edge) of the clock signal CLK arrives at the inputs CLK of the registers  112 A and  112 B. As a result, for both the registers  112 A and  112 B, the outputs OP receive and maintain the value of the respective inputs D. 
         [0018]    In the embodiments described above, only two registers  112 A and  112 B receive the mode/gating signal M and the clock signal CLK. In general, N registers (similar to the registers  112 A and  112 B) can receive the mode/gating signal M and the clock signal CLK (N is a positive integer). As described above, it is likely that, at the time of the first rising edge of the clock signal CLK after a rising edge of the mode/gating signal M (like the time t 2  in the example above), for some of the N registers, outputs OP receive and maintain the values of the respective inputs D, whereas for the other registers of the N registers, outputs OP remain electrically disconnected from the respective inputs D and maintain whatever value they currently have (at the time t 2 ). Later, at the time the second rising edge of the clock signal CLK arrives at the N registers (like the time t 4  in the example above), for all of the N registers, outputs OP receive and maintain the values of the respective inputs D. 
         [0019]    In summary, for each register of the N registers, at the time the first rising edge of the clock signal CLK arrives at the register after a rising edge of the mode/gating signal M, the output OP either (i) receives and maintains the value of the input D or (ii) is electrically disconnected from the input D and maintains whatever value it currently has. Later, at the time the second rising edge of the clock signal CLK arrives at the register, the output OP receives and maintains the value of the input D. 
         [0020]      FIG. 2A  shows a block diagram of a simulation circuit  200  that simulates the register  112 A of  FIG. 1 , in accordance with embodiments of the present invention. A simulation circuit is a circuit as described in a simulation program written in a simulation software language such as Verilog or HDL, etc. In other words, a simulation circuit is a representative of a block of codes/instructions that simulates the circuit. More specifically, with reference to  FIG. 2A , the simulation circuit  200  comprises a simulation register  212  and a simulation random output circuit  214  electrically coupled to the simulation register  212 . 
         [0021]    In one embodiment, the simulation register  212  is similar to the register  112 A of  FIG. 1 . The simulation random output circuit  214  comprises three inputs D′, M′, and CLK′ and an output OP 2 . The input D′ is electrically connected to the output OP 1  of the simulation register  212 . This connection of the input D′ and the output OP 1  can be simulated by the assignment D′=OP 1  in the simulation program. A simulation program comprises statements written in a simulation software language. The inputs M′ and CLK′ receive the mode/gating signal M and the clock signal CLK, respectively. 
         [0022]      FIG. 2B  shows a flowchart  300  that illustrates the operation of the simulation circuit  200  during simulation, in accordance with embodiments of the present invention. In other words, the flowchart  300  of  FIG. 2B  illustrates the flow of the simulation program represented by the simulation circuit  200  of  FIG. 2A . More specifically, with reference to  FIGS. 2A and 2B , let Mode be a variable of the simulation program that indicates the mode of the simulation circuit  200 . Let values 1, 2, 3, and 4 of the variable Mode indicate that the simulation circuit  200  is in a test mode, a transition mode, a random mode, and a functional mode, respectively. 
         [0023]    Let signal_M be a variable of the simulation program that simulates the mode/gating signal M. Let CLK be a variable of the simulation program that simulates the clock signal CLK. 
         [0024]    Assume initially that the simulation circuit  200  is in the test mode (simulating the register  112 A of  FIG. 1  being in the test mode). In the test mode, Mode=1 (simulating that the simulation register  212  is in its own test mode). Also, OP 2 =D′. The variable D′ simulates the input D′. Similarly, the variable OP 2  simulates the output OP 2 . 
         [0025]    Then, assume that signal_M=rise (simulating the rising edge of mode/gating signal M of  FIG. 1  at time t 1  in the example described above), which can be referred to as a first mode change triggering event. As a result, the assignment Mode=2 is performed (simulating that the simulation circuit  200  enters the transition mode). Also, the continuous assignment OP 2 =D′ is performed (i.e., the value of variable D′ is assigned to the variable OP 2 ). 
         [0026]    Then, assume that CLK=rise (simulating the first rising edge of clock signal CLK of  FIG. 1  at time t 2  in the example described above). In response, the assignment Mode=3 is performed simulating that the simulation circuit  200  enters the random mode. Also, according to the function of circuit  212 , the assignment of OP 1 =D is performed on the rising event of CLK. Subsequently, the input to circuit  214  D′ is evaluated to be the value of OP 1  based upon the connections of circuit  200 . In the random mode, a random number (0 or 1) is randomly generated and assigned to a variable RN. If RN=0, then the a continuous assignment OP 2 =OP 2  is performed (i.e., OP 2  maintains whatever value it currently has). Otherwise, if RN=1, then the assignment OP 2 =D′ is performed resulting in OP 2 =D. 
         [0027]    Then, assume that CLK=rise (simulating the second rising edge of clock signal CLK of  FIG. 1  at time t 4  in the example described above). In response, the assignment Mode=4 is performed simulating that the simulation circuit  200  enters the functional mode. Also, according to the function of circuit  212 , the assignment of OP 1 =D is performed on the rising event of CLK. Subsequently, the input to circuit  214  D′ is evaluated to be the value of OP  1  based upon the connections of circuit  200 . A continuous assignment OP 2 =D′ is performed resulting in the output OP 2  obtaining the value of D. 
         [0028]    If the simulation circuit  200  is in the transition mode, the random mode, or the functional mode (i.e., Mode=2, 3, or 4) and if the signal_M=fall (which can be referred to as a second mode change triggering event), then the assignment Mode=1 is performed simulating that the simulation circuit  200  enters the test mode. Also, the continuous assignment OP 2 =D′ is performed. 
         [0029]    In summary, after signal_M=rise (simulating the rising edge of mode/gating signal M of  FIG. 1  at time t 1  in the example described above) and at the first CLK=rise (simulating the first rising edge of clock signal CLK of  FIG. 1  at time t 2  in the example described above), depending on the random number RN=1 or 0, either the output OP 2 =D (simulating the output OP of the register  112 A of  FIG. 1  receiving and maintaining the value of its input D) or the output OP 2  is unchanged (simulating the output OP of the register  112 A of  FIG. 1  electrically disconnected from its input D). Then, at the second CLK=rise (simulating the second rising edge of clock signal CLK of  FIG. 1  at time t 4  in the example described above), the output OP 2 =D (simulating the output OP of the register  112 A of  FIG. 1  receiving and maintaining the value of its input D). Also, at signal_M=fall, the simulation circuit  200  is switched to the test mode (simulating the register  112 A of  FIG. 1  entering the test mode). Therefore, the simulation circuit  200  accurately simulates the operation of the register  112 A of  FIG. 1 . In one embodiment, the simulation circuit  200  and the flowchart  300  are also used to simulate the operation of the register  112 B of  FIG. 1 . 
         [0030]    It should be noted that the simulation circuit  212  alone does not accurately simulate the operation of the register  112 A of  FIG. 1 . More specifically, at the first CLK=rise (simulating the first rising edge of clock signal CLK of  FIG. 1  at time t 2  in the example described above), assignment OP 1 =D is performed (because the simulation circuit  212  is in its own functional mode) simulating that OP=D for the register  112 A of  FIG. 1 . In contrast, in reality, as shown in the example described above, at time t 2 , the output OP of the register  112 A either (i) receives and maintains the value of its input D (i.e., OP=D) or (ii) is electrically disconnected from its input D (i.e., OP may be different than D). 
         [0031]    In the embodiments described above, each of the registers  112 A and  112 B of  FIG. 1  has only one mode/gating input (the input M) receiving one mode/gating signal (the mode/gating signal M). In other words, the first and second mode change triggering events (i.e., a rising edge and a falling edge of the mode/gating signal M, respectively) are created by the mode/gating signal M. Alternatively, each of the registers  112 A and  112 B of  FIG. 1  can have more than one mode/gating input each of which receives one mode/gating signal. In other words, mode change triggering events are created by the mode/gating signals. 
         [0032]      FIG. 3  shows a register  412  that has two mode/gating inputs M 1  and M 2  receiving mode/gating signals M 1  and M 2 , respectively.  FIG. 4  shows a block diagram of a simulation circuit  500  that simulates the register  412  of  FIG. 3 . The operation flow of the simulation circuit  500  is similar to the operation flow of the simulation circuit  200  of  FIG. 2A  during simulation. 
         [0033]      FIG. 5  illustrates a computer system  90  used for simulating the register  112 A of  FIG. 1 , in accordance with embodiments of the present invention. The computer system  90  comprises a processor  91 , an input device  92  coupled to the processor  91 , an output device  93  coupled to the processor  91 , and memory devices  94  and  95  each coupled to the processor  91 . The input device  92  may be, inter alia, a keyboard, a mouse, etc. The output device  93  may be, inter alia, a printer, a plotter, a computer screen, a magnetic tape, a removable hard disk, a floppy disk, etc. The memory devices  94  and  95  may be, inter alia, a hard disk, a floppy disk, a magnetic tape, an optical storage such as a compact disc (CD) or a digital video disc (DVD), a dynamic random access memory (DRAM), a read-only memory (ROM), etc. The memory device  95  includes a computer code  97 . The computer code  97  includes an algorithm for simulating the register  112 A of  FIG. 1 . The processor  91  executes the computer code  97 . The memory device  94  includes input data  96 . The input data  96  includes input required by the computer code  97 . The output device  93  displays output from the computer code  97 . Either or both memory devices  94  and  95  (or one or more additional memory devices not shown in  FIG. 5 ) may be used as a computer usable medium (or a computer readable medium or a program storage device) having a computer readable program code embodied therein and/or having other data stored therein, wherein the computer readable program code comprises the computer code  97 . Generally, a computer program product (or, alternatively, an article of manufacture) of the computer system  90  may comprise said computer usable medium (or said program storage device). 
         [0034]    While  FIG. 5  shows the computer system  90  as a particular configuration of hardware and software, any configuration of hardware and software, as would be known to a person of ordinary skill in the art, may be utilized for the purposes stated supra in conjunction with the particular computer system  90  of  FIG. 5 . For example, the memory devices  94  and  95  may be portions of a single memory device rather than separate memory devices. 
         [0035]    While particular embodiments of the present invention have been described herein for purposes of illustration, many modifications and changes will become apparent to those skilled in the art. Accordingly, the appended claims are intended to encompass all such modifications and changes as fall within the true spirit and scope of this invention.