Abstract:
A computer-aided engineering and design (CAE/CAD) tool for defining and verifying a system definition provides an improved technique for modeling multi-disciplinary signals. Terminals within the system definition have associated quantities (voltage, current, energy, velocity, flux, flow, acceleration, heat, weight, length, etc.) from diverse disciplines (e.g., electrical, mechanical, thermal, optical, chemical, and fluidic etc.). A strength (e.g., &#34;indifferent&#34;, &#34;suggest&#34;, &#34;insist&#34;, or &#34;overide&#34;) is also associated with each terminal. The quantities of each terminal are nominated to be the quantities of a node the terminal is connected to. When conflicting quantities are assigned to a common node in the system (i.e., a plurality of terminals with different associated quantities connect to the same node), rules based on the associated terminal strengths are applied to resolve the conflict. An initial node quantity and node strength are assigned to the common node based on the resolution of the conflict. Node quantities are then propagated through their associated terminals and through connecting branches to other terminals and nodes. When conflicting initial quantities exist in a common branch that connects a plurality of nodes, rules based on the associated initial node strengths are applied to resolve the conflict. Finally, internal signals of components inherit the quantities of the nodes they are associated with.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The invention relates to automated design systems, particularly to such systems for modeling and simulating systems with multi-disciplinary signals therein. 
     2. Background of the Invention 
     Computer-aided engineering and design (CAE/CAD) software and hardware tools are used for automating the process of defining (i.e., &#34;modeling&#34;) and verifying (i.e., &#34;simulating&#34;) prototype system designs. Most CAE/CAD tools are designed to function in substantially a single discipline using a limited set of signal types or quantities--typically the electrical discipline using voltage and/or current signal types. However, modeling languages allow users to describe models for components from any technical discipline, including electrical, mechanical, thermal, optical, chemical, and fluidic technologies. A modeling language should support models developed for particular disciplines, and should also support models that can be used in any discipline. 
     To enable multi-disciplinary system design, however, it is necessary, among other things, to support the modeling of various signal types or &#34;quantities&#34;, such as voltage, current, energy, velocity, flux, flow, acceleration, heat, weight, length, and the like, at interconnection points or nodes in the system design. In addition, a simulator generally needs a rough estimate of how large the signals are expected to be (e.g., 10 6-  amperes and 10 9  grams). Accordingly, there is a need for an improved tool to model signals with various different quantities. 
     SUMMARY OF INVENTION 
     The invention resides in a computer-automated system for modeling a system comprising a first terminal with an associated first quantity and a first strength and a second terminal with an associated second quantity and a second strength. Terminal quantities are nominated to nodes that the terminal is connected to. When conflicting quantities are nominated to a common node in the system (i.e., a plurality of terminals with different associated quantities connect to the same node), rules based on the associated terminal strengths are is applied to resolve the conflict. An initial node quantity and node strength are assigned to the common node based on the resolution of the conflict. Node quantities are then propagated through terminals and connecting branches to other terminals and nodes. When conflicting initial quantities exist in a common branch that connects a plurality of nodes, rules based on the associated initial node strengths are applied to resolve the conflict. Finally, internal signals of a component inherit the quantity of the nodes the component is connected to. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a simplified block diagram of one embodiment of a computer-based electronic design automation (EDA) tool for implementing the present invention. 
     FIG. 2 is a high-level flow chart depicting one embodiment of the quantity definition process of the present invention. 
     FIG. 3 is a flow chart depicting one embodiment of the quantity assignment process of the present invention. 
     FIG. 4 is a hypothetical abstract system definition model as used in the present invention. 
     FIG. 5 is a flow chart depicting one embodiment of the quantity propagation and quantity inheritance processes of the present invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     FIG. 1 shows a block diagram of one embodiment of integrated software and hardware tools for implementing the present invention 10. The preferred embodiment may be implemented in a computer aided-engineering and/or design (CAE/CAD) system. Engineering workstation or other conventional processor 12 may also be coupled to other processors accessible over conventional communication channels or buses (not shown). Processor 12 is conventionally coupled to storage 14 which may be magnetic disk storage, a CD storage unit, or other conventional computer data storage unit. Processor 12 is also coupled to memory 16. Memory 16 may be a random access memory (RAM) unit or other conventional computer memory. Items in memory 16 may alternatively be stored in storage 14 and accessed by processor 12 when required. If sufficient memory 16 is provided, storage 14 is not essential. Memory 14 may comprise, among other items, program 13, quantity definitions 20, simulator 30, structural models or netlist 40, behavioral models or model definitions 50, and conflict resolution 60. Program 13 may comprise subprograms or modules that define executable instructions for execution on processor 12 in memory 16. Program 13 may also be stored in storage 14. 
     Quantity definitions 20 are defined for each signal type in the system to be modeled (e.g., voltage, current, force, velocity, acceleration, pressure, heat, flow, etc.). Each quantity definition 20 comprises a quantity or name 22 (e.g., &#34;voltage&#34;, &#34;current&#34;, &#34;velocity&#34;). Additionally, each quantity 22 may be associated with one or more parameters such as units (e.g., &#34;v&#34; for volts, &#34;A&#34; for amperes, &#34;m/s&#34; for meters per second), scale factor, absolute minimum/maximum tolerance, or other parameters 24 that describe general features of a quantity 22. Associations between quantities 22 and parameters 24 are conventionally made in memory 16 by processor 12 in conjunction with software running thereon. 
     Simulator 30 may be a software program and/or hardware accelerator which cooperates with, or is executed by, processor 12. Simulator 30 may be a conventional simulation environment such as Spectre, VHDL, or SPICE. As should be known or obvious to persons ordinarily skilled in the relevant art, simulator 30 serves to predict or verify behavior or functional output of systems in response to applied stimuli or input signals given a structural description of the components in the system and a behavioral description of each primitive element in the system. 
     Netlist 40 is generally a list of all of the components in the system (e.g., components such as voltage source V2, resistor R3, spring S32, flow source F2 where V2, R3, S32, and F2 are hypothetical designations). In FIG. 1 an example component 42 comprising various associated elements is shown. Netlist 40 may contain multiple instances of such a component 42, and numerous variations thereof. Components 42 may also be composite components that comprise other components or subcomponents 42. Component 42 may comprise, for example, terminal(s) 44 which connect to nodes 47. Component 42 may comprise any number of terminals 44 and may be connected to any number of nodes 47. A node 47 is a point of interconnection between one or more components 42. A component 42 connects to nodes 47 through its terminals 44. Any number of terminals 44 (and therefore any number of components 42) can be connected to the same node 47. A branch 48 defines a path between two terminals 44 of a component 42 that connect to two nodes 47. Generally, nodes 47 connected to a common branch (path) 48 must have the same quantities 22 for meaningful simulation. Netlist 40 may also comprises certain parametric information or values 46 associated with each component (e.g., &#34;5&#34; ohms). Components 42 may also comprise internal signals 49. Netlist 40 may be specified in model definitions 50, a schematic, or memory. Associations between elements of a component 42, components 42, elements of netlist 40, and other elements in memory 16 are conventionally made in memory 16 by processor 12 in conjunction with software running thereon. 
     Behavioral model or model definitions 50, describes the behavior of each primitive element 52 (e.g., voltage sources, resistors, springs, flow sources). In 
     FIG. 1 an example primitive element 52 comprising various associated elements is shown. Model definitions 50 may contain multiple primitive elements 52 and numerous variations thereof. Generally, each primitive element 52 comprises constitutive relations or mathematical models/equations 53 (e.g., ν=iR) that describe the behavior of each primitive element 52. In the present invention, each primitive element 52 also comprises model terminal definition(s) 54 associated with each primitive element 52; one or more quantities 22 associated with each model terminal 54; and, a strength 56 associated with each model terminal 54. Additionally, a list of nodes 47 and associated quantities 22 (if any) of each node and a list of branches 48, including the name of the model terminals 54 or nodes 47 to which each end of the branch connects may be specified in model definitions 50 (not shown). Behavioral models for each primitive element 52 may be supplied by the user, retrieved from a library, built-in to the simulator 30, specified in netlist 40, or specified in a behavioral modeling language, for example SpectreHDL. Associations between elements of primitive elements 52, primitive elements 52, elements of model definitions 50, and other elements in the memory 16 are conventionally made in memory 16 by processor 12 in conjunction with software running thereon. 
     In the preferred embodiment of the present invention, one or more quantities 22 may be associated with each model terminal 54 of each primitive element 52 modeled. For example, a model terminal 54 of a &#34;resistor&#34; primitive element 52 may be associated with &#34;voltage&#34; and &#34;current&#34; quantities 22. Similarly, a model terminal 54 of a magnetic core primitive element 52 may be associated with &#34;MMF&#34; and &#34;flux&#34; quantities 22, a model terminal 54 of a spring primitive 52 may be associated with &#34;displacement&#34; and &#34;force&#34; quantities 22, and so on. In one embodiment, two quantities 22 are associated with each model terminal 54 of each primitive element 52 in model definitions 50. In this case, each model terminal 54 generally has an associated &#34;potential&#34; or &#34;across&#34; quantity 22 (e.g., voltage, MMF, displacement) and a &#34;flow&#34; or &#34;through&#34; quantity 22 (e.g., current, flux, force). 
     The quantities 22 associated with each model terminal 54 are also associated with the component terminals 44 of each component 42 that names, specifies, or uses that type of primitive element 52. For example, if component &#34;R23&#34; 42 is associated with the &#34;resistor&#34; primitive 52, and if the &#34;resistor&#34; primitive 52 has a model terminal 54 associated with &#34;voltage&#34; and &#34;current&#34; quantities 22, then the terminals 44 of component 42 will also be associated with &#34;voltage&#34; and &#34;current&#34; quantities 22. See FIG. 4 for an illustrative example (explained in further detail below). 
     Additionally, each model terminal 54 may be associated with one or more strengths 56. Possible strengths 56 are, for example, &#34;indifferent&#34;(low strength), &#34;suggest&#34;medium strength), &#34;insist&#34;(high strength), or &#34;override&#34; (highest strength) and may be designated, for example, as 0, 1, 2, 3, respectively. Strengths 56 define how strong the quantities 22 should be associated with each model terminal 54 (and thus how strong the quantities 22 should be associated with a specific component terminal 44 that names the primitive 52). See FIG. 4 for an illustrative example (explained in further detail below). A strength 56 for model terminal 54 is not necessary and can be unspecified. 
     Referring now to FIG. 2, a high level flowchart depicting the node quantity definition process for each node in system definition 100 is shown. Initial system definition 100 is specified as described above, i.e., quantity definitions 20, netlist 40, and model definitions 50 are specified including quantities 22, parameters 24, primitives 52, model terminals 54, strengths 56, components 42, terminals 44, values 46, nodes 47, and branches 48. Initial system definition 100 may be supplied by the user, retrieved from a library, built-in to the simulator 30 (e.g., Spectre), specified in netlist 40, and/or specified in modeling language (e.g., SpectreHDL). 
     The node quantity definition process 200 comprises node quantity assignment 210, node quantity propagation 230, and node quantity inheritance 240. Conflict resolution 60 is used to determine node quantities 200. Each of the processes 60, 100, 210, 230, 240 may be defined in programs or modules 13 executable on processor 12 in memory 16. After node quantities are determined 200, the final system definition 250 can be used, for example, in simulation 260. 
     FIG. 3 is a flow chart depicting one embodiment of the quantity assignment process 210 of the present invention. Quantities 22 and strengths 56 associated with each model terminal 54 are bound 212 to the respective terminals 44 of components 42. For example, if component R1 is a &#34;resistor&#34; 42 having terminals T1 and T2 44, and the resistor primitive 52 has model terminal 54 associated with quantities &#34;voltage&#34; and &#34;current&#34; 22 and strength &#34;suggest&#34; 56, then the terminals T1 and T2 44 will be also be bound to quantities &#34;voltage&#34; and &#34;current&#34; 22 with strength &#34;suggest&#34; 56. This binding is illustratively shown in 
     FIG. 4 by arrows that connect quantities 22 and the strengths 56 to their respective terminals 44. 
     For each node 47, components 42 connected via their terminals 44 to the node &#34;nominate&#34; 214 the quantities 22 from their terminals 44 to the node 47. For example, if components R1 and R2 have terminals T1 and T2, respectively, and T1 and T2 are both connected to node N1, then the quantities associated with (bound to) T1 and T2 will be nominated for use at node N1. 
     If a conflict 216 occurs at a common node 47 (e.g., conflicting quantities 22 associated with a plurality of connecting terminals 44 are nominated to a node 47), conflict resolution rules 60 are used to resolve the conflict 218. Conflict resolution rules 60 are based on, among other things, the strengths 56 associated with each terminal 44. 
     For example purposes, a hypothetical abstract system definition model is shown in FIG. 4. If component Resistor1 (42) having terminal Terminal1 (44) with quantities voltage and current (22) and strength &#34;suggest&#34;(56) is connected to node Nodel (47), and component Core1 (42) having terminal Terminal2 (44) with quantities MMF and flux (22) and strength &#34;insist&#34;(56) is also connected to Nodel (47), then Node 1 (47) will be assigned quantities MMF and flux (22) with a strength &#34;insist&#34;56) because a &#34;insist&#34; strength is, for example, stronger than &#34;suggest&#34; strength. 
     Each node is similarly processed until all nodes have an initial node quantity assignment 220. Initially assigned node quantities 22 are then propagated through their connecting branches to other nodes 230. 
     Referring now to FIG. 5, after all nodes have initial quantity assignments 210, the quantities 22 initially assigned to each node 47 are propagated 232 to other nodes 47 via their connecting terminals 44 and/or branches 48. If a conflict 234 occurs between nodes 47 (e.g., conflicting quantities 22 are associated with a plurality of nodes 47 connected through a common branch 48), conflict resolution rules 60 are used to resolve the conflict 236. Conflict resolution rules 60 are based on, among other things, the strengths 56 associated with each terminal 44. It is desirable to have a common quantity type 22 associated with the nodes 47 in each branch 48 in order to make meaningful calculations and/or simulation possible. Different branches 48 in the same system 100 can, however, have different quantities 22. 
     For example, in FIG. 4, branch Branch1 in component Resistor1 is connected to node Nodel (via Terminal1) and node Node2 (via Terminal3). The is initially assigned quantities at Node 1, MMF and flux with strength &#34;insist&#34;, are propagated through Terminal1, Branch1, and Terminal3 to Node2. If Node2 is initially assigned quantities voltage and current with strength &#34;suggest&#34;(not shown), then Node2 will be changed to quantities MMF and flux with a strength &#34;insist&#34; because a &#34;insist&#34; strength is, for example, stronger than &#34;suggest&#34; strength. Each node is similarly processed until all nodes have a node quantity assignment 238. Node quantities are then inherited 240 by their internal signals, if any. 
     Internal signals 49 of components 42 &#34;inherit&#34; 242 the quantities 22 assigned to their associated nodes 47. For example, a voltage source, V1, having an internal signal called &#34;current signal.&#34; V1 may be connected to a node 47 (via terminal 44) having assigned node quantities MMF and flux. Thus, internal signal &#34;current signal&#34; 49 will have quantities MMF and flux imposed on it 242. For example, in FIG. 4 internal signal 49 may be assigned MMF and flux quantities 22. 
     If conflicts in node quantity definitions remain in the system definition 250, an error 252 may be reported. For example, if equal strengths 56 associated with a plurality of terminals 44 with different associated quantities 22 are connected to a common node 47, the system may note this unresolved conflict and report an error 252. Processing can continue or be aborted. Alternatively, error reporting can be made immediately when an unresolved conflict is detected. Other user defined rules or preferred quantities can also be made. For example, a user may specify a global environment preference for &#34;voltage&#34; and &#34;current&#34; quantities 22 when the system cannot resolve the conflict (e.g., 218, 236) using strengths 56. 
     Thus, employing to the present invention, a final system definition with quantities assigned to nodes is generated 260. Quantity definitions 22 (e.g., quantity parameters 24) are incorporated into the system definition 260. Subsequent simulation 270 can be also be performed. In this respect, the present invention can also be used to &#34;translate&#34; a system definition 100 with quantities defined at terminals to a system definition with quantities defined at nodes 260. The translated system definition 260 can then be used in a simulation 270 that requires quantities defined at the node.