hdt manual

44
Sigasi HDT User Manual Sigasi Team September 14, 2010

Upload: heeckhau

Post on 24-Jun-2015

143 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: HDT Manual

Sigasi HDT User Manual

Sigasi Team

September 14, 2010

Page 2: HDT Manual
Page 3: HDT Manual

CONTENTS

1 Introduction 3

2 Setting up Sigasi HDT 52.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3 Software updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3 Setting up a project 73.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.2 Starting a new project from scratch . . . . . . . . . . . . . . . . . . . . . . . . . . 73.3 Pointing to an existing VHDL project . . . . . . . . . . . . . . . . . . . . . . . . . 73.4 Importing a project from an archive . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4 VHDL Libraries 94.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.2 VHDL library concepts in Sigasi HDT . . . . . . . . . . . . . . . . . . . . . . . . . 94.3 External libraries usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.4 Library configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104.5 Library configuration use cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

5 User Interface 135.1 Project views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.2 Project view usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.3 Project exploration and navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

6 VHDL-specific editing 156.1 Block selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156.2 Align . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156.3 Move lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156.4 Indent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156.5 Fix Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

7 Linting and quickfixes 177.1 Marker icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177.2 Severity level configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177.3 Linting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177.4 Quickfixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

8 Autocompletion 19

i

Page 4: HDT Manual

8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198.2 Autocompletion interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198.3 Autocompletion based on the VHDL language . . . . . . . . . . . . . . . . . . . . 198.4 Autocompletion based on the design context . . . . . . . . . . . . . . . . . . . . . 20

9 Refactoring 219.1 The refactoring interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219.2 Available refactorings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

10 Integration with external tools 2310.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2310.2 External Tools Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2310.3 Creating a builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2410.4 Automatic makefile generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

11 Preferences 31

12 Troubleshooting 33

13 Keyboard shortcuts 3513.1 Top 11 keyboard shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3513.2 Keyboard shortcut reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Index 39

ii

Page 5: HDT Manual

Sigasi HDT User Manual

Contents:

CONTENTS 1

Page 6: HDT Manual

Sigasi HDT User Manual

2 CONTENTS

Page 7: HDT Manual

CHAPTER

ONE

INTRODUCTION

Sigasi HDT is the compelling next-generation development environment for VHDL designers.

Sigasi HDT is an intelligent development environment (IDE). It differs from other develop-ment tools in that it contains an ultra-fast VHDL parser and compiler that runs transparentlyin the background. At any given moment as you make modifications, the tool fully under-stands the design in terms of VHDL concepts. This technology makes it possible to support awide range of powerful features:

Intelligent navigation Navigate to any VHDL object in the design by selecting it in a hierar-chical view. Or directly navigate from an object to its declaration.

Instant error reporting Get immediate feedback on errors introduced by a modification.

Quickfixes Fix errors by using a quickfix proposed by the tool.

Intelligent code completion Use the tool to assist in completing VHDL constructs based onits knowledge of the design.

Refactoring Use the tool to make sophisticated code transformations that maintain the behav-ior of the design.

All these features create a novel user experience that greatly improves productivity.

The last feature that was mentioned, refactoring, is Sigasi HDT’s most innovative and powerfulfunctionality. Refactoring is a modern software development technique. Sigasi HDT imple-ments it for digital hardware design.

Refactoring makes a new level of automation available to the designer. You can use it to makecode clearer and more reusable, to find bugs, and to prepare code for adding new functionality.Examples of refactorings are:

• intelligent rename of VHDL objects over the whole design

• making all modifications to add or remove a port in a single action

• making all modifications to add or remove a connection in a single action

• modifying design hierarchy

• making code technology independent

Refactoring is a large topic on itself. For that reason, we have written a dedicated book aboutit: The VHDL Refactoring Book (in The VHDL refactoring book).

3

Page 8: HDT Manual

Sigasi HDT User Manual

4 Chapter 1. Introduction

Page 9: HDT Manual

CHAPTER

TWO

SETTING UP SIGASI HDT

2.1 Installation

Sigasi HDT is distributed online or on a CD-ROM. To install it, first find the right archive foryour platform according to the following table:

Platform Archive nameLinux HDT-linux-<version>.zipWindows HDT-win32-<version>.zipMac

Choose or create a folder where you want to install the software, and unpack the archive there.The archive contains a single top-level folder called hdt. Inside the hdt folder there is anapplication startup file, also called hdt. Start the application by executing the hdt startup file.

2.2 Configuration

Sigasi HDT stores its projects on the file system in one or more workspaces.

When you start the tool for the first time, it will suggest to create a workspace for

you: Although you can work with multipleworkspaces, we recommend to use a single workspace for all your projects.

2.3 Software updates

Sigasi HDT has an automated update system. When updates are available, you arenotified by a pop-up window called Updates Available in the bottom right corner:

5

Page 10: HDT Manual

Sigasi HDT User Manual

If you want to install the updates, click any-where in the pop-up window. After a few seconds, a new window will appear with furtherinstructions.

The updates can be postponed by closing the pop-up. You can perform the updates at any

time by clicking the -icon in the status bar at the bottom of the screen.

