GB2506179A - Fixing early mode slacks in a circuit design - Google Patents

Fixing early mode slacks in a circuit design Download PDF

Info

Publication number
GB2506179A
GB2506179A GB1217030.4A GB201217030A GB2506179A GB 2506179 A GB2506179 A GB 2506179A GB 201217030 A GB201217030 A GB 201217030A GB 2506179 A GB2506179 A GB 2506179A
Authority
GB
United Kingdom
Prior art keywords
pins
early mode
macro
slack
fix
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
GB1217030.4A
Other versions
GB201217030D0 (en
Inventor
Kurt Lind
Alexander Woerner
Wilhelm Haller
Ulrich Krauch
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to GB1217030.4A priority Critical patent/GB2506179A/en
Publication of GB201217030D0 publication Critical patent/GB201217030D0/en
Priority to GB1315088.3A priority patent/GB2506275B/en
Priority to US14/035,125 priority patent/US9058456B2/en
Publication of GB2506179A publication Critical patent/GB2506179A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation

Abstract

Fixing an early mode slack in a hierarchically designed hardware device with at least one source macro, an integration unit and at least one sink macro. Hardware design timing data is loaded to determine pins where an early mode slack fix can be applied; for each such pin determining a location across the design hierarchy for the early mode slack fix by calculating a weight value for each of a selection of fix locations of the early mode slack based on absolute values of arrival times of data signals, ratio and difference between arrival times of late mode data signals and early mode data signals; and assigning the early mode slack fix to the determined location based on said weight value. The hardware design timing data can be filtered to determine sink macro input pins. Asssignments of critical pins to be fixed in the source or sink macro by adding delay devices or buffers may be made.

Description

DESCRIPTION
METHOD AND SYSTEM TO FIX EARLY MODE SLACKS IN A CIRCUIT DESIGN
Field of the Invention
The present invention relates to the field of hierarchically designed hardware devices, and more specifically to a method and system for fixing an early mode slack in a hierarchically designed hardware device design structure. Still more specifically, the present invention relates to a data processing program and a computer program product for fixing an early mode slack in a hierarchically designed hardware device.
Description of the Related Art
When developing clocked circuits like microprocessors, one of the development goals is avoiding early mode problems. This means avoid that fast hardware can lead to signals arriving the latch before the clock is in the right phase and thus a latch captures the data for the wrong clock cycle. If the signal arrives the latch before the clock is in the right phase to store it, this is considered as negative early mode slack and this problem has to be solved.
For larger designs that have aggressive timing goals like CPUs, a hierarchical design is often nsed to divide the design into handy pieces like macros, units, cores and the whole chip. But this is adding complexity to the early mode timing analysis.
Since a timing path can cross the border of these pieces, it has to be determined which of these pieces is the right location to fix the early mode negative slack problem. This is important, since usually different people are responsible to fix the early mode slack, depending on whether the source macro, the integrating unit/core/chip wiring level, or the sink maoro needs to be modified.
When analyzing the timing report in order to find out whether the designed hardware fits into the clock cycle, the end point report is the best choice. But for hierarchically designed hardware devices the timing report ends at the border of these pieces and the other hierarchy components are abstracted using timing assertions.
This abstraction makes timing analysis cumbersome, due to either missing completeness for the lower hierarchy level, or missing details in the higher abstraction level. End point reports for the lower hierarchy level (called macros) end at the abstraction border and thus become outdated together with the border values, which may change due to changes in other parts of the design.
End point reports for the upper hierarchy level (called unit) offer correct arid up-to-date timing results, but they do riot reveal the design details of the lower hierarchy level, which also hides the root cause for bad timing data.
Also, the timing abstract assertions are created based on a previous timing run and thus do not reflect present reality, but the past. Timing data for the lower hierarchy level is based on these assertions and thus this timing data has the same deviations from present reality like the assertions it is based upon.
Current approaches can determine whether the early mode slack can be fixed on the integration level, or must be fixed inside the macros. These approaches use to evaluate the ratio between the early mode slack that needs to be fixed, and the late mode (positive) slack that can be "consumed" by this fix, without introducing a late mode slack problem. A late mode slack problem is considered if the signal arrives too late to be stored by the latch in this clock cycle. If the ratio between the early mode slack to reduce, and the late mode slack available to consume, is better than 2.5 to 3, it can be fixed by integration means.
Advanced methods can also recommend which delay devices to use on integration level to fix the early mode slack.
But there is no automated method known yet, to determine if the early mode slack must be fixed in the source or sink macro, when it cannot be fixed on integration level without introducing late mode slack problems. In this case both macros use to be inspected manually, to determine where the early mode slack can be fixed. Such a manual inspection is cumbersome, since large amounts of data that are spread over multiple files, need to be analyzed.
In the Patent Application Publication US 2010/0191774 Al by Sun et al., a method and an apparatus for fixing hold time violations in a circuit design "METHOD AND APPARATUS FOR FIXING HOLD TIME VIOLATIONS IN A CIROUIT DESIGN" are disclosed.
According to the disclosed method, to fix hold time violations, timing analysis is initially performed on a circuit design for each set of timing constraints to determine a setup slack and a hold slack for each signal path for that set of timing constraints. The slack for a signal path indicates the amount of timing margin or the amount of timing violation for that signal path. Signal paths with hold time violations (or "hold paths") are identified and retained, and other signal paths without hold time violations are discarded. For each hold path, signal paths with at least one node in common with the hold path (or "related setup paths") are identified and retained. Related setup paths with large setup slacks may be pruned. Then the hold time violations for the hold paths are fixed based on the hold slacks for the hold paths and the setup slacks for the related setup paths. According to the disclosed method, early mode hold problems are fixed within a circuit that has a flat design approach. A method to determine the right place (source macro, unit integration, or sink macro) to fix an early mode hold problem in a hierarchical design is not described.
Summary of the Invention
The technical problem underlying the present invention is to provide a method and a system for fixing an early mode slack in a hierarchically designed hardware device to automatically determine the locaticn where the early mode slack can be fixed with reduced effort while avoiding the above mentioned shortcomings and pain points of prior art fixing early mode slacks.
According to the present invention this problem is solved by providing a method for fixing an early mode slack in a hierarchically designed hardware device having the features of claim 1, a system for fixing an early mode slack iii a hierarchically designed hardware device having the features of claim 16, a data processing program for fixing an early mode slack in a hierarchically designed hardware device having the features of claim 17, and a computer program product for fixing an early mode slack in a hierarchically designed hardware device having the features of claim 18. Advantageous embodiments of the present invention are mentioned in the subclaims.
Accordingly, in an embodiment of the present invention a method for fixing an early mode slack in a hierarchically designed hardware device with at least one source macro, an integration unit and at least one sink macro comprises loading hardware design timing data to determine pins where an early mode slack fix is applicable to an early mode slack; for each such pin determining a location across the design hierarchy for the early mode slack fix by calculating a weight value for each of a selection of fix locations of the early mode slack based on absolute values of arrival times of data signals, ratio and difference between arrival times of late mode data signals and early mode data signals; and assigning the early mode slaok fix to the determined location based on the weight value.
In a further embodiment of the present invention, the hardware design timing data is filtered to determine sink macro input pins for analyzing using at least one of the following information: pin owner, pin type, buffer usage, and timing phase information.
In a further embodiment of the present invention, an early mode slack threshold value is used to determine sink macro input pins to be fixed resulting in a list of problem pins.
In a further embodiment of the present invention, based on the list of problem pins early mode timing paths are analyzed to create several main categories of assigrmieiits for the early mode slack fixes.
In a further embodiment of the present invention, a first category of assignments is selected to comprise critical pins to be fixed in the source macro or in the sink macro, a second category of assignments is selected to comprise paddable pins to be fixed on integration unit level by adding delay devices or buffers, and a third category of assignments is selected to comprise fixable pins to be fixed on integration unit level by modifying delay devices or buffers in the source macro or in the sink macro.
In a further embodiment of the present invention, for each pin of the list of problem pins a late versus early mode slack ratio is calculated and compared against a first threshold value, wherein pins with a slack ratio not higher than the first threshold value are assigned to the first category of assignments.
Tn a further embodiment of the present invention, for each pin of the list of problem pins with a slack ratio higher than the first threshold value, a corresponding late mode slack is compared against a second threshold value, wherein pins with a late mode slack higher than the second threshold value are assigned to the second category of assignments and added to a first list comprising paddable pins to be fixed on integration unit level, and pins with a late mode slack not higher than the second threshold value are assigned to the third category of assignments.
In a further embodiment of the present invention, for each pin of the third category of assignments an integration unit net name is parsed for at least one delay device or buffer, wherein a corresponding pin connected tc at least one delay device or buffer is added to a second list comprising fixable pins to be fixed on integration unit level.
In a further embodiment of the present invention, each pin of the third category of assignments not connected to at least one delay device or buffer or each pin of the first category of assignments is applied to an expert system.
Tn a further embodiment of the present invention, the expert system determines a source macro as early mode slack fix location, if a difference between a source weight value and a sink weight value is higher than a certain threshold value.
In a further embodiment of the present invention, the expert system determines a sink macro as early mode slack fix location, if a difference between the sink weight value and the source weight value is higher than a certain threshold value.
In a further embodiment of the present invention, the expert system determines no early mode slaok fix location, if the difference between the source weight value and the sink weight value and the difference between the sink weight value and the source weight value are not higher than the certain threshold value.
In a further embodiment of the present invention, the expert system outputs fixable pins to be fixed in the source macro and to be added to a third list comprising fixable pins to be fixed in the source macro, fixable pins to be fixed in the sink macro and to be added to a fourth list comprising fixable pins to be fixed in the sink macro, fixable pins to be fixed at unit level and to be added to the second list comprising fixable pins to be fixed on integration unit level, critical pins to be fixed in the source macro and to be added to a fifth list comprising critical pins to be fixed in the source macro, critical pins to be fixed in the sink macro and to be added to a sixth list comprising critical pins to be fixed in the sink macro, and critical pins in doubt where to fix and to be added in a seventh list comprising critical pins in doubt.
In a further embodiment of the present invention, for each pin of the third and fifth list a corresponding source macro output pin is determined and listed in addition to the actually analyzed input pin of the sink macro.
In a further embodiment of the present invention, for each source macro output pin to be fixed an existing timing contract is maintained.
In another embodiment of the present invention, a system for fixing an early mode slack in a hierarchically designed hardware device comprises a timing analyzer for importing hardware design timing data to determining pins where an early mode slack fix is applicable to an early mode slack; at least one filter and an expert system acting like a neural network determining a location across the design hierarchy for each such pin to fix the early mode slack by calculating a weight value for each of a selection of fix locations of the early mode slack based on absolute values of arrival times of data signals, ratio and difference between arrival times of late mode data signals and early mode data signals; and assigning the early mode slack fix to the determined location based on the weight value.
In another embodiment of the present invention, a data processing program for execution in a data processing system comprises software code portions for performing a method for fixing an early mode slack in a hierarchically designed hardware device when the program is run on the data processing system.
In yet another embodiment of the present iiiveritiori, a computer program product stored on a computer-usable medium, comprises computer-readable program means for causing a computer to perform a method for fixing an early mode slack in a hierarchically designed hardware device when the program is run on the computer.
All in all, embodiments of the present invention teach to determine a location where an early mode slack can be fixed with reduced effort.
Further embodiments of the present invention disclose methods to automatically determine where the early mode slack can be fixed, by additionally analyzing the arrival times of the data signals.
The ratio and difference between early mode and late mode arrival times, as well as their absolute values are reliable indicators to detect whether an early mode slack that cannot be fixed on integration level, should rather be fixed in the source or sink macro.
Embodiments of the present invention method first analyze the early mode timing paths based on macro input pins, since an integration level fix should add delay devices near to these pins, and create several main categories of assignments for the early mode slack fixes. A first main category of assignments comprises paddable pins that should be fixed by adding delay devices on integration level. A second main category of assignments comprises fixable pins that can be fixed on integration level, but with a higher effort and maybe could be fixed in the macros with less effort. A third main category of assignments comprises critical pins that can only be fixed in the macros.
For the fixable and critical pins, the embodiments of the present iriveritioii determine whether the fix should be made in the source or sink macro. This could result in the following lists of macro pins, for example: Paddable pins that should be fixed on integration level; fixable pins that should be fixed on integration level; fixable pins that should be fixed in the source macro; fixable pins that should be fixed in the sink macro; critical pins that should be fixed in the source macro; critical pins that should be fixed in the sink macro; and critical pins that are in doubt where to fix. For such pins in doubt further manual investigation is performed to determine the location for the early mode slack fix.
The lists can also be saved as an HTML file that contains the lists of pins where the early mode slack fixes should be applied. For each pin, the file also contains the timing data details.
-10 -The file could begin with a set of parameters used to analyze the timing run, followed by a set of links to quickly jump to the pin list of interest, for example. Then the above mentioned pin lists could follow. Each pin list first shows all affected nets, followed by the details for each pin. The pin details combine the early mode and late mode timing results for each tested phase. For paths where the fix has been assigned to the source macro, the macro output pin to be fixed is listed in addition to the actually analyzed input pin of the sink macro.
An advanced embodiment of the method can modify the timing contracts fcr synthesized macros, where early mode fixes should be applied for some of their output pins. Since custom macro early mode slack fixes are applied manually, there's no need to further automate the support for early mode fixes at this level.
But synthesized macros are automatically processed, and one of the main input parameters for synthesis is timing assertions.
Hence, managing these timing assertions for early mode is helpful to enforce proper early mode behavior for synthesized macros.
One way to manage these timing assertions is to establish timing contracts that constrain the variability of the feedback timing assertions that are usually generated by a timing run. Since it is preferable to make early mode slack fixes in front of a sink latch, rather than after an output of a source latch, timing contracts by default do not constrain the output pin timing assertions, but ensure that no early mode delays are applied to macro output pins. This is ensured by setting the early mode output pin expected arrival time assertion for early mode to 0, i.e. the signal is allowed to arrive as early as it wants. The advanced embodiment of the method replaces this default contract for those macro output pins that have assigned an early mode slack fix. Hence, it allows timing assertion generation to propagate feedback timing assertions for this pin. In -11 -consequence, macro synthesis can ensure that the signal does not arrive earlier as needed and thus automatically fix the early mode slack.
The above, as well as additional purposes, features, and advantages of the present invention will become apparent in the
following detailed written description.
Brief Description of the Drawings
A preferred embodiment of the present invention, as described in detail below, is shown in the drawings, in which FIG. 1 is a schematic overall flow diagram of a method to fix an early mode slack in a circuit design, in accordance with an embodiment of the present invention; FIG. 2 is a schematic block diagraiti of a hardware device designed in accordance with an embodiment of the present invention; FIG. 3 is a more detailed schematic flow diagram of a filter process used in the method to fix an early mode slack in a circuit design of FIG. 1, in accordance with an embodiment of the present invention; FIG. 4 to 6 is a more detailed schematic flow diagram of a process to determine a location for an early mode fix used in the method to fix an early mode slack in a circuit design of FIG. 1, in accordance with an embodiment of the present invention; FIG. 7 is a schematic architecture of a process analyzing an early and late fixable or critical pin arrival time for the -12 -determination process of FIG. 4 to 6, in accordance with an embodiment of the present invention; FIG. 8 is a schematic diagram of a possible output of the method to fix an early mode slack in a circuit design of FIG. 1, in accordance with an embodiment of the present invention; FIG. 9 is a more detailed schematic flow diagram of a process to maintain contracts for synthesized macro output pins used in the method to fix an early mode slack in a circuit design of FIG. 1, in accordance with an embodiment of the present invention; FIG. 10 is a schematic flow diagram of a design process used in semiconductor design, manufacture, and/cr test.
Detailed Description of Preferred Embodiments
Referring to FIG. 1 arid 2, a method for fixing an early mode slack in a hierarchically designed hardware device 10 with at least one source macro 12, an integration unit 14 and at least one sink macro 16, each of which can serve as a fix location, comprises a step 5100 for loading hardware design timing data to determine pins Pa, P1 where an early mode slack fix shall be applied to fix an early mode slack. For each such pin PC, P1 in a step 5300 a location across the design hierarchy of the hardware device 10 is determined to fix the early mode slack by calculating a weight value for each of a selection of fix locations 12, 14, 16 of the early mode slack based on absolute values of arrival times of data signals, ratio and difference between arrival times of late mode data signals and early mode data signals; and the early mode slack fix is assigned to the determined location based on the weight value.
The hierarchical designs for the hardware device 10, for an example a CPU, is used to divide the design into pieces like -13 -macros, units, cores and whole chip. Since a timing path can cross the border of these pieces, it is determined which of these pieces is the right location to fix the early mode slack.
This is also done to determine the person or entity who is responsible to fix the early mode slack, since usually different people or entities are responsible to fix the early mode slack, depending on whether the source macro 12, the integrating unit/core/chip wiring level 14, or the sink macro 16 is the location to be modified to fix the early mode slack. Since the method works the same way for unit, oore, and whole chip timing results, for better readability the following describes it for the unit only.
P. factor to detect early mode slacks, and also to evaluate fixes for them without deteriorating the late mode timing, is to consolidate the timing results of the unit early mode and late mode timing runs. To achieve this, the unit early and late mode comprehensive summary timing reports are parsed arid consolidated in memory during step 5100. The result is a model that contains the devices like macros 12, 16, buffers, etc., nets, and pins of the unit 14. For each device or input/output pin of the unit 14, the model also contains the timing data for each tested clock phase. So, for each output pin PC of the source macro, each input pin PT of the sink macro 16 and clock phase tested for it, late mode arrival time for rising and falling signal edge, early mode arrival time for rising and falling signal edge, late mode slack for the rising and falling signal edge, early mode slack for the rising and falling signal edge, late mode slew for the rising and falling signal edge, early mode slew for the rising and falling signal edge, wire delay, and capacitive load are contained.
The result of step SlOG is a certain amount of information, since for each timing path, the early mode slack is visible on multiple pins PC, P1, but usually shall be fixed only in one -14 -location. Therefore in a following step 5200 the hardware design timing data is filtered to determine sink macro input pins P1 for analyzing, using at least one of the following information: pin owner representing a device where the corresponding pin is located, pin type, buffer usage, and timing phase information.
Still referring to FIG. 1 and 2, some embodiments of the method for fixing an early mode slack in a hierarchically designed hardware device 10 perform an optional step 3400 during which for each source macro oitput pin PG to be fixed an existing timing contract is maintained.
FIG. 3 shows a filter process step 5200 used in the method to fix an early mode slack in a circuit design of FIG. 1, in accordance with an embodiment of the present invention.
Referring to FIG. 3, for each pin listed in the hardware design timing data the steps 5210 to 5270 are performed. To find an early mode slack, and a location to fix it, the amount of available information is significant, since for each timing path, the early mode slack is visible on multiple pins, but usually shall be fixed only in one location. So, from the pins PD, PT described in the comprehensive summary timing report, those pins are extracted, where an early mode slack fix shall be applied while it has a certain probability to be successful.
Since the early mode delay devices used to fix early mode slack at unit level have only a relatively small load driving capacity, and each sink macro pin P1 has different slack data, a preferred location to apply an early mode slack fix at unit level is the input pin PT of the sink macro 16 in a timing path.
Thus, macro input pins P1 are used as analysis starting points.
They are selected in step 5210 from all the pins PT, PC available. Using the pin owner, i.e. the device where the corresponding pin is located, and the pin type, pins of the unit -15 - 14 and output pins PC of the source macro 12 can be excluded. A more complex filter is used in step S220 to distinguish macro input pins P1 from input pins of buffers located in the unit 14.
Since the buffers in the unit 14 are placed or inserted by tools, and these use a certain name scheme for the buffer instances, buffer pins can be excluded by their instance name.
For example, a standard regular expression can be used as pattern to exclude buffer pins by their name prefix: A(?RUNITBUFFER?REFIX>buf*skt*) *$
For example:
A(?!lsbuf*Iskt*)*$ This expression excludes pins that have a pin name that starts either with Tlsbuf'T or with "skt".
The shown advanced embodiment of the method for fixing an early mode slack filters the timing values by applying a phase filter in step 5230, which can exclude some timing phases like scan phases from being checked. This way a more specific early mode slack determination can occur. The phase filter is an additional regular expression used as pattern to exclude timing values for not matching clock phases from being checked for early mode slacks.
After filtering for the right pins PT to analyze, the set of pins, where a fix shall be applied, is determined in step S240.
This is a filter by an early mode slack threshold value theariyo:ie s1!:. Usually, value 0.0 ps, or another value like 1.0 ps that provides some safety margin, can be used as early mode slack threshold value (thcary.:LQdQsack) . A pin is considered a
problem pin, if statement (1) is fulfilled.
(mm (5lris::igcuqc, 5li_Lric edge) < thearynociee_ecj (1) -16 -Wherein sl e. rg edge denotes the slack of the rising edge of a corresponding pin signal, and 51fa1m> denotes the slack of the falling edge of a corresponding pin signal.
All pins that have an early mode slack higher than the threshold value theariy::nde slack, are excluded from further processing, since no fixes need to be applied. If the rising edge slack differs from the falling edge slack, the smaller value is used by this filter.
All pins that have an early mode slack lower than the threshold value are included in a list of problem pins in step 5250. If the filter process step S200 is performed for all pins P1, PC of the hardware design timing data, the list of problem pins to be fixed is returned to the main process in step 5270. The resulting list of problem pins is also referred to as list of fixable pins FIG. 4 to 6 show the process to determine a location for an early mode slack fix of step 3300 used in the method to fix an early mode slack in a circuit design of FIG. 1, in accordance with an embodiment of the present invention, and FIG. 7 shows a process analyzing early and late fixable or critical pin arrival time for the determination process of FTC. 4 to 6, in accordance with an embodiment of the present invention.
The location to fix the early mode slack detected above is determined by applying further filters to each problem pin in the list of fixable pins. A filter first determines in step 5310 whether the early mode slack can be fixed at unit level 14, or shall rather be fixed in the source or sink macro 12, 16.
A way to determine whether an early mode slack can be fixed by unit level integration means is to compute the late versus early mode slack ratio for this problem pin and to compare it against -17 -a threshold value in step 5310. This threshold value should be higher than the ratio between the late versus early mode delay of the pad device to insert for fixing the early mode slack. A safe value for current CMOS technology is a threshold value of 3.0, for example. The problem pin is fixable at unit level, if
statement (2) is fulfilled.
(mm ( (slire/slerire) , (5l1fe/5lerrfe) ) > th /ed!j) (2) Wherein 11nre represents the late mode slack of the rising edge, 51eire represents the early mode slack of the rising edge, 511fe represents the late mode slack of the falling edge, 510::Lc represents the early mode slack of the falling edge, and th/ead represents the threshold of the late versus early mode device delay.
If the slack ratio is not higher than the threshold ratio th1/da, the early mcde slack fix is better applied in the source or sink macro 12, 16. The further processing for those problem pins is described in the following, referring to FIG. 5. Problem pins where the slack ratio is higher than the threshold ratio can be fixed at unit level. But being sure that the fix can be made at unit level does not exclude, that a fix at unit level might be cumbersome. For those problem pins in step 5320 can be checked, if enough late mode slack is available. If enough late mode slack is available, the problem pin is added to a list of paddable pins at unit level in step S330. If not enough late mode slack value is available, further processing for those problem pins is described in the following, referring to FIG. 6.
Enough late mode slack also called late mode slack margin is available and the problem pin is paddabie at unit level, if
statement (3) is fulfilled.
(mm (sl_10, 5lu:L_c) > thciJ (3) -18 -Wherein sl represents a late mode slack of the rising edge, 1IL-e represents a late mode slack of the falling edge, and th represents a threshold of the late device delay.
Early mode slack on pins where the late mode slack margin is higher than the threshold value can be fixed at unit level and are considered paddable pins.
After applying these two filters, a sorting for where to apply the early mode fix is available. The sorting result comprises paddable pins that should be fixed by adding delay devices on integration unit; fixable pins that can be fixed on integration unit level, but also in the source or sink macros; and critical pins that can only be fixed in the macros 12, 16. After that filtering a first category of assignments comprises critical pins to be fixed in the source macro 12 or in the sink macro 16, a second category of assigrniieiits comprises paddable pins P2 to be fixed on integration unit level 14 by adding delay devices or buffers, and a third category of assignments comprises fixable pins PT to be fixed on integration unit level 14 by the source macro 12 or the sink macro 16.
For the filtering above, one can apply known filtering technigues. But these technigues do not investigate which macro 12, 16 is in charge to make the fix, if a fix at unit level is not possible or cumbersome. The following sections describe the method to determine in which macro 12, 16 those early mode slacks can be fixed, which cannot be simply solved on unit level.
The late mode slack margin is used in step S320. If it is higher than the minimum late mode delay of the pad device, the early mode slack can be fixed at unit level and the problem pin is added to a list of paddable pins at unit level. Otherwise the -19 -signal might be delayed by using thinner or longer wires, whioh might have negative side effects like slew violations. A useful threshold value is 25 ps, but in oertain oases fast buffers can be used as delay devices too, and then even 15 ps can be used as a threshold value. If the slack ratio is not higher than the threshold ratio thjjedd, further processing according to FIG. 6 is applied for those problem pins.
Referring now to FIG. 5, if the slack ratio according to step 5310 is not higher than the threshold ratio th/e, the early mode slack fix is better applied in the source or sink macro 12, 16. So, the shown embodiment of the method for fixing an early mode slack in a hierarchically designed hardware device 10 analyzes early and late mode arrival time of the problem pin in step 5311 of FIG. 5 to determine the location to fix the early mode slack. A reliable indicator for where a fix can be more successful is the early and late mode arrival time at the sink macro input pin P1. But there's rio simple criterion available to distribute the early mode slack fixes, so a more complex solution with multiple comparisons and weighing their results can be used. The analyzing process of step S31l is described in the following, referring to FIG. 7.
Step 5312 checks, if the result of the analyzing process of step S31l corresponds to the sink macro 16 as location to fix the early mode slack. If the sink macro 16 is the location to fix the early mode slack, the corresponding problem pin is added to the list of critical pins to be fixed at the sink macro 16 in step 5313. If the sink macro 16 is not the location to fix the early mode slack, step 3314 checks, if the result of the analyzing process of step S311 corresponds to the source macro 12 as location to fix the early mode slack. If the source macro 12 is the location to fix the early mode slack, the corresponding problem pin is added to the list of critical pins to be fixed at the source macro 16 in step S315. Then step 3316 -20 -determines the corresponding output pin PC of the source macro 12. If the source macro 12 is not the location to fix the early mode slack, the oorresponding pin is added to the list of critical pins in step 5317. After adding the corresponding problem pin to one of the pin lists, the process returns to step 5340 of FIG. 4. Step 5340 checks it the last pin in the list of problem pins has been processed. If not, the process is repeated for the next pin in the list of problem pins. If all pins in the list of problem pins have been processed, all pin lists are returned and saved in step 5350.
Referring now to FIG. 6, early mode slacks on fixable pins can theoretically both be solved on unit level, as well as on macro level. So, the shown embodiment of the method for fixing an early mode slack in a hierarchically designed hardware device 10 first checks in step 5321 of FIG. 6 whether a fix at unit level is easy, i.e. a buffer is already in place that can be replaced by another buffer or delay device iii order to fix the early mode slack. A fixable problem pin is fixable at unit level, if
statement (4) is fulfilled.
(net nameccnn toci to nooro input pm contains (" &" ) ) (4) Since net names that are driven by a buffer or delay device have a specific annotation, which means that they contain the pattern "&<buffer index>", a filter for this annotation can determine where to apply a fix.
If statement (4) is fulfilled, the problem pin is added to a list of fixable pins at unit level in step 5328. If statement (4) is not fulfilled, in step 5322 early and late mode arrival time of the fixable pin is analyzed to determine a location to fix the early mode slack. A reliable indicator for where a fix can be more successful is the early and late mode arrival time at the sink macro input pin P1. But there's no simple criterion -21 -available to distribute the early mode slack fixes, so a more complex solution with multiple comparisons and weighing their results can be used. The analyzing process of step S322 is described in the following, referring to FIG. 7.
Step S323 checks, if the result of the analyzing process of step 5322 corresponds to the sink macro 16 as location to fix the early mode slack. If the sink macro 16 is the location to fix the early mode slack, the corresponding pin is added to the list of fixable pins to be fixed at the sink macro 12 in step 3324.
Tf the sink macro 16 is not the location to fix the early mode slack, step 5325 checks, if the result of the analyzing process of step 5322 corresponds to the source macro 12 as location to fix the early mode slack. If the source macro 12 is the location to fix the early mode slack, the corresponding pin is added to the list of fixable pins to be fixed at the source macro 16 in step S326. Then step S327 determines the corresponding output pin PC of the source macro. If the source macro 12 is riot the location to fix the early mode slack, the corresponding pin is added to the list of fixable pins at unit level in step 3328.
After adding the corresponding problem pin to one of the pin lists, the process returns to step 3340 of FIG. 4. Step 3340 checks it the last pin in the list of problem pins has been processed. If not, the process is repeated for the next pin in the list of problem pins. If all pins in the list of problem pins have been processed, all pin lists are returned and saved in step 5350.
Referring to FIG. 7 the analyzing process of the shown embodiment according to step 5311 or 5322 can act like an already trained neural network, and can be implemented with a mix of an expert system and fuzzy logic, for example. It weighs the results of the various expert hypothesis comparisons (neurons), and computes the final result.
-22 -For a better understanding, first expert system architecture 100 is described as neural network and then details of the hypotheses, used by each neuron respectively expert hypothesis, are described. The neural network 100 consists of three layers Li, L2, L3, and a late mode arrival time and an early mode arrival time are used as input information TN to the expert system 100, and WFix So-irce Macro", "Fix Sink Macro" and "Tn Doubt" are used as output information OUT of the expert system 100.
The first layer Li computes intermediary results like the ratio between late and early mode arrival time at a first neuron Si.i, and a difference between late and early mode arrival time at a second neuron 51.2. The second layer L2 consists of three groups of neurons 52.1 to 52.4; 52.5 to 52.8; and 52.9 to 52.12 that use different input signals and evaluate the input values to give more weight to either the source or sink macro 12, 16. The third layer L3 uses three neurons S3.i to 53.3 to decide if the source or sink macro 12, 14 is in charge to fix the early mode slack or decides and outputs "Tn Doubt" if further processing such as manual processing should be performed to decide where to fix the early mode slack.
The neural network 100 is implemented as expert system that first evaluates a set of hypotheses, and based on evaluation results gives more weight to source or sink macro 12, 16. This weight is evaluated in a further step to distribute the slack fixes to unit level integration, source or sink macro.
As expert system hypotheses the ratio between early and late mode arrival time at the corresponding sink macro input pin P1 is evaluated by the first neuron Si.i. The difference between late and early mode arrival time at the corresponding sink macro input pin P1 is evaluated by the second neuron 51.2. Further the -23 -late mode arrival time at the corresponding sink macro input pin P1 is evaluated using the hardware design timing data directly.
Here a level of detail is added that could be used in the architecture description of the neural network 100 above. The difference between the rising and falling edge arrival times is considered to get a more precise evaluation and to capture the full bandwidth of possibilities. So for each hypothesis the minimum and maximum values are computed in a first step, and for each comparison, the matching value is used by a second step.
First, the following values are computed as input for hypothesis evaluations at the first neural layer Li. In the first level Li a first neuron 51.1 calculates a maximum of late versus early mode arrival time ratio maxElR according to equation (1) = max (atir/ater, atlf/atf) (1) Wherein atir represents the arrival time of the late rising edge, &t(:r represents the arrival time of the early rising edge, at11 represents the arrival time of the late falling edge, and atef represents the arrival time of the early falling edge.
The first neuron 51.1 in the first level Li calculates also a minimum of late versus early mode arrival time ratio minrlAI!R according to equation (2) minI!AIH = mm (at1 r /at(r, at1 r/at0r) (2) In the first level Ll a second neuron 51.2 calculates a maximum difference between late and early mode arrival time maxI!!!A!!, according to equation (3) = max (atir-ater, atif-atef) (3) -24 -Wherein atir represents the arrival time of the late rising edge, atcr represents the arrival time of the early rising edge, at1 represents the arrival time of the late falling edge, and atet represents the arrival time of the early falling edge.
The second neuron Si.2 in the first level Li calculates also a minimum difference between late and early mode arrival time minl!!!!AI!I:! according to equation (4) minLEATD = mm (atir-ater, atif-atef) (4) For consistency, the first level Li calculates also a maximum of late mode arrival time maxT according to eguation (5) maxLz = max (atr, at11) (5) For consistency, the first level Li calculates also a minimum of late mode arrival time iuiri according to eguatiori (6) minL = mm (&tr, at11) (6) Second, the hypotheses are evaluated to compute the weights at the second neural layer L2. In the second layer L2 a first group of neurons S2.i to 52.4 evaluates the maximum ratio between late and early mode arrival time max11At!< at sink macro input pin Pi and compares it with different threshold values Ti, T2, and evaluates the minimum ratio between early and late mode arrival time minl!RM!IH at sink macro input pin Pi and compares it with different threshold values 13, T4, wherein Ti = 3, 12 = 2.7, 13 = 2.3, and T4 = 2.0, for example. if the maximum ratio of late versus early mode arrival time maxl!I!!A! is higher than a first threshold value Ti (maxEAIp > Ti) a first neuron S2.i of the second level L2 representing a "very high ratio" increments the source weight at a first neuron 53.1 of the third level L3. If the maximum ratio of late versus early mode arrival time maxELAIR -25 -is higher than a second threshold value T2 (maxT!Lm > T2) a second neuron 32.2 of the second level L2 representing a "high ratio" increments the source weight at the first neuron 33.1 of the third level L3. If the minimum ratio of late versus early mode arrival time minEkTp is lower than a third threshold value T3 (minIEA< < T3) a third neuron 32.3 of the second level L2 representing a "low ratio" increments the sink weight at a second neuron 33.2 of the third level L3. If the minimum ratio of late versus early mode arrival time min5jp is lower than a fourth threshold value T4 (minEsAip < T4) a fourth neuron 32.4 of the second level L2 representing a "very low ratio" increments the sink weight at the second neuron 33.2 of the third level L3.
All four hypotheses are evaluated, so a very high ratio gives more weight to the source 12 than a medium high one, and a very low ratio gives more weight to the sink 16 than a medium low one.
In the second layer L2 a second group of neurons 32.5 to 32. 8 evaluates the maximum difference between late and early mode arrival time maxArD at sink macro input pin P1 and compares it with different threshold values T5, T6, and evaluates the minimum difference between late and early mode arrival time minLEATD at sink macro input pin P1 and compares it with different threshold values T7, T8, wherein T5 = 90, T6 = 80, T7 = 70, and TB = 60, for example. If the maximum difference between late and early mode arrival time max5 is higher than a fifth threshold value T5 (maxTTp > T5) a fifth neuron 32.5 of the second level L2 representing a "very high difference" increments the source weight at the first neuron 33.1 of the third level L3. If the maximum difference between late and early mode arrival time maxl!!!!AI!I:! is higher than a sixth threshold value 16 (maxI!!!!I!I > 16) a sixth neuron 32.6 of the second level L2 representing a "high difference" increments the source weight at the first neuron 53.1 of the third level L3. If the minimum difference between late and early mode arrival time minEAy is lower than a seventh -26 -threshold value T7 (min-j-, < 17) a seventh neuron 52.7 of the second level L2 representing a "low difference" increments the sink weight value at the second neuron 33.2 of the third level L3. If the minimum difference between late and early mode arrival time miniEArD is lower than an eighth threshold value IS (mintEAlD < 18) an eighth neuron 32.8 of the second level L2 representing a "very low difference" increments the sink weight value at the second neuron 53.2 of the third level L3. All four hypotheses are evaluated, so a very high difference gives more weight to the source 12 than a medium high one, and a very low difference gives more weight to the sink 16 than a medium low one.
Tn the second layer L2 a third group of neurons 52.9 to 52.12 evaluates the maximum late mode arrival time maxLA at sink macro input pin P1, and compares it with different threshold values T9, 110, and evaluates the minimum late mode arrival time minf!A at sink macro input pill Fl arid compares it with different threshold values Ill, 112, wherein 19 = 120, 110 = 100, Ill = 90, and 112 = 80, for example. The values used here are cycle time dependent and might vary with the chip frequency. If the maximum late mode arrival time maxtAl! is higher than a ninth threshold value 19 (max1 > 19) a ninth neuron 32.9 of the second level L2 representing a "very late arrival" increments the source weight value at the first neuron 53.1 of the third level L3. If the maximum late mode arrival time maxIAl is higher than a tenth threshold value T10 (maxiv > 110) a tenth neuron 52.10 of the second level L2 representing a "late arrival" increments the source weight value at the first neuron 53.1 of the third level L3. If the minimum late mode arrival time min1 is lower than an eleventh threshold value 111 (minlA! < 111) an eleventh neuron 52.11 of the second level L2 representing an "early arrival" increments the sink weight value at the second neuron 53.2 of the third level L3. If the minimum late mode arrival time min1 is lower than a twelfth threshold value 112 -27 - (minT!T < 112) a twelfth neuron 52.12 of the second level L2 representing a "very early arrival" increments the sink weight value at the second neuron 33.2 of the third level L3. All four hypotheses are evaluated, so a very late arrival gives more weight to the source 12 than a medium late one, and a very early arrival gives more weight to the sink 16 than a medium early one.
Third, neurons 33.1, 33.2, 33.3 of the third neural layer L3 distribute the early mode slaoks to souroe or sink maoros 12, 16 according to the weight values determined above. In the third layer P3 the first neuron 33.1 representing the "source" evaluates the difference between the source weight value w0 and the sink weight value wS1C for the sink macro input pin PT, and compares it with a threshold value 113, wherein 113 = 2, for example. If the difference between the source weight value w:, and the sink weight value wSk is higher than a thirteenth threshold value 113 ( (w, -wJ > T13) the first neuron S3.1 of the third layer P3 assigns the source macro as fix location. In the third layer P3 the second neuron 33.2 representing the "sink" evaluates the difference between the sink weight value wSk and the source weight value w30 for the sink macro input pin P1, and compares it also with the threshold value 113. If the difference between the sink weight value wSk and the source weight value w30 is higher than the thirteenth threshold value 113 ((wj. -w0) > 113) the second neuron 33.2 of the third layer L3 assigns the sink macro as fix location. Else a third neuron 33.3 of the third layer representing a "in doubt" situation, outputs no fix location for the sink macro input pin P1.
Tf the difference between source and sink weight value is not sufficiently significant, the method leaves the pin in the general lists of critical respectively fixable pins. It is better when a human makes the final decision for in doubt pins, than to wrongly assign them to a certain macro.
-28 -In summary the result of embodiments of the present method is a distribution of the early mode slaok to one of the following lists: Paddable pins that should be fixed at integration level 14; fixable pins that should be fixed at integration level 14; fixable pins that should be fixed in the source macro 12; fixable pins that should be fixed in the sink macro 16; critical pins that should be fixed in the source macro 12; critical pins that should be fixed in the sink macro 16; critical pins that are in doubt and shall be further analyzed.
The resulting data is either displayed in a graphical user interface, or saved as a file with all the lists and pin (timing) details as shown above.
For the fixable and critical pins that should be fixed in the sink macro 16, embodiments of the present invention also determine the source macro 12 and its output piLl PC where the fix should be applied, according to step S316 or S327.
For each sink macro input pin PT in these lists, it first extracts the net it is connected to. If the net name follows a buffer or delay device (net name contains ("&")), it retrieves this buffer, for this buffer the input pin, and for this pin the net. This is applied in a loop until a net name without & in its name is reached. If the net name does not contain & in its name, the source for this net is the output pin PD to be fixed, and the owner of this pin is the macro to be fixed.
FIG. 8 shows a possible output of the method to fix an early mode slack in a circuit design of FIG. 1, in accordance with an embodiment of the present invention.
In the shown example, the list of paddable pins that should be fixed at integration level 14 comprises eleven pins with -29 -corresponding addresses; the list of fixable pins that should be fixed at integration level 14 comprises one pin with corresponding address; the list of fixable pins that should be fixed in the source macro 12 comprises one pin with a corresponding address; the list of fixable pins that should be fixed in the sink macro 16 comprises five pins; the list of critical pins that should be fixed in the source macro 12 comprises two pins; the list of critical pins that should be fixed in the sink macro 16 comprises fifty-six pins; and the list of critical pins that are in doubt and shall be further analyzed comprises no pins.
FIG. 9 shows a process 5400 to maintain timing contracts for synthesized macro output pins used in the method to fix an early mode slack in a circuit design of FIG. 1, in accordance with an embodiment of the present invention.
The advanced embodiment of the method to fix an early mode slack in a circuit design can modify the timing contracts for synthesized macros, where early mode slack fixes should be applied for some of their output pins PC. Synthesized macros are automatically processed, and one of the input parameters for synthesis is containing timing assertions. Hence, managing these timing assertions for early mode slack is helpful to ensure a predetermined early mode behavior for synthesized macros. One way to manage these timing assertions is to establish timing contracts that constrain the variability of the feedback timing assertions that are usually generated by a timing run. Since it is preferable to make an early mode slack fix in front of a sink latch, rather than after an output of a source latch, timing contracts by default do not constrain the output pin timing assertions, but ensure that no early mode delays are applied to macro output pins PC. This is ensured by setting the early mode output pin expected arrival time assertion for early mode to 0, i.e. the signal is allowed to arrive arbitrarily early. The -30 -advanced embodiment cf the method to fix an early mode slack in a circuit design replaces this default contract for those macro output pins PC that have assigned an early mode slack fix.
Hence, it allows timing assertion generation to propagate feedback timing assertions for this output pin PC. In consequence, macro synthesis can ensure that the signal does not arrive earlier as needed and thus automatically fix the early mode slack.
The advanced embodiment of the present invention shown in FIG. 9 also maintains the early mode timing contracts for synthesized source macros 12. For each source macro 12 that has been determined as a location to fix the corresponding early mode slack, the timing contract file is loaded and edited. For each of the determined output pins PC of the source macro 12 to be fixed, a line is added or maintained, which ensures that a valid early mode assertion is generated, which would not happen for synthesized macros by default.
The timing contract maintenance consists of the following steps: Sort all determined critical or fixable output pins PC of the source macro 12 by macro name. Parse timing contract files for source macros 12 to fix into memory. For each source macro 12 analyze whether early mode feedback timing assertion generation is inhibited. Analyze whether a timing contract exists for all output pins PC of the source macro 12 determined as location to fix the early mode slack. Establish a new timing contract that supports early mode feedback timing assertions if it does not already exist for the corresponding output pin PC. Continue until all output pins PC of all source macros 12 are processed.
Save edited timing contract files.
Referring to FIG. 9, in step S405 all critical or fixable output pins PC are sorted by macro name to optimize processing performance. In step 3410 timing contract files for all source -31 -macros 12 to fix are parsed into memory. All contract files are stored in the same directory. Based on this directory, the right timing contract file is loaded under its name which consists of <macroName>.override. Tf a timing contract does not exist, there is no need to maintain it, since it cannot inhibit the generation of feedback timing assertions. If a timing contract for the source macro 12 is found, in step 5420 it is checked for the lines that inhibit the generation of early mode feedback timing assertions. If these lines are not found, early mode timing assertion generation is not inhibited, and nothing has to be done for this macro contract and the process continues for the next macro contract in the loop with step 3420. If inhibit lines are found, for all critical or fixable output pins PC of the source macro 12 to fix step 5430 locks for static override statements for the output pins PC or a corresponding bus in the timing contract file. If static override statements exist, they override the inhibition statement and nothing needs to be changed arid the process continues for the next output pin PC in the 1oop with step 5430. Otherwise step 5435 looks for inhibition override statements overriding the feedback timing assertion generation inhibition for this output pin PC or the corresponding bus. If an inhibition override statement is found, the contract already supports feedback timing assertions for this pin and no change is needed and the process continues for the next output pin PC in the loop with step S430. Otherwise a statement is added in step 3440 in order to override the inhibition for early mode feedback timing assertion generation.
In addition the macro timing contract is marked Tdirty". Step S445 checks, if the last output pin PC of same source macro 12 is processed. If not, the process continues for the next output pin PC in the loop with step S430. If the last output pin PC of the source macro 12 is processed step S450 checks, if the last macro timing contract is processed. If not, the process continues for the next macro timing contract in the loop with step 3420. If the last macro contract is processed, step 3455 -32 -saves the timing contract file for all macro timing contracts marked "dirty".
A system, especially for performing a method for fixing an early mode slack in a hierarchically designed hardware device 10, comprises a timing analyzer 5100 for importing hardware design timing data to determine pins DO, PT where an early mode slack fix is applicable to fix an early mode slack; at least one filter 5210, 5220, 5230, 5240 and an expert system 100 acting like a neural network determining a looation across the design hierarchy 10 for each such pin to fix the early mode slack by calculating a probability value for each of a selection of fix locations 12, 14, 16 of the early mode slack based on absolute values of arrival times of data signals, ratio and difference between arrival times of late mode data signals and early mode data signals; and assigning the early mode slack fix to the determined location.
Referring now to FIG. 10, FIG. 10 shows a block diagram of an exemplary design flow 900 used for example, in semiconductor IC logic design, simulation, test, layout, and manufacture. Design flow 900 includes processes, machines and/or mechanisms for processing design structures or devices to generate logically or otherwise functionally eguivalent representations of the design structures and/or devices shown in FIG. 2. The design structures processed and/or generated by design flow 900 may be encoded on machine-readable transmission or storage media to include data and/or instructions that when executed or otherwise processed on a data processing system generate a logically, structurally, mechanically, or otherwise functionally equivalent representation of hardware components, circuits, devices, or systems. Machines include, but are not limited to, any machine used in an IC design process, such as designing, manufacturing, or simulating a circuit, component, device, or system. For example, machines may include: lithography machines, machines -33 -and/or equipment for generating masks (e.g. c-beam writers), computers or equipment for simulating design structures, any apparatus used in the manufacturing or test process, or any machines for programming functionally equivalent representations of the design structures into any medium (e.g. a machine for programming a programmable gate array) Design flow 900 may vary depending on the type of representation being designed. For example, a design flow 900 for building an application specific IC (ASIC) may differ from a design flow 900 for designing a standard component or from a design flow 900 for instantiating the design into a programmable array, for example a programmable gate array (PGA) or a field programmable gate array (FPGA) offered by Altera® Inc. or Xilinx® Inc. FIG. 10 illustrates multiple such design structures including an input design structure 920 that is preferably processed by a design process 910. Design structure 920 may be a logical simulation design structure generated and processed by design process 910 to produce a logically equivalent functional representation of a hardware device. Design structure 920 may also or alternatively comprise data and/or program instructions that when processed by design process 910, generate a functional representation of the physical structure of a hardware device.
Whether representing functional and/or structural design features, design struotire 920 may be generated using electronic computer-aided design (ECAD) such as implemented by a core developer/designer. When encoded on a machine-readable data transmission, gate array, or storage medium, design structure 920 may be accessed and processed by one or more hardware and/or software modules within design process 910 to simulate or otherwise functionally represent an electronic component, circuit, electronic or logic module, apparatus, device, or system such as the hardware device 10 shown in FIG. 2 comprising at least one source macro 12, an integrating unit/core/chip -34 -wiring level 14, and at least one sink macro 16. As such, design structure 920 may comprise files or other data structures including human and/or machine-readable source code, compiled structures, and computer-executable code structures that when processed by a design or simulation data processing system functionally simulate or otherwise represent circuits or other levels of hardware logic design. Such data structures may include hardware-description language (HDL) design entities or other data structures conforming to and/or compatible with lower-level HDL design languages such as Verilog and VHDL, and/or higher level design languages such as C or C++.
Design process 910 preferably employs and incorporates hardware and/or software modules for synthesizing, translating, or otherwise processing a design/simulation functional equivalent of the components, circuits, devices, or logic structures shown in FIG. 2 to generate a netlist 980 which may contain design structures such as design structure 920. Netlist 980 may comprise, for example, compiled or otherwise processed data structures representing a list of wires, discrete components, logic gates, control circuits, I/C devices, models, etc. that describes the connections to other elements and circuits in an integrated circuit design. Netlist 980 may be synthesized using an iterative process in which netlist 980 is resynthesized one or more times depending on design specifications and parameters for the device. As with other design structure types described herein, netlist 980 may be recorded on a machine-readable data storage medium or programmed into a programmable gate array. The medium may be a non-volatile storage medium such as a magnetic or optical disk drive, a programmable gate array, a compact flash, or other flash memory. Additionally, or in the alternative, the medium may be a system or cache memory, buffer space, or electrically or optically conductive devices and materials on which data packets may be transmitted and -35 -intermediately stored via the Tnternet, or other networking
suitable means.
Design process 910 may include hardware and software modules for processing a variety of input data structure types including Netlist 980. such data structure types may reside, for example, within library elements 930 and include a set of commonly used elements, circuits, and devices, including models, layouts, and symbolic representations, for a given manufacturing technology (e.g., different technology ncdes, 32nm, 45 nm, 90 nm, etc.).
The data structure types may further include design specifications 940, characterization data 950, verification data 960, design rules 970, and test data files 985 which may include input test patterns, output test results, and other testing information. Design process 910 may further include, for example, standard mechanical design processes such as stress analysis, thermal analysis, mechanical event simulation, process simulation for operations such as casting, molding, and die press forming, etc. One of ordinary skill in the art of mechanical design can appreciate the extent of possible mechanical design tools and applications used in design process 910 without deviating from the scope and spirit of the invention. Design process 910 may also include modules for performing standard circuit design processes such as timing analysis, verification, design rule checking, place and route operations, etc. Design process 910 employs and incorporates logic and physical design tools such as MDL compilers and simulation model build tools to process design structure 920 together with some or all of the depicted supporting data structures along with any additional mechanical design or data (if applicable), to generate a second design structure 990. Design structure 990 resides on a storage medium or programmable gate array in a data format used for the exchange of data of mechanical devices and -36 -structures (e.g. information stored in an TOES, DXF, Parasolid XT, JI, DRG, or any other suitable format for storing or rendering such mechanical design structures) . Similar to design structure 920, design structure 990 preferably comprises one or more files, data structures, or other computer-encoded data or instructions that reside on transmission or data storage media and that when processed by an ECAD system generate a logically or otherwise functionally equivalent form of one or more embodiments of the hardware device 10 shown in FIG. 2. In one embodiment, design structure 990 may comprise a compiled, executable HDL simulation model that functionally simulates the hardware device 10 shown in FIG. 2.
Design structure 990 may also employ a data format used for the exchange of layout data of integrated circuits and/or symbolic data format (e.g. information stored in a GDSII (GDS2), GIJ1, OASIS, map files, or any other suitable format for storing such design data structures) . Design structure 990 may comprise information such as, for example, symbolic data, map files, test data files, design content files, manufacturing data, layout parameters, wires, levels of metal, vias, shapes, data for routing through the manufacturing line, and any other data required by a manufacturer or other designer/developer to produce a device or stricture shown in FIG. 2. Design structure 990 may then proceed to a stage 995 where, for example, design structure 990 proceeds to tape-out, is released to manufacturing, is released to a mask house, is sent to another design house, is sent back to the customer, etc. 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 of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, -37 -which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block 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 combinations of special purpose hardware and computer instructions.
The method and the system as described above are used in the fabrication of integrated circuit chips. The resulting integrated circuit chips can be distributed by the fabricator iii raw wafer form (that is, as a single wafer that has multiple unpackaged chips) , as a bare die, or in a packaged form. In the latter case the chip is mounted in a single chip package (such as a plastic carrier, with leads that are affixed to a motherboard or other higher level carrier) or in a multichip package (such as a ceramic carrier that has either or both surface interconnections or buried interconnections) . In any case the chip is then integrated with other chips, discrete circuit elements, and/or other signal processing devices as part of either (a) an intermediate product, such as a motherboard, or (b) an end product. The end product can be any product that includes integrated circuit chips, ranging from toys and other low-end applications to advanced computer products having a display, a keyboard or other input device, and a central processor.
-38 -The descriptions of the various embodiments of the present invention 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 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.

Claims (18)

  1. -39 -CLAIMS
    What is claimed is: 1. A method for fixing an early mode slack in a hierarohically designed hardware device with at least one source macro (12), an integration unit (14) and at least one sink macro (16), said method comprising: -loading hardware design timing data to determine pins (PC, PT) where an early mode slack fix is applicable to an early mode slack; -for each such pin (P0, P1) determining a location across said design hierarchy for said early mode slack fix by calculating a weight value (w, wk) for each of a selection of fix locations (12, 14, 16) of said early mode slack based on absolute values of arrival times of data signals, ratio arid difference between arrival times of late mode data signals and early mode data signals; and -assigning said early mode slack fix to said determined location based on said weight value (w0, Wk)
  2. 2. The method according to claim 1, wherein said hardware design timing data is filtered to determine sink macro input pins (P1) for analyzing using at least one of the following information: pin owner, pin type, buffer usage, and timing phase information.
  3. 3. The method acoording to claim 2, wherein an early mode slack threshold value is used to determine sink macro input pins (P1) to be fixed resulting in a list of problem pins.
    -40 -
  4. 4. The method aooording to claim 3, wherein based on said list of problem pins early mode timing paths are analyzed to oreate several main categories of assignments for said early mode slack fixes.
  5. 5. The method according to claim 4, wherein a first category of assignments is seleoted to comprise critical pins to be fixed in said source maoro (12) or in said sink macro (16), a second category of assignments is selected to comprise paddable pins (P2) to be fixed on integration unit level (14) by adding delay devices or buffers, and a third category of assignments is selected to comprise fixable pins (P2) to be fixed on integration unit level (14) by modifying delay devices or buffers in said source macro (12) or in said sink macro (16)
  6. 6. The method according to claim 5, wherein for each pin (P1) of said list of problem pins a late versus early mode slack ratio is calculated and compared against a first threshold value, wherein pins with a slack ratio not higher than said first threshold value are assigned to said first category of assignments.
  7. 7. The method according to claim 6, wherein for each pin (PT) of said list of problem pins with a slack ratio higher than said first threshold value, a corresponding late mode slack is compared against a second threshold value, wherein pins (P2) with a late mode slack higher than said second threshold value are assigned to said second category of assignments and added to a first list comprising paddable pins to be fixed on integration unit level (14), and pins (P1) with a late mode slack not higher than said second threshold value are assigned to said third category of assignments.-41 -
  8. 8. The method aooording to claim 7, wherein for eaoh pin (PT) of said third category of assignments an integration unit net name is parsed for at least one delay devioe or buffer, wherein a corresponding pin (PT) connected to at least one delay device or buffer is added to a second list comprising fixable pins to be fixed on integration unit level (14)
  9. 9. The method according to claim 8, wherein each pin (P1) of said third category of assignments not connected to at least one delay device or buffer or each pin (PT) of said first category of assignments is applied to an expert system (100)
  10. 10. The method according to claim 9, wherein said expert system (100) determines a source macro (12) as early mode slack fix location, if a difference between a source weight value (w0) arid a sink weight value (wk) is higher than a certain threshold value (113)
  11. 11. The method according to claim 9 or 10, wherein said expert system (100) determines a sink macro (16) as early mode slack fix location, if a difference between said sink weight value (wk) and said source weight value (Ws) is higher than a certain threshold value (113)
  12. 12. The method according to one of the preceding claims 9 to 11, wherein said expert system (100) determines no early mode slack fix location, if said difference between said source weight value (wsr!) and said sink weight value (wSk) and said difference between said sink weight value (wSk) and said source weight value (w,) are not higher than said certain threshold value (113) -42 -
  13. 13. The method aooording to one of the preoeding claims 9 to 12, wherein said expert system (100) outputs -fixable pins to be fixed in said source maoro (16) and to be added to a third list oomprising fixable pins to be fixed in said source macro (16), -fixable pins to be fixed in said sink macro (12) and to be added to a fourth list comprising fixable pins to be fixed in said sink macro (12), -critical pins to be fixed in said source macro (16) and to be added to a fifth list comprising critical pins to be fixed in said source macro (16), -fixable pins to be fixed at unit level and to be added to said second list comprising fixable pins to be fixed on integration unit level, -critical pins to be fixed in said sink macro (16) and to be added to a sixth list comprising critical pins to be fixed in said sink macro (12), and -critical pins in doubt where to fix and to be added in a seventh list comprising critical pins in doubt.
  14. 14. The method according to claim 13, wherein for each pin (PT) of said third and fifth list a corresponding source macro output pin (Pa) is determined and listed in addition to said actually analyzed input pin (PT) of said sink macro (15).
  15. 15. The method according to claim 14, wherein for each source macro output pin (P0) to be fixed an existing timing contract is maintained.
  16. 16. A system, especially for performing a method for fixing an early mode slack in a hierarchically designed hardware device according to one of the preceding claims 1 to 15, comprising: -43 - -a timing analyzer (0100) for importing hardware design timing data to determine pins (PC, P1) where an early mode slack fix is applicable to an early mode slack; -at least one filter (0210, 0220, 0230, 0240), and -an expert system (100) acting like a neural network for determining a location across said design hierarchy for each such pin to fix said early mode slack by calculating a weight value (wso, wsk) for each of a selection of fix locations (12, 14, 16) of said early mode slack based on absolute values of arrival times of data signals, ratio and difference between arrival times of late mode data signals and early mode data signals; and assigning said early mode slack fix to said determined location based on said weight value (w,
  17. 17. A data processing program for execution in a data processing system comprising software code portions for performing a method for fixing an early mode slack in a hierarchically designed hardware device according to one of the preceding claims 1 to 15 when said program is run on said data processing system.
  18. 18. A computer program product stored on a computer-usable medium, comprising computer-readable program means for causing a computer to perform a method for fixing an early mode slack in a hierarchically designed hardware device according to one of the preceding claims 1 to 15 when said program is run on said computer.
GB1217030.4A 2012-09-25 2012-09-25 Fixing early mode slacks in a circuit design Withdrawn GB2506179A (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
GB1217030.4A GB2506179A (en) 2012-09-25 2012-09-25 Fixing early mode slacks in a circuit design
GB1315088.3A GB2506275B (en) 2012-09-25 2013-08-23 Method and system to fix early mode slacks in a circuit design
US14/035,125 US9058456B2 (en) 2012-09-25 2013-09-24 Method and system to fix early mode slacks in a circuit design

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB1217030.4A GB2506179A (en) 2012-09-25 2012-09-25 Fixing early mode slacks in a circuit design

Publications (2)

Publication Number Publication Date
GB201217030D0 GB201217030D0 (en) 2012-11-07
GB2506179A true GB2506179A (en) 2014-03-26

Family

ID=47190511

Family Applications (2)

Application Number Title Priority Date Filing Date
GB1217030.4A Withdrawn GB2506179A (en) 2012-09-25 2012-09-25 Fixing early mode slacks in a circuit design
GB1315088.3A Expired - Fee Related GB2506275B (en) 2012-09-25 2013-08-23 Method and system to fix early mode slacks in a circuit design

Family Applications After (1)

Application Number Title Priority Date Filing Date
GB1315088.3A Expired - Fee Related GB2506275B (en) 2012-09-25 2013-08-23 Method and system to fix early mode slacks in a circuit design

Country Status (1)

Country Link
GB (2) GB2506179A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9058456B2 (en) 2012-09-25 2015-06-16 International Business Machines Corporation Method and system to fix early mode slacks in a circuit design

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011097460A1 (en) * 2010-02-04 2011-08-11 Qualcomm Incorporated Segment and bipartite graph based apparatus and method to address hold violations in static timing
US20120167030A1 (en) * 2010-12-22 2012-06-28 Advanced Micro Devices, Inc. Method and apparatus for addressing and improving holds in logic networks
US8255851B1 (en) * 2008-06-24 2012-08-28 Marvell Israel (M.I.S.L) Ltd. Method and system for timing design

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8255851B1 (en) * 2008-06-24 2012-08-28 Marvell Israel (M.I.S.L) Ltd. Method and system for timing design
WO2011097460A1 (en) * 2010-02-04 2011-08-11 Qualcomm Incorporated Segment and bipartite graph based apparatus and method to address hold violations in static timing
US20120167030A1 (en) * 2010-12-22 2012-06-28 Advanced Micro Devices, Inc. Method and apparatus for addressing and improving holds in logic networks

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Sutanthavibul S, Shragowitz E, "An adaptive timing driven layout for high speed VLSI", Proceesing of the ACM/IEEE design automation conference, olranso, June 24-8 1990, col. conf. 27 pages 90-95, ISBN: 978-0-89791-363-8 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9058456B2 (en) 2012-09-25 2015-06-16 International Business Machines Corporation Method and system to fix early mode slacks in a circuit design

Also Published As

Publication number Publication date
GB201217030D0 (en) 2012-11-07
GB201315088D0 (en) 2013-10-09
GB2506275A (en) 2014-03-26
GB2506275B (en) 2014-08-20

Similar Documents

Publication Publication Date Title
US9058456B2 (en) Method and system to fix early mode slacks in a circuit design
Mehta SystemVerilog Assertions and Functional Coverage
KR100846089B1 (en) A method of distributing a plurality of glue logic elements among the design blocks and a method of increasing glue logic distribution efficiency
US8020124B2 (en) Various methods and apparatuses for cycle accurate C-models of components
US20070276645A1 (en) Power modelling in circuit designs
US7483823B2 (en) Building integrated circuits using logical units
Bricaud Reuse methodology manual: for system-on-a-chip designs
US8316335B2 (en) Multistage, hybrid synthesis processing facilitating integrated circuit layout
US8205177B2 (en) Non-linear receiver model for gate-level delay calculation
Simpson FPGA design
US20080163147A1 (en) Method, computer program product, and apparatus for static timing with run-time reduction
US7979262B1 (en) Method for verifying connectivity of electrical circuit components
US11347917B2 (en) Determining and verifying metastability in clock domain crossings
Ahuja High level power estimation and reduction techniques for power aware hardware design
GB2506179A (en) Fixing early mode slacks in a circuit design
US8336013B2 (en) Determining an order for visiting circuit blocks in a circuit design for fixing design requirement violations
US10885248B1 (en) Method for modeling glitches during circuit simulation
US9852259B2 (en) Area and/or power optimization through post-layout modification of integrated circuit (IC) design blocks
Jenihhin et al. PSL Assertion Checking Using Temporally Extended High-Level Decision Diagrams
CN117094269B (en) Verification method, verification device, electronic equipment and readable storage medium
Hanafy et al. New methodology for complete properties extraction from simulation traces guided with static analysis
Mohaidat Study of Verification Techniques for Digital Architectures
Siebert Methods of critical paths delay faults testing in digital systems
Jenihhin Simulation-Based Hardware Verification with High-Level Decision Diagrams
Bai Modeling and testing for signal integrity in nanometer system-on-chips

Legal Events

Date Code Title Description
WAP Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1)