Constraint programming using block-based workflows

Embodiments presented herein provide techniques for executing a block-based (BB) workflow to solve a constraint programming (CP) model related to a semiconductor manufacturing environment. Embodiments include receiving at least one BB workflow comprising a plurality of blocks. The plurality of blocks may specify a set of operations. Embodiments include accessing a plurality of block definitions corresponding to the plurality of blocks. Embodiments include executing the at least one BB workflow by performing the set of operations based on the plurality of block definitions, including extracting data from the semiconductor manufacturing environment, the data comprising both static data and dynamic data related to equipment in the manufacturing environment, creating the CP model based on the data and at least one constraint defined in the BB workflow, using a solver to determine a solution to the CP model; and publishing the solution to at least one component in the semiconductor manufacturing environment.

BACKGROUND

Field

Embodiments of the present disclosure generally relate to constraint programming, and more particularly to techniques for using block-based workflows for constraint programming.

Description of the Related Art

Manufacturing facilities across many different industries are responsible for producing products that are used in every facet of life. In the case of semiconductor manufacturing, for example, semiconductor manufacturing facilities manufacture products such as, microprocessors, memory chips, microcontrollers, and other semiconductor devices that have a ubiquitous presence in everyday life. These semiconductor devices are used in a wide variety of applications, examples of which include automobiles, computers, home appliances, cellular phones, and many others. Further, in recent years, both the number of applications and demand for devices (including semiconductor devices) has steadily increased. This increased demand has led manufacturing facilities to become increasingly conscious of increasing product variety and reducing delivery times.

Each manufacturing environment is unique and extremely complex, often requiring immense amounts of capital for the necessary equipment, tools, facilities, etc. Because manufacturing is so capital intensive, even small increases in factory performance (e.g., such as building to demand, shortening order to delivery time, etc.) can have large effects on financial performance (e.g., by reducing cost through leaner manufacturing, freeing up capital tied to idle inventory, etc.). For this reason, many manufacturing facilities have recently become interested in implementing scheduling systems in their facilities to manage the complexity, provide high-quality, on-time deliveries, etc. Scheduling in a manufacturing facility involves making complicated decisions about what operations should be performed and the order of these operations. As such, many scheduling systems involve the use of constraint programming.

Constraint programming can be used in a wide variety of constraint problems including scheduling, where a scheduling problem involves time and/or value restrictions placed in scheduling the tasks. Constraint programming can be used to find a solution which can satisfy all of the constraints. Constraint programming includes a set of search variables, domains that set boundaries for the possible values for each of the variables, and a set of constraints. Typical scheduling problems involve creating search variables for each task, including at least one variable to represent the equipment that can process a task and at least another variable to represent the start time for the task. In some cases variables may include an end time for the task, a task pause, a task resume, and others.

Existing techniques for creating constraint programming models require the use of custom code. Custom code, however, can be difficult to maintain and inflexible, which makes it difficult to make modifications. In many cases, for example, the manufacturing facility may undergo changes to account for new applications, tool improvements, etc. With constraint programming models that are created using custom code, however, adapting to such changes can require a level of technical expertise that may not be available to the manufacturing facility (e.g., an end user may not have coding experience, etc.), require a significant time commitment, substantial costs (e.g., due to the complexity of the facility), etc.

SUMMARY

Embodiments disclosed herein include methods, systems, and computer program products for constraint programming (CP) using block-based (BB) workflows in a manufacturing environment. In one embodiment, a method for executing a block-based (BB) workflow to solve a constraint programming (CP) model related to a semiconductor manufacturing environment is disclosed. The method includes: receiving at least one BB workflow comprising a plurality of blocks, wherein the plurality of blocks specify a set of operations for solving the CP model; accessing a plurality of block definitions corresponding to the plurality of blocks; and executing the at least one BB workflow by performing the set of operations based on the plurality of block definitions, comprising: extracting data from the semiconductor manufacturing environment, wherein the data comprises both static data and dynamic data related to equipment in the manufacturing environment; creating the CP model based on the data and at least one constraint defined in the BB workflow; using a solver to determine a solution to the CP model; and publishing the solution to at least one component in the semiconductor manufacturing environment (the solution may first be post-processed into a format usable by the one component), wherein the solution is used to determine a manufacturing schedule for the semiconductor manufacturing environment.

Another embodiment provides a non-transitory computer-readable medium containing computer program code that, when executed, performs an operation for executing a block-based (BB) workflow to solve a constraint programming (CP) model related to a semiconductor manufacturing environment is disclosed. The operation includes: receiving at least one BB workflow comprising a plurality of blocks, wherein the plurality of blocks specify a set of operations for solving the CP model; accessing a plurality of block definitions corresponding to the plurality of blocks; and executing the at least one BB workflow by performing the set of operations based on the plurality of block definitions, comprising: extracting data from the semiconductor manufacturing environment, wherein the data comprises both static data and dynamic data related to equipment in the manufacturing environment; creating the CP model based on the data and at least one constraint defined in the BB workflow; using a solver to determine a solution to the CP model; and publishing the solution to at least one component in the semiconductor manufacturing environment (the solution may first be post-processed into a format usable by the one component), wherein the solution is used to determine a manufacturing schedule for the semiconductor manufacturing environment.