Consult the troubleshooting section if the update does not start automatically.

6 Chapter 2. Setting up Sigasi HDT

Page 11: HDT Manual

CHAPTER

THREE

SETTING UP A PROJECT

3.1 Introduction

Your work with Sigasi HDT is organized as a project. A project is a collection of VHDL filesthat belong together. Sigasi HDT understands the VHDL units defined in the files, and therelationships between them.

Your first step with Sigasi HDT is to set up a project. There are a number of ways to do this:

• Starting a new project from scratch

• Converting an existing VHDL folder into a HDT project

• Importing a HDT project from an archive

Each of these methods is discussed in detail in the following sections.

3.2 Starting a new project from scratch

To create a new project, select File→ New→ VHDL Project. Then give your project a name.

By default, the Use default location checkbox is checked, which means that new projects willbe located in the workspace folder. Alternatively, you can uncheck the checkbox and choosean arbitrary location for your project instead.

After creating a new project, you can add existing files by dragging them from your filesysteminto the project explorer. New files can be added by clicking File→ New→ VHDL file.

3.3 Pointing to an existing VHDL project

If you have an existing VHDL project, you can easily start working on it with Sigasi HDT.

To create a new HDT project from you existing VHDL project, use File → New → Point toexisting VHDL project. Then, select the top level folder of your existing VHDL project. SigasiHDT will add a few hidden project files to your folder, and the project is ready to be used fromSigasi HDT.

7

Page 12: HDT Manual

Sigasi HDT User Manual

3.4 Importing a project from an archive

Sigasi HDT projects can be shared with others using file archives. All project-related settingsare stored in two hidden files in the project folder. Therefore, you can just create an archive ofthe entire top level folder (File→ Export→ General→ Archive file) and send it to someone else.

To import a project from an archive, point Sigasi HDT to the project by clicking: File→ Import→ General → Existing projects into Workspace. Next select Select archive file:, browse to yourproject archive, and press Finish.

8 Chapter 3. Setting up a project

Page 13: HDT Manual

CHAPTER

FOUR

VHDL LIBRARIES

4.1 Introduction

VHDL libraries are a very powerful albeit slightly complex feature of the VHDL language.Sigasi HDT tries to make it easy and straightforward to configure and use them.

In this chapter, we assume that the basic concepts of VHDL libraries are understood. We willexplain how they are implemented in Sigasi HDT.

We will also present some use case about how to set up VHDL libraries with Sigasi HDT toorganize your projects.

4.2 VHDL library concepts in Sigasi HDT

Sigasi HDT makes a distinction between 3 types of VHDL libraries.

Project libraries These are the libraries in which you store your designs. You have full read-write access to these libraries.

External libraries These are libraries that you need in your design, but that can be treated asread-only.

Built-in libraries The standard VHDL libraries, std and IEEE, are built-in in Sigasi HDT.This means that they are always available without any additional configuration. This isdone for convenience, as any VHDL project will need parts of them.

4.3 External libraries usage

When you define a library as external, you indicate that it is read-only. This has a numberof advantages. First, you cannot accidentally change files that are not in the current project.Moreover, Sigasi HDT will preprocess the files and cache their contents for quick access. This isespecially important for certain third party libraries that contain huge amounts of information.

When an external library is modified by some action outside of the project, the cache becomesout of date. The next time the project is fully compiled, the external library will be recompiledby Sigasi HDT.

9

Page 14: HDT Manual

Sigasi HDT User Manual

Warning: Sigasi HDT currently does not inform you when an external library cache is outof date. To trigger a full recompile of the project, press F6.Also, a software update may render the cache out of date. To reset the cache, select Window→ Preferences→ Libraries and press reset cache.

4.4 Library configuration

4.4.1 Introduction

Like with any VHDL tool, Sigasi HDT needs to know where the libraries are located on the filesystem. In this section, we will describe how library configuration works in Sigasi HDT.

4.4.2 Examining the library configuration

To examine the VHDL library configuration, select Project→ Properties→ Libraries. Per VHDLlibrary, three attributes are listed:

At-tribute

Meaning

name The name of the library.loca-tion

Library location in the form type:/path. type is project for a project library, filefor an external library, and resource for a built-in library. path specifies the pathof the library’s folder on the file system.

ex-cludes

Files and folders that are excluded from the library.

The library location folder is used by Sigasi HDT as the top of a search tree for VHDL files.This means that all subfolders are considered recursively.

4.4.3 Default library configuration

By default, the standard VHDL libraries std and IEEE are configured as built-in resourcelibraries. Moreover, library work is defined as a project library with the top-level project di-rectory as its location.

4.4.4 Editing the library configuration

The library configuration described in the previous section is fully editable. You can use theadd button to add a new library and the remove button to remove an existing library. Further-more, with the edit button a library’s attributes can be modified as follows:

10 Chapter 4. VHDL Libraries

Page 15: HDT Manual

Sigasi HDT User Manual

At-tribute

Edit interface

name The project or external library name can be defined or changed in text field.loca-tion

Press Select external folder for an external library, or Select project folder for aproject library. In both cases, a file browser pops up that lets you select the folderpath. For a project library, this will be relative to the top project folder.

ex-cludes

