Method and apparatus for graphically programming a programmable circuit
First Claim
1. A method for programming a programmable circuit, comprising:
- facilitating graphical definition of at least one type of input data unit that is expected to be received at the programmable circuit;
presenting a visual representation of an input data format corresponding to the defined type of input data unit;
facilitating graphical manipulation of the visual representation of the input data format to graphically transform the input data format to a visual representation of a desired output data format of output data units to be output from the programmable circuit; and
automatically generating program code for directing the programmable circuit at run-time deployment to transform actual input data units of the defined type of input data units to actual output data units having the desired output data format in a manner corresponding to the graphical transformation of the visual representations of the input data format to the desired output data format.
7 Assignments
0 Petitions
Accused Products
Abstract
A system and method for programming a programmable circuit. A graphical interface is provided to allow a user to graphically define at least one type of input data unit that is expected to be received at the programmable circuit. A visual representation of the input data format corresponding to the defined type of input data unit is presented to the user. The user graphically manipulates the visual representation of the input data format to graphically transform the input data format to a visual representation of a desired output data format of output data units to be output from the programmable circuit. Program code is automatically generated for directing the programmable circuit at run-time deployment to transform actual input data units of the defined type of input data units to actual output data units having the desired output data format in a manner corresponding to the graphical transformation of the input data format to the desired output data format.
-
Citations
50 Claims
-
1. A method for programming a programmable circuit, comprising:
-
facilitating graphical definition of at least one type of input data unit that is expected to be received at the programmable circuit;
presenting a visual representation of an input data format corresponding to the defined type of input data unit;
facilitating graphical manipulation of the visual representation of the input data format to graphically transform the input data format to a visual representation of a desired output data format of output data units to be output from the programmable circuit; and
automatically generating program code for directing the programmable circuit at run-time deployment to transform actual input data units of the defined type of input data units to actual output data units having the desired output data format in a manner corresponding to the graphical transformation of the visual representations of the input data format to the desired output data format. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33)
facilitating graphical generation of one or more memory search keys via graphical inclusion of one or more information fields of the input data format into the memory search keys; and
automatically generating program code for directing the programmable circuit at run-time deployment to extract actual information fields from the input data units to form actual memory search keys corresponding to the graphically generated memory search keys, and for directing the programmable circuit at run-time deployment to index a target memory using the actual memory search keys.
-
-
8. The method of claim 7, wherein facilitating graphical generation of the memory search keys comprises enabling drag-and-drop entry of the information fields of the input data format into a visual representation of the memory search keys.
-
9. The method of claim 8, wherein enabling drag-and-drop entry comprises enabling the information fields to be dragged and dropped at any desired bit-range subset of an n-bit set of bits comprising the memory search keys.
-
10. The method of claim 8, further comprising adjusting a location of the information fields dragged and dropped into the memory search keys to decrease a number of programmable circuit clock cycles required of the generated program code at run-time deployment to index the target memory using the search keys.
-
11. The method of claim 10, wherein decreasing the number of programmable circuit clock cycles comprises reducing a number of instructions automatically generated to index the target memory using the search keys.
-
12. The method of claim 10, wherein adjusting a location of the information fields comprises automatically adjusting the location of the information fields in response to a user selection of an automatic optimization option.
-
13. The method of claim 7, wherein facilitating graphical generation of one or more memory search keys comprises enabling graphical inclusion of a subset of the information fields to be extracted for inclusion into the memory search keys.
-
14. The method of claim 7, wherein facilitating graphical generation of one or more memory search keys comprises enabling graphical inclusion of at least one comparison field into the memory search keys, wherein the at least one comparison field comprises at least one bit to represent a result of a comparison of one of the information fields and an entered reference value.
-
15. The method of claim 14, further comprising facilitating graphical identification of the information field to be compared to the reference value.
-
16. The method of claim 7, further comprising enabling graphical definition of one or more conditional events that identify one or more of the memory search keys to the exclusion of one or more other ones of the memory search keys which is to be formed as the actual memory search keys at run-time deployment.
-
17. The method of claim 7, wherein facilitating graphical generation of one or more memory search keys comprises facilitating graphical generation of at least one second stage memory search key, wherein at least a portion of an output value expected to be output from the target memory as indexed by the memory search key is graphically included as at least a portion of the second stage memory search key.
-
18. The method of claim 1, wherein automatically generating program code comprises automatically generating the program code in real-time as the graphical manipulation of the visual representation of the input data format is performed.
-
19. The method of claim 1, wherein the input data unit is any transmittable data block having associated header information.
-
20. The method of claim 1, wherein the input data unit is one or more of a packet, a cell, or a frame.
-
21. The method of claim 1, further comprising facilitating manual, graphical optimization of the program code by presenting real-time, visual, program code efficiency feedback to a user.
-
22. The method of claim 21, wherein the code efficiency feedback is based on system throughput of the programmable circuit.
-
23. The method of claim 21, wherein the code efficiency feedback comprises at least a number of programmable circuit clock cycles required to carry out a particular one or more program code segments.
-
24. The method of claim 21, wherein the code efficiency feedback comprises at least a quantity of executable instructions required to carry out a particular one or more program code segments.
-
25. The method of claim 1, further comprising downloading the generated program code to one or more memory elements to store the generated program code for retrieval and use by the programmable circuit.
-
26. The method of claim 1, further comprising transforming the actual input data units to the actual output data units at run-time deployment of the programmable circuit.
-
27. The method of claim 1, further comprising:
-
facilitating graphical selection of one or more selectable configuration parameters for configuring the programmable circuit for operation; and
automatically formatting the configuration parameters for dispatch to the programmable circuit.
-
-
28. The method of claim 1, further comprising abstracting architecture-specific functionality of the programmable circuit into graphical programming application definitions to effect the facilitation of the graphical definition of the input data unit type, the presentation of the visual representation of the input data format, the facilitation of the graphical manipulation and corresponding graphical transformation, and the automatic generation of the program code.
-
29. The method of claim 1, wherein automatically generating program code comprises creating original program code based on the graphical transformation of the visual representations of the input data format to the desired output data format.
-
30. The method of claim 1, wherein automatically generating program code comprises selecting one or more predetermined software modules from a software module library based on the graphical transformation of the visual representations of the input data format to the desired output data format.
-
31. The method of claim 1, wherein automatically generating program code comprises creating original program code, and selecting one or more predetermined software modules from a software module library, based on the graphical transformation of the visual representations of the input data format to the desired output data format.
-
32. The method of claim 1, further comprising providing real-time feedback of a validity state of programmable objects, wherein the validity state identifies whether a particular programmable object may be generated as a portion of the program code.
-
33. The method of claim 1, further comprising facilitating graphical selection of configuration options to provide a particular visual representation of the input data format depending on the configuration option selected, and wherein facilitating graphical manipulation of the visual representation of the input data format comprises facilitating graphical manipulation of the particular visual representation of the input data format corresponding to the configuration option selected.
-
34. A method for programming a programmable circuit, comprising:
-
displaying a visual representation of at least one expected data protocol format for data packets that will be input to the programmable circuit;
providing a graphical user interface to allow a user to graphically edit one or more data fields associated with the visual representation of the expected data protocol format to produce a visual representation of a desired data protocol format for transformed data packets that are to be output from the programmable circuit; and
automatically generating program code for use by the programmable circuit to transform the data packets that are received at the programmable circuit to the transformed data packets that are output from the programmable circuit, wherein a resulting transformation of the data packets at the programmable circuit corresponds to the graphical transformation effected via the graphical user interface. - View Dependent Claims (35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47)
providing a graphical user interface further comprises facilitating graphical selection of one or more header fields associated with the predefined protocol header formats for graphical creation of a visual representation of a memory search key; and
automatically generating program code comprises generating at least a portion of the program code to create an actual memory search key corresponding to the visual representation of the memory search key at run-time deployment of the programmable circuit, wherein the actual memory search key is used to index a memory device to provide a corresponding memory output.
-
-
38. The method of claim 37, wherein the memory device is a content-addressable memory (CAM), and wherein the actual memory search key serves as content to identify an address to be output by the CAM.
-
39. The method of claim 38, wherein the address to be output by the CAM addresses a tag memory storing at least another portion of the automatically generated program code which causes the programmable circuit to transform the data packets that are received at the programmable circuit to the transformed data packets that are output from the programmable circuit.
-
40. The method of claim 37, further comprising providing real time validity feedback based on an underlying rules model of the programmable circuit, and wherein generating at least a portion of the program code to create an actual memory search key comprises enabling generation of first memory search key portions of the program code based on a valid state of the validity feedback and denying generation of second memory search key portions of the program code based on an invalid state of the validity feedback.
-
41. The method of claim 40, wherein the validity feedback is continuously updated as a user graphically proposes modifications to the visual representation of the memory search key.
-
42. The method of claim 34, wherein the programmable circuit is an ingress processor implemented on a line card of a network router.
-
43. The method of claim 42, wherein the ingress processor comprises at least a parsing module and an editing module.
-
44. The method of claim 34, wherein the programmable circuit is an egress processor implemented on a line card of a network router.
-
45. The method of claim 34, wherein the programmable circuit is a fabric interface processor implemented on a network router.
-
46. The method of claim 34, further comprising providing real time validity feedback based on an underlying rules model of the programmable circuit, and wherein automatically generating program code comprises enabling generation of first portions of the program code based on a valid state of the validity feedback and denying generation of second portions of the program code based on an invalid state of the validity feedback.
-
47. The method of claim 46, wherein the validity feedback is continuously updated as a user graphically proposes modifications to the one or more data fields associated with the visual representation of the expected data protocol format.
-
48. A graphical programming tool for generating program code operable on a programmable circuit having a circuit programming interface, comprising:
-
a graphical user interface to display a visual representation of at least one expected data protocol format for data packets that will be input to the programmable circuit, and to allow a user to graphically edit one or more data fields associated with the visual representation of the expected data protocol format to produce a visual representation of a desired data protocol format for transformed data packets that are to be output from the programmable circuit;
a processor configured to automatically generate program code for use by the programmable circuit to transform the data packets that are received at the programmable circuit to the transformed data packets that are output from the programmable circuit, wherein a resulting transformation of the data packets at the programmable circuit corresponds to the graphical transformation effected via the graphical user interface; and
a programming tool interface coupled to the circuit programming interface to provide the generated program code to the programmable circuit.
-
-
49. A graphical programming tool for generating program code operable on a programmable circuit, comprising:
-
means for graphically defining at least one type of input data unit that is expected to be received at the programmable circuit;
means for presenting a visual representation of an input data format corresponding to the defined type of input data unit;
means for graphically manipulating the visual representation of the input data format to graphically transform the input data format to a visual representation of a desired output data format of output data units to be output from the programmable circuit; and
means for automatically generating program code for directing the programmable circuit at run-time deployment to transform actual input data units of the defined type of input data units to actual output data units having the desired output data format in a manner corresponding to the graphical transformation of the visual representations input data format to the desired output data format.
-
-
50. A computer-readable medium having computer-executable instructions for generating program code operable on a programmable circuit, the computer-executable instructions performing steps comprising:
-
displaying a visual representation of at least one expected data protocol format for data packets that will be input to the programmable circuit;
providing a graphical user interface to allow a user to graphically edit one or more data fields associated with the visual representation of the expected data protocol format to produce a visual representation of a desired data protocol format for transformed data packets that are to be output from the programmable circuit; and
automatically generating program code for use by the programmable circuit to transform the data packets that are received at the programmable circuit to the transformed data packets that are output from the programmable circuit, wherein a resulting transformation of the data packets at the programmable circuit corresponds to the graphical transformation effected via the graphical user interface.
-
Specification