Still another embodiment provides a system comprising at least one processor and a memory containing a program that, when executed by the at least one processor, performs an operation for executing a block-based (BB) workflow to solve a constraint programming (CP) model related to a semiconductor manufacturing environment is disclosed. The operation includes: receiving at least one BB workflow comprising a plurality of blocks, wherein the plurality of blocks specify a set of operations for solving the CP model; accessing a plurality of block definitions corresponding to the plurality of blocks; and executing the at least one BB workflow by performing the set of operations based on the plurality of block definitions, comprising: extracting data from the semiconductor manufacturing environment, wherein the data comprises both static data and dynamic data related to equipment in the manufacturing environment; creating the CP model based on the data and at least one constraint defined in the BB workflow; using a solver to determine a solution to the CP model; and publishing the solution to at least one component in the semiconductor manufacturing environment (the solution may first be post-processed into a format usable by the one component), wherein the solution is used to determine a manufacturing schedule for the semiconductor manufacturing environment.

To facilitate understanding, identical reference numerals have been used, wherever possible, to designate identical elements that are common to the Figures. Additionally, it is contemplated that elements disclosed in one embodiment may be beneficially used in other embodiments described herein without specific recitation.

DETAILED DESCRIPTION

Embodiments presented herein present techniques for solving a constraint programming (CP) model in a manufacturing environment, using block-based (BB) workflows. The workflows can be used by an end-user to construct a CP system that creates and determines a solution to a CP model based on data captured from the manufacturing environment and/or constraints defined by the user via the BB workflow, and the solution may be used for scheduling and dispatching within the manufacturing environment (e.g., after being post-processed into a format usable by one or more components of the manufacturing environment and published to the one or more components). For example, each workflow contains an order of a series of operations (e.g., represented by one or more blocks of the workflow) that are performed in order to determine a solution for a CP model. Examples of these operations can include retrieving data from different sources, manipulating and transforming the data into different formats, analyzing the data, creating CP models based on the data (and, in some instances, based on user-defined constraints and/or parameters), determining a solution to the CP model, manipulating and transforming the solution into different formats, determining a manufacturing schedule based on the solution, providing or publishing the solution and/or schedule to multiple outputs, etc. By arranging and/or modifying blocks within the workflow, an end-user (e.g., of a manufacturing environment) can adapt the CP system to account for any change to the manufacturing environment, without having specialized programming knowledge or writing complicated scripting and code.

Today, manufacturing facilities have very complex environments in which facilities typically perform several different tasks related to the manufacture of a product. These tasks can include, but are not limited to, tasks for servicing tools (or equipment) within the manufacturing environment, tasks for using manufacturing tools, tasks for changing a tool setup, tasks for inspecting a manufacturing tool, tasks for performing one or more processes on resources (or an unfinished product) in order to manufacture a completed product, etc. In the case of semiconductor manufacturing, the semiconductor manufacturing process is generally divided into two parts, “front-end” and “back-end,” both of which use different types of semiconductor manufacturing equipment. Front-end typically refers to wafer fabrication. For example, front-end manufacturing facilities generally start with blank semiconductor wafers (e.g., silicon wafers) and perform various processes, such as photolithography, deposition, etching, cleaning, ion implantation, chemical and mechanical polishing, etc., to fabricate a completed wafer with many semiconductor die on the wafer. Back-end typically refers to the assembly and testing of individual semiconductors. For example, once the front-end production process is completed, the completed wafers are transferred to a back-end manufacturing facility, which typically performs functions such as dicing the completed wafer into individual semiconductor die, testing, assembly, packaging etc. As such, front-end and back-end processes can consist of hundreds of processing steps performed by several different tools or automated devices within the manufacturing environment. To meet the ever increasing demand for manufacturing products, it is becoming increasingly important for manufacturing environments to schedule the series of complex tasks performed within the manufacturing environment and/or control the tools (or groups of tools) and automated devices within the manufacturing environment.

In order to perform scheduling in manufacturing environments, CP models are sometimes used. CP can be used to find a solution which can satisfy all of the constraints. CP includes a set of search variables, domains that set boundaries for the possible values for each of the variables, and a set of constraints. Scheduling problems involve creating search variables for each task: at least one variable to represent the equipment that can process a task and at least another variable to represent the start time for the task. Other variable are often included. In many cases, CP models have to be modified to account for changes in the manufacturing cycle (e.g., a change in the process flow, changes to processing times, different tool groups, new tools introduced, and the like) problems within the manufacturing environment (e.g., tool failures, defects in the output product, maintenance operations, and the like), new incoming orders, changes to orders, etc. Keeping CP models configured and maintained using existing techniques involves modifying custom code. This can involve complicated scripting and code to be written by a user with specialized programming knowledge, involve a significant amount of time, decreased productivity, etc.