A file browser pops ups that lets you select files and folders that should beexcluded from consideration as VHDL project files.

4.4.5 Library configuration using a quickfix

A convenient way to configure a new library is by using a quickfix. Start by typing the li-brary declaration of the new library in your code. Sigasi HDT will flag an error and proposethe quickfix Define undefined library. If you choose the quickfix, the library configurationwindow will open with the new library ready to be defined further.

4.4.6 Using a subfolder as the location for another library

Recall that a library’s location folder is used as the top of a search tree for VHDL files.

Sometimes you may want to use a subfolder of a library location as the location of anotherlibrary. Sigasi HDT lets you do this without a problem. Just specify the subfolder as thelocation for the new library. All files found in the subfolder tree will become part of thatlibrary instead of the original one.

Note that the order of the library configurations does not matter. When assigning files tolibraries, Sigasi HDT will use the most specific location definition.

4.4.7 Defining multiple locations for a library

Sometimes it may be convenient to have multiple locations to search for library files. In SigasiHDT, you can add multiple entries for the same library, each with a different location. Alllocations will be considered when looking for VHDL files.

You can even use mix project and external locations for the same library. However, this is notrecommended practice, with the possible exception of the special library work.

4.5 Library configuration use cases

4.5.1 Introduction

Libraries are a powerful but somewhat underutilized feature of VHDL. Sigasi HDT makes iteasy to set them up and take advantage of them. In this section, we describe a number of usecases for working with libraries in Sigasi HDT.

4.5.2 Using the default configuration

Some projects may only need standard libraries and library work. In that case, no additionallibrary configuration is needed. You can just go ahead with the default configuration.

4.5. Library configuration use cases 11

Page 16: HDT Manual

Sigasi HDT User Manual

4.5.3 Using third party libraries

Many projects use third party libraries. These should be defined as external libraries.

A number of popular third party libraries are the following:

Vendor Library Install dir exampleXilinx unisim C:\Xilinx\10.1\ISE\vhdl\src\unisimsXilinx XilinxCoreLib C:\Xilinx\10.1\ISE\vhdl\src\XilinxCoreLibXilinx simprim C:\Xilinx\10.1\ISE\vhdl\src\simprimsAltera altera_mf C:\altera\81\quartus\libraries\vhdl

As an example, we will show how to configure the Xilinx library XilinxCoreLib as an ex-ternal library. Add the following line to your vhdl file:

Library XilinxCoreLib;

When you save, a quick fix icon occurs next to the new line. Select the quickfix Defineundefined library. The library configuration window pops up, with the XilinxCoreLiblibrary marked as undefined.

Select the library location and press edit. A library definition window popsup. Select Select external folder to define the library as external. Thenbrowse to \vhdl\src\XilinxCoreLib in the Xilinx installation to de-fine the path of the library’s folder, and click OK. A pathname similar toC:/Xilinx/10.1/ISE/vhdl/src/XilinxCoreLib will appear. Click OK. As thelibrary is external, the specified folder is scanned for all vhdl files. All these files arepreprocessed and cached for quick access.

4.5.4 Using libraries to organize internal projects

In many organizations, new projects reuse older ones. Moreover, some projects may be set upas IP projects for which reusability is the primary design goal.

It is good practice to use libraries to organize reusable projects. Libraries improve designclarity and avoid name clashes between design units from different projects.

Only the current project should be defined as a project library. The reusable projects that itrefers to should be defined as external libraries. As external libraries are read-only, such aset-up makes the project’s purpose clear and avoids mistakes.

4.5.5 Using libraries to organize design variants

Sometimes it is required to maintain multiple variants of a design unit. For example, an entitydefinition may need to be slightly different depending on the target technology. Although theyare different, you may want to refer to the “same” entity by the same name. Conceptually, sucha problem can be solved by defining the same identifier in different namespaces.

VHDL libraries can emulate namespaces. For example, you could define a library MY_PROJ forthe common design units of a project. In addition, you could define libraries for technology-dependent design units, for example MY_PROJ_XILINX and MY_PROJ_ALTERA. The set-upgives you the required flexibility and clarifies the purpose of all design units.

12 Chapter 4. VHDL Libraries

Page 17: HDT Manual

CHAPTER

FIVE

USER INTERFACE

5.1 Project views

When you open a project in Sigasi HDT, a number of views are presented inthe user interface. Here is a typical screenshot, with the views highlighted:

The functionality of the views is as follows:

project explorer view This view is a hierarchical representation of all files in all projects. Youcan use it to navigate to a particular file in a particular project and select it.

editor view In this view, the contents of the currently selected file are shown. The file contentscan be directly edited here.

problems view In this view, all problems that were detected in the current project are listed.

outline view This view shows the contents of the selected file in terms of VHDL objects. Youcan use it to review the content, and to navigate to a specific VHDL object.

hierarchy view This view shows the VHDL design hierarchy, starting from the VHDL designunits defined in the currently selected file.

5.2 Project view usage

The hierarchy view and the outline view are alternative views on similar information. Youcan switch between them by using the tabs in the containing window. You can also resize theviews by dragging the view separators or reorganize them by dragging the tab label.

13

Page 18: HDT Manual

Sigasi HDT User Manual

