1. A method for routing data paths in an integrated circuit having a plurality of interconnect layers, said method comprising the steps of:
wiring a launching clock path and a receiving clock path on one or more interconnect layers according to at least one predetermined condition;
performing one or more timing tests to determine any critical paths;
determining a weight function based on a plurality of modeled delays for every layer segment used to route each critical path, wherein said weight function is defined as the difference between a first property of the launching clock path and the same first property of the receiving clock path on each layer; and
routing the data path only on a layer having a negative weight function, thereby ensuring compliance with a timing constraint for each critical path.
2. The method of claim 1, wherein in the launching clock path and the receiving clock path are wired such that a maximal difference between the delays of the launching clock tree and the receiving clock tree within one layer is as small as possible.
3. The method of claim 1, wherein the launching clock path and the receiving clock path are wired such that the sum of the differences between the delays of the launching clock path and the receiving clock path within one layer is as small as possible.
4. The method according to claim 1, wherein a segment of the data path that is not timing critical is wired on a plurality of the interconnect layers such that a local variation of the delay on each of the plurality of interconnect layers is as small as possible.
5. The method according to claim 1, wherein the delays of the receiving clock path and the launching clock path are assumed to be linear and separable functions corresponding to a plurality of variation sources.
6. The method according to claim 1, wherein the weight function is defined as the difference between a delay of the launching clock path and a delay of the receiving clock path in every layer segment used to route each critical path.
7. The method according to claim 1, wherein the weight function is defined as the difference between the wire length of the launching clock tree and the wire length of the receiving clock tree in every layer segment used to route each critical path.
8. The method according to claim 1, wherein the launching clock path and the receiving clock path are wired such that in every layer the difference between the delays of the launching clock path and the receiving clock path is as small as possible for every path.
9. The method according to claim 1, wherein the timing test comprises a setup test.
10. The method according to claim 1, wherein the timing test comprises a hold test.
11. The method according to claim 1, wherein the timing test comprises a clock gating test.
12. A system for routing data paths in an integrated circuit having a plurality of interconnect layers, comprising:
a wire router adapted for wiring a launching clock path and a receiving clock path on one or more interconnect layers according to at least one predetermined condition;
a static timing tool adapted to perform one or more timing tests to determine any critical paths;
a wiring parameter extraction tool adapted for determining a weight function based on a plurality of modeled delays for every layer segment used to route each critical path, wherein said weight function is defined as the difference between a first property of the launching clock path and the same first property of the receiving clock path on each layer; and
a routing constraints file used with the wire router to ensure routing of the data path only on a layer having a negative weight function, thereby ensuring compliance with a timing constraint for each critical path.
13. A program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine to perform method steps for routing data paths in an integrated circuit having a plurality of interconnect layers, said method steps comprising: wiring a launching clock path and a receiving clock path on one or more interconnect layers according to at least one predetermined condition;
performing one or more timing tests to determine any critical paths;
determining a weight function based on a plurality of modeled delays for every layer segment used to route each critical path, wherein said weight function is defined as the difference between a first property of the launching clock path and the same first property of the receiving clock path on each layer; and
routing the data path only on a layer having a negative weight function, thereby ensuring compliance with a timing constraint for each critical path.
14. The program storage device according to claim 13, wherein in the launching clock path and the receiving clock path are wired such that a maximal difference between the delays of the launching clock tree and the receiving clock tree within one layer is as small as possible.
15. The program storage device according to claim 13, wherein the launching clock path and the receiving clock path are wired such that the sum of the differences between the delays of the launching clock path and the receiving clock path within one layer is as small as possible.
16. The program storage device according to claim 13, wherein a segment of the data path that is not timing critical is wired on a plurality of the interconnect layers such that a local variation of the delay on each of the plurality of interconnect layers is as small as possible.
17. The program storage device according to claim 13, wherein the delays of the receiving clock path and the launching clock path are assumed to be linear and separable functions corresponding to a plurality of variation sources.
18. The program storage device according to claim 13, wherein the weight function is defined as the difference between the delay of the launching clock path and the delay of the receiving clock path in every layer segment used to route each critical path.
19. The program storage device according to claim 13, wherein the weight function is defined as the difference between a wire length of the launching clock tree and a wire length of the receiving clock tree in every layer segment used to route each critical path.
20. The program storage device according to claim 13, wherein the launching clock path and the receiving clock path are wired such that in every layer the difference between the delays of the launching clock path and the receiving clock path is as small as possible for every path.
21. The program storage device according to claim 13, wherein the timing test comprises a setup test.
22. The program storage device according to claim 13, wherein the timing test comprises a hold test.
23. The program storage device according to claim 13, wherein the timing test comprises a clock gating test.
24. The method according to claim 1, wherein the first property of the launching clock path comprises the modeled delay of that component of a launching clock path tree on a first layer, i.
25. The method according to claim 1, wherein the first property of the receiving clock path comprises the modeled delay of that component of a receiving clock path tree on a first layer, i.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A method of detecting printhead rotation in an inkjet printer, comprising:
receiving an initial image of a pattern taken from a medium as the printhead passes over a medium;
receiving a subsequent image of the pattern taken from the medium as the printhead continues to pass over the medium;
comparing the initial image of the pattern and the subsequent image of the pattern taken from the medium; and
identifying a rotation of the printhead in the inkjet printer passing over the medium if the comparison indicates the initial image of the pattern is rotated relative to the subsequent image of the pattern.
2. The method of claim 1 further comprising:
modifying the timing settings associated with the firing of the nozzles in the ink-jet printhead to compensate for the rotation of the printhead.
3. The method of claim 1 further comprising:
redirecting data being printed to different nozzles to effectively compensating for printhead rotation.
4. The method of claim 2 further comprising:
printing on the medium using the modified timing settings for the inkjets in the printhead.
5. The method of claim 1 wherein printhead rotation detection is performed at one or more time intervals as the printhead passes over the medium.
6. The method of claim 1 wherein the printhead rotation occurs around a z-axis substantially perpendicular to a carriage direction.
7. The method of claim 1 wherein the medium is selected from a set of mediums including: a rolled medium, a cut-sheet medium, a paper medium, a transparent medium, a plastic medium, a textile medium, a cloth medium, and a metallic medium.
8. The method of claim 1 wherein the inkjet printhead is selected from a set including: thermal inkjet and piezoelectric ink-jet.
9. The method of claim 1 wherein the initial image of the pattern on the media is received at a first time instant from a photosensor array operatively coupled to the printhead and the subsequent image of the pattern is gathered at a second time instant from the same photosensor array operatively coupled to the printhead.
10. The method of claim 9 wherein the photosensor does not completely pass over the pattern in the time interval between the first time instant and the second time instant.
11. The method of claim 1 wherein the initial image of the pattern is received at a first time instant from a first photosensor array operatively coupled to the printhead and the subsequent image of the pattern is gathered at a second time instant from a second photosensor also operatively coupled to the printhead, wherein the first photosensor array and second photosensor array are physically separated by a predetermined gap distance and the carriage travels at a known carriage-velocity.
12. The method of claim 10 wherein the difference between the second time instant and the first time instant is proportional to the predetermined gap distance divided by the carriage-velocity.
13. An inkjet printer capable of detecting printhead rotation, comprising:
a carriage guided by at least one carriage guidebar carrying at least one printhead and advanced by a carriage drive motor;
at least one photosensor coupled to the carriage that receives an initial image of a pattern taken from a medium as the printhead passes over a medium and a subsequent image of the pattern taken from the medium as the printhead continues to pass over the medium; and
a printer controller configured to compare the initial image of the pattern and the subsequent image of the pattern taken from the medium and identify a rotation of the printhead in the inkjet printer passing over the medium if the comparison indicates the initial image of the pattern is rotated relative to the subsequent image of the pattern.
14. The inkjet printer of claim 13 wherein the printer controller is further configured to modify the timing settings associated with the firing of the nozzles in the ink-jet printhead to compensate for the rotation of the printhead.
15. The inkjet printer of claim 13 wherein the printer controller is further configured to redirect data being printed to different nozzles to effectively compensate for printhead rotation.
16. The inkjet printer of claim 14 wherein the printer controller is further configured to print on the medium using the modified timing settings for the inkjets in the printhead.
17. The inkjet printer of claim 13 wherein the printer controller detects the printhead rotation at one or more time intervals as the printhead passes over the medium.
18. The inkjet printer of claim 13 wherein the printhead rotation occurs around a z-axis substantially perpendicular to a carriage direction.
19. The inkjet printer of claim 13 wherein the medium is selected from a set of mediums including: a rolled medium, a cut-sheet medium, a paper medium, a transparent medium, a plastic medium, a textile medium, a cloth medium, and a metallic medium.
20. The inkjet printer of claim 13 wherein the inkjet printhead is selected from a set including: thermal inkjet and piezoelectric ink-jet.
21. The inkjet printer of claim 13 wherein the at least one photosensor coupled to the carriage is limited to a single photosensor that receives an initial image of the pattern on the media at a first time instant and then receives a subsequent image of the pattern gathered at a second time instant.
22. The inkjet printer of claim 13 wherein the at least one photosensor coupled to the carriage is limited to a first photosensor array operatively coupled to the printhead that receives a pattern at a first time instant and a second photosensor also operatively coupled to the printhead that gathers the subsequent image of the pattern at a second time instant from, wherein the first photosensor array and second photosensor array are physically separated by a predetermined gap distance and the carriage travels at a known carriage-velocity.
23. The inkjet printer of claim 13 operatively coupled over a network and available for printing by one or more computer systems.
24. A computer program product for detecting printhead rotation in an ink-jet printer, tangibly stored on a computer-readable medium, comprising instructions operable to cause a programmable processor to:
receive an initial image of a pattern taken from a medium as the printhead passes over a medium;
receive a subsequent image of the pattern taken from the medium as the printhead continues to pass over the medium;
compare the initial image of the pattern and the subsequent image of the pattern taken from the medium; and
identify a rotation of the printhead in the inkjet printer passing over the medium if the comparison indicates the initial image of the pattern is rotated relative to the subsequent image of the pattern.
25. The computer program product of claim 23 further comprising instructions operable to cause a programmable processor to:
modify the timing settings associated with the firing of the nozzles in the ink-jet printhead to compensate for the rotation of the printhead.
26. The computer program product of claim 23 further comprising instructions operable to cause a programmable processor to:
redirect data being printed to different nozzles to effectively compensating for printhead rotation.
27. The computer program product of claim 23 wherein the medium is selected from a set of mediums including: a rolled medium, a cut-sheet medium, a paper medium, a transparent medium, a plastic medium, a textile medium, a cloth medium, and a metallic medium.
28. The computer program product of claim 23 wherein the inkjet printhead is selected from a set including: thermal inkjet and piezoelectric ink-jet.
29. An apparatus for detecting printhead rotation in an inkjet printer, comprising:
means for receiving an initial image of a pattern taken from a medium as the printhead passes over a medium;
means for receiving a subsequent image of the pattern taken from the medium as the printhead continues to pass over the medium;
means for comparing the initial image of the pattern and the subsequent image of the pattern taken from the medium; and
identifying a rotation of the printhead in the inkjet printer passing over the medium if the comparison indicates the initial image of the pattern is rotated relative to the subsequent image of the pattern.
30. The apparatus of claim 28 further comprising:
means for modifying the timing settings associated with the firing of the nozzles in the inkjet printhead to compensate for the rotation of the printhead.
31. The apparatus of claim 28 further comprising:
means for redirecting data being printed to different nozzles to effectively compensate for printhead rotation.