As will be described in more detail below, embodiments provide techniques that can be used to define and configure CP processes that are open, configurable and extensible by the end user (e.g., of a manufacturing facility) through the use of block-based workflows. For example, an end-user can use the techniques presented herein to extend the workflow (e.g., to include additional steps, etc.), adjust processing order of a workflow, configure (or customize) the set of operations within the workflow, etc., all without the need to understand or write any code. As such, the CP system presented herein provides manufacturing facilities with the ability to configure and maintain CP processes despite changing circumstances and without requiring specialized programming knowledge, or difficult and time-consuming operations that are associated with conventional techniques.

One embodiment includes a method for executing, by a block-based (BB) CP component, at least one BB workflow to create and solve a CP model related to a manufacturing environment (e.g., front-end or back-end semiconductor facility or factory). Within the manufacturing environment, several tools (or equipment) can be available for processing raw material or a work-in-progress (e.g., unfinished goods) to produce a completed product. For example, in semiconductor manufacturing, one or more tools can be used to process one or more lots during front-end processing, back-end processing, etc. For front-end, the one or more lots generally refer to one or more blank semiconductor wafers. For back-end, the one or more lots generally refer to one or more semiconductor die (e.g., on completed semiconductor wafers).

In one embodiment, the BB CP component allows for determining a solution to a CP model that is created based on the state of a manufacturing facility and its components. A solution generally refers to a set of values (e.g., to be assigned to variables in the CP model) that satisfy the constraints of the model. Constraints generally refer to restrictions, such as time and/or value restrictions, that apply to variables in the CP model (e.g., an inspection task can only be started if a counter has a value that is greater than a threshold). Variables generally include task state variables (e.g., task start, task end, task pause, task resume, etc.), task equipment variables (e.g., representing the station capable of performing a task), etc. A domain for a variable defines allowed values for that variable. A domain sets boundaries for the possible values for each of the variables.

To create the CP model, the BB CP component can extract data from the manufacturing environment. The data can include static data (e.g., equipment used by a source system, capability of different pieces of the equipment, etc.) and dynamic data (e.g., current equipment state, products being currently processed by equipment of a source system, the product characteristics, etc.). The BB CP component may also use constraints defined by the user via the BB workflow in creating the CP model. For example, the BB CP component may create the CP model by defining logic using the plurality of variables, domains, constraints, and the like. To solve the CP model, the BB CP component may provide the CP model to a CP solver, which determines a solution that satisfies the constraints. An example of a CP solver is Gecode, which uses search engines (e.g., depth first search, branch-and-bound, etc.) to find a solution to a CP model. A solution may be a model that contains single values for all variables. The BB CP component can publish the determined solution to at least one device or component (e.g., to perform scheduling/dispatching in the manufacturing environment, etc.). In certain embodiments, the solution is post-processed to convert the solution into a format that is usable by the at least one device or component. In some embodiments, a scheduling component is used to determine a manufacturing schedule based on the solution (e.g., a schedule that is in accord with the values of the variables in the solution). The post-processed solution and/or schedule may be processed and/or converted into a form usable by additional devices or components, and may be published to the additional devices and/or components (e.g., via dispatchers).

In one embodiment, the BB CP component performs each of the above operations based on various blocks within a BB workflow. Each block of the BB workflow specifies one or more operations of the set of operations that the BB CP component performs when the BB CP component executes the workflow. Using the techniques presented herein, a user can edit and/or customize the sequence of operations (that are executed by the BB CP component) by changing the order of the blocks in the BB workflow, adding/removing blocks in the BB workflow, adding/removing links (e.g., representing data flow) between blocks in the BB workflow, etc. For example, a user may generate and/or edit the BB workflow via a user interface that supports drag-and-drop input. Further, the techniques presented herein also allow a user to configure some or all of the operations within one or more blocks of the BB workflow with one or more BB rules and reports. For example, upon executing one or more blocks in the BB workflow, the BB CP component may further evaluate at least one BB sub-rule or report configured for the respective workflow block in order to perform the operations specified by the workflow block. Doing so in this manner provides manufacturing facilities the ability to edit, and customize (e.g., without understanding or writing code) CP operations to account for any changes in the manufacturing facility. BB reports, rules, and sub-rules can be created by a user and allow the user to configure, without the need to understand or write any code, the operations for each block in the BB workflow(s). In this manner, the techniques presented herein allow the user to customize the operations for the blocks in the CP workflow that may be used to extract data, convert the data, and/or perform error checking.

Note that, for the sake of convenience, terminology related the manufacture of semiconductor devices is used in much of the following description as a reference example of a manufacturing production process that can be scheduled based on solutions generated using the techniques presented herein. Similarly, many of the following embodiments use front-end and back-end semiconductor manufacturing facilities as reference examples of types of manufacturing environments in which the techniques presented herein can be used to provide a CP system that is open, extensible, and fully configurable by an end-user. Note, however, that the techniques presented herein can also be applied to other types of manufacturing environments (e.g., in other industries), manufacturing processes, etc.

