A remote plotting system and method is implemented in a network of computer workstations whereby a designated computer functions as a plot server. client workstations are programmed to create plot requests from data created in a computer aided integrated circuit design and layout application. The plot server computer is programmed to A) receive plot requests in a common spooling area sent from other workstations in the network, B) perform necessary rasterization of the requested data, and C) schedule resulting plot files for the first available plotter based on a round robin scheduling mechanism. plot requests are design file plot templates which are sets of instructions describing the specific characteristics of the desired output, and a reference to the actual design data to be rasterized by the plot server. The system incorporates a single stage queue and supports an unlimited number of plotters and client workstations. The plot server software also monitors progress of requested plots from the point a request is received to the actual printing of the plot file on a particular plotting device.

Patent
   5128878
Priority
Nov 28 1990
Filed
Nov 28 1990
Issued
Jul 07 1992
Expiry
Nov 28 2010
Assg.orig
Entity
Large
50
2
all paid
1. A system for the design, layout and plotting of integrated circuits, comprising:
a client workstation including a graphical display means and means for creating integrated circuit layout design data;
a first programmable computer including a means operable to function as a file server;
a second programmable computer including a means operable to function as a plot server;
plotting means connected to the plot server for plotting graphic images including integrated circuit layouts; and
computer network means for interconnecting the workstation and the first and second computers to transmit data therebetween;
the workstation, file server and plot server each having a memory, a processor, a network interface, and an input means including a user-operable means for entering data;
means for generating a design file plot template referencing the layout design data;
means for transferring the design file plot template to the plot server;
means for generating plot output in the plot server in accordance with the design file plot template; and
means for transferring the plot output to the plotting means to print an integrated circuit layout therefrom.
11. A method for remote plotting of an integrated circuit layout in an integrated circuit design and layout system which includes a client workstation with a graphical display means, a plotting device for plotting graphical data including integrated circuit layouts, the workstation having a memory, a processor, a network interface, and an input means including a user-operable means for entering data; the method comprising:
providing a first programmable computer including means operable to function as a file or data base server,
providing a second programmable computer including means operable to function as a plot server, the plot server including a means for generating plot output;
interconnecting the client workstation, file server, and plot server via a computer network and connecting the plotting device to the plot server;
creating integrated circuit layout design data in the client workstation and storing said data in the file server;
creating a design file plot template in the client workstation;
transferring both the design data from the file server, and the design file plot template from the client workstation to the plot server;
rasterizing the design data in the plot server according to the design file plot template to produce a rasterized image of the integrated circuit layout; and
transmitting the rasterized image to the plotting device and printing the image of the integrated circuit layout on said plotting device.
10. A system for the design, layout and plotting of integrated circuits, comprising:
a client workstation including a graphical display means and means for creating integrated circuit layout design data;
a first programmable computer including a means operable to function as a file server;
a second programmable computer including a means operable to function as a plot server;
plotting means connected to the plot server for plotting graphic images including integrated circuit layouts; and
computer network means for interconnecting the workstation and the first and second computers to transmit data therebetween;
the workstation, file server and plot server each having a memory, a processor, a network interface, and an input means including a user-operable means for entering data;
the workstation including means for generating a design file plot template referencing the layout design data, and a second means for transferring the design file plot template to the file server;
the file server including means for storing design data and design file plot templates, and a second means for queuing design file plot templates in a raster queue;
the plot server including means for accessing the raster queue and retrieving a next template present therein; means responsive to a reference in the retrieved design file plot template for retrieving corresponding design data; and means for rasterizing the retrieved design data pursuant to the retrieved design file plot template.
2. A system according to claim 1 in which the means for generating plot output includes means for queuing the data for rasterization, means for rasterizing the data into an output image, and means for spooling the output image to the plotting means.
3. A system according to claim 1 in which the means for generating a design file plot template includes:
a first graphical display means for creating design file plot template data;
means for collecting, storing, and retrieving the data;
means for altering previously collected design file plot template data; and
a second graphical display means for submitting the data for subsequent transfer to a plot server.
4. A system according to claim 3 in which the first graphical display means includes:
a display oriented data fill form containing a menu of plot options;
a graphical means for selecting and adjusting said plot options; and
the second graphical means being operative to submit the resulting options as a design file plot template for further processing.
5. A system according to claim 1 including a third programmable computer coupled to the plot server configured to function as a raster server; the raster server including a means for rasterizing the data.
6. A system according to claim 1 in which the plot server includes means for rasterizing the data, and means for submitting the rasterized data to the plotting means for hardcopy output.
7. A system according to claim 6 in which the means for submitting the rasterized data to the plotting means for hardcopy output includes means for periodically inspecting a raster queue for the existence of one or more design file plot templates awaiting rasterization.
8. A system according to claim 7 further comprising:
a means for supporting at least two plotting devices;
a means for sequencing multiple plotting devices such that no two plotters ever attempt to retrieve the same design file plot template from the raster queue; and
a means for monitoring the progress of plotting of said rasterized design file plot templates.
9. A system according to claim 8 in which the means for monitoring the progress of plotting includes:
a means for periodically or continuously monitoring the progress of design file plot templates in the raster and plotting queues;
a means for stopping and restarting plotting; and
a means for reordering the plotter queue.
12. A method according to claim 11 in which the interconnecting step includes providing a remote file access system whereby said client workstation, said file server, and said plot server each have access to the memory on all computers in said network.
13. A method according to claim 11 in which the transferring step includes the plot server periodically inspecting a raster queue for the existence of design file plot templates which reference design data awaiting rasterization.
14. A method according to claim 13 in which the periodic inspection step further comprises supporting multiple plot servers on a network and sequencing their operation such that no two plot servers can retrieve the same design file plot template from a common raster queue in the file server, thereby facilitating the staging of multiple plot servers and multiple plotting devices.
15. A method according to claim 11 in which the transmitting and printing steps include monitoring plotting device status, progress of a raster queue, and progress of plots being spooled to the plotting device.
16. A method according to claim 11 in which creating a plot output characteristics description includes creating a design file plot template in the workstation which references design data and specifies plotting instructions to control the characteristics of the desired output.
17. A method according to claim 16 in which the creating a design file plot template step further comprises:
creating a screen oriented fill form;
providing a selection service mechanism to facilitate graphically selecting, setting, and adjusting plot template options;
creating a screen oriented confirmation form; and
providing a selection service mechanism to facilitate graphically confirming the design file plot template options and submitting the plot template for further processing.
18. A method according to claim 16 in which the creating a design file plot template step comprises retrieving an existing design file plot template for alteration and/or subsequent submission.
19. A method according to claim 11 in which the creating a design file plot template in the client workstation step enables the client workstation user to continue capturing design data without loss of response time from the client workstation processor.

