The present invention relates to the electronic design of integrated circuits. Functional verification is one of the steps in the design of integrated circuits. Functional verification generally refers to determining whether a design representing an integrated circuit performs a function it is designed for. In conventional hardware accelerated simulators, master clocks and asynchronous events are managed in the attached host computer running a software program. When circuit under verification is desired to be clocked or receive a stimulus, the host control interface between the host computer and the hardware accelerator must be activated and process an interrupt creating a bottleneck in the process.
Thus it can be appreciated that what is needed is a method of operating a scalable architecture for a plurality of processors with clocks generated within the processors.
The present invention enables the execution of an instruction with a specified delay. The instruction is executed when its Time_To_Go register is determined to have a zero value. Every delay register is decremented an amount corresponding to the smallest delay found among all of the Time_To_Go registers.
The invention further comprises a compiler which converts a hardware description language notation to a plurality of delay values and instructions executable with the evaluation processors to model clocks and arbitrarily delayed signals.
Referring to
The process further comprises accumulating the time_steps from the start to compute the current_time which may be recorded with the instructions in a log.
Referring to
The present invention is a system comprising a plurality of processors, a plurality of storage devices, interconnecting circuitry and a process for delaying the execution of at least one instruction,
the processors comprising
the storage devices comprising
the interconnect circuitry comprising
the process for delaying the execution of at least one instruction comprising the following steps:
The present invention further comprises a current_time processor, a current_time register, a circuit for transferring each time_step from the time_step processor to the current time processor, and the process of accumulating time_steps from the start of the process to compute the current_time.
The present invention may be tangibly embodied in a computer-readable medium adapted to control the operation of at least one processor to perform the following process:
It can be appreciated that there is an advantage to the subsequent process of adding each time_step from the start of the process to determine the current_time.
A illustrative but simple example of the present invention is a two state system for delaying the start of a square wave clock signal composed of an equal amount of time at value-A and at its inverse value-B comprising
two instruction registers, two time_delay registers, two time_to_go registers, and a time step register, and a method comprising the steps following:
A more generally useful embodiment of the present invention is a three state system for delaying the start of a clock signal composed of an certain amount of time at value-B and a certain amount of time at value-C comprising three instruction registers, three time_delay registers, three time_to_go registers, and a time step register, and a method comprising the steps following:
In short the invention is a method for advancing time comprising the steps of finding a minimum value of time_to_go and subtracting the minimum value from all time_to_go registers. The invention may be tangibly embodied by a program product which compiles a Verilog delay instruction into a time_delay, a time_step instruction and trigger instruction.
The present invention is a system for verifying electronic circuit designs in anticipation of fabrication by simulation and emulation. The system uses
Certain of the evaluation instructions comprise the following steps:
In one simple embodiment the method generates an inverting clock comprising the step of loading the instruction register with an instruction to invert the value of the signal named Clock_A and initializing the time_to_go register with a value equal to half the period of the clock. A clock is defined as a signal that repeatedly alternates between two values with a fixed duration at one value and the same or a different fixed duration at the other value.
More generally the invention is a method for generating at least one general purpose parameterized clock further comprising the steps of:
The method is made more useful by further comprising at least one of the following: a global instruction disable and an individual clock disable by maintaining a do_trigger register initialized with “true”, performing clock inversion conditioned on the value of the do_trigger register, maintaining a time_to_disable register initialized with the activity duration of the clock the same way as the time_to_go registers while do_trigger is “true”, and assigning “false” to do_trigger when time_to_disable reaches 0. Another use would be to provide instruction offset delays so that some time after instruction A is executed, an instruction B is executed.
The present invention is a method of advancing time comprising the steps of finding a minimum value of time_to_go and subtracting the minimum value from all time_to_go registers. Let's say the minimum value is always 5. In that case current_time skips forward as 5, 10, 15, 20 . . . .
The method further comprises delaying the execution of an instruction by executing an instruction when a time_to_go register first becomes zero.
The compiler further embodies a method for modeling a clock in the user's design that can be compiled to hardware accelerator machine instructions wherein the hardware accelerator may self clock and not be slaved to a clock signal generated from a host resident software simulator, the method consisting of the following steps:
In an embodiment of the present invention, a list of clock waveform descriptions in the form (initial value (may be X), initial duration, first phase value, pos phase duration, neg phase duration) are mapped from a Verilog, C, or VHDL compatible syntax to hardware instruction code that maintains the notion of current time and manipulates the clock signals according to the descriptions.
Although particular embodiments of the present invention have been shown and described, it will be obvious to those skilled in the art that changes and modifications may be made without departing from the present invention in its broader aspects, and therefore, the appended claims are to encompass within their scope all such changes and modifications that fall within the true scope of the present invention.
Conclusion
The present invention addresses the issue of handling clocks and more generally delayed execution of instructions by managing time within a hardware simulation accelerator without recourse to host computer resources and attendant overhead. The present invention provides means for electronics design engineers to efficiently execute instructions compiled from a hardware description language functional model of a hypothetical system prior to fabrication on a plurality of processors including instruction such as wait 12 ticks without interrupting the hardware for a host control interrupt.
The present application claims the benefit of priority under 35 USC .sctn. 119(e) from U.S. provisional patent application 60/595,057 filing date Jun. 02, 2005 first named inventor Ganesan, titled: “Massively parallel platform for accelerated verification of hardware and software.” The present application is a continuation in part of U.S. patent application Ser. No. 11/307198 filing date Jan. 26, 2006 first named inventor Ganesan, titled: “A scalable system for simulation and emulation of electronic circuits using asymmetrical evaluation and canvassing instruction processors”.
Number | Date | Country | |
---|---|---|---|
60595057 | Jun 2005 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11307198 | Jan 2006 | US |
Child | 11379046 | Apr 2006 | US |