FIG. 1is a block diagram illustrating an architecture of a manufacturing environment (or system)100, in which aspects of the present disclosure may be practiced. For example, in one embodiment, the manufacturing environment100is an example of a semiconductor manufacturing system. As shown, the manufacturing environment100includes a computing system110, manufacturing execution system (MES)130, factory storage system140, dispatchers160, run stores150and external storage system170connected via a network122. In general, the network122can be a wide area network (WAN), local area network (LAN), wireless LAN (WLAN), etc. The factory storage system140, external storage system170and run stores150, in general, can be any kind of storage system, including, for example, relational and/or hierarchal databases, distributed filing systems, etc. In one embodiment, the computing system110, MES130, and dispatchers160can be any kind of physical computing system having a network interface, such as a desktop computer, laptop computer, mobile device, tablet computer, server computing systems, gateway computers, and the like.

The MES130is generally configured to manage and control the operation of a current work-in-progress (WIP) within the manufacturing environment100. For example, the MES130can monitor the operation of one or more tools (or equipment) operating in the manufacturing environment100, receive data directly from the tools, analyze data from the tools, and/or collect the data. In one embodiment, the MES130can store the data (received from the tools) into factory storage system140. Such information stored in the factory storage system140can include information regarding the current WIP, current tool state, manufacturing data, etc.

As shown, the computing system110includes BB CP component120. The BB CP component120generally represents logic (e.g., a software application, device firmware, an ASIC, etc.) that is configured to implement one or more of the techniques presented herein. For example, the BB CP component120could perform method500illustrated inFIG. 5, method600illustrated inFIG. 6, and/or any of the techniques (or combination of techniques) described herein. In one embodiment, the BB CP component120creates a CP model and determines a solution to the CP model by executing a BB workflow defined by a user (e.g., via a user interface). For example, in the case of semiconductor manufacturing, the manufacturing system can perform several different tasks related to the fabrication of semiconductor wafers (e.g., associated with front-end processing), cutting, assembly, and testing of semiconductor die on the wafers (e.g., associated with back-end processing), and the like. The BB CP component120may retrieve data from the manufacturing environment100, such as from the MES130and other devices/components (e.g., a material control system (MCS) and/or other tools). In one embodiment, the BB CP component120creates a CP model based on the data (which may first be transformed or converted into an appropriate format for use in CP) and based on constraints defined by the user via the BB workflow. The BB CP component120then uses a solver to determine a solution to the CP model that satisfies all of the constraints of the CP model. The solution may be post-processed, such as by converting the solution into a format compatible with at least one other component (e.g., a scheduling component, which may also be located on computing system110or one a separate system) or device, and then may be published to the at least one other component or device.

In some cases, the manufacturing system may have a large number of lots that need to be processed. To manage the processing, a scheduling component may periodically generate schedules (e.g., every five minutes, ten minutes, or some other configurable time period) based on solutions determined by the BB CP component120to allocate some or all of the lots to available tools, sequence the lots, etc. For example, the schedule can include a list of which tasks should be processed on which tool and at what time. In one embodiment, a schedule is generated based on the solution and is then provided to dispatchers160, which are generally configured to dispatch (e.g., according to the schedule) the lots to the tools for processing. For example, dispatchers160may automate the one or more devices within the manufacturing environment according to the generated schedule. Alternatively or additionally, solutions and/or schedules may be written (or saved) by the BB CP component120or another component to an external storage system170. Maintaining the solutions, post-processed results, and/or schedules in the external storage system170allows the solutions and/or schedules to be made available to different entities.

In one embodiment, the BB CP component120is configured to execute one or more BB workflows in order to solve a CP model. The BB CP component120can receive a workflow (e.g., created by an end-user via a user interface) that includes a plurality of blocks where each block in the workflow specifies one or more operations that are performed when the BB CP component120executes the respective block. This workflow can be more easily edited and/or customized (e.g., by a user) without any specialized programming knowledge, relative to conventional scripting solutions. For example, the user can re-arrange the blocks in the workflow (e.g., to adjust the steps that the BB CP component120performs related to creating or solving a CP model), add blocks to the workflow (e.g., to add steps that the BB CP component120performs related to creating or solving a CP model), and/or remove blocks from the workflow (e.g., to remove steps that the BB CP component120performs related to creating or solving a CP model). As described below, the user can also configure the specific operations for one or more blocks in the workflow with a BB sub-rule and/or report. Doing so in this manner provides a fully configurable CP system that allows manufacturing systems to adapt their CP systems, as needed, without the complexities involved in modifying custom code.

In one embodiment, the BB CP component120is configured to write, for each CP run, some or all the input and/or output data associated with the blocks of the workflow to the run stores150. This data captures the state of the manufacturing system at one or more steps of a CP run, such that, in the event there is a problem with a solution or schedule that is based on a solution, the manufacturing system can reproduce the problem since all data needed to reproduce what occurred is available in run stores150. In this manner, the manufacturing system can troubleshoot any problems by retrospectively debugging the system.