The outline and hierarchy view are automatically synchronized with the editor every time thefile is saved. The project explorer view can also be linked with the editor by clicking the link

icon . This is particularly handy for large projects.

The project explorer view can be customized to define which files are shown. Select the icon

View Menu ( ) and then Customize view. You can then select a filter whose matching filesare hidden in the project explorer view.

5.3 Project exploration and navigation

Sigasi HDT offers powerful techniques to explore a project and navigate through it.

Hovering To find the declaration of a given identifier, hold your mouse pointer over it. Afterabout a second, a popup shows you the name and datatype of the signal. This techniqueis called hovering.

Highlighting If you click on an identifier, it is highlighted. In addition, all other occurrencesof the identifier that refer to the same object are highlighted. Note that this highlightingis intelligent: it is not based on the identifier’s string value, but on the object that theidentifier refers to.

Navigate to a declaration You can easily navigate to the declaration of any port, signal, entity,etc. Place the cursor on the identifier, right-click and select Open Declaration. The edi-tor immediately switches to the line that declares the object. Since this operation is socommonly used, it is assigned to the shortcut key F3.

Finding object occurrences To look for occurrences of a given identifier in different files, placeyour cursor on the identifier and right-click. Now select Search References. A search win-dow will appear on the bottom of your workbench, displaying all occurrences of theselected identifier. You can easily navigate through all occurrences by clicking the ShowNext Match arrow and the Show Previous Match arrow in the search result view. Notethat all occurrences are highlighted and marked with a small arrow at the left border ofthe editor for easy recognition.

14 Chapter 5. User Interface

Page 19: HDT Manual

CHAPTER

SIX

VHDL-SPECIFIC EDITING

In addition to the powerful features of an Eclipse editor, Sigasi HDT supports a number ofadvanced editing features which are specifically useful for VHDL editing. These are describedin this chapter.

6.1 Block selection

Block selection is an alternative for standard (paragraph) selection. Block selection mode dif-fers from standard selection mode in that it allows to select rectangular regions, or to set thecursor over multiple lines. Block selection is ideal for selecting vertical regions, for example acolumn of a table or all port names in a port map.

To toggle between normal and block selection modes use Alt+Shift+A or Edit→ Toggle BlockSelection

6.2 Align

You can align the current selection with Edit→Align. Aligning is done by looking at a commondelimiter string in consective lines. The supported delimiter strings are: <= , := => :

Blank lines and comment lines are ignored. Both tabs and spaces are supported.

6.3 Move lines

You can easily move lines up and down by pressing Alt+Up and Alt+Down.

6.4 Indent

You can easily clean up the indentation and remove trailing whitespaces in the current selec-tion, by pressing Ctrl+I.

15

Page 20: HDT Manual

Sigasi HDT User Manual

6.5 Fix Case

VHDL is case insensitive. However, for clarity’s sake it is best to keep the case of identifiersand keywords consistent throughout the project.

By right-clicking in the editor window, you can access the Fix Case refactoring. This actioncleans up the case of the keywords and indentifiers in your file as follows:

• keywords are in lowercase

• enumeration literals are in uppercase

• constants are in uppercase

• the case of other objects is fixed according to their declaration

16 Chapter 6. VHDL-specific editing

Page 21: HDT Manual

CHAPTER

SEVEN

LINTING AND QUICKFIXES

7.1 Marker icons

• marks an info message.

• marks a warning that can be resolved automatically with a quickfix.

• marks a warning cannot be resolved automatically.

• marks an error that can be resolved automatically with a quick fix.

• marks an error that cannot be resolved automatically.

7.2 Severity level configuration

Sigasi HDT has reasonable defaults for the severity level of reported problems. How-ever, the severity level of certain classes of problems is configurable for additional flexi-bility. The configuration interface is available in Window → Preferences, Errors/Warnings.

In the same window, you can set the maximumnumber of markers per file.

7.3 Linting

Sigasi HDT provides info about potential problems in the design. The following problems arereported:

Unused declaration

17

Page 22: HDT Manual

Sigasi HDT User Manual

Declaration could not be found

Missing signal in sensitivity list Both clocked and combinatorial processes are understood.

Unnecessary signal in sensitivity list Both clocked and combinatorial processes are under-stood.

7.4 Quickfixes

Remove declaration An unused declaration is removed.

Generate signal declaration Automatically declare an undeclared signal

Correct sensitivity list The tool will remove or add signals to the sensitivity list, so that itcomplies with synthesizability guidelines.

Define undefined library This quickfix lets you define an undefined VHDL library. See Li-brary configuration using a quickfix.

18 Chapter 7. Linting and quickfixes

Page 23: HDT Manual

CHAPTER

EIGHT

AUTOCOMPLETION

8.1 Introduction

Sigasi HDT provides powerful autocompletion capabilities. This means that the tool can helpyou to complete identifiers and constructs as you are working on the code. Like other tools, thetool provides autocompletion based on the VHDL language. However, it goes much further. Italso provides autocompletion based on the design context. It can provide this additional levelof intelligence as it knows all objects that have been declared in the design.

8.2 Autocompletion interface