A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyrights whatsoever.

The invention relates generally to an electronic computer aided design (ECAD) system and more particularly to a system and method for plotting integrated circuit design layouts from multiple computer workstations to one or more hardcopy plotting devices.

In a typical ECAD system, a host computer, commonly called a file server, is connected to a network of other computers each of which is served by a common plotting device usually connected to the file server. These computers, commonly called client workstations, manage the collection of data entered by the user and, among other things, drive the shared plotting device which produces graphical hardcopy output of designs captured by the client workstations.

The most common approach to producing hardcopy output through this combination of client workstation(s), file server and plotting device has been to employ plotting software incorporated into the ECAD system for the process of converting the data, commonly called rasterization; transferring the rasterized output to a spooling area in computer memory ordinarily in the file server; and finally printing the plot on the output device. Typically, the rasterization process is run on each client workstation in a network. The process of rasterizing the data can be very time-consuming. The user must await completion of the rasterization before the client workstation can continue to be utilized for additional design capture or other tasks.

Many ECAD systems employ a multi-tasking operating system such as UNIX®, which allows compute-intensive processes, such as rasterization, to be run simultaneously with other processes. This is commonly referred to as background processing. Background processing at least allows the user to continue other computer tasks. Yet, despite this ability, rasterization can still require so much computer resources that response time for the user performing other computer-based tasks is unacceptable.

A typical example can be illustrated by considering the popular integrated circuit ECAD system from Cadence Inc. called the Cadence Design System. This system shown in block diagram form in FIG. 1 and in a data flow diagram in FIG. 2, utilizes the UNIX® operating system for multiple processing, and employs a network of client workstations, a file server and one or more plotting devices. Each client workstation performs the rasterization process for each hardcopy plot request. Once completed, the rasterized file is sent either to a locally connected plotting device, or across the network to a file server and then to a plotting device for output.

Response time in this environment is nearly unacceptable because the rasterization process is run on the client workstation despite the fact that the UNIX® operating system provides for running the rasterization process simultaneous to other tasks, such as capturing additional design work in the integrated circuit layout editor. As a result, the client workstation user cannot make productive use of the workstation during rasterization processing. This results in increased turn-around time for circuit design layouts and higher costs.

Accordingly, a need remains for an improved method and system for rasterizing, spooling and plotting graphical hardcopy of integrated circuit designs captured on client workstations which would allow the user to continue other tasks while the time and resource consuming processes of rasterization and hardcopy plotting run uninterrupted.

One object of the invention is to provide an improved method and system for rasterizing, spooling, and printing plots of circuit designs created with a computer aided design system.

A second object of the invention is to minimize lost productivity caused by time-consuming plot rasterization that renders a client workstation unusable until the rasterization is complete.

Another object of the invention is to support multiple ECAD workstations and multiple output devices in a networked configuration such that the first available output device produces the next-available rasterized plot from any client workstation.

Additional objects of the invention as aforementioned are to automatically queue plots as they are requested and to inform users on the workstation network of the current status of the requested plot jobs.

The invention provides a method and system of multiple client workstations on a common computer network to queue plot jobs from client workstations to a plurality of output devices. The system includes a client workstation with a graphical display, a first programmable computer configured to function as a file server, a second programmable computer to function as a plot server, and a plotting device connected to the plot server, the workstation and computers being interconnected via a computer network. The workstation, file server and the plot server each have a memory, a processor, a network interface, and an input means including a user-operable means for entering data. The plot server is programmed with software which enables the user to generate plot output without interrupting work proceeding on the client workstation from which the plot is originally requested. The plot server may also encompass a raster server as well to specifically handle rasterization of data while the plot server administrates the plot submissions, plotter queues, and print spooling.

So programmed, the system includes software resident on client workstations for integrated circuit design; software resident on client workstations for creating and submitting the new integrated circuit schematic or layout data file together with plot instructions, resulting in a file called a design file plot template, from currently displayed layout designs or from existing stored plot templates; software resident on plot servers for receiving design file plot templates, initiating the rasterization process and monitoring progress; and preferably, software for monitoring progress of the plotter queue. The design file plot template is a computer file of data comprising A) a reference pointer to the actual design file data and B) plotting instructions which describe the characteristics of the desired plot output, such as visible layers of the design to be plotted, scale, and page orientation. The rasterization software is that portion of the integrated circuit ECAD system which translates circuit design data to a format for plotting to paper or vellum on a plotting device. The rasterization software could also reside on yet another computer called a raster server.

The foregoing and additional objects, features, and advantages of the present invention will be more readily apparent from the following detailed description of a preferred embodiment which proceeds with reference to the accompanying drawings.

FIG. 1 is a block diagram of the prior art system architecture for an integrated circuit ECAD system.

FIG. 2 is a control flow diagram of the prior art for plotting integrated circuit layout designs on a plotting device;

FIG. 3 is a block diagram of the new system architecture for an integrated circuit ECAD system in accordance with the invention.

FIG. 4 is a control flow diagram for plotting integrated circuit layout designs in accordance with the invention;

FIG. 5 is a control flow diagram illustrating the operation of the main Rplot routine to create a design file plot template.

FIG. 6 is a control flow diagram for a subroutine of FIG. 5 that engages editing of the design file plot template values.

FIG. 7 is a control flow diagram for a subroutine of FIG. 5 to create a design file plot template.

FIG. 8 is a control flow diagram illustrating the operation of the main Rtplot routine to edit existing design file plot templates.

FIG. 9 Glossary of Terminology appearing at the end of the Detailed Description illustrates the block structure of a typical UNIX® file system.

FIG. 10 the Glossary of Terminology appearing at the end of the Detailed Description illustrates the life of a typical UNIX® process.

FIG. 11 in the Glossary of Terminology appearing at the end of the Detailed Description is a control flow diagram illustrating the Remote Procedure Calling mechanism used to implement Remote Access File Systems.

APPENDIX A is a printout of the Rplot software used in the present invention.

APPENDIX B is a printout of the Rplot.cj software used in the present invention.

APPENDICES C and D are printouts of the Plots software used in the present invention.

This description begins with a general description of a prior art system, followed by a description of the hardware and software structure as used for creation, transfer, and spooling of plot files from a workstation to a plot server in accordance with the invention. Then the operation of the system is described from the user's viewpoint.