Note, however, thatFIG. 1illustrates merely one possible arrangement of the manufacturing environment100. More generally, one of ordinary skill in the art will recognize that other embodiments of manufacturing systems can also be configured to implement CP techniques in accordance with the techniques presented herein. For example, although the computing system110, MES130and dispatchers160are shown as separate entities, in other embodiments, these components could be included as part of one computing system.

FIG. 2further illustrates an example of the BB CP component120described relative toFIG. 1, according to one embodiment. The BB CP component120is configured to create and solve a CP model related to the manufacturing environment100and its components. For example, the CP model (created by the BB CP component120) may specify logic (e.g., in the form of an executable program) that is based on a plurality of variables, domains, constraints, and the like. A solution to the CP model may comprise a model that includes single values for the variables that satisfy the constraints of the CP model.

As shown, the BB CP component120includes a BB workflow engine210, a BB reporting engine220, a CP engine230, BB reports and rules (RR) storage system250, and a BB workflow storage system (e.g., database)202. In one embodiment, the BB workflow engine210interacts with and manages BB reporting engine220, and CP engine230in order to create and solve a CP model related to the manufacturing environment100. The BB workflow storage system202includes one or more BB workflows, each of which can be used (e.g., by the BB CP component120) to perform operations related to creating and solving a CP model. The BB workflows can be created, edited and/or customized by a user and stored in the BB workflow storage system202.

In one embodiment, the BB workflow engine210receives at least one BB workflow (e.g., from a user) or retrieves at least one BB workflow (e.g., from BB workflow storage system202, etc.) and executes each of the blocks in an order specified within the BB workflow(s). As mentioned above, each block of the BB workflow(s) specifies one or more operations that are performed (e.g., by one of the BB reporting engine220, CP engine230, etc.) when the BB workflow engine210executes the respective block. Examples of operations that can be included within the BB workflow(s) include, but are not limited to, retrieving data about the manufacturing facility, transforming and manipulating the data, creating a CP model based on the data and based on constraints defined by the user in the BB workflow, determining a solution for the CP model, making the solution available to one or more requestors, saving information about the state of the manufacturing facility, performing error checking on the CP model, solution, and data, reporting the error to a user, generating a schedule based on the solution, publishing the schedule, etc. In this manner, the BB workflow engine210can control the sequence of operations that the BB CP component120performs to provide a solution.

According to various embodiments, depending on the blocks specified in the BB workflow(s), the BB CP component120can use one of the BB workflow engine210, BB reporting engine220, or CP engine230to execute the respective block. For example, in one embodiment, the BB CP component120can extract, via the BB reporting engine220, data about the manufacturing environment100from the factory storage system140. In some embodiments, the BB reporting engine220can query other systems and/or web services (e.g., using representational state transfer (REST), or some other communication protocol) for data about the manufacturing environment100. Such data can include, for example, descriptions of equipment in the manufacturing environment100, capabilities of different pieces of equipment, current state of equipment, what product is currently being processed by equipment, characteristics of the product, and the like.

Upon extracting the information, the BB CP component120can use the BB reporting engine220to perform one or more transformations or manipulations on the extracted data. For example, the data extracted from factory storage system140may be in a format (or schema) that is specific or proprietary to the manufacturing environment100and not compatible with the BB CP component120. In these situations, the BB reporting engine220can convert the data from the proprietary format to a common schema that is compatible with the rest of the BB CP component120. In addition, the BB reporting engine220can evaluate the data in the proprietary format and common schema data for errors, and if errors are detected, correct the errors in the common schema data, and report the errors to a user (e.g., via email, storing in a database, etc.). In some embodiments, the BB reporting engine220can use at least one BB sub-rule and/or report within the BB RR storage system250to perform the data extraction, data conversion, error checking, etc. For example, the BB reports and/or rules can be created by a user and allow the user to configure, without the need to understand or write any code, the operations for each block in the BB workflow(s). In this manner, the techniques presented herein allow the user to customize the operations for the blocks in the CP workflow that may be used to extract data, convert the data, and/or perform error checking.

In one embodiment, once the BB reporting engine220converts the extracted data into a common CP schema and performs error checking on the common schema data, the BB workflow engine210may evaluate the data, create a CP model based on the data and constraints, determine a solution to the CP model, and the like. In some embodiments, the BB workflow engine210can use the CP engine230to create the CP model and determine the solution. Note that, although the CP engine230and BB reporting engine220are shown within the BB CP component120, in some embodiments, the CP engine230and/or BB reporting engine220can be external to the BB CP component120.

The CP engine230can be configured with one or more BB rules and/or reports created by a user and stored in the BB report and rules (RR) storage system250. One or more BB reports can be used to configure, define, and/or modify constraints, specify settings, convert data into a format understood by the CP engine230, etc. In addition or alternatively, one or more BB rules (created by a user) can be used to configure an objective function for the CP model, determine which constraints will govern the CP model, process the results of the CP engine230that creates and solves the CP model (e.g., which can include converting the results back to the common schema, etc.), and the like.

