A method (900) of modeling transactions and performing inertial rejection can include representing a plurality of scalar signals as one or more transaction objects, wherein each transaction object comprises a start index, an end index, values for each constituent scalar signal which correspond to an index within a range specified by the start index and end index inclusive, and a time at which the values are transacted. (400) The method further can include constructing and adding a new transaction object for the plurality of scalar signals (920) and comparing the new transaction object with at least one existing transaction object (925) wherein the at least one existing transaction object occurs earlier in time than the new transaction object and is within a rejection window. At least one of a start index and an end index of the at least one existing transaction object can be manipulated (975).
|
25. A system for simulating a circuit design within a logic simulation tool using inertial rejection comprising:
means for representing a plurality of scalar signals over time as a series of transaction objects, wherein each transaction object comprises a start index, an end index, a value for each of the plurality of scalar signals, and a single time at which the value of each of the plurality of scalar signals is transacted within the logic simulation tool, wherein each scalar signal of a transaction object is associated with an index within a range specified by the start index and the end index of that transaction object, and wherein the start index and end index of each transaction object indicate non-null values for the plurality of scalar signals within each transaction object;
means for constructing and adding a new transaction object for the plurality of scalar signals;
means for comparing the new transaction object with at least one existing transaction object, wherein the at least one existing transaction object occurs earlier in time than the new transaction object and is within a rejection window;
modifying at least one of the scalar signals of the circuit design by manipulating at least one of the start indices or the end indices of the at least one existing transaction object; and
means for performing functional simulation or timing simulation upon the circuit design by processing signals specified by the transaction objects.
13. A machine readable storage, having stored thereon a computer program having a plurality of code sections executable by a machine for causing the machine to perform the steps of:
representing a plurality of scalar signals over time as a series of transaction objects, wherein each transaction object comprises a start index, an end index, a value for each of the plurality of scalar signals, and a single time at which the value of each of the plurality of scalar signals is transacted within a logic simulation tool, wherein each scalar signal of a transaction object is associated with an index within a range specified by the start index and the end index of that transaction object, and wherein the start index and end index of each transaction object indicate non-null values for the plurality of scalar signals within each transaction object;
constructing and adding a new transaction object for the plurality of scalar signals;
comparing the new transaction object with at least one existing transaction object, wherein the at least one existing transaction object occurs earlier in time than the new transaction object and is within a rejection window;
modifying at least one of the scalar signals of the circuit design by manipulating at least one of the start indices or the end indices of the at least one existing transaction objects; and
performing functional simulation or timing simulation upon the circuit design by processing signals specified by the transaction objects.
12. A method of simulating a circuit design within a software-based logic simulation tool using inertial rejection comprising:
representing a plurality of scalar signals as one or more transaction objects, wherein each transaction object represents at least one transaction, and wherein each transaction object comprises a start index, an end index, a value for each of the plurality of scalar signals wherein each scalar signal corresponds to an index within a range specified by the start index and end index inclusive, and a single time at which the value of each of the plurality of scalar signals is transacted within a logic simulation tool, and wherein the start index and end index of each transaction object indicate non-null values for the plurality of scalar signals within each transaction object;
determining whether each scalar signal qualifies for preemptive processing;
for each scalar signal so qualified, determining whether a new transaction being scheduled has a value which is the same as the current value of the scalar signal to which the transaction is being added;
if so, not adding the new transaction and removing all previously existing transactions from each scalar signal having a same value by modifying at least one of the start index or the end index for the transaction objects corresponding to the transactions being removed; and
performing functional simulation or timing simulation upon the circuit design by processing signals specified by the transaction objects.
26. A system for simulating a circuit design using inertial rejection comprising:
means for representing a plurality of scalar signals as one or more transaction objects, wherein each transaction object represents at least one transaction, and wherein each transaction object comprises a start index, an end index, a value for each of the plurality of scalar signals wherein each scalar signal corresponds to an index within a range specified by the start index and end index inclusive, and a single time at which the value of each of the plurality of scalar signals is transacted within a logic simulation tool, and wherein the start index and end index of each transaction object indicate non-null values for the plurality of scalar signals within each transaction object;
means for determining whether each scalar signal qualifies for preemptive processing;
for each scalar signal so qualified, means for determining whether a new transaction being scheduled has a value which is the same as the current value of the scalar signal to which the transaction is being added;
if so, means for not adding the new transaction and removing all previously existing transactions from each scalar signal having a same value by modifying at least one of the start index or the end index for the transaction objects corresponding to the transactions being removed; and
means for performing functional simulation or timing simulation upon the circuit design by processing signals specified by the transaction objects.
1. A method of simulating a circuit design within a logic simulation tool using inertial rejection comprising:
representing a plurality of scalar signals over time as a series of transaction objects, wherein each transaction object comprises a start index, an end index, a value for each of the plurality of scalar signals, and a single time at which the value of each of the plurality of scalar signals is transacted within the logic simulation tool, wherein each scalar signal of a transaction object is associated with an index within a range specified by the start index and the end index of that transaction object, and wherein the start index and end index of each transaction object indicate non-null values for the plurality of scalar signals within each transaction object;
constructing and adding a new transaction object for the plurality of scalar signals;
comparing values of the plurality of scalar signals of the new transaction object with values of the plurality of scalar signals for at least one existing transaction object, wherein the at least one existing transaction object occurs earlier in time than the new transaction object and is within a rejection window;
modifying at least one of the scalar signals of the circuit design by manipulating at least one of the start indices or the end indices of the at least one existing transaction object; and
performing functional simulation or timing simulation upon the circuit design by processing signals specified by the transaction objects.
24. A machine readable storage, having stored thereon a computer program having a plurality of code sections executable by a machine for causing the machine to perform the steps of:
representing a plurality of scalar signals as one or more transaction objects, wherein each transaction object represents at least one transaction, and wherein each transaction object comprises a start index, an end index, a value for each of the plurality of scalar signals wherein each scalar signal corresponds to an index within a range specified by the start index and end index inclusive, and a single time at which the value of each of the plurality of scalar signals is transacted within a logic simulation tool, and wherein the start index and end index of each transaction object indicate non-null values for the plurality of scalar signals within each transaction object;
determining whether each scalar signal qualifies for preemptive processing;
for each scalar signal so qualified, determining whether a new transaction being scheduled has a value which is the same as the current value of the scalar signal to which the transaction is being added;
if so, not adding the new transaction and removing all previously existing transactions from each scalar signal having a same value by modifying at least one of the start index or the end index for the transaction objects corresponding to the transactions being removed; and
performing functional simulation or timing simulation upon the circuit design by processing signals specified by the transaction objects.
2. The method of
manipulating at least one of the values of the existing transaction objects.
3. The method of
comparing values for scalar signals of the new transaction object with values of scalar signals of the at least one existing transaction object, wherein only values for scalar signals having like indices are compared.
4. The method of
if the value of the scalar signal in the at least one existing transaction object differs from the value of the scalar signal of like index in the new transaction object, changing the value in the at least one existing transaction object to a null value;
if the value of the scalar signal in the at least one existing transaction object is the same as the value of the scalar signal of like index in the new transaction object, leaving the value of the at least one existing transaction object unchanged; and
if at least one of the values of the scalar signal of the at least one existing transaction object, the new transaction object, or both is a null value, leaving both values unchanged.
5. The method of
6. The method of
modifying the start index and the end index of the at least one existing transaction object according to the values of the scalar signals remaining in the at least one existing transaction object.
7. The method of
if the at least one existing transaction object includes values for scalar signals which do not have corresponding sequential indices, splitting the at least one existing transaction into at least two transaction objects such that each newly formed transaction object includes one or more values for scalar signals having sequential indices.
8. The method of
prior to said step of constructing and adding a new transaction object, determining that the plurality of scalar signals do not qualify for preemptive processing.
9. The method of
combining at least two of the existing transaction objects if each occurs at a same time and if, when combined, the values of the scalar signals correspond to sequential scalar indices.
10. The method of
combining at least two transactions if each occurs at a same time and if, when combined, the values of the scalar signals correspond to sequential scalar indices.
11. The method of
14. The machine readable storage of
manipulating at least one of the values of the existing transaction objects.
15. The machine readable storage of
comparing values for scalar signals of the new transaction object with values of scalar signals of the at least one existing transaction object, wherein only values for scalar signals having like indices are compared.
16. The machine readable storage of
if the value of the scalar signal in the at least one existing transaction object differs from the value of the scalar signal of like index in the new transaction object, changing the value in the at least one existing transaction object to a null value;
if the value of the scalar signal in the at least one existing transaction object is the same as the value of the scalar signal of like index in the new transaction object, leaving the value of the at least one existing transaction object unchanged; and
if at least one of the values of the scalar signal of the at least one existing transaction object, the new transaction object, or both is a null value, leaving both values unchanged.
17. The machine readable storage of
18. The machine readable storage of
modifying the start index and the end index of the at least one existing transaction object according to the values of the scalar signals remaining in the at least one existing transaction object.
19. The machine readable storage of
if the at least one existing transaction object includes values for scalar signals which do not have corresponding sequential indices, splitting the at least one existing transaction into at least two transaction objects such that each newly formed transaction object includes one or more values for scalar signals having sequential indices.
20. The machine readable storage of
21. The machine readable storage of
prior to said step of constructing and adding a new transaction object, determining that the plurality of scalar signals do not qualify for preemptive processing.
22. The machine readable storage of
combining at least two of the existing transaction objects if each occurs at a same time and if, when combined, the values of the scalar signals correspond to sequential scalar indices.
23. The machine readable storage of
combining at least two transactions if each occurs at a same time and if, when combined, the values of the scalar signals correspond to sequential scalar indices.
|
1. Technical Field
The present invention relates to the field of logic simulation and, more particularly, to simulating and processing signals within logic simulators.
2. Description of the Related Art
A logic simulator is a software tool which is capable of performing functional and timing simulations for digital electronic designs which are written in a hardware description language such as Very High Speed Hardware Description Language (VHDL) or Verilog. VHDL, for example, permits hardware designers to define signals at a very high level of abstraction. The abstracted signal representations can be translated to actual pins on a microchip using any of a variety of commercial electronic design automation (EDA) software tools.
VHDL provides a measure of flexibility by allowing hardware designers to declare signals of various user defined types. A user-defined type can either be a scalar or a composite type. Scalars further can be subdivided into four different types, namely enumeration, integer, floating point, and physical. Composites, however, can be subdivided into two types: arrays and records.
A scalar type defines a single value for a signal and a composite type defines a collection of values. New values can be assigned to signals through signal assignment statements. A signal assignment statement defines a container for a new projected output waveform for the signal. Such a container is referred to as the driver of the target signal. A pair which includes a new value and the time at which the signal is to assume this new value is called a transaction. For a scalar target signal there can be only one driver and one waveform. For a composite target signal, however, the composite signal is thought of as an aggregation of multiple scalar signals. A composite signal can include N drivers and N waveforms, where one waveform is attached to each driver and where N is total number of scalar signals contained in the given composite signal. The projected waveform of a scalar driver has transactions that occur as the time component increases.
Transactions can be scheduled using one of two different techniques. The first technique, called transport scheduling, truncates any previous transaction whose time component is greater than the time component of the new transaction being scheduled. The second technique, referred to as inertial scheduling, takes a rejection limit and goes further than the truncation technique. More particularly, after truncating transactions whose time component is greater than the new transaction being scheduled, inertial rejection rejects all transactions in the rejection limit window except for transactions which immediately precede the new transaction and whose value component is the same as the new transaction being scheduled. The transaction that determines the current value of the driver is excluded from rejection as well.
In illustration,
In performing inertial rejection, any previously scheduled transaction which is scheduled to occur at or after the time of the new transaction is deleted. No such transactions exist within
Continuing with
Since each scalar signal contained in a composite signal must keep that scalar signal's own waveform, a transaction to a composite signal with N scalar signals needs to add N transactions in order to project the waveform of the scalar drivers. In addition, N transactions must be scheduled and processed on the event queue. If the scalar drivers are aggregated, the scheduling and processing of transactions have a complexity on the order of N because individual projected waveforms of scalar signals must be preserved for the inertial rejection technique to function properly.
In consequence, the amount of time required to perform inertial rejection using software simulation tools can be significant as the sheer number of calculations necessary can be quite extensive. What is needed is an improved technique for modeling transactions that reduces the time required for scheduling and transaction processing; as well as an improved technique for performing inertial rejection that utilizes fewer processing resources, less simulation time, and therefore reduces the time required for design and implementation.
Exemplary embodiments in accordance with the present invention provide a method, system, and apparatus for modeling transactions and performing inertial rejection processing. More particularly, such embodiments realize significant performance benefits with respect to transaction modeling, scheduling, and processing in the context of software logic simulation. Such embodiments disclose a technique of aggregating one or more transactions into an atomic transaction and teaches an alternative to presently available techniques for performing inertial rejection.
According to the present invention, scalar drivers can be aggregated and transactions that occur at the same time can be aggregated into a single “atomic” transaction object. Inertial rejection, however, can be applied to the resulting atomic transaction objects on a per scalar signal basis. Additionally, when necessary, transaction objects can be split to maintain atomicity, that is the sequential nature of non-null value scalar signals. Accordingly, the various parameters of the atomic transactions can be manipulated rather than processing a larger number of conventional transactions. Additionally, an exemplary embodiment in accordance with the present invention, when possible, can perform preemptive processing to attain further gains in performance.
One aspect of the present invention can include a method of performing inertial rejection, for example, within a software-based logic simulation tool. The method can include representing a plurality of scalar signals as one or more transaction objects, wherein each transaction object includes a start index, an end index, values for each constituent scalar signal which correspond to an index within a range specified by the start index and end index inclusive, and a time at which the values are transacted. The method further can include constructing and adding a new transaction object for the plurality of scalar signals and comparing the new transaction object with at least one existing transaction object, wherein the at least one existing transaction object occurs earlier in time than the new transaction object and is within a rejection window. Accordingly, at least one of the start indices and the end indices of the at least one existing transaction objects can be manipulated to perform inertial rejection. Notably, one or more values of the existing transaction objects also can be manipulated.
More particularly, the method can include comparing values for scalar signals of the new transaction object with values of scalar signals of the at least one existing transaction object, wherein only values for scalar signals having like indices are compared. If the value of the scalar signal in the at least one existing transaction object differs from the value of the scalar signal of like index in the new transaction object, the value in the at least one existing transaction object can be changed to a null value. That is, the at least one existing transaction object can be assigned no value indicating that for those indices, no new transactions are being scheduled. If the value of the scalar signal in the at least one existing transaction object is the same as the value of the scalar signal of like index in the new transaction object, the value of the existing transaction object can be left unchanged. If at least one of the values of the scalar signal of the at least one existing transaction object, the new transaction object, or both, is a null value, both values can remain unchanged. The various operations can be repeated for each scalar signal of the new transaction object having a non-null value.
Accordingly, the start index and the end index of the at least one existing transaction object can be modified according to the values of the scalar signals remaining in the at least one existing transaction object. Notably, if the at least one existing transaction object includes values for scalar signals which do not have corresponding sequential indices, the at least one existing transaction object can be split into at least two transaction objects such that each newly formed transaction object includes one or more values for scalar signals having sequential indices.
The method also can include, prior to constructing and adding the new transaction object, determining that the plurality of scalar signals do not qualify for preemptive processing. Additionally, if desired, at least two of the existing transaction objects, or transactions as the case may be, can be combined if each occurs at a same time and if, when combined, the values of the scalar signals correspond to sequential scalar indices.
Another embodiment of the present invention can include a method of processing signals within a software-based logic simulation tool wherein a plurality of scalar signals are represented as one or more transaction objects. Each transaction object can represent at least one transaction, wherein each transaction object includes a start index, an end index, values for each scalar signal which correspond to an index within a range specified by the start index and end index inclusive, and a time at which the values are transacted. The method also can include determining whether each scalar signal qualifies for preemptive processing and, for each scalar signal so qualified, determining whether a new transaction being scheduled has a value which is the same as the current value of the scalar signal to which the transaction is being added. If so, the new transaction need not be added and all previously existing transactions can be removed from each scalar signal having a same value.
Another embodiment of the present invention can include a system for performing inertial rejection. The system can include means for representing a plurality of scalar signals as one or more transaction objects, wherein each transaction object includes a start index, an end index, values for each constituent scalar signal which correspond to an index within a range specified by the start index and end index inclusive, and a time at which the values are transacted. The system further can include means for constructing and adding a new transaction object for the plurality of scalar signals and means for comparing the new transaction object with at least one existing transaction object, wherein the at least one existing transaction object occurs earlier in time than the new transaction object and is within a rejection window. The system also can include means for manipulating at least one of the start indices and the end indices of the at least one existing transaction objects.
Yet another embodiment of the present invention can include a system for performing inertial rejection including means for representing a plurality of scalar signals as one or more transaction objects, wherein each transaction object represents at least one transaction, and wherein each transaction object includes a start index, an end index, values for each scalar signal which correspond to an index within a range specified by the start index and end index inclusive, and a time at which the values are transacted. This embodiment of the present invention also can include means for determining whether each scalar signal qualifies for preemptive processing and, for each scalar signal so qualified, means for determining whether a new transaction being scheduled has a value which is the same as the current value of the scalar signal to which the transaction is being added. If so, the system further can include means for not adding the new transaction and removing all previously existing transactions from each scalar signal having a same value.
There are shown in the drawings embodiments which are presently preferred, it being understood, however, that the invention is not so limited to the precise arrangements and instrumentalities shown.
Embodiments in accordance with the present invention provide a method, system, and apparatus for modeling transactions and performing inertial rejection processing. According to such embodiments, scalar signals and transactions occurring at a given time can be represented by a single “atomic” transaction object. By using atomic transaction objects as a simulation construct, the number of transactions which must be processed is reduced. This also reduces the order of complexity of the calculations that are to be performed for inertial rejection.
The value component of the atomic transaction object is a pointer to a memory location where values for individual scalar signals can be stored in contiguous memory locations in the order in which the scalar signals are contained inside of the whole signal. If the whole signal is a scalar signal, then there is only one scalar signal contained inside the whole signal. Accordingly, the value of N would be equal to 1.
The start scalar index and the end scalar index of an atomic transaction object can be set according to the signal assignment statement. If the whole signal is being driven, the start scalar index can be set to 0 and the end scalar index can be set to N-1. If a range of scalar signals is driven, the start scalar index can be set to the starting index of the range and the end scalar index can be set to the ending scalar index of the range. If only one scalar signal out of multiple scalar signals contained in a whole signal is driven, the start scalar index and the end scalar index both are set to be the scalar index of the driven scalar signal.
Accordingly, as shown in
Thus, atomic transaction object 405 represents only two transactions, the first occurring at 5 ns for the scalar signal having an index corresponding to 2, and the second also occurring at 5 ns for the scalar signal corresponding to the index of 3. Within
For every whole signal, whether scalar or composite, rather than having a driver for each scalar signal, a single driver for the whole signal can be created. Atomic transaction objects for the whole signal can be added as a projected waveform. As new atomic transaction objects are added, inertial rejection can be performed.
Notably, the execution of a signal assignment statement can initiate a check to determine whether preemptive processing can be performed. Preemptive processing can be applied in particular circumstances which involve a zero delay signal assignment statement. Preemptive processing further relates to cases in which a new transaction can be dropped or ignored and the existing scalar signal can be completely truncated. For example, at the time of elaboration of a design, prior to applying the atomic transaction object construct, all whole signals can be checked to determine whether preemptive processing can be applied. The target signal and all the signals connected to the target signal (if any) can be checked to determine whether that signal is a prefix of a predefined attribute which requires activity of the signal to be recorded.
If no such use of the whole signal is detected, the signal can be marked as qualified for preemptive processing. For a qualified whole signal, if the new transaction being scheduled has the same value for a particular scalar signal within the whole signal as the current value of the same scalar signal, all previously existing transactions (if any) can be removed from the projected waveform of the scalar signal. Additionally, the new transaction is not added to the scalar signal. Accordingly, by not scheduling such transactions, preemptive processing can save time and processing resources that would otherwise be expended when adding and updating a waveform or adding a new transaction to the event queue, each of which translates into reduced cost for processing the transaction.
If preemptive processing cannot be performed with respect to the whole signal, an atomic transaction object can be constructed and added to the projected waveform contained in the driver of the whole signal. Inertial rejection then can be performed in accordance with the inventive arrangements disclosed herein.
For example, atomic transaction object 415 has a start scalar index of 1 and an end scalar index of 0, indicating that all values corresponding to the scalar signals are null. Atomic transaction object 415 of
Atomic transaction object 420 has a start scalar index of 1 and an end scalar index of 1 indicating that all of the scalar signals represented in transaction object 420, with the exception of the scalar signal having scalar index 1, have null values. The values can be modified by comparing values of like scalar signals from one atomic transaction object to the next. For example, the scalar signal corresponding to scalar index 0 in atomic transaction object 425 can be compared to the scalar signal corresponding to scalar index 0 within atomic transaction 420. Because the value corresponding to scalar index 0 in atomic transaction 420 is a null value, no change is made. The value of the scalar signal corresponding to scalar index 1 within atomic transaction 420 is the same as its counterpart within atomic transaction object 425, and accordingly is not changed. The value of the scalar signal corresponding to scalar index 2 is changed to a null as the value in atomic transaction 420 differs from its counterpart in atomic transaction object 425. The value of the scalar signal corresponding to scalar index 3 in atomic transaction object 420 remains unchanged as a null value as a result of the comparison with its counterpart scalar signal value in atomic transaction 425. Notably, only the atomic transactions within the rejection window, in this case atomic transaction objects 415 and 420, need be compared with the newly added atomic transaction object 425.
As illustrated, no splitting was required with respect to the examples described in
To perform inertial rejection, the values of the scalar signals for the atomic transaction object 425 can be determined by comparing the values of scalar signals having the same scalar index from one atomic transaction object to the next. For example, the scalar signal corresponding to scalar index 0 in atomic transaction object 430 can be compared to the scalar signal corresponding to scalar index 0 within atomic transaction 425. Because this value in atomic transaction 430 is a null value, no change is made. The value of the scalar signal corresponding to scalar index 1 within atomic transaction 430 is an actual value (not a null value) and is different from its counterpart within atomic transaction object 425, which also is an actual value. Accordingly, the value of the scalar signal corresponding to scalar index 1 in atomic transaction object 425 is changed to a null value. The value of the scalar signal corresponding to scalar index 2, which is an actual value, is also changed to a null value as the corresponding value in atomic transaction 430, which also is an actual value, differs from its counterpart in atomic transaction object 425. The value of the scalar signal corresponding to scalar index 3 in atomic transaction object 425 remains unchanged because the value of its counterpart scalar signal in atomic transaction 430 is a null value.
Thus, the signal assignment statement S(1 to 2)<=reject 5 ns inertial “11” after 10 ns” indicates that only bit 1 and 2 of signal S are driven. Performing inertial rejection on individual scalar bits, the atomic transaction at 10 ns should have scalar index 1 and scalar index 2 rejected, leaving two transactions represented within atomic transaction 425 at 10 ns, one transaction with a range of 0 to 0 and the other with a range of 3 to 3.
The resulting atomic transaction object 425 includes values for scalar signals corresponding to scalar indices 0 and 3. As the atomic transaction object 425 does not have values for all scalar indices between 0 and 3 sequentially, the atomic transaction object 425 becomes a candidate for splitting into one or more atomic transaction objects. Notably, just as atomic transaction objects can be split, transactions and/or atomic transaction objects can also be joined. For example, a check can be performed with respect to combining split transactions in a waveform. More particularly, if the time component of two transactions in the same waveform is the same and if the two transactions can be combined such that no hole or gap would result with respect to the values of the scalar indices, then the two transactions can be combined.
Inertial rejection must be performed for each scalar signal independently as assignments may be applied to one particular scalar index from a bundle contained within a whole signal.
Since an atomic transaction object can only contain a range for indices from start scalar index to end scalar index, such a transaction must be broken into one or more transactions, two in this case. The first atomic transaction object, following the waveform from right to left, has indices from SI to RSI−1 and the second atomic transaction object has indices from REI+1 to EI. Thus, with reference to
In step 920, a new atomic transaction object can be constructed and added to the whole signal. In step 925, the values of the scalar signals within the new atomic transaction object can be compared to the values of the scalar signals within prior atomic transaction objects. That is, the method can begin a loop wherein values of scalar signals from atomic transaction objects within the rejection window can be compared with values of scalar signals of the new atomic transaction object. Notably, only values of scalar signals having like or same indices are compared.
Accordingly, in step 930, a determination can be made regarding the type of comparison to be performed. As noted, only scalar signals of like scalar indices are to be compared. For example, if either value—or both—to be compared from the new or the prior atomic transaction object is a null, the method can proceed to step 935. If the values from both the new and prior atomic transaction objects of the same scalar index are actual values and are the same, the method can proceed to step 940. If the value from the new atomic transaction object is different from the value of the prior atomic transaction of the same scalar index, and both are actual values, the method can proceed to step 945.
Proceeding with step 935, where the value in the new atomic transaction object, the value in the prior or existing transaction object, or both include null values, the values can remain unchanged. In this case, there is no need to continue looking back for prior atomic transaction objects when a null value is encountered. Accordingly, the method can proceed to step 960 to determine whether more indices remain to be processed.
If the method proceeds to step 940, in the case where the value from the new atomic transaction object is the same as the value from the prior atomic transaction object, and both are actual values, the values again can remain unchanged. In this case, however, the method can proceed to step 950 where a determination can be made as to whether the boundary of the rejection window has been reached. That is, there is no need to evaluate atomic transaction objects that are outside of the rejection window. Accordingly, if the boundary of the rejection window has not been reached, the method can proceed to step 955 where the next prior atomic transaction object can be identified. The method can proceed to jump circle A, to loop back to step 925 to continue checking values for the scalar signal of the next prior atomic transaction object for the same index that was processed in step 940.
If the method proceeds to step 945 in the case where the values being compared are different and are both actual values, the value of the prior atomic transaction object can be set to a null value. Accordingly, the method can proceed to step 960 to continue processing scalar signals for a next scalar index.
Thus, the method can continue looping through steps 925–960 until no further indices are left to process for atomic transactions within the rejection window. Accordingly, the method can proceed to step 965, where a determination can be made as to whether any of the atomic transaction objects within the rejection window now have, as a result of inertial rejection processing, values for scalar signals which correspond to non-sequential scalar indices. As noted, such atomic transaction objects are candidates for splitting. If one or more such candidates are identified, the method can proceed to step 970, where the identified atomic transaction objects can be split into one or more new atomic transaction objects so that each resulting atomic transaction object has values for scalar signals corresponding to sequential scalar indices.
The method can proceed to step 975 from both steps 965 and 970. In step 975, the start and end scalar index for any affected atomic transaction objects within the rejection window can be adjusted according to the resulting values for scalar signals within the atomic transaction objects. As noted, if after the application of inertial rejection one or more atomic transaction objects have an end scalar index that is less than the start scalar index, such atomic transaction objects can be considered void and can be removed from the waveform and marked as unscheduled in the event queue.
Although the flow chart 900 has been described with reference to adding a single atomic transaction object, those skilled in the art will recognize that the method described herein can be applied iteratively for processing large logic designs. Further, the method 900 can be applied readily to both scalar and composite signals.
According to exemplary embodiments in accordance with the present invention, all previously scheduled atomic transaction objects in the rejection window are potentially examined for one or more scalar bits to be rejected. Start and end scalar indices can be changed to effect rejection of a particular bit. If rejection of bits creates a hole or gap as previously explained, the atomic transaction object upon which inertial rejection is being performed can be split into two or more atomic transaction objects.
An embodiment of the present invention can be realized in hardware, software, or a combination of hardware and software. The embodiment can be realized in a centralized fashion in one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware and software can be a general purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
An embodiment of the present invention also can be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.
This invention can be embodied in other forms without departing from the spirit or essential attributes thereof. Accordingly, reference should be made to the following claims, rather than to the foregoing specification, as indicating the scope of the invention.
Lin, Wei, Deepak, Kumar, Wang, Jimmy Zhenming
Patent | Priority | Assignee | Title |
10606971, | Nov 29 2017 | International Business Machines Corporation | Testing netlists based on singular independent signals |
11443088, | Jun 10 2020 | XILINX, Inc. | Simulation using accelerated models |
11475199, | Sep 27 2021 | XILINX, Inc. | Parallelizing simulation and hardware co-simulation of circuit designs through partitioning |
11593547, | Aug 25 2021 | XILINX, Inc.; Xilinx, Inc | Prediction and optimization of multi-kernel circuit design performance using a programmable overlay |
11630935, | Oct 11 2021 | XILINX, Inc. | Data traffic injection for simulation of circuit designs |
11829323, | Oct 20 2020 | Micron Technology, Inc. | Method of notifying a process or programmable atomic operation traps |
11989556, | Oct 20 2020 | Micron Technology, Inc. | Detecting infinite loops in a programmable atomic transaction |
12086521, | Oct 07 2021 | Xilinx, Inc; XILINX, Inc. | Circuit design simulation and clock event reduction |
ER2247, | |||
ER960, |
Patent | Priority | Assignee | Title |
5157620, | May 31 1988 | International Computers Limited | Method for simulating a logic system |
6097885, | Jan 16 1997 | International Computers Limited | Digital system simulation |
6934719, | Dec 30 1998 | International Business Machines Corporation | Methods, systems and computer program products for controlling variables associated with transactions in a multiple transaction environment |
6961689, | Mar 21 2000 | Synopsys, Inc | Scheduling non-integral simulation time for mixed-signal simulation |
7062768, | Mar 21 2001 | NEC Corporation | Dynamic load-distributed computer system using estimated expansion ratios and load-distributing method therefor |
20030191615, | |||
20030191869, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 07 2003 | DEEPAK, KUMAR | Xilinx, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 013886 | /0348 | |
Mar 07 2003 | WANG, JIMMY ZHENMING | Xilinx, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 013886 | /0348 | |
Mar 07 2003 | LIN, WEI | Xilinx, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 013886 | /0348 | |
Mar 14 2003 | XILINX, Inc. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Sep 27 2010 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Sep 29 2014 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Nov 12 2018 | REM: Maintenance Fee Reminder Mailed. |
Apr 29 2019 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Mar 27 2010 | 4 years fee payment window open |
Sep 27 2010 | 6 months grace period start (w surcharge) |
Mar 27 2011 | patent expiry (for year 4) |
Mar 27 2013 | 2 years to revive unintentionally abandoned end. (for year 4) |
Mar 27 2014 | 8 years fee payment window open |
Sep 27 2014 | 6 months grace period start (w surcharge) |
Mar 27 2015 | patent expiry (for year 8) |
Mar 27 2017 | 2 years to revive unintentionally abandoned end. (for year 8) |
Mar 27 2018 | 12 years fee payment window open |
Sep 27 2018 | 6 months grace period start (w surcharge) |
Mar 27 2019 | patent expiry (for year 12) |
Mar 27 2021 | 2 years to revive unintentionally abandoned end. (for year 12) |