Occasional references are made to UNIX® manual pages for detailed references on a certain feature or attribute of the art. We assume the 8-section format used by both 4.3 BSD Berkeley 1986a, 1986b, 1986c]and System V [AT&T 1989b]UNIX versions. References of the form "cron(8)" refer to the entry for cron in Section 8 of the UNIX® 4.3 BSD manuals. See generally, The UNIX 4.3 BSD Manual Set, University of California Berkeley Computer Science Research Group, USENIX Association 2560 9th St., Ste. 215, Berkeley, California 94710

A glossary of terminology used herein appears at the end of the detailed description.

Referring to FIG. 1, a series of computer workstations 10 are connected to a computer network 20 to provide a typical computer aided design system. Computer network 20 typically comprises IEEE-802 coax cable. Computer workstation 10 comprises a general purpose 32 bit digital computer conventionally including a central processor, random access and hard disk memory (not shown), and a network interface. The network interface 15 comprises an interface card for the computer workstation, Xerox® Ethernet® cabling, and an interface tap connected to the computer network cable. A user interacts with the workstation through a graphic display means including a video display unit, a keyboard and a mouse (not shown). A suitable form of workstation is provided by the commercially-available Sun Microsystems 3 or 4 series computer system.

Typically, one workstation is designated as a file server. File server 30 comprises a general purpose 32 bit digital computer conventionally including a central processor random access and hard disk memory (not shown), and network interface 15. The hard disk memory is typically significantly larger than the hard disk memory available on the workstation. Additionally, the file server includes one or more ports 35 to connect output plotting devices 40.

Referring to the data flow diagram of FIG. 2, the user of workstation 10 in the system of FIG. 1 employs an ECAD application 60 to prepare an integrated circuit design file 65. Then, the user uses the plot request software 70 to request plotting of the design on the plotter 40 attached to the file server 30, accessible via the computer network. The design file must be converted to data suitable for plotting using rasterization software 80. The resulting raster file 83 is combined with plotting instructions 85 received from plot request software 70. This resulting plot file 100 is transferred by a network file transfer software module 90 over the network to the file server 30, where it is received by a plot spooler module 110.

The network file transfer module 90 is activated by the plot request module 70 in the process of specifying a plotting device. If the specified plotting device is not locally attached to the workstation, which it seldom is, then the network file transfer module is invoked to transfer the plot file 100 to the file server 30 where the specified plotting device is attached.

Plot instructions 120 received in the plot file 100 are used to select the specific plotter device and paper size. The received raster file 130 is subsequently plotted on the plotter device 40, resulting in hardcopy output 140.

Referring to FIG. 3, a series of client workstations 210 are connected via network interface 215 to a computer network 220 to provide an electronic computer aided design (ECAD) system 200 configured according to the invention. Computer network 220 comprises IEEE-802 coax cable. Client workstation 210 comprises a general purpose 32 bit digital computer conventionally including a central processor, random access and hard disk memory (not shown), and network interface 215. The network interface comprises an interface card for the computer workstation, Xerox® Ethernet® cabling, and an interface tap connected to the computer network cable.

The system 200 includes a computer 230 functioning as a file server. File server 230 comprises a general purpose 32 bit digital computer including a central processor, at least 32 megabytes of random access memory (RAM), at least 892 megabytes of hard disk memory (not shown), and a network interface 215. A suitable form of file server is provided by the commercially available Sun® Microsystems 4/260 series computer system.

The system 200 also includes a computer 250 configured to function as a plot server. Plot server 250 comprises a general purpose 32 bit digital computer including a central processor, at least 96 megabytes of random access memory (RAM), at least 688 megabytes of hard disk memory (not shown), and a network interface 215. A suitable form of plot server is provided by the commercially available Sun® Microsystems 4/260 series computer system. The plot server is also configured with a minimum of one, and maximum of two plotting device controller boards (not shown) using a parallel interface 235. A suitable form of plotting device controller is provided by a Versatec® controller board commercially available from Versatec® Corporation. At least one plotting device 240 is connected to the plot server 250 via parallel interface 235. A suitable plotting device is provided by the Versatec® Color Electrostatic Plotter, commercially available from Versatec® Corporation.

In an alternative embodiment, an additional computer called a raster server (not shown) could be added to further distribute processing by off-loading certain processing responsibilities from the plot server. In this configuration, a suitable raster server is provided by the commercially available Sun® Microsystems 4/260 series or Sun® SPARC® series computer systems.

Referring to FIG. 4, the computer network 220 shown in FIG. 3 is managed by remote file access system (RFS) software 340 resident in system 200, on each client workstation 210, file server 230, and plot server 250. ECAD application software 310, such as the Cadence Inc. Edge® product, is used in workstation 2-0 to create a design file 320 containing the schematic level design and the layout design for an integrated circuit which design data are stored in file server 230. Novel software identified as Rplot 360 (see Appendix A) generates a design file plot template 370, which is likewise stored in file server 230 in template queue 375 and optionally in template database 325 for future use.

RFS software 340 residing on each computer implements a "remote file access system" to provide transparent remote access to file systems on hard disks attached to each of the client workstations, file server, and plot server in the system 200 of FIG. 3. Remote file access systems provide file sharing between remote workstations on a heterogeneous network. Remote machines' file systems (e.g., portions of hard disks) are "mounted" (see glossary, Mounting File Systems) locally, appearing as if they are physically attached to a user's own workstation. A suitable remote file access system is provided by NFS® which is commercially available from Sun Microsystems, Inc. with the purchase of their workstation products. Remote file access system application level protocol specifications are available in the public domain. The remote file access protocol is implemented using another public domain protocol, "Remote Procedure Call" (RPC; see glossary, Remote Procedure Calls). The basic idea behind a remote procedure call is to provide access to remote network services at the level of programming language function calls. In this way, although a program issues a simple function call, in fact, it is actually requesting a server on another physical machine to perform some service.

Referring to FIG. 11, in summary, RPC functions as follows: A user runs a program, called a client program on a client workstation. The upper levels of the program have no notion that a computer network is involved; lower level routines are simply called to complete the task. One or more of these low level routines, however, are called "stubs." A stub does not actually contain code to perform the function which its caller has requested. Instead, the stub translates all of its arguments (passed by the function call) into a form suitable for network transmission called a message, then establishes contact with a server program on the same or some other workstation, and sends the arguments to the server. The server converts the request and arguments into a locally useful form, runs the requested service, packages the results, and sends them back to the client. The client, in turn, translates the results into a form it can use, and returns to the calling routine. Therefore, it should be readily apparent how a remote file access system can be implemented using remote procedure calling. The remote procedure calling protocol is in the public domain and can be obtained from UUNET (a worldwide accessible UNIX network service) or from the Sun-Spots Archives available on titan.rice.edu (a computer readable data archive of publicly available software and system specifications stored on the publicly accessible USENET machine "titan" using the above listed USENET electronic mail address and a UNIX request program known as "anonymous ftp.")