In one embodiment, once the CP engine230determines the solution, the CP engine230provides the solution to the BB workflow engine210, which can publish the solution or a schedule based on the solution to at least one of the dispatchers160or external storage system170. In one embodiment, the BB workflow engine210can use at least one BB report and/or rule (e.g., within BB RR storage system250) to process the solution (e.g., converting the solution to a format used by the manufacturing environment, etc.) before publishing the solution or a schedule determined based on the solution to at least one of the dispatchers160or external storage system170.

As mentioned above, the techniques presented herein also allow the BB CP component120to evaluate generated solutions and perform troubleshooting in the event of any problems or errors. For example, in one embodiment, upon receiving the input and output data associated with the execution of each block in the BB workflow, the BB workflow engine210writes some or all of the input and/or output data for one or more blocks to the run stores150. For example, for each CP run, the BB workflow engine210can write any one of the extracted data, common schema data, CP model and its results, CP model input and output, published solutions, and other information associated with blocks in the BB workflow to the run stores. In one embodiment, the BB workflow engine210writes to a file system directory (within the run stores150) that is unique to each CP run. In this manner, the BB CP component120is able to reproduce the state of the manufacturing environment100for one or more steps of a CP run. The BB CP component120, for example, can evaluate the data associated with one or more steps via the BB reporting engine220(and via one or more BB reports and rules) to determine any changes that need to be made to the CP process. As such, the techniques presented herein allow for retrospective debugging, since all the data associated with one or more steps of a CP run can be made available via the run stores150.

Note, however, thatFIG. 2illustrates merely one possible arrangement of the BB CP component120. More generally, one of ordinary skill in the art will recognize that other embodiments of the BB CP component120can also be configured to create and solve CP models in accordance with the techniques presented herein. For example, although the BB workflow engine210, BB reporting engine220, and CP engine230are shown as separate entities, in other embodiments, these components could be included as part of one computing system.

FIG. 3illustrates a user interface300with a BB workflow330that can be used to determine a solution to a CP model related to a manufacturing environment, according to one embodiment. As shown, the user interface300includes a block panel350and a BB workflow panel315. The block panel350includes a plurality of blocks that allow a user to customize operations within a BB workflow to determine a solution for a CP model related to a manufacturing environment. In this embodiment, each block is depicted as a small image characteristic of the block's function. However, note that, in general, the blocks can be depicted in other manners (e.g., size, shape, color, etc.). BB workflow panel315illustrates one example of a BB workflow330. Note that, for the sake of convenience, only a portion of the BB workflow330is illustrated. More generally, those of ordinary skill in the art will recognize that a user can create and/or modify any BB workflow to include any number of blocks.

In one embodiment, the user interface (UI)300is a graphical user interface (GUI) that allows the user to drag and drop blocks from block panel350into BB workflow panel315. The user can arrange the blocks (in BB workflow panel315) in any order or configuration, which allows the user to quickly adapt the CP system to any changes within the manufacturing environment, without understanding or writing any code. For example, each block in the block panel350is a logical abstraction that represents an operation or a series of operations that can be performed related to creating a solving a CP model. In one embodiment, the UI300allows the user to specify one or more properties for each block in the workflow panel315. The one or more properties can specify a data source for the block, timing of one or more operations associated with the block, constraints, and/or other criteria associated with performing the operations associated with the block. Examples of block properties panels are shown below inFIGS. 4A-D. In one embodiment, the operations and/or the properties for each block in the BB workflow panel315can be stored in one or more block definition files that the BB CP component can access in order to execute each block.

In one embodiment, once the BB CP component120executes the BB workflow, the BB CP component120reads the definition files, converts the operations listed in the files into a low-level script that the BB CP component120executes to create a CP model and determine a solution to the CP model. The BB CP component120can provide the solution or post-processed solution to other devices or components (e.g., a scheduling component), evaluate the solution for errors, or provide the solution or post-processed solution to anyone that requests the solution.

In another embodiment, once the BB CP component120retrieves at least one BB workflow from the BB workflow storage system202, the BB CP component120reads and parses the BB workflow to determine the type of blocks within the BB workflow. The BB CP component120can access one or more block definitions corresponding to each type of block within the BB workflow. The BB CP component120can execute the BB workflow based on the block definitions and/or the properties of the blocks in the BB workflow. For example, in one implementation, the BB CP component120can determine at least one function to call to perform the operations in the block (e.g., execute the block) based on the block type and/or properties of the block. The BB CP component120can then execute the BB workflow by performing the set of operations using the determined functions.

In this particular embodiment, this portion of the BB workflow330includes blocks302-329, which together specify a sequence of operations which, when executed by the BB CP component120, can result in solving a CP model related to a manufacturing environment. Specifically, block302defines a start operation that triggers the initial execution of the BB workflow330. Block304defines an operation for writing results of the start operation to a log file. Blocks305and306are connected by an “and” block307, which means that the operations in both blocks305and306are performed (e.g., simultaneously). Block305defines a furnace modeling operation that loads/collects customer data (e.g., data collected from one or more tools in the manufacturing environment). Block306defines global setting operation that modifies one or more settings associated with the CP process.

