Introduction to uml2hdl Transcript

Hi, I'm Ben Cooper, uml2hdl project manger, and I'd like take you on a quick tour of uml2hdl.
First, we'll go over the various panels where we'll be working, and then we'll step through the uml2hdl design flow.

Diagram Drawing Area

The large central pane is the diagram drawing area where we create our diagrams.
All uml2hdl designs start with a top level object diagram, so that's where we'll start.
There are two views of a diagram.  The UML view which shows the graphic model, and the HDL view, which shows the HDL source in the currently selected language.  You can shift between the views at any time by selecting a tab at the top.  You can always view the HDL for any diagram, but if the design has not been completely specified, warnings or errors will be displayed in the Generation tab at the bottom.


The navigator frame in the lower left displays a hierarchical tree of the design document. A uml2hdl document can contain multiple diagrams organized as a tree.  When HDL is generated each diagram results in a separate HDL entity or module.  As diagrams, or objects are added to the document they appear in the diagram tree.  Selecting a node on the tree causes the diagram or object to be displayed in the diagram drawing pane.


The Overview pane at the upper left, provides a birds-eye view of the current diagram, and allows the user to move to objects of interest.


UML Objects are instantiated from UML Classes.  The available UML Classes are displayed on the Palette frame at the upper right.  uml2hdl includes a library of verified classes that provide standard HDL building blocks, such as counters and registers and so on.
Existing HDL files, or even uml2hdl documents, can also be imported into uml2hdl as UML Classes. These classes are available on the HDL or Doc tabs.

Properties Editors

Properties Editors are used to specify design parameters. They are available in tabs on the lower right. 
Document properties such as the HDL language, or the disk directory for the generated HDL, as well as the pad stack of input and output ports, are specified in the Document properties Editor
The Object properties editor is used to configure the properties of individual objects.  Each Object has tagged values that specify the behavior of the object instance.  Drop down menus make tagged value selection quick and reliable.


Context Sensitive Help is available by clicking on the Help Icon with the question mark and arrow, then clicking on the frame you need help with.



Now, we're ready to put it all together and go though the standard uml2hdl design flow.

First Instantiate objects by dragging UMLClasses from the palette to the diagram.




Second, configure the objects.  Select an object, then use the Object Properties Editor to configure it to meet your design requirements. 

Each object should be assigned a descriptive name.  When HDL is generated, variable names are  created from the object name and the output name, so using a meaningful object name makes the generated HDL much more understandable.

Properties that are constants, like the width of a counter, must be specified using a Named Constant.  Assignment of named constants is done by selecting from the drop down list of currently defined Named Constants, or by selecting "Add" to define a new one.

Each UML Class has additional properties that can be assigned to specify the required behavior for the object.  These properties are selected from drop-down menus in the Object Properties Editor.



The third step is to specify the interconnections between the objects.
The UML term for an association between objects is a "link".  In uml2hdl a link is assigned to every object input.  This link is an expression that consists of at least one object output name, but can also include additional operators, constants, and outputs formatted as an expression in the native HDL.  To specify a link, select the ellipsis of an input in the object properties editor.
The Expression Editor appears.  The Expression Editor makes entry of expressions very easy. Tabbed panels allow object outputs, constants or operators to be entered by simple mouse clicks.
Most expressions consist of just a single output, which connects the output to the input.  The Expression Editor tab, includes a tree of all of the outputs in the document.  Double clicking on any of these outputs instantly enters the output name in the expression.
More complex expressions can be entered by including operators or constants with outputs from the corresponding tabs.
The syntax of the expression is checked and reported in the lower right panel.


Now comes the fun part.  Generate the HDL for your model. If you just want to see what the HDL for your current diagram look's like, select the HDL tab in the diagram pane.  The formatted Verilog or VHDL is displayed instantly.
To generate HDL files for your complete document, select the generate or gear icon, or File -> Generate from the menu.  The HDL files will be written to the directory specified in the document properties.
Warning or Error messages are displayed below the main diagram panel.
Each object diagram in a multiple diagram document results in a separate HDL entity or module  file, but don't worry... the code generator takes care of generating and updating all of the module or entity headers. 

Now that you have finished this quick tour I'm sure you will want to see uml2hdl in action implementing a real-world application.  Our next screencast shows how to implement an asynchronous serial transmitter using uml2hdl.  I'll meet you there....