As stated, RFS software 340 facilitates remote access by all client workstations to disk space located on the file server. This facility provides a means for accessing the design file plot template 370 generated by Rplot 360 on the file server 230 via network 220, and for subsequent access by the plot server 250.

Rplot 360 comprises a novel utility for creating a design file plot template 370. The design file plot template is composed of instructions used to specify characteristics of the final hardcopy output including (but not limited to) paper size, layers of the design file to be plotted, scale, and page orientation. The design file plot template contains a "pointer" to reference the actual data of design file 320 stored in design file database 325 in the file server. Resident on plot server 250 is software identified as Rplot.cj 380, which periodically polls the file server 230 for the presence of a design file plot template 370 waiting in template raster queue 375 for rasterization by ECAD rasterization module 400, also resident in the plot server. Rplot.cj 380 is a UNIX® shell program (see APPENDIX B) which employs the UNIX® "cron" utility (not shown) to periodically check the file server for a design file plot template. On finding a design file plot template 370, the Rplot.cj module verifies that a plotter 240 is available; verifies that enough disk memory is available for rasterizing; and moves the design file plot template from the file server to the plot server. The Rplot.cj module next invokes the rasterization module 400 and, using the design file plot template data, proceeds to rasterize the design stored in the design file database 325 and referenced by the design file plot template.

In an alternative embodiment, an additional server, called a raster server (not shown), is similarly employed on the network to manage all rasterization processing, thereby further distributing the processing responsibilities and accordingly improving the overall performance of the system still more. In this configuration, Rplot.cj transfers the design file plot template from the file server to the plot server. The Rplot.cj module next invokes the rasterization module 400 on the raster server and, using the design file plot template data, proceeds to rasterize the layout design stored in the design file database 325 and referenced by the design file plot template on the raster server.

A completed rasterization results in raster file 420. While the resulting raster file 420 is created, the Rplot.cj module utilizes the template plotting instructions to determine the number of copies to plot, whether the plots are to be monochrome or color, and how much paper will be required to complete the plot(s). Once the rasterization process is complete, the Rplot.cj module transfers the raster file 420 with the plotting instructions to a plot spooler 440 (e.g., the UNIX® "lpr" facility) for actual printing on the plotting device 240. This results in a hardcopy output 460.

In the alternative embodiment employing the raster server, once the raster server has finished rasterizing the design data, the raster file 420 is transferred back to the plot server for subsequent queuing to the plot spooler 440.

Users create IC design files 320 using ECAD application software 310. A suitable form of ECAD application is provided by the commercially available Cadence Inc.'s Edge® product. The resulting design file is stored in a design file database 325 on a file server 230 for subsequent design data capture, or is prepared for plotting on an electrostatic plotting device 240 served by plot server 250 on the ECAD system network 220.

Preparation of a plot requires the user to run either Rplot 360 to build a design file plot template, or Rtplot (not shown) to utilize an existing design file plot template. In the following descriptions, refer generally to Appendix A and B.

FIG. 5 is a control flow diagram illustrating the operation of the system to create a design file plot template when a design file has never been plotted, or there is no known existing plot template file in the template database. Operation is begun from step 500 when the user selects the Rplot command (see also Appendix A) on a pop-up menu that appears on the client workstation display.

When the Rplot command has been selected for the first time, the operation first proceeds to step 520 ("getMyData," discussed infra) to initialize directory search paths which facilitate locating various data files. All subsequent invocations of Rplot will proceed directly to step 540 ("getPlotValues") as step 520 defines certain user session parameters at step 510 that never need redefinition during a user session. In this context, a user session is taken to mean the period of time the user is "logged in" to their client workstation and using the ECAD application.

Step 520 involves setting internal variables to standard UNIX path values for the current "working" directory, the user's "home" directory, and the user's "identification" (sometimes referred to as a unique ID, or "UID"). The operation next proceeds to step 540 ("getPlotValues") where the size of the plot is obtained according to the size of the current viewport on the workstation display, and the current magnification value of the viewport. The viewport is that portion of normalized device coordinate space currently displayed on the client workstation. A good method of visualizing what this means is to use the analogy of a camera focused on the entire normalized device coordinate space. The client workstation display focuses on a specific portion of the complete space and can "zoom in" or "zoom out" on that space (where zoom-in and zoom-out address the value of magnification). Thus, the portion of an IC layout data file viewed on the workstation display depends on the current viewport and the degree of magnification of that viewport. This value can be anything from the entire contents of the data file down to the maximum allowed magnification (i.e., a single integrated circuit cell within an entire design). These values are established in step 540 so the output plot represents the visible portion of the data file currently displayed on the client workstation at the creation time of the design file plot template.

Following collection of this initial data, the operation proceeds to step 560, ("editPlotValues") where the actual plot template is created. Referring now to FIG. 6, first, the size of the plot is displayed at the top of the workstation display according to step 563 ("getPlotSize"). Second, a display oriented data fill form is created in step 564 ("askForOptions"). The fill form is constructed by creating a window on the workstation display in which the following entries are listed pursuant to step 565 ("makeFormList"):

ABORT?

plotTemplate

blockName

representationName

askForPoints?

lowerLeftWindowCoordinates

upperLeftWindowCoordinates

magnification

plotMosiacBordersOnly?

layersRevision

blockPath

plotter

numberOfCopies

UserUnitsPerMicron (layer file)

dbUnitsPerUserUnit (layer file)

Where initial values have already been obtained (e.g., the plot size), those values are listed adjacent their entry to the right of the equal-sign (=). If the user desires, the finished size of the plot can be altered by selecting (a selection method is explained infra) the entries "lowerLeftWindowCoordinates," and "upperLeftWindowCoordinates," and entering new values. The new values are shown inside the fill form window next to their appropriate label, and at the top of this window. If these new values are outside a legal range, creating a skewed aspect ratio, the system automatically adjusts the plot size in the x or y direction as appropriate, and informs the user with a message at the top of the fill form window.