Block308defines an operation that creates the CP model related to the manufacturing environment based on data collected from the manufacturing environment and based on constraints defined by the user. Blocks309-311represent operations for handling errors related to executing the operation defined by block308, such as a “FAULT” condition, including sending messages to a user and/or other component related to an error.

Block312defines an operation for writing the results of executing the operation defined by block308to a log file. Block313defines an operation for determining a solution to the CP model. For example, the operation may include using a solver to determine the solution. Blocks314-318represent operations for handling errors related to executing the operation defined by block313, such as a “FAULT” condition, including sending messages to a user and/or other component related to an error. Blocks320-324represent operations for handling different errors related to executing the operation defined by block313, such as an “INFEASIBLE” condition (e.g., if there is no feasible solution to the CP model that satisfies all constraints), including sending messages to a user and/or other component related to an error. Block326defines an operation for writing the results of executing the operation defined by block313to a log file.

Block328represents an operation for outputting results of previous blocks (e.g., the solution) to a text file (and/or converting the solution to a different format, determining a schedule based on the solution, etc.). Block329defines an operation for outputting a result, such as a solution, such as by publishing the solution to one or more devices or components. In some embodiments, one or more of blocks326-329also define operations for post-processing the solution to create input that is usable for other purposes, such as determining a schedule based on the solution.

Note that the BB workflow330depicted inFIG. 3and described above represents merely one example of a sequence of blocks that can be configured, e.g., by a user without coding. In general, the techniques presented herein can be used to modify and/or customize a scheduling system to any manufacturing environment.

It is noted that, while BB workflow330includes two separate blocks308and313for creating and solving the CP model, these blocks may alternatively be combined into a single block that both creates and solves the CP model.

FIG. 4Aillustrates an example block properties panel415that can be used to configure a set of operations to be performed for a particular block in a BB workflow, according to one embodiment. For example, block properties panel415may be used to configure operations to be performed for block308or block313of BB workflow330inFIG. 3. In certain embodiments, block properties panel415is launched by a user interaction with a block, such as double-clicking on the block or right-clicking on the block and selecting a “block properties” menu item associated with the block.

Block properties panel415includes several properties that can be selected and/or modified by a user. For example, block properties panel415allows the user to specify a solver for the CP model and other information related to creating a CP model (e.g., model data for the CP model, such as constraints). For instance, the user may specify constraints for the CP model using block properties panel415.

FIG. 4Billustrates an example block properties panel420that can be used to configure a set of operations to be performed for a particular block in a BB workflow, according to one embodiment. For example, block properties panel420may be used to configure operations to be performed for block308or block313of BB workflow330inFIG. 3. Block properties panel420includes several properties that can be selected and/or modified by a user. For example, block properties panel420allows the user to specify advanced parameters for the solver to be user for determining a solution to the CP model.

FIG. 4Cillustrates an example block properties panel425that can be used to configure a set of operations to be performed for a particular block in a BB workflow, according to one embodiment. For example, block properties panel425may be used to configure operations to be performed for block308or block313of BB workflow330inFIG. 3or a different block that defines operations for modifying a CP model. Block properties panel425includes several properties that can be selected and/or modified by a user. For example, block properties panel425allows the user to specify model data that is used to modify the CP model.

FIG. 4Dillustrates an example block properties panel430that can be used to configure a set of operations to be performed for a particular block in a BB workflow, according to one embodiment. For example, block properties panel430may be used to configure operations to be performed for block308or block313of BB workflow330inFIG. 3. Block properties panel430includes several properties that can be selected and/or modified by a user. For example, block properties panel430allows the user to specify a model, a run directory, and a solver timeout for running a CP model.

Note that the block properties panels415,420,425, and430depicted inFIGS. 4A-Dand described above are only examples of block properties panels that can be configured, e.g., by a user without coding. Additional or different properties may also be included.

FIG. 5is a flow diagram of a method500for executing a BB workflow to determine a solution to a CP model related to a manufacturing environment, according to one embodiment. As shown, the method begins at block502, where a BB CP component120(e.g., as shown and described with respect toFIG. 1) receives a BB workflow (e.g., from a user). The BB workflow includes a plurality of blocks that specify a set of operations for that specify operations for creating and solving a CP model related to a manufacturing environment. To perform the set of operations, at block504, the BB CP component120accesses block definitions corresponding to the plurality of blocks. At block506, the BB CP component120executes the BB workflow by performing the operations shown at steps508,510,512,514, and516.

At step508, the BB CP component120extracts data (e.g., via the BB reporting engine) from the manufacturing environment. In one embodiment, the data includes device data (e.g., from tools or equipment in the manufacturing environment) that describes a number of lots available for processing and one or more devices operating in the manufacturing environment. The data can include static data (e.g., equipment used by a source system, capability of different pieces of the equipment, etc.) and dynamic data (e.g., current equipment state, products being currently processed by equipment of a source system, the product characteristics, etc.). In some embodiments, the BB CP component120can convert the data from a first schema (or format) used by the manufacturing environment to a second schema. The BB CP component120can also evaluate the data in at least one of the first schema or second schema for errors, and report any errors to a user.

