Method and apparatus for compiling regular expressions

US2016019034A1 · US · A1

Patent metadata
FieldValue
Publication numberUS-2016019034-A1
Application numberUS-201514868047-A
CountryUS
Kind codeA1
Filing dateSep 28, 2015
Priority dateJan 25, 2011
Publication dateJan 21, 2016
Grant date

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Apparatus, systems, and methods for a compiler are described. One such compiler converts source code into an automaton comprising states and transitions between the states, wherein the states in the automaton include a special purpose state that corresponds to a special purpose hardware element. The compiler converts the automaton into a netlist, and places and routes the netlist to provide machine code for configuring a target device.

First claim

Opening claim text (preview).

1 . (canceled) 2 . A machine-readable medium that is not a transitory propagating signal, the machine-readable medium including instructions that, when executed by a machine, cause the machine to perform operations comprising: mapping states of an automaton to hardware elements of a target device, the automaton created from source code elements; identifying at least one of a conflict or an optimization between the automaton and the target device during the mapping; modifying the automaton to resolve the at least one of the conflict or the optimization to create a modified automaton; and mapping the modified automaton to the target device. 3 . The machine-readable medium of claim 2 , wherein the target device is a parallel machine, and wherein the hardware elements are machine elements. 4 . The machine-readable medium of claim 2 , wherein mapping the modified automaton to the target device includes: converting the automaton into a netlist, wherein the netlist includes a plurality of instances, each instance corresponding to a hardware element of a target hardware device; placing each of the instances including assigning each instance in the netlist to a hardware element of the target device; and routing the connections between the hardware elements as a function of the netlist. 5 . The machine-readable medium of claim 4 , comprising producing machine code for the target device from the routed and placed netlist. 6 . The machine-readable medium of claim 2 , wherein identifying the optimization includes identifying a special purpose hardware element of the target device that performs multiple states of the automaton, and wherein modifying the automaton to resolve the optimization includes collapsing the multiple states into a single special purpose state corresponding to the special purpose hardware element. 7 . The machine-readable medium of claim 2 , wherein identifying the conflict includes identifying an in-degree limitation to a hardware element from the connections between hardware elements that is smaller than the in-degree of a state mapped to the hardware element, and wherein modifying the automaton to resolve the conflict includes dividing the state until the in-degree of each divided state is less than or equal to in-degree limitation. 8 . A machine-implemented method comprising: mapping states of an automaton to hardware elements of a target device, the automaton created from source code elements; identifying at least one of a conflict or an optimization between the automaton and the target device during the mapping; modifying the automaton to resolve the at least one of the conflict or the optimization to create a modified automaton; and mapping the modified automaton to the target device. 9 . The method of claim 8 , wherein identifying the optimization includes identifying a special purpose hardware element of the target device that performs multiple states of the automaton, and wherein modifying the automaton to resolve the optimization includes collapsing the multiple states into a single special purpose state corresponding to the special purpose hardware element. 10 . The method of claim 8 , wherein identifying the conflict includes identifying an in-degree limitation to a hardware element from the connections between hardware elements that is smaller than the in-degree of a state mapped to the hardware element, and wherein modifying the automaton to resolve the conflict includes dividing the state until the in-degree of each divided state is less than or equal to in-degree limitation. 11 . The method of claim 8 , wherein mapping the modified automaton to the target device includes: converting the automaton into a netlist, wherein the netlist includes a plurality of instances, each instance corresponding to a hardware element of a target hardware device; placing each of the instances including assigning each instance in the netlist to a hardware element of the target device; routing the connections between the hardware elements as a function of the netlist; and producing machine code for the target device from the routed and placed netlist. 12 . The method of claim 11 , wherein placing each of the instances includes grouping instances to match location constraints of corresponding hardware elements on the target device. 13 . A system comprising: a memory including instructions stored thereon; and a processor communicatively coupled to the memory when the computer is in operation, wherein the instructions, when executed by the processor, cause the processor to: map states of an automaton to hardware elements of a target device, the automaton created from source code elements; identify at least one of a conflict or an optimization between the automaton and the target device during the mapping; modify the automaton to resolve the at least one of the conflict or the optimization to create a modified automaton; and map the modified automaton to the target device. 14 . The system of claim 13 , wherein to map the modified automaton to the target device includes the processor to: convert the automaton into a netlist, wherein the netlist includes a plurality of instances, each instance corresponding to a hardware element of a target hardware device; place each of the instances including assigning each instance in the netlist to a hardware element of the target device; and route the connections between the hardware elements as a function of the netlist. 15 . The system of claim 13 , wherein to identify the optimization includes identifying a special purpose hardware element of the target device that performs multiple states of the automaton, and wherein to modify the automaton to resolve the optimization includes collapsing the multiple states into a single special purpose state corresponding to the special purpose hardware element. 16 . The system of claim 13 , wherein to identify the conflict includes identifying an in-degree limitation to a hardware element from the connections between hardware elements that is smaller than the in-degree of a state mapped to the hardware element, and wherein to modify the automaton to resolve the conflict includes dividing the state until the in-degree of each divided state is less than or equal to in-degree limitation. 17 . A machine-readable medium that is not a transitory propagating signal, the machine-readable medium including instructions that, when executed by a machine, cause the machine to perform operations comprising: converting source code into an automaton comprising states and transitions between the states, wherein the states in the automaton include a special purpose state that corresponds to a special purpose hardware element; converting the automaton into a netlist; and placing and routing the netlist to provide machine code for configuring a target device. 18 . The machine readable medium of claim 17 , wherein the source code includes a quantification; and wherein converting the source code includes converting the quantification into a plurality of states including the special purpose hardware state when the quantification meets a condition to be mapped to a special purpose hardware element. 19 . The machine readable medium of claim 18 , further comprising optimizing the automaton by splitting a particular state of the automaton into multiple states when an estimated in-degree of the particular state is greater than the constraint of the target device, the splitting including distributing driving states of the particular st

Assignees

Inventors

Classifications

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US2016019034A1 cover?
Apparatus, systems, and methods for a compiler are described. One such compiler converts source code into an automaton comprising states and transitions between the states, wherein the states in the automaton include a special purpose state that corresponds to a special purpose hardware element. The compiler converts the automaton into a netlist, and places and routes the netlist to provide mac…
Who is the assignee on this patent?
Micron Technology Inc
What technology area does this patent fall under?
Primary CPC classification G06F8/447. Mapped technology areas include Physics.
When was this patent published?
Publication date Thu Jan 21 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (A1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).