The user sets plot options by entering required data in the fill form window by means of a selection service such as a mouse pointing device or cursor keys, and the keyboard. In a preferred embodiment, the selection service is a three button mouse. As the user drags the mouse on a mouse pad, a corresponding pointer glyph moves across fields in the fill form. As the glyph touches a field, the field is highlighted (placed in reverse-video). Once the field is highlighted, the user can drag the mouse-pointer over to the value space in the field and begin entering new data via the keyboard. Where values are boolean in nature (e.g., "on" vs. "off"), a click (press and release) of the middle mouse button will toggle the value. If the entry can be any of a number of values, a pop-up menu will appear as the mouse-pointer is dragged across the value space.

The operation continues to loop in routine 564 ("askForOptions") until the user clicks any mouse button at a point anywhere outside the fill form window. On this event, the operation proceeds to step 66 ("confirmPlotOptions") where a new window appears displaying four options to the user, ABORT, SUBMIT, SAVE, or DISPLAY INPUT FORM. When the user selects SUBMIT and/or SAVE, the operation proceeds to step 620 ("rplotWorkHorse") in FIG. 5 to write the template file to a permanent file depending on whether the SAVE option was selected in addition to the SUBMIT option.

Referring now to FIG. 7, step 622 ("createPlotTemplate") is called to actually create the physical data file known as the "design file plot template." This file will later serve as a commands file to drive the ECAD system's rasterization process on the plot server. The operation next proceeds to step 624 ("getTemplatePath") at which point the plot characteristic data file is actually written to a directory location somewhere within the network file system as implemented by the remote access file system, and previously defined according to the user's environment definition. Finally, step 626 ("spoolPlot") is called to actually spool the design file plot template to the raster queue for subsequent processing.

If a design file plot template already exists in a template database 325 (shown in FIG. 4) on the file server with the desired plotting instructions, then the user selects the Rtplot command (see also Appendix A) from a pop-up menu that appears on the client workstation's display.

FIG. 8 is a flow diagram illustrating the operation of the system to edit and submit an existing design file plot template where a design file plot template has previously been created (Rtplot). Operation starts from step 700 when the user selects the Rtplot command on a pop-up menu that appears on the client workstation display. Step 720 ("readValues") is invoked to access the user defined template file and load the template into the fill form. Next, control passes to subroutine 560 ("editPlotValues") to allow the user to modify any of the template values.

Referring back to FIG. 6, first, the size of the plot is displayed at the top of the workstation display according to step 563 ("getPlotSize"). Second, a display oriented data fill form is created in step 564 ("askForOptions"). The fill form is constructed by creating a window on the workstation display in which entries (described earlier for Rplot) are listed pursuant to step 565 ("makeFormList") Since the values already exist, they are listed adjacent their entry-label, to the right of the equal sign (=).

The user modifies options by entering new data in the form on the display by means of a selection service such as a three button mouse and the keyboard, in a method discussed earlier for Rplot. The operation continues to loop in routine 564 ("askForOptions") until the user has entered or passed on each entry in the list, and selected any point outside the fill form window with a mouse button click. On that event, the operation proceeds to step 566 ("confirmPlotOptions") where a new window appears displaying four options to the user, ABORT, SUBMIT, SAVE, or DISPLAY INPUT FORM, as discussed earlier. When the user selects SUBMIT and/or SAVE, the operation of Rtplot routine (FIG. 8) proceeds to subroutine 620 ("rplotWorkHorse") to rewrite the template file to the permanent file depending on whether the SAVE option was selected in addition to the SUBMIT option.

Referring back to FIG. 7, step 622 ("createPlotTemplate") is called to actually create the physical data file known as the design file plot template. This file will later serve as a commands file to drive the ECAD system's rasterization process on the plot server. The operation next proceeds to step 624 ("getTemplatePath") at which point the plot characteristic data file is actually written to a directory location somewhere within the network file system as implemented by the remote access file system, and previously defined according to the user's environment definition. Finally, step 626 ("spoolPlot") is called to actually spool the design file plot template to the raster queue for subsequent processing.

Referring back to FIG. 4, the Rplot.cj utility 380, (see also Appendix B) located on the plot server 250, periodically inspects the file server 230 for the existence of a design file plot template in the template raster queue. Periodic inspection is conducted using the standard "cron" facility (not shown) in UNIX.

The standard System V and Berkeley Standard Distribution (BSD) UNIX "cron" program provide a facility for executing operating system commands and other programs at specified dates and times. Regularly scheduled commands can be specified according to instructions found in the standard UNIX "crontab" files in the 4.0 UNIX directory "/var/spool/cron/crontabs." The "cron" program examines "crontab" files when it is first started (typically during boot-up of UNIX) or when a file using "crontab" changes. In other words, once "cron" is started, it never exits.

The "crontab" file is a table of times to run periodic jobs (other operating system commands or programs). Each line in a "crontab" file consists of fields which define the minutes, hours, days of the week and month, months of the year, and the name of the command or program to run. Details on implementing "cron jobs" can be found in any set of System V or BSD UNIX System Manuals under the reference entry crontab(5), with additional detail and cross references under cron(8), rc(8), sh(1), init(8), syslogd(8), and crontab(1).

In this network configuration, the Rplot.cj utility supports any number of plot servers because one copy of Rplot.cj resides on each plot server. Therefore, each plot server separately and independently polls the file server for the existence of design file plot templates in the template raster queue. For this reason, to avoid a race condition where more than one plot server is attempting to retrieve a design file plot template, no two Rplot.cj programs should ever run simultaneously on the network. In other words, since each plot server "cron" facility periodically activates that server's copy of Rplot.cj, each server must schedule the running of its own Rplot.cj to avoid a race condition when polling the file server template raster queue. If there is only one plot server on the network, there is no chance for a race condition. If, however, there are two plot servers on the network, then Rplot.cj on the first server must be run, for example, once every even minute on the even minute, while the second Rplot.cj is run once every odd minute on the odd minute. Likewise, if there are three servers, each server starts its copy of Rplot.cj every three minutes; server one on minutes 1, 4, 7, and so on; server two on minutes 2, 5, 8, and so on; and server three on minutes 3, 6, 9, and so on. Each "cron" utility's "crontab" table should have an entry specifying the minutes of an hour that Rplot.cj should be started.

In this manner, no two plotters will ever attempt to retrieve the same plot template. Instead, server one will retrieve the first template in the queue, server two will retrieve the second template in the queue, and so on. Accordingly, as a standard practice, the resulting output and error messages (commonly referred to as "stdout" and "stderr") from the Rplot.cj (commonly referred to as the "cron job") should be redirected to a log file.