At step510, the BB CP component120creates a CP model based on the data extracted at step508and at least one constraint defined by the user (e.g., via the BB workflow).

At step512, the BB CP component120determines a solution to the CP model using a solver. For example, the solution may comprise a model with a single value for each variable such that all constraints are satisfied. In one embodiment, the BB CP component120can process the solution (e.g., converting the solution to a format used by the manufacturing environment, etc.) before publishing the solution to other devices or components.

At step514, the BB CP component120post-processes the solution. Foe example, the BB CP component120may transform the solution into a format compatible with at least one component in the manufacturing environment so that the solution can be published to the at least one component.

At step516, BB CP component120publishes the solution or post-processed solution to the at least one component in the manufacturing environment. In one embodiment, the component comprises a scheduling component that determines a schedule (e.g., including an allocation and processing order) based on the solution. One or more devices may be automated within the manufacturing environment based on the determined allocation and the processing order. For example, as mentioned above, the determined allocation and processing order may be published to dispatchers160to automate the one or more devices. Additionally or alternatively, the BB CP component120can write (or save) the solution to one or more storage systems (e.g., such as external storage system170, etc.) in the manufacturing environment.

FIG. 6is a flow diagram of a method600for executing a block-based workflow to determine a solution to a CP model related to a manufacturing environment, according to one embodiment. As shown the method begins at block602, where the BB CP component120executes a BB workflow. For each block, the BB CP component, at block604, determines if the block is configured with a BB sub-rule or report (block604). If so, the BB CP component120evaluates, at block606, the BB sub-rule or report to determine at least one operation to perform when executing the workflow block. After evaluating the BB sub-rule or report (or if the BB CP component120determines the workflow block is not configured with a BB sub-rule or report), the BB CP component120optionally saves, at block608, the input to the workflow block to a file directory (e.g., such as in run stores150). In one embodiment, the BB CP component120can save some or all of the input from the workflow block to the file directory. In one embodiment, the BB CP component120can determine to save none of the input from the workflow block to the file directory (e.g., in situations where the BB CP component120can reproduce the state of the manufacturing environment without such data, etc.). At block610, the BB CP component120accesses a block definition corresponding to a type of the block in the BB workflow. At block612, the BB CP component120performs the operation(s) specified within the block based on the block definitions and one or more properties of the block. For example, as mentioned above, the BB CP component120can determine at least one function to call in order to execute the workflow block, based on the block definition and/or one or more properties of the block. At block614, the BB CP component120optionally saves the output from the workflow block to the file directory. In one embodiment, the BB CP component120can save some or all of the output from the workflow block to the file directory. In one embodiment, the BB CP component can determine to save none of the output from the workflow block to the file directory (e.g., in situations where the BB CP component120can reproduce the state of the manufacturing environment without such data, etc.). Doing so in this manner, allows the CP system to reproduce the state of the manufacturing environment at each step of the CP run, which can be used to troubleshoot the CP process in the event of errors.

FIG. 7illustrates a computing system700configured to execute a block-based workflow to determine a solution for a CP model related to a manufacturing environment, according to one embodiment. As shown the computing system700includes, without limitation, a central processing unit (CPU)705, a network interface715, a memory720, and storage740, each connected to a bus717. The computing system700may also include an I/O device interface710connecting I/O devices712(e.g., keyboard, mouse, and display devices) to the computing system700. Further, in context of this disclosure, the computing elements shown in the computing system700may correspond to a physical computing system (e.g., a system in a data center) or may be a virtual computing instance executing within a computing cloud.

The CPU705retrieves and executes programming instructions stored in the memory720as well as stores and retrieves application data residing in the memory720. The interconnect or bus717is used to transmit programming instructions and application data between CPU705, I/O devices interface710, storage740, network interface715, and memory720. Note, CPU705is included to be representative of a single CPU, multiple CPUs, a single CPU having multiple processing cores, and the like. Memory720is generally included to be representative of a random access memory. Storage740may be a disk drive storage device. Although shown as a single unit, storage740may be a combination of fixed and/or removable storage devices, such as fixed disc drives, removable memory cards, or optical storage, network attached storage (NAS), or a storage area-network (SAN).

Illustratively, the memory720includes a BB CP component730, which includes BB reporting engine732, a BB workflow engine734, and CP engine736. The storage740includes BB workflow(s)742, factory data744and BB rules and reports746. Further, although not shown, memory720can also include dispatchers160, a scheduling component, etc. In one embodiment, the BB workflow engine734executes each of the blocks in BB workflow(s)742. For example, as mentioned above, each block in the BB workflow(s)742can specify one or more operations to be performed when executing each block. Further, one or more operations can be configured with one or more BB reports and rules (e.g., stored in BB rules and reports746). As also mentioned above, the BB workflow engine734can further interact with the BB reporting engine732and the CP engine736when executing the workflow blocks.