Internet-Based Micro-Electronic Design Automation (IMEDA) Framework:Design Flow Graph Properties
Design Flow Graph Properties
Initially, a flow graph created by a user using GUI is not associated with any system-specific information. For example, when a designer creates an atomic task node in a flow graph, there is initially no association with any external tool. The framework must provide a mechanism for users to bind flow graph entities to the external tools or activities that they represent.
We have used the concept of properties to allow users to bind flow graph objects to external entities. In an attempt to maintain flexibility, properties have been implemented in a very generic fashion. Users can define any number of properties for flow object. There are a number of key properties that the framework recognizes for each type of flow object. The user defines these properties to communicate needed configuration data to the framework.
A property consists of a property label and property contents. The label identifies the property, and consists of an alpha-numeric string with no white space. The contents of a property is any string. Currently users define properties using a freeform text input dialog, with each line defining a property. The first word on a line represents the property label, and the remainder of the line constitutes the property contents.
Property Inheritance
To further extend the flexibility of flow object properties, the framework requires that each flow object be associated with a flow object class. Classes allow designers to define properties that are common to all flow objects that inherit from that flow object class. Furthermore, classes are organized into a general- to-specific hierarchy, with children classes inheriting properties from parent classes.
Therefore, the properties of a particular class consist of any properties defined locally for that object, in addition to properties defined in the object’s inherited class hierarchy. If a property is defined in both the flow object and one of its parent classes, the property definition in the flow object takes precedence. If a property is defined in more than one class in a class hierarchy, the “youngest” class (e.g., the child in a parent-child relationship) takes precedence.
Classes are defined in the Class Browsers of IMEDA. Designers that have identified a clear general-to- specific hierarchy of flow object classes can quickly create design flow graphs by dragging and dropping from class browsers onto flow design canvases. The user would then need only to overload those properties in the flow objects that are different from their respective parent classes. (See Figure 75.15.)
For example, consider a class hierarchy of classes that all invoke the same external sort tool, but pass different flags to the tool, based on the context. It is likely that all of these tools will have properties in common, such as a common working directory and tool site. By defining these common properties in a common ancestor of all of the classes, such as Search, it is unnecessary to redefine the properties in the children classes.
Of course, children classes can define new properties that are not contained in the parent classes, and may also overload property definitions provided by ancestors. Following these rules, class Insertion would have the following properties defined: WORKDIR, SITE, WRAPPERPATH, and CMDLINE. (See Figure 75.16.)
Macro Substitution
While performing benchmarks on IMEDA, one cumbersome aspect of the framework that users often pointed out was the need to re-enter properties for tasks or specifications if, for example, a tool name or working directory changed. Finding every property that needed to be changed was a tedious job, and prone to errors. In an attempt to deal with this problem, we came up with the idea of property macros. That is, a property macro is any macro that is not a key system macro. A macro is a textual substitution rule that can be created by users. By using macros in the property databases of flow objects, design flows can be made more flexible and more amiable to future changes.
As an example, consider a design flow that contains many atomic tasks bound to an external tool. Our previous example using searches is one possible scenario. On one system, the path to the external tool may be “/opt/bin/sort,” while on another system the path is “/user/keyesdav/public/bin/sort.” Making the flow object properties flexible is easy if a property macro named SORTPATH is defined in an ancestor of all affected flow objects. (See Figure 75.17.) Children flow objects can then use that macro in place of a static path when specifying the flow object properties. As a further example, consider a modification to the previous “Search task hierarchy” where we define a macro SORTPATH in the Search class, and then use that macro in subsequent children classes, such as the Insertion class.
In the highlighted portion of the Property Database text area, a macro called “SORTPATH” is defined. In subsequent class’ Property Databases, this macro can be used in place of a static path. This makes it easy to change the path for all tools that use the SORTPATH property macro—just the property database dialog where SORTPATH is originally defined needs to be modified. (See Figure 75.18.)
Key Framework Properties
In our current implementation of IMEDA, there are a number of key properties defined. These properties allow users to communicate needed information to the framework in a flexible fashion. Most importantly, it allows system architects to define or modify system properties quickly. This is an important benefit when working with evolving software such as IMEDA.
Comments
Post a Comment