­

Virtuoso Documentation

Introduction

The Virtuoso Core Framework provides the building blocks for applications to be developed using an intuitive schematic approach. The Core Framework is architecturally agnostic to host languages, language constructs, and design patterns. As a schematic oriented tool, Virtuoso host designs begin with a “declarative” approach of instantiating components and then schematically defining relationships and information flow between the components via port connections.

What it means for a host component to be added to a host, or for ports on one component to be connected to another component, is defined by a particular host platform plugin. For example, a WPF C#/.NET host plugin translates a schematic design to a corresponding C# WPF application, and depends on component metadata and port metadata plugins to describe component instantiation and interconnection in C#.

As an example, two C# objects might expose double precision properties, and the intent might be for one object to drive the other object’s property. This type of data binding pattern is common in MVVM applications, where a view will bind to a view model and respond automatically to updates in the view model. With the Virtuoso approach, however, a Virtuoso schematic component may or may not have a corresponding view, but if it does, that component’s view always binds to that component’s own view model. Then other components may interact with the component’s view model on the logical schematic layer.

Any host plugin, whether it supports the C# language, Visual Basic, or other language, depends on a common framework of extensible plugins, specifically plugins which describe port types and components. Plugins that describe port metadata inform the host plugin of what it means for a particular port type to connect to a port of the same type or a different type. If port metadata indicates to a host plugin that two ports can be connected, the port metadata is also responsible for providing the host language code that would be needed to accomplish whatever it means to logically connect the two ports. A single port connection between ports can involve emission of code to several different application regions depending on the metadata.

The component metadata functions similarly, describing a component to the host plugin in a way that the host plugin can understand. A component’s metadata includes the definitions of the ports on the component, and a reference to the port metadata for each port. For example, a component with a Boolean output port must define the name of the port, unique to the component, and a reference to the Boolean output port metadata. The Boolean output port metadata contains the code snippets for the code that is to be emitted when the Boolean output port is connected to other ports. The component metadata for a component with a Boolean output port just references the Boolean output port metadata implementation, thus the definitions of ports and their behaviors is sharable and reusable.

The result of this is a design flow that is extremely fast, extensible, and customizable.

The Core Framework consists of the following:

  • The Virtuoso Schematic Editor and related tools.
  • The Core Port Metadata and Component interfaces that provide the foundational relationships upon which host plugins can be built.
  • A Standard library of port metadata, port implementations, component metadata and component implementations.
  • A library of host plugins and host templates. The host plugin defines the host language and IDE, and provides the plugin functionality needed to integrate with the schematic editor and respond to user actions. A host template is a specific starting reference implementation based on a particular host type.

The reasons for considering using the Core Framework to design your own application or ecosystem are as follows.

  • You have a commonly recurring application that involves a solution that is inherently graphical in nature. An example may be a neural network design ecosystem, a control system design ecosystem, a digital signal processing ecosystem, a business process ecosystem, an application requiring graphical configuration, or an application which can most intuitively be described and analyzed graphically.
  • You desire users to be able to perform their own design/development without requiring them to know the details of an underlying host language.
  • You want to leverage the existing content of the Core Framework component and port ecosystem.

For more details regarding the use of the Core Framework, the Core Framework End User License Agreement is available at https://www.virtuoso-software.com/core-framework/