Sometimes a plot will take longer to complete than the interval between revival of Rplot.cj by "cron." Therefore, when Rplot.cj is initiated by the "cron" facility, the program first checks a lock file to see whether the plot server's plotter is already running. If so, it simply exits.

If the plotter is available, then Rplot.cj verifies that there is at least a minimum amount of disk space to hold the resulting raster file that will be created from the raster template instructions. In the preferred embodiment, the minimum disk space requirement is set to at least 250 megabytes. If there is insufficient disk space, then Rplot.cj sends a message to the plot server console display stating that it is waiting for available disk space to process the template.

Once disk space is available on the plot server, Rplot.cj removes the raster template from the raster queue on the file server and places it into a temporary storage area on the plot server. The RFS facilities enable this procedure through remotely mounted disk space (see Glossary, Mounting File Systems). In other words, according to standard remote file access system functionality, the plot server has direct access to the raster queue on the file server, thereby enabling a direct transfer of the template file without the need to copy it across the network. (This is accomplished using the remote procedure calling mechanisms described, supra. See also, Glossary, Remote Procedure Calling).

With the design file plot template now physically on the plot server, the rasterization process is started by Rplot.cj. This involves a number of steps. The rasterization process, which Rplot.cj invokes, is actually a sub-process of the client workstation's ECAD system. The plot server, like a typical client workstation, starts the ECAD system, but only to run the rasterization process in a batch mode. Typically, when a ECAD system is started, the system searches for start-up or initialization files used to initialize a user's environment. Here, where the system is started only to process a batch job (e.g., rasterizing the design data specified by the plot template), if the system is initialized using environment settings found in a typical start-up or initialization file, uncontrollable and/or undesirable events can occur in the start-up, resulting in an error condition or an inability to complete the rasterization. To prevent this, the UNIX home-environment variable ($HOME) is reset to a location where there is little likelihood of the ECAD system encountering an initialization file when started by the plot server to rasterize a design file plot template.

Having reset the processing environment, Rplot.cj invokes the ECAD system with the template file as input. The template file, created earlier by Rplot, contains all the instructions necessary to direct the rasterization process. Rplot.cj now waits until the rasterization process is complete. During this period Rplot.cj occasionally checks the status of the raster process, echoing status messages to a log file. If in monitoring the rasterization Rplot.cj detects a problem (because the rasterization process is hung in an unknown or wait state; see Glossary, Process States and Transitions), then a run-log (/usr/tmp/rplot.runlog) is checked for the reason. If no reason can be found, Rplot.cj waits for a specified period of time before killing the process. This is to account for the possibility of heavy cpu processing of other tasks, which is typically a momentary problem.

If the rasterization process completes successfully, Rplot determines the number of copies of the plot (according to the template file), whether this is to be a monochrome or full color plot (in order to determine which plotter to use), and how much paper will be required and whether enough exists in the plotter.

The raster file is now queued to the plotting device using the standard UNIX "lpr" facility which, in turn, relies on the standard UNIX "lpd" or line printer daemon (see Glossary, Daemon Processes) to actually spool the file to the plotter.

The user can now employ a utility to view information about remote plotting jobs. The Plots utility (not shown, refer to Appendix C and D) displays the status of plotters and of all plots in the system. Plots displays jobs in the raster queue and the status of each plot server, including the time the status was last updated, available disk space, number of inches of paper remaining on the plotter, and the status of the plot server. If there are plot jobs queued for a plotter, the job status is displayed.

By default, Plots starts in an update mode. The status display is updated every minute. The user may exit the update mode at any time. Command line switches available at command invocation further allow the user to obtain a one time status report ("-o" switch), or to enter a menu mode ("-m" switch).

In the menu mode, there are several options available. These options are described below.

The DE-QUEUE command prompts the user to select the raster queue or the plotter queue. Each queue maintains a list of jobs according to unique identifiers. For the raster queue, jobs may be de-queued by providing the job name which is the name of the design file plot template. For the plotter queue, which contains the rasterized plots waiting to be actually plotted, jobs may be de-queued by providing plot server name, the queue name and the job number.

The KILL command is used to kill plots that are in the process of being read or rasterized. This command prompts the user enter the name of the plot server on which to kill the job. Next the user must supply the desired processes identification number. The process ID is available from the status display and is reported in parenthesis after the plot name. For example, suppose the following status display entry:

"Reading a40's A40SLP60B.a07044 D(14049) for 1:55 CPU minutes"

The process ID is -4049. Plots allows only the owner to kill a particular plot job. Plots ensures this by comparing the user ID of the user attempting the kill command with the owner ID of the particular plot job in question.

The priority command is used to change the priority of a plot job. Valid priorities are 1, 2, 3, and NONE. Jobs with priority of 1 have the highest priority and are repositioned in the plot queue as the next job to be plotted. Accordingly, those jobs with priority of NONE are the lowest and may be postponed from plotting, at least until the plotter queue is clear of any plot job with a priority of 3 or greater.

Other commands in the menu mode include a PAPER system to maintain the inches of paper used for plotting, which is important for the system in calculating the amount of paper required versus the amount of paper remaining). A STOP and a RE-START command are provided to allow stopping and re-starting of the plot queue. An UPDATE command allows the user to enter the update mode described previously, and a QUIT command allows the user to exit the Plots program altogether.

If plotting has stopped, the date and time it was stopped and the reason is displayed on the user's client workstation display.

PAC Daemon Processes

Processes in the UNIX operating system are either user processes, daemon processes, or kernel processes. Most processes on a typical system are user processes, associated with users at a terminal. Daemon processes are not associated with any users but do system-wide functions, such as administration and control of networks, execution of time-dependent activities (e.g., cron), and line printer spooling (i.e., lpd). The init process (a process dispatcher usually run at boot time) may spawn daemon processes that exist throughout the lifetime of the system (the time between re-boot of the operating system). On occasion, users may spawn daemon processes.

The UNIX system maintains regular files and directories on block devices such as tape or disks. A workstation or file server may have several physical disk drives each containing one or more file systems. Partitioning a disk into several file systems makes it easier to manage stored data. The operating system kernel addresses file systems on a logical level rather than the disks themselves, treating each disk as a logical device identified by a logical device number. The conversion between logical device (file system) addresses and physical device (disk) addresses is done by a disk driver.

A file system consists of a sequence of logical blocks, each containing 512, 1024, 2048, or any convenient multiple of 512 bytes, depending on the system implementation. Referring to FIG. 9, a file system has the following structure:

The boot block 91 occupies the beginning of a file system, typically the first sector, and may contain bootstrap code that is read into the machine to boot, or initialize the operating system. Although only one boot block is required to boot the system, every file system has a (potentially empty) boot block.

The super block 92 describes the state of the file system (e.g., how large it is, how many files it can store, where to find free space on the file system, etc.).

The inode list 93 is a list of inodes that follows the super block in the file system. The operating system kernel references inodes by index into the inode list. One inode is the root inode of the file system: it is the inode by which the directory structure of the file system is accessible after execution of the mount system called (explained infra).

The data blocks 94 start at the end of the inode list and contain file data and administrative data. An allocated data block can belong to one and only one file in the file system.

A physical disk unit consists of several logical sections, partitioned by the disk driver, and each section has a device file name. Processes can access data in a section by opening the appropriate device file name and then reading and writing the "file," treating it as a sequence of disk blocks.

A section of a disk may contain a logical file system, consisting of a boot block, super block, inode list, and data blocks (as discussed earlier). The mount system call connects the file system in a specified section of a disk to the existing file system hierarchy, and a "umount"system calls disconnects the file system from the hierarchy. The mount system call allows users to access data in a disk section as a file system rather than a sequence of disk blocks. Processes can then access files on the mounted file systems and ignore the fact that they are detachable.

The operating system kernel has a mount table with entries for every mounted file system. Association of the mount point inode and the root inode of the mounted file system, set up during the mount system call, allows the kernel to traverse the file system hierarchy without any user knowledge.

It should be readily apparent, that when taken together with remote procedure calling mechanisms (explained elsewhere in this Glossary, and discussed in the Detailed Description section of the disclosure), this model can be extended across a network of computer workstations to implement a remote file access system.

The lifetime of a UNIX process can be conceptually divided into a set of states that describe the process. Referring now to FIG. 10, the life of a process can be described as follows.

Process 81 is executing in user mode. Process 82 is executing in kernel mode. Process 83 is not executing but is ready to run as soon as the kernel schedules it. Process 84 is sleeping and resides in main memory (RAM). Process 85 is ready to run, but the swapper must swap the process (or the page daemon must page) into main memory before the kernel can schedule the process to execute. Process 86 is sleeping, and the swapper has swapped the process out to disk memory (or the page daemon has paged out that portion of memory) to make room for other processes in main memory (RAM). Process 87 is returning from kernel mode to user mode, but the kernel preempts it and does a context switch to schedule another process. Process 88 is newly created and is in transition; the process exists, but is not ready to run, nor is it sleeping. This is the start state for all processes. Process 89 executed an exit system call and is in a zombie state. The process no longer exists, but leaves a record containing an exit code and timing statistics for its parent process to collect. This is the final state of a process.

The process states described above give a static view of a process, but processes move continuously between the states according to well-defined rules. See generally, The Design of the UNIX® Operating System, Bach, Maurice J., Prentice Hall, Inc., Englewood Cliffs, N.J. 1986.

The procedure call (sometimes referred to in the art as a function call or subroutine call) is a well-known method for transferring control from one part of a process to another, with a return of control to the caller. Many computer architectures implement this with an instruction of the form "jump-to-subroutine." Associated with the procedure call is the passing of arguments from the caller (hereinafter client) to the callee (hereinafter server). Similarly, there are often one or more return values from the called procedure. In most cases, a client and server are within a single process on a given computer system. They are linked together when the program file is generated. These are called local procedure calls.

In a remote procedure call (hereinafter RPC) a process on the local system launches a procedure on a remote system. The reason this is referred to as a procedure call is because the intent is to make the step transparent to the program relying on it. Nevertheless, remote procedure calls are very different from local procedure calls. Referring to FIG. 11, the following steps describe the process of a remote procedure call.

The client calls a local procedure (a client stub) at 101. It appears to the client that the client stub is the actual server procedure that it wants to call. The purpose of the stub is to package up the arguments to the remote procedure, possibly put them into some standard format, and then build one or more network messages.

Next, these network messages are sent to the remote system by the client stub at 102. This requires a system call into the local kernel.

Next, the network messages are transferred to the remote system at 103.

A server stub procedure is waiting on the remote system for the client's request. It unpacks the arguments from the network messages and converts them for local usage at 104.

The server stub then launches a local procedure call to carry out the actual file server function, passing it arguments that it received in the network messages from the client stub at 105.

When the server procedure is finished, it returns to the server stub with whatever return values that exist at 106.

The server stub, in turn, converts the return values and packages them into one or more network messages to send back to the client stub at 107.

The messages are then transferred back across the network to the client stub at 108.

Next, the client stub reads the network messages from the local kernel at 109.

After converting the return values, the client stub returns to the client function that originally invoked this process at 110. This appears to be a normal procedure return to the client who has no idea what has actually transpired.

See generally UNIX® Network Programming, Stevens, Richard, Prentice Hall, Inc., Englewood Cliffs, N.J. 1990.

Having illustrated and described the principles of our invention in a preferred embodiment thereof, it should be readily apparent to those skilled in the art that the invention can be modified in arrangement and detail without departing from such principles. We claim all modifications coming within the spirit and scope of the accompanying claims. ##SPC1##

Gore, Brooklin J., Mosby, John D.

Patent Priority Assignee Title
10929573, Mar 21 2017 The Boeing Company Systems and methods for designing and modeling products in a cloud environment
5287194, Nov 25 1992 Xerox Corporation Distributed printing
5339247, Apr 19 1991 Hitachi, Ltd. Distributed data CAD system
5442749, Aug 22 1991 Sun Microsystems, Inc. Network video server system receiving requests from clients for specific formatted data through a default channel and establishing communication through separate control and data channels
5511191, Feb 05 1993 International Computers Limited Status monitoring arrangement for a data processing system comprising a number of managed objects
5526491, Sep 22 1992 CISCO TECHNOLOGY, INC , A CORPORATION OF CALIFORNIA System and method for calling selected service procedure remotely by utilizing conditional construct switch statement to determine the selected service procedure in common stub procedure
5546581, Dec 23 1991 Microsoft Technology Licensing, LLC Method for integrating a discrete subprogram into a main program
5564109, Sep 13 1991 Eastman Kodak Company Remote user interface for prioritizing and selecting from a plurality of document production peripheral devices
5590245, Apr 06 1994 Offset Studios Limited Method for transmitting image processing jobs from a client system, and routing and performing the jobs in an image processing system
5627658, Dec 14 1994 Xerox Corporation Automatic networked facsimile queuing system
5655152, Dec 10 1992 Matsushita Electric Industrial Co. System for allocating data output requests to output units having different output formats in accordance with data output format compatibility and priority characteristic
5662564, May 15 1996 Exercise device
5687317, Oct 28 1992 Nortel Networks Limited Distributed computer system providing simultaneous access to a plurality of users
5701415, Sep 22 1992 CISCO TECHNOLOGY, INC , A CORPORATION OF CALIFORNIA Method for creating stub file supporting remote procedure calls by generating common code including code utilized by stub procedures to invoke plurality of service procedures
5727148, Nov 25 1992 Fujitsu Limited Message control method and system
5930465, Nov 26 1996 Xerox Corporation Printing system with enhanced print service capability
6057929, Jul 21 1997 AECX Corporation System and method for producing substantially identical drawing prints using dissimilar printing systems
6058437, Aug 04 1997 UNILOC 2017 LLC D.M.A. device that handles cache misses by managing an address of an area allotted via a daemon processor
6094658, Feb 27 1992 Toyota Jidosha Kabushiki Kaisha Teamwork CAD system and process for teamwork designing
6353484, Mar 08 1996 Canon Kabushiki Kaisha Output control apparatus and method and storage medium storing computer readable program
6437869, Mar 31 1994 Canon Kabushiki Kaisha Printer apparatus, printer system and control method therefor
6573910, Nov 23 1999 Xerox Corporation Interactive distributed communication method and system for bidding on, scheduling, routing and executing a document processing job
7064856, Aug 04 2000 UNIPRINT NET CORP Printer driver system for remote printing
7126717, Oct 14 1997 Canon Kabushiki Kaisha Apparatus and method for performing a specific process based on a setup condition, and a storage medium for such a program
7158253, Mar 31 1994 Canon Kabushiki Kaisha Printer, printing control apparatus and printing system using unique job identifiers, and control method therefor
7161699, Mar 31 1994 Canon Kabushiki Kaisha Printer apparatus and printer system using unique job indentifiers, and control method therefor
7187461, Jun 25 2001 III Holdings 6, LLC System for managing digital printers and servers via a network
7213040, Oct 29 2002 JPMORGAN CHASE BANK, N A , AS SUCCESSOR AGENT Apparatus for policy based storage of file data and meta-data changes over time
7265867, Aug 04 2000 UNIPRINT NET CORP Printer driver system for remote printing
7310164, Mar 31 1994 Canon Kabushiki Kaisha Printer, printing control apparatus and printing system using unique job identifiers, and control method therefor
7366980, Jan 18 2000 Autodesk, Inc. Multiple output device association
7434185, Sep 27 2006 GLOBALFOUNDRIES Inc Method and apparatus for parallel data preparation and processing of integrated circuit graphical design data
7453592, Aug 27 2002 Konica Corporation Image processing system
7480068, Jan 11 2001 Sharp Kabushiki Kaisha Methods and systems for page-independent spool file sheet assembly
7548331, Jan 11 2001 Sharp Kabushiki Kaisha Methods and systems for print system component-based remote printing
7602522, Aug 04 2000 UNIPRINT NET CORP Printer driver system for remote printing
7653645, Oct 29 2002 EMC IP HOLDING COMPANY LLC Multi-epoch method for saving and exporting file system events
7679770, Jan 11 2001 Sharp Kabushiki Kaisha Methods and systems for print-processor-based printer status detection and print task distribution
7693891, Oct 29 2002 JPMORGAN CHASE BANK, N A , AS SUCCESSOR AGENT Apparatus for policy based storage of file data and meta-data changes over time
7949990, Dec 10 2001 Siemens Industry Software Inc Parallel electronic design automation: shared simultaneous editing
7987204, Oct 29 2002 EMC IP HOLDING COMPANY LLC Multi-epoch method for saving and exporting file system events
8341559, Jan 30 2009 Synopsys, Inc. Incremental concurrent processing for efficient computation of high-volume layout data
8411298, Jan 11 2001 Sharp Kabushiki Kaisha Methods and systems for printing device load-balancing
8456665, Jan 11 2001 Sharp Kabushiki Kaisha Methods and systems for printing error recovery
8458175, Oct 29 2002 EMC Corporation Multi-epoch method for saving and exporting file system events
8527872, Jan 18 2000 Autodesk, Inc. Multiple output device association
8630008, May 20 2011 Xerox Corporation Method and system for managing print device information using a cloud administration system
8667429, Jan 30 2009 Synopsys, Inc. Incremental concurrent processing for efficient computation of high-volume layout data
8730502, May 20 2011 Xerox Corporation Method and system for managing print jobs using a cloud administration system
8893061, Jan 30 2009 Synopsys, Inc Incremental concurrent processing for efficient computation of high-volume layout data
Patent Priority Assignee Title
3634828,
3684871,
///
Executed onAssignorAssigneeConveyanceFrameReelDoc
Nov 27 1990GORE, BROOKLIN J MICRON TECHNOLOGY, INC ,ASSIGNMENT OF ASSIGNORS INTEREST 0055240697 pdf
Nov 27 1990MOSBY, JOHN D MICRON TECHNOLOGY, INC ,ASSIGNMENT OF ASSIGNORS INTEREST 0055240697 pdf
Nov 28 1990Micron Technology, Inc.(assignment on the face of the patent)
Date Maintenance Fee Events
Sep 16 1992ASPN: Payor Number Assigned.
Aug 03 1995M183: Payment of Maintenance Fee, 4th Year, Large Entity.
Dec 29 1999M184: Payment of Maintenance Fee, 8th Year, Large Entity.
Dec 09 2003M1553: Payment of Maintenance Fee, 12th Year, Large Entity.


Date Maintenance Schedule
Jul 07 19954 years fee payment window open
Jan 07 19966 months grace period start (w surcharge)
Jul 07 1996patent expiry (for year 4)
Jul 07 19982 years to revive unintentionally abandoned end. (for year 4)
Jul 07 19998 years fee payment window open
Jan 07 20006 months grace period start (w surcharge)
Jul 07 2000patent expiry (for year 8)
Jul 07 20022 years to revive unintentionally abandoned end. (for year 8)
Jul 07 200312 years fee payment window open
Jan 07 20046 months grace period start (w surcharge)
Jul 07 2004patent expiry (for year 12)
Jul 07 20062 years to revive unintentionally abandoned end. (for year 12)