Autocompletions may come from different sources, as will be discussed in the following sec-tions. However, the user interface to initiate them is always the same. At any point as you areentering code, you can press CTRL-SPACE and the tool will suggest appropriate autocomple-tions.

Some autocompletions are templates which require further user input. In such a case, theeditor goes into a special template editing mode after the autocompletion has been performed.You can use TAB to cycle through the items that have to be modified or completed. Whendone, you can press ENTER to return to the normal editing mode. The cursor will be placed atan appropriate position to continue working.

8.3 Autocompletion based on the VHDL language

8.3.1 VHDL keywords

As you are typing code, Sigasi HDT can autocomplete any VHDL keyword.

8.3.2 VHDL declaration templates

Sigasi can help you to declare VHDL objects, using autocompletion based on templates. Thereare templates for the declaration of the following VHDL objects:

• function

• procedure

19

Page 24: HDT Manual

Sigasi HDT User Manual

• process

• type: enum, file, range, array, record

• signal, constant, variable

• component

• entity

• architecture

• entity/architecture pair

• package

After the autcompletion, the editor will be into templating editing mode.

8.4 Autocompletion based on the design context

Sigasi HDT uses its knowledge of the design to provide intelligent autocompletions that canboost productivity tremendously.

8.4.1 Identifiers

The tool knows which objects are appropriate and which identifiers are visible at any givenpoint in the code. As you start typing and ask for an autocompletion, it will therefore suggestthe appropriate identifiers as autocompletion candidates.

8.4.2 Instantiations and component declarations

The tool provides help to autocomplete instantiations and component declarations.

Instantiating an entity Sigasi HDT knows all entities in the design and their interfaces, andcan therefore automate much of the instantiation process. At the point in the code whereyou normally enter the entity name, you can use autocompletion instead to suggest alist of possible entities. Upon selection, the tool will complete the instantiation with ageneric map and a port map with named associations. As an initial suggestion, eachactual parameter will have the same name as its formal parameter. Of course, the actualparameter names need to be reviewed and edited by the user. Therefore, the editor willgo into template editing mode after the autocompletion.

Instantiating a component Instantiating a component is similar to instantiating an entity. Ac-tually, all known components will also be listed as autocompletion candidates.

Declaring a component If you want to use instantiation based on a component (as opposedto direct instantiation) you need to associate an entity with a component. Sigasi HDTcan automatically declare a component for an existing entity. At the point where younormally enter the component name, you can use autocompletion instead to show the listof available entities. Upon selection, the tool will automatically complete the componentdeclaration.

As you can see, the autocompletion capabilities in Sigasi HDT greatly reduce the overheadassociated with writing structural VHDL.

20 Chapter 8. Autocompletion

Page 25: HDT Manual

CHAPTER

NINE

REFACTORING

9.1 The refactoring interface

The basic interface to access a refactoring is to right click on a selected identifier or a line in aview. Depending on the selection and the view, a list of appropriate refactorings is shown.

For example, the Rename refactoring is available for an identifier in the editor view. Otherrefactorings are available in the outline view and the hierarchy view.

9.2 Available refactorings

9.2.1 Add Generic

For background info, see Add Generic (in The VHDL refactoring book) in The VHDL RefactoringBook (in The VHDL refactoring book).

9.2.2 Add Port

For background info, see Add Port (in The VHDL refactoring book) in The VHDL Refactoring Book(in The VHDL refactoring book).

9.2.3 Change Positional to Named Association

For background info, see Change Positional To Named Association (in The VHDL refactoring book)in The VHDL Refactoring Book (in The VHDL refactoring book).

9.2.4 Connect Instance

For background info, see Connect Instance (in The VHDL refactoring book) in The VHDL Refactor-ing Book (in The VHDL refactoring book).

9.2.5 Disconnect Instance

Not implemented yet.

21

Page 26: HDT Manual

Sigasi HDT User Manual

9.2.6 Encapsulate Concurrent Statements

For background info, see Encapsulate Concurrent Statements (in The VHDL refactoring book) inThe VHDL Refactoring Book (in The VHDL refactoring book).

Tip: The encapsulate refactoring is often used to avoid code duplication. To detect codeduplication you can use the internal compare function. To compare two files: select the twofiles in the project explorer, right-click and select Compare With→Each Other.

9.2.7 Rename

For background info, see Rename (in The VHDL refactoring book) in The VHDL Refactoring Book(in The VHDL refactoring book).

9.2.8 Remove Generic

Not implemented yet.

9.2.9 Remove Port

Not implemented yet.

22 Chapter 9. Refactoring

Page 27: HDT Manual

CHAPTER

TEN

INTEGRATION WITH EXTERNALTOOLS

10.1 Introduction

Sigasi HDT supports a number of ways to integrate external tools, with varying degrees ofautomation. The simplest case is to add a menu item to start an external tool from withinSigasi HDT. This is done by creating an external tool configuration. You can also arrange foran external tool to be run automatically when a Sigasi HDT project is rebuilt. This is doneby creating a builder. Finally, Sigasi HDT supports automatic Makefile generation for completelyautomating the integration.

10.2 External Tools Configuration

Select Run→ External tools→ External Tools Configurations to get started, or use the -icon.

To create a new configuration, first select Program, then click .

Enter all necessary information to start your external tool:

• Name: The name for this configuration.

• Location: The location of the executable. You can browse for programs and scripts inyour workspace or programs on your file system.

• Working Directory: The working directory for your program.

• Arguments: The arguments, if any, to your program.

You can test your tool configuration with the Run button.

The following example screenshot shows how to set up con-figuration to run a simulate.sh script from within HDT.

23

Page 28: HDT Manual

Sigasi HDT User Manual

The following ex-ample screenshot shows how to set up a configuration to run make clean on a Linux

machine. To run theexternal tool just select the configuration from the dropdown menu (black triangle) on the

-icon. You can rerun the last configuration by simply clicking .

10.3 Creating a builder

An external tool configuration as described in the previous section makes it easy to run anexternal tool, but you still have to do so explicitly. For some programs, such as the makeutility, it makes sense instead to do this automatically upon a change in your project. This

24 Chapter 10. Integration with external tools

Page 29: HDT Manual

Sigasi HDT User Manual

functionality can be accomplished by a builder. We will show how to create a builder for aModelsim Makefile as an example.

To create a builder, right-click your project and select Properties→ Builders.

Click New... and the builder configuration window will pop up:

You will be askedto select a configuration type: select Program.

Next, configure the builder in a configuration window pop up window:

• Name: The name of your builder, e.g. ModelSim.

• Location: The location of the program, e.g. /usr/bin/make.

• Working Directory: The working directory for your program. For example, click BrowseWorkspace... and select the root folder of your project.

• Arguments: The arguments to your program, e.g. --makefile=Makefile.vsimall.

10.3. Creating a builder 25

Page 30: HDT Manual

Sigasi HDT User Manual

With the de-fault settings the ModelSim Makefile will only be run during a manual build orafter a “Clean”. To make sure Sigasi HDT runs make every time you save achange to a file, click the Build Options tab and check the During auto builds

26 Chapter 10. Integration with external tools

Page 31: HDT Manual

Sigasi HDT User Manual

checkbox.After configuration, the new builder will appear in the builder list.

10.3. Creating a builder 27

Page 32: HDT Manual

Sigasi HDT User Manual

When you closethe builder configuration dialog windows, the new builder will automatically be run. Inour example of a Modelsim Makefile, Modelsim’s messages will appear in the console view.

For the specific case ofModelsim, warnings and error messages in the console are made clickable. When you click amessage, the corresponding location will automatically be opened in the Editor view.

You can add as many extra builders as you want. This can be useful for additional linting toolsor code generators.

10.4 Automatic makefile generation

With a builder as described in the previous section, a program such as make can run automat-ically whenever your project changes. However, when you make a significant change to yourproject, the makefile itself may become obsolete and require nontrivial changes. To solve thisproblem, Sigasi HDT can automatically create and update a makefile for you.

Sigasi HDT can generate makefiles for a number of targets, including Modelsim vsim, XilinxIsim, and ghdl.

For example, to set up makefile generation for ModelSim, first verify that the Model-Sim commands vcom and vlib are on your system path. Right-click on your projectin the Project Explorer and select Properties. Makefile generation can be configuredin the Makefiles category. Enable Mentor Modelsim (vsim) and confirm with Apply.

28 Chapter 10. Integration with external tools

Page 33: HDT Manual

Sigasi HDT User Manual

The makefile is gener-ated when you perform a full rebuild of your project. Click Project → Rebuild project to forcethis build. The Makefile.vsim should appear in the Project Explorer now.

10.4. Automatic makefile generation 29

Page 34: HDT Manual

Sigasi HDT User Manual

30 Chapter 10. Integration with external tools

Page 35: HDT Manual

CHAPTER

ELEVEN

PREFERENCES

In the menu Window→ Preferences you can change the default settings of HDT. E.g. in VHDL→ Editor you can change the syntax highlighting colors and in VHDL → Templates you canchange or add templates for autocompletion.

31

Page 36: HDT Manual

Sigasi HDT User Manual

32 Chapter 11. Preferences

Page 37: HDT Manual

CHAPTER

TWELVE

TROUBLESHOOTING

I want a clean restart If you ever suspect that the state of your project is inconsistent in SigasiHDT, you can always force a complete clean compilation by selecting Project→ RebuildProject, or by just pressing F6. You can also reset the external library cache by selectingWindow→ Preferences→ Libraries and pressing reset cache.

The user interface is unresponsive If the user interface of Sigasi HDT is unresponsive, youcan always interrupt the internal compilation process by pressing the stop button in theprogress view. To activate the progress view, select Window → Show View → Other... →General→ Progress, or click the tiny conveyor belt icon , on the right side of the statusbar.

The editor displays old contents of a file If you edit a file outside of HDT with an externaleditor, HDT will normally notice the changes and ask you what to do. If it doesn’t, youcan refresh the editor’s content by pressing F5 or by right-clicking a file or a project inthe project explorer and selecting Refresh.

HDT says “Element cannot be renamed”? Currently Sigasi HDT does not support the re-naming of overloadable identifiers. Contact [email protected] if you are interestedin this feature.

What version am I running? You can check if you have the latest update by clicking on help–> About Sigasi HDT –> Plugin details. The version number contains the date of therelease. (For example, version 1.0.0.20081218... was released on December 18, 2008.)

How much local history will be stored? Sigasi HDT stores multiple copies of your file so thatyou can compare your current version with the version you saved an hour ago.

You can define how much disk space is used for storing local history in Windows →Preferences, select General→Workspace→ Local History.

For more information on local history, check outhttp://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.platform.doc.user/gettingStarted/qs-55.htm

HDT analyzes VHDL files that I don’t need By default, HDT assumes that all VHDL files arepart of the project. However, some projects may contain multiple files with older oralternative definitions of a VHDL object. In such a case you will want HDT to ignorecertain files.

To exclude files (or directories) from analysis, you can use the library configuration prop-erty page (see Library configuration).

Ignored resource are decorated with a -icon in the project explorer view.

33

Page 38: HDT Manual

Sigasi HDT User Manual

How can I change the font size? Sometimes you want extra small fonts, so that you can fitmore content on your screen. Another time you may want extra large fonts, so that youcan use a beamer and your audience can see what you are doing.

Most fonts, including the font that is used by the editors, can be controlled in the pref-erences: Window→Preferences Fonts are controlled in General→Appearance→Colors andFonts. The font of the editors are in Basic→Text font.

Some fonts cannot be controlled in this preference page. These fonts are defined by gen-eral system settings, and are used for writing the menu names, the Project Explorer viewand the Outline and Hierarchy views. On Windows, you can change these fonts bychanging your font settings in the Windows Control Panel. On Linux, these fonts arecontrolled by a settings file: ${HOME}/.gtkrc-2.0 . You can change the font by adding aline like:

gtk-font-name = “Sans 10”

You have to restart Sigasi HDT before these changes take effect.

I don’t get automatic updates If the updates are not automatically fetched from our updateserver (https://update.sigasi.com) you are probably behind a firewall or proxy server.You can configure HDT’s proxy settings in Window→Preferences→General→Network con-nections. If you can not add a firewall exception for our update site, the fall back so-lution is to download the complete application from our website. You can completelyreplace your old installation; all settings are stored in your workspace (the default isworkspace-sigasi in your home directory).

I get a warning about single-file mode When you open a VHDL file with File→Open File,Sigasi HDT warns that you are editing in single-file mode. In this mode, Sigasi HDTdoes not understand your code as a VHDL design, and therefore its productivity fea-tures are not available. Single-file mode can be useful to edit files outside regular projectwork, but normally you should open VHDL files through a project. To learn how to setup a project, see Setting up a project.

34 Chapter 12. Troubleshooting

Page 39: HDT Manual

CHAPTER

THIRTEEN

KEYBOARD SHORTCUTS

As you become more experienced with Sigasi HDT, you will find that there are a number ofactions that you perform quite often. At some point, you may feel that the GUI-based approachbecomes too slow for these actions. For that reason, Sigasi HDT provides a number of keyboardshortcuts. They are a great way to boost your productivity even more. 1

In this chapter, we describe the available keyboard shortcuts.

13.1 Top 11 keyboard shortcuts

In this section, we list the most important shortcuts.

1. Open Resource (Shift+Ctrl+R) Shift+Ctrl+R opens a dialog that allows you toswiftly open an editor on any file in the workspace.

2. Open Declaration (F3) Use F3 to navigate to the declaration of the selected identifier.

3. Backward History (Alt+Left) Often, when you navigate to a declaration you want togo back to where you came from; just press Alt+Left.

4. Content Assist (Ctrl+Space) With content assist you can really speed up codingVHDL. Just press Ctrl+Space to get a suggestion of possible autocompletes inthe current context.

5. Go to next marker (Shift+.) Does your file contain warnings or errors? Quickly nav-igate to the next problem by pressing Shift+. (Shift+, jumps to the previousproblem).

6. Quick Fix (Ctrl+1) To fix problems even quicker, navigate to the problem with the pre-vious shortcut. Press Ctrl+1 to activate the quickfix, select the fix with the UP orDOWN keys and execute the quickfix with Enter.

7. Go to Line (Ctrl+L) You can directly jump to a certain line with this shortcut. You candisplay the line numbers by right-clicking on on the gray bar on the left side of theeditor view (‘the gutter’) and clicking on Show Line Numbers.

8. Search references (Shift+Ctrl+G) To search for all occurrences of a given identifier,just select the identifier and press Shift+Ctrl+G. The search view is displayed,with a match for each occurrence (possibly in multiple files).

9. Rename - Refactoring (Shift+Alt+R) Once you get used to the rename refactoringyou will be using it all the time. Use Shift+Alt+R to run it even quicker.

1 A cheat sheet with all shortcuts on one page is available on Sigasi’s website.

35

Page 40: HDT Manual

Sigasi HDT User Manual

10. Toggle Block Selection (Shift+Alt+A) Switch between regular and block selectionmode.

11. Quick Access (Ctrl+3) Ctrl+3 is the shortcut to use, when you forgot the shortcutyou actually need. With Quick Access you can quickly find open editors, availableperspectives, views, preferences, wizards, commands, etc. Simply start typing thename of the item you wish to invoke.

13.2 Keyboard shortcut reference

13.2.1 Basic editing

Description Keyboard shortcutDelete DeleteCopy Ctrl+C, Ctrl+InsertPaste Ctrl+V, Shift+InsertCut Ctrl+X, Shift+DeleteUndo Ctrl+ZRedo Ctrl+YSelect All Ctrl+AToggle Block Selection Shift+Alt+A

13.2.2 Quickfixes

Description Keyboard shortcutQuick Fix Ctrl+1

13.2.3 Autocompletion

Description Keyboard shortcutContent Assist Ctrl+Space

13.2.4 Basic Search

Description Keyboard shortcutFind and Replace Ctrl+FFind Next Ctrl+KFind Previous Shift+Ctrl+KIncremental Find Ctrl+JIncremental Find Reverse Shift+Ctrl+J

36 Chapter 13. Keyboard shortcuts

Page 41: HDT Manual

Sigasi HDT User Manual

13.2.5 Files

Description Keyboard shortcutPrint Ctrl+PNew Ctrl+NRename F2Close All Shift+Ctrl+F4, Shift+Ctrl+WRefresh F5Close Ctrl+F4, Ctrl+WProperties Alt+EnterSave Ctrl+SNew menu Shift+Alt+NSave All Shift+Ctrl+S

13.2.6 Navigation

Description Keyboard shortcutLast Edit Location Ctrl+QOpen Resource Shift+Ctrl+RBackward History Alt+LeftShow In... Shift+Alt+WGo to Line Ctrl+LPrevious Ctrl+,Next Ctrl+.Collapse All Shift+Ctrl+Numpad_DivideForward History Alt+Right

13.2.7 VHDL specific

Description Keyboard shortcutSearch references Shift+Ctrl+GRename - Refactoring Shift+Alt+RComment Shift+Ctrl+/Uncomment Shift+Ctrl+\Open Declaration F3Open matching entity Shift+F3Rebuild Project F6Align Shift+Ctrl+AIndent Ctrl+IGo to next problem Shift+.Go to previous problem Shift+,

13.2.8 Advanced search

Description Keyboard shortcutFind Text in Workspace Ctrl+Alt+GOpen Search Dialog Ctrl+HPrevious Word Ctrl+Left

13.2. Keyboard shortcut reference 37

Page 42: HDT Manual

Sigasi HDT User Manual

13.2.9 Advanced editing

Description Keyboard shortcutInsert Line Above Current Line Shift+Ctrl+EnterScroll Line Down Ctrl+DownDelete Next Word Ctrl+DeleteText Start Ctrl+HomeToggle Overwrite InsertInsert Line Below Current Line Shift+EnterDelete Previous Word Ctrl+BackspaceDelete Line Ctrl+DCopy Lines Ctrl+Alt+DownDuplicate Lines Ctrl+Alt+UpMove Lines Down Alt+DownDelete to End of Line Shift+Ctrl+DeleteSelect Next Word Shift+Ctrl+RightScroll Line Up Ctrl+UpSelect Line End Shift+EndMove Lines Up Alt+UpJoin Lines Ctrl+Alt+JTo Upper Case Shift+Ctrl+XSelect Line Start Shift+HomeTo Lower Case Shift+Ctrl+YSelect Previous Word Shift+Ctrl+LeftNext Word Ctrl+RightText End Ctrl+EndLine Start HomeLine End End

13.2.10 Views

Description Keyboard shortcutMaximize Active View or Editor Ctrl+MNext Editor Ctrl+F6Next View Ctrl+F7Show View Menu Ctrl+F10Show Key Assist Shift+Ctrl+LShow System Menu Alt+-Show Ruler Context Menu Ctrl+F10Previous Editor Shift+Ctrl+F6Activate Editor F12Switch to Editor Shift+Ctrl+EPrevious View Shift+Ctrl+F7Quick Access Ctrl+3Quick Switch Editor Ctrl+E

38 Chapter 13. Keyboard shortcuts

Page 43: HDT Manual

INDEX

AAltera

library, 11associations

refactoring, 21autocomplete

component, 20instantiation, 20

autocompletion, 18

Ccomponent

autocomplete, 20connect instance

refactoring, 21

Eediting, 14encapsulate

refactoring, 21external tools, 22

Ggenerics

refactoring, 21

IIEEE

library, 9import

project, 6installation

Linux, 5Mac OS X, 5Windows, 5

instantiationautocomplete, 20

interfacerefactoring, 20

Kkeyboard

shortcuts, 34

Llibrary

Altera, 11IEEE, 9std, 9Xilinx, 11

linting, 17Linux

installation, 5

MMac OS X

installation, 5makefile, 28

Nnavigation, 14

Pports

refactoring, 21project, 6

import, 6setup, 6

Qquickfix, 18

Rrefactoring, 20

associations, 21connect instance, 21encapsulate, 21generics, 21interface, 20ports, 21rename, 22

39

Page 44: HDT Manual

Sigasi HDT User Manual

renamerefactoring, 22

Ssetup

project, 6shortcuts

keyboard, 34single : preferences, 29std

library, 9

Ttroubleshooting

FAQ, 31

Uupdates, 5

Vviews, 13

WWindows

installation, 5

XXilinx

library, 11

40 Index