qsys intro

62
QII51020-13.0.0 © 2013 Altera Corporation. All rights reserved. ALTERA, ARRIA, CYCLONE, HARDCOPY, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos are trademarks of Altera Corporation and registered in the U.S. Patent and Trademark Office and in other countries. All other words and logos identified as trademarks or service marks are the property of their respective holders as described at www.altera.com/common/legal.html. Altera warrants performance of its semiconductor products to current specifications in accordance with Altera's standard warranty, but reserves the right to make changes to any products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Altera. Altera customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. Quartus II Handbook Version 13.0 Volume 1: Design and Synthesis May 2013 Feedback Subscribe Twitter ISO 9001:2008 Registered 7. Creating a System With Qsys Qsys is a system integration tool included as part of the Quartus ® II software. Qsys captures system-level hardware designs at a high level of abstraction and automates the task of defining and integrating customized HDL components, which may include IP cores, verification IP, and other design modules. Qsys facilitates design reuse by packaging and making available your custom components and systems, and integrates your custom components with Altera ® and third-party developer components. Qsys automatically creates interconnect logic from the connectivity options you specify, eliminating the error-prone and time-consuming task of writing HDL to specify the system-level connections. Qsys supports standard Avalon ® , AMBA ® AXI3 (version 1.0), AMBA AXI4 (version 2.0), and AMBA APB 3 (version 1.0) interfaces. For more information about Avalon and AMBA interfaces, refer to the Avalon Interface Specifications and the AMBA Protocol Specifications on the ARM ® website. AXI4-Lite is not supported. Qsys provides the following advantages for system design: Automates the process of customizing and integrating components Supports 64-bit addressing Supports modular system design Supports visualization of systems Supports optimization of interconnect and pipelining within the system Provides full integration with the Quartus II software f For descriptions of unique or exceptional AXI and APB support in the Qsys software, refer to the Qsys Interconnect chapter in volume 1 of the Quartus II Handbook. For more information about Avalon, AXI, and APB interfaces, refer to the Avalon Interface Specifications and the AMBA Protocol Specifications on the ARM ® website. Qsys 64-Bit Addressing Support Qsys interconnect supports up to 64-bit addressing for all Qsys interfaces and components, with a range of 0x0000 0000 0000 0000 to 0xFFFF FFFF FFFF FFFF , inclusive. In Qsys, address parameters appear in the Base and End columns on the System Contents tab, on the Address Map tab, in the parameter editor, and in validation messages. The Qsys GUI displays as many digits as needed in order to display the top-most set bit, for example, 12 hex digits for a 48-bit address. May 2013 QII51020-13.0.0

Upload: ordoezjose477

Post on 21-Jan-2016

325 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Qsys Intro

QII51020-13.0.0

© 2013 Altera Corporation. All rights reserved. ALTERA, ARRIare trademarks of Altera Corporation and registered in the U.Strademarks or service marks are the property of their respectivsemiconductor products to current specifications in accordanceservices at any time without notice. Altera assumes no responsdescribed herein except as expressly agreed to in writing by Alon any published information and before placing orders for pr

Quartus II Handbook Version 13.0Volume 1: Design and SynthesisMay 2013

May 2013QII51020-13.0.0

7. Creating a System With Qsys

Qsys is a system integration tool included as part of the Quartus® II software. Qsyscaptures system-level hardware designs at a high level of abstraction and automatesthe task of defining and integrating customized HDL components, which may includeIP cores, verification IP, and other design modules. Qsys facilitates design reuse bypackaging and making available your custom components and systems, andintegrates your custom components with Altera® and third-party developercomponents.

Qsys automatically creates interconnect logic from the connectivity options youspecify, eliminating the error-prone and time-consuming task of writing HDL tospecify the system-level connections.

Qsys supports standard Avalon®, AMBA® AXI3™ (version 1.0), AMBA AXI4™

(version 2.0), and AMBA APB™ 3 (version 1.0) interfaces. For more information aboutAvalon and AMBA interfaces, refer to the Avalon Interface Specifications and theAMBA Protocol Specifications on the ARM® website. AXI4-Lite is not supported.

Qsys provides the following advantages for system design:

■ Automates the process of customizing and integrating components

■ Supports 64-bit addressing

■ Supports modular system design

■ Supports visualization of systems

■ Supports optimization of interconnect and pipelining within the system

■ Provides full integration with the Quartus II software

f For descriptions of unique or exceptional AXI and APB support in the Qsys software,refer to the Qsys Interconnect chapter in volume 1 of the Quartus II Handbook. For moreinformation about Avalon, AXI, and APB interfaces, refer to the Avalon InterfaceSpecifications and the AMBA Protocol Specifications on the ARM® website.

Qsys 64-Bit Addressing SupportQsys interconnect supports up to 64-bit addressing for all Qsys interfaces andcomponents, with a range of 0x0000 0000 0000 0000 to 0xFFFF FFFF FFFF FFFF,inclusive.

In Qsys, address parameters appear in the Base and End columns on the SystemContents tab, on the Address Map tab, in the parameter editor, and in validationmessages. The Qsys GUI displays as many digits as needed in order to display thetop-most set bit, for example, 12 hex digits for a 48-bit address.

A, CYCLONE, HARDCOPY, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos. Patent and Trademark Office and in other countries. All other words and logos identified ase holders as described at www.altera.com/common/legal.html. Altera warrants performance of itswith Altera's standard warranty, but reserves the right to make changes to any products and

ibility or liability arising out of the application or use of any information, product, or servicetera. Altera customers are advised to obtain the latest version of device specifications before relyingoducts or services.

Feedback SubscribeTwitter

ISO9001:2008Registered

Page 2: Qsys Intro

7–2 Chapter 7: Creating a System With QsysQsys Interface Support

A Qsys system can have multiple 64-bit masters, with each master establishing itsown address space. Slaves may be shared among masters and masters can map slavesin different ways; for example, one master may interact with slave 0 at base address0000_0000_0000, and another master may see the same slave at base addressc000_000_000.

64-bit are also supported for narrow-to-wide and wide-to-narrow transactions acrossAvalon and AXI interfaces, though bursts that exceed 32-bits are legal only within theAvalon interface. AXI3 allows bursts of 1 - 16 transfers. AXI4 allows burst lengths of256.

Quartus II debug tools that provide access to the state of an addressable system viathe Avalon-MM interconnect are also 64-bit compatible and process within a 64-bitaddress space, including a JTAG to Avalon master bridge.

Ports and BridgesYou can configure address ports within memory-mapped interfaces to be 64-bitswide. When a component's master port is not 64-bit capable, you can use the windowbridge component (address span extender) to enable it to access a specific 32-bitsegment of a 64-bit address map. The address span extender enables a 32-bit master toaccess a windowed portion of a larger memory map. The slave interface has anaddress port size corresponding to the address window.

f For more information about the Address Span Extender feature, refer to the QsysSystem Design Components chapter in volume 1 of the Quartus II Handbook.

DMA ControllersDMA controllers are limited to 32-bit addressing. As a workaround, you can use thewindow bridge component, as described in “Ports and Bridges” above.

Qsys Interface SupportQsys interconnect connects the following interface types:

■ Memory-Mapped—Implements a partial crossbar interconnect structure (Avalon-MM, AXI, and APB) that provides concurrent paths between master and slaves.Interconnect consists of synchronous logic and routing resources inside the FPGA,and implementation is based on a network-on-chip architecture.

■ Streaming—Connects Avalon Streaming (Avalon-ST) sources and sinks thatstream unidirectional data, as well as high-bandwidth, low-latency components.Streaming creates datapaths for unidirectional traffic including multichannelstreams, packets, and DSP data. The Avalon-ST interconnect is flexible and can beused to implement on-chip interfaces for industry standard telecommunicationsand data communications cores, such as Ethernet, Interlaken, and video. In allcases, you can define bus widths, packets, and error conditions.

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 3: Qsys Intro

Chapter 7: Creating a System With Qsys 7–3Qsys Interface Support

■ Interrupts—Connects interrupt senders and the interrupt receivers of thecomponent that serves them. In systems with interrupt request sender (IRQ)interfaces, Qsys interconnect includes several components to implement interruptprocessing. Qsys processes individual, single-bit interrupt requests (IRQs). In theevent that multiple senders assert their IRQs simultaneously, the receiver logic(typically under software control) determines which IRQ has highest priority, thenresponds appropriately.

■ Clocks—Connects clock sources with clock input interfaces.

■ Resets—Connects reset sources with reset input interfaces. If your system requiresa particular positive-edge or negative-edge synchronized reset, Qsys inserts a resetcontroller to create the appropriate reset signal. If you design a system withmultiple reset inputs, the Reset Controller ORs all reset inputs and generate asingle reset output. A Reset Bridge allows you to use a reset signal in two or moresubsystems of your Qsys system.

■ Conduits—Connects point-to-point conduit interfaces. Conduit interfaces arebrought to the top level of the system as additional ports, and are always point-to-point connections. Exported signals are usually either application-specific signalsor the interface signals. Application-specific signals are exported to the top level ofthe system by the conduit interface(s) defined in a component. These are I/Osignals in a component’s HDL logic that are not part of any Avalon interfaces andconnect to an external device, for example DDR SDRAM memory, or logic definedoutside of the Qsys system.

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 4: Qsys Intro

7–4 Chapter 7: Creating a System With QsysUnderstanding the Qsys Design Flow

Understanding the Qsys Design FlowFigure 7–1 illustrates a bottom-up design flow example in Qsys.

In the alternative top-down design flow, you begin by designing the Qsys system, andthen define and instantiate custom Qsys components. The top-down design flowclarifies the system requirements earlier in the design process.

Designs targeting HardCopy series devices require specific design constraints.Consequently, if you are targeting a HardCopy series device, you must verify yourdesign for the HardCopy companion device.

Figure 7–1. Complete Qsys Design Flow

No

No

Yes

Yes

Simulation at Unit-Level,Possibly Using BFMs

Debug Design

Does Simulation Give

Expected Results?

Debug Design

Does Simulation Give

Expected Results?

Complete System, AddingComponents, IRQs, Addrs

Perform System-LevelSimulation

Generate QsysSystem

Yes

No

Modify Design orConstraints

Does HW Testing Give

Expected Results? Qsys System Complete

Constraint, Compile in Quartus II Generating .sof

Download .sof to PCBwith Altera FPGA

Create ComponentUsing Component Editor, or

Manually Creating the_hw.tcl File

1

2

3

58

9

10

6

7

4

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 5: Qsys Intro

Chapter 7: Creating a System With Qsys 7–5Searching for Component Files to Add to the Component Library

Follow these guidelines to verify your design for HardCopy devices:

1. In the Device dialog box in the Quartus II software, select both the FPGA and theappropriate HardCopy companion device.

2. In Step 8 of the design flow shown in Figure 7–1 compile for both the FPGA andHardCopy device.

3. After Step 10 of the design flow shown in Figure 7–1, if the FPGA passes allfunctional simulation and hardware verification tests, generate the HardCopyhandoff archive file and send this archive file to the HardCopy Design Center forthe backend flow implementation.

h For more information about designing for HardCopy devices, refer to About DesigningHardCopy Devices in Quartus II Help.

Searching for Component Files to Add to the Component LibraryThe component library includes the design elements that you use in your Qsyssystems. Components can include Altera-provided IP cores, third-party IP cores, andcustom IP cores that you provide. Previously created Qsys systems can also appear inthe component library, and you can use these systems in other designs if they haveexported interfaces.

Altera and third-party developers provide ready-to-use components, which areinstalled automatically with the Quartus II software and are available in the Qsyscomponent library. The Qsys component library includes the following components:

■ Microprocessors, such as the Nios® II processor

■ DSP IP cores, such as the Reed Solomon II core

■ Interface protocols, such as the IP Compiler for PCI Express

■ Memory controllers, such as the RLDRAM II Controller with UniPHY

■ Avalon® Streaming (Avalon-ST) components, such as theAvalon-ST Multiplexer IP core

■ Qsys Interconnect components

■ Verification IP (VIP) Bus Functional Models (BFMs)

You can set the IP Search Path option to specify custom and third-party componentsthat you want to appear in the component library. Qsys searches for component fileseach time you open the tool, and locates and displays the list of available componentsin the component library.

Qsys searches the directories listed in the IP Search Path for the following componentfile types:

■ Hardware Component Description Files (_hw.tcl) files. Each _hw.tcl file defines asingle component.

■ IP Index (.ipx) files. Each file indexes a collection of available components, or areference to other directories to search. In general, .ipx files facilitate faster startupfor Qsys and other tools because fewer directories need to be searched andanalyzed.

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 6: Qsys Intro

7–6 Chapter 7: Creating a System With QsysSearching for Component Files to Add to the Component Library

Qsys searches some directories recursively and other directories only to a specificdepth. When a directory is recursively searched, the search stops at any directorycontaining a _hw.tcl or .ipx file; subdirectories are not searched. In the following listof search locations, a recursive descent is annotated by **. The * signifies any file.

■ PROJECT_DIR/*

■ PROJECT_DIR/ip/**/*

■ QUARTUS_INSTALLDIR/../ip/**/*

Complete the following steps to extend the default search path by specifyingadditional directories:

1. On the Tools menu, click Options.

2. In the Category list, click IP Search Path.

3. Click Add.

4. Browse to locate additional directories and click Open to add them to your searchpath.

1 You do not need to include the components specified in the IP Search Path as part ofyour Quartus II project.

Adding Components to the Component LibraryUse one of the following methods to add components to the component library:

Copy Components to the Install DirectoryThe simplest method to add a new component to the Qsys Component Library is tocopy your components into the default <install_dir>/ip/ directory provided byAltera. This approach is useful in the following situations:

■ You want to associate your components with a specific release of the Quartus IIsoftware.

■ You want to have the same components available across multiple projects.

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 7: Qsys Intro

Chapter 7: Creating a System With Qsys 7–7Searching for Component Files to Add to the Component Library

Figure 7–2 illustrates this approach.

In Figure 7–2, the circled numbers identify a typical directory structure for theQuartus II software. For the directory structure above, Qsys performs the componentdiscovery algorithm described below to locate .ipx and_hw.tcl files and initiate thecomponent library:

1. Qsys recursively searches the <install_dir>/ip/ directory by default. The recursivesearch stops when Qsys finds an .ipx file.

2. As part of the recursive search, Qsys also looks in the user_components directorybecause this directory path appears as an IP Search Path in the Options dialogbox. Qsys finds the component1 directory, which contains component1_hw.tcl.When Qsys finds that component, the recursive search ends, and no componentsin subdirectories of component1 are found.

3. Qsys then searches the component2 directory, because this directory path alsoappears as an IP Search Path, and discovers component2_hw.tcl. When Qsysfinds component2_hw.tcl, the recursive search ends.

1 If you save your _hw.tcl file in the <install_dir>/ip/ directory, Qsys finds your _hw.tclfile and stops. Qsys does not conduct the component discovery algorithm justdescribed.

Reference Components in an .ipx FileYou can specify the search path in a user_components.ipx file under the<install_dir>/ip directory. This method allows you to store components in a locationthat is not linked to a specific Quartus II installation, and to add a location that isindependent of the default search path. You can also save the .ipx file in any of thedefault search locations, for example, the Quartus II project directory, or the /ipdirectory in the project directory.

Figure 7–2. User Library Included In Subdirectory of <install_dir>/ip/

.altera_components.ipx<components>

.

user_components

component1

component2

<install_dir>

quartus

ip

altera

component1_hw.tclcomponent1.v

component2_hw.tclcomponent2.v

2

1

3

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 8: Qsys Intro

7–8 Chapter 7: Creating a System With QsysSearching for Component Files to Add to the Component Library

The user_components.ipx file includes a single line of code redirecting Qsys to thelocation of each user library. Example 7–1 shows the redirection code.

You can verify that components are available with the ip-catalog command. You canuse the ip-make-ipx command to create an .ipx file for a directory tree, which canreduce the startup time for Qsys. The following sections describe these commands.

ip–catalog

This command displays the catalog of available components relative to the currentproject directory in either plain text or XML format.

Usageip-catalog [--project-dir=<directory>] [--name=<value>][--verbose] [--xml] [--help]

Options

■ --project-dir=<directory>—Optional. Components are found in locationsrelative to the project, if any. By default, the current directory, ‘.’ is used. Toexclude any project directory, leave the value empty.

■ --name=<value>—Optional. This argument provides a pattern to filter thenames of the components found. To show all components, use a * or ‘ ‘. Bydefault, all components are shown. The argument is not case sensitive.

■ --verbose—Optional. If set, reports the progress of the command.

■ --xml—Optional. If set, generates the output in XML format instead of a line-and colon-delimited format.

■ --help—Shows Help for the ip-catalog command.

ip-make-ipx

This command creates an ip-make-ipx (.ipx) file and is a convenient way to include acollection of components from an arbitrary directory in the Qsys search path. You canalso edit the .ipx file to disable visibility of one or more components in the Qsyscomponent library.

Usageip-make-ipx [--source-directory=<directory>] [--output=<file>][--relative-vars=<value>] [--thorough-descent][--message-before=<value>] [--message-after=<value>] [--help]

Example 7–1. Redirect to User Library

<library><path path="<user_lib_dir>/user_ip/**/*"/>

</library>

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 9: Qsys Intro

Chapter 7: Creating a System With Qsys 7–9Searching for Component Files to Add to the Component Library

Options

■ --source-directory=<directory>—Optional. Specifies the root director(ies)that Qsys uses to find the component files. The default directory is “.”. You canalso provide a comma separated list of directories.

■ --output=<file>—Optional. Specifies the name of the file to generate. Thedefault name is /components.ipx.

■ --relative-vars=<value>—Optional. Causes the output file to includereferences relative to the specified variable or variables where possible. Youcan specify multiple variables as a comma-separated list.

■ --thorough-descent—Optional. If set, a component or .ipx file in a directorydoes not prevent subdirectories from being searched.

■ --message-before=<value>—Optional. A message to print to stdout whenindexing begins.

■ --message-after=<value>—Optional. A message to send to stdout whenindexing completes.

■ --help—Show Help for this command.

Understanding IPX File Syntax

An .ipx file is an XML file that describes the search path used to discover componentsthat are available for a Qsys system. A <path> entry specifies a directory in whichcomponents may be found. A <component> entry specifies the path to a singlecomponent. Example 7–2 illustrates this format.

A <path> element contains a path attribute, which specifies the path to a directory, orthe path to another .ipx file, and can use wildcards in its definition. An asteriskmatches any file name. If you use an asterisk as a directory name, it matches anynumber of subdirectories.

When searching the specified path, the following three types of files are identified:

■ .ipx—additional index files

■ _hw.tcl—Qsys component definitions

■ _sw.tcl—Nios II board support package (BSP) software component definitions

Example 7–2. .ipx File Structure

<library>

<path path="…<user directory>" />

<path path="…<user directory>" />

<component … file="…<user directory>" />

</library>

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 10: Qsys Intro

7–10 Chapter 7: Creating a System With QsysCreating a Qsys System

A <component> element contains several attributes to define a component. If youprovide the required details for each component in an .ipx file, the startup time forQsys is less than if Qsys must discover the files in a directory. Example 7–3 shows two<component> elements. Note that the paths for file names are specified relative to the.ipx file.

Integrating Third-Party ComponentsYou can use Qsys components created by third-party IP developers. Altera awards theQsys Compliant label to IP cores that are fully supported in Qsys. These cores supportAvalon AXI interfaces and may include timing and placement constraints, softwaredrivers, simulation models, and reference designs.

f To find supported third-party Qsys components, on the Intellectual Property &Reference Designs web page, type Qsys Certified in the Search box, select IP Core &Reference Designs, and then press Enter.

Creating a Qsys SystemYou can create a Qsys system in the Quartus II software by clicking Qsys System Filein the New dialog box, or opening Qsys from the Tools menu. To open a previouslycreated Qsys design, click Open on the File menu in the Quartus II software window,or the Qsys window.

h For more information about the Qsys GUI, refer to About Qsys in Quartus II Help.

Qsys is more powerful if you design your custom components using standardinterfaces. By using standard interfaces, your components inter-operate with thecomponents in the Qsys component library. In addition, you can take advantage ofbus functional models (BFMs), monitors, and other verification IP to verify yourdesign.

Adding System ContentsThe Component Library tab displays the components that you add to your system.

Example 7–3. Component Elements

<library><component

name="A Qsys Component"displayName="Qsys FIR Filter Component"version="2.1"file="./components/qsys_filters/fir_hw.tcl"/><component

name="rgb2cmyk_component"displayName="RGB2CMYK Converter(Color Conversion Category!)"version="0.9"file="./components/qsys_converters/color/rgb2cmyk_hw.tcl"/>

</library>

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 11: Qsys Intro

Chapter 7: Creating a System With Qsys 7–11Creating a Qsys System

Adding ComponentsTo add a component to your system, select the component in the Component Library,and then click Add. A parameter editor appears allowing you to configure thecomponent instance.

1 You can type some or all of the component’s name in the Component Library searchbox to help locate a particular component type. For example, you can type memory tolocate memory-mapped components, or axi to locate AXI interconnect components.

Working With Presets for Supported IP ComponentsWhen you add a component to your system, the Qsys Presets Editor opens for IPcomponents whose parameters you are allowed to modify and lists presets that youcan apply to your component, depending on the design protocol. When you apply apreset to a component, the parameters with specific required values for the protocolare automatically set for you.

You can search for text to filter the Presets list. For example, if you select the DDR3SDRAM Controller with UniPHY component, and then type 1g micron 256, thePresets list shows only those presets that apply to the 1g micron 256 protocol. Presetswhose parameter values match the current parameter settings are shown in bold.

Selecting a preset does not prevent you from changing any parameter to meet therequirements of your design. Clicking Update allows you to update parameter valuesfor a custom preset. The Update Preset dialog box displays the default value, whichyou can edit, and the current value, which is static.

You can also create your own preset by clicking New. When you create a preset, youspecify a name, description and the list of parameters whose values are set by thepreset.

You can remove a preset from the Quartus II project directory by clicking Delete.

h For more information about presets, refer to Presets Editor in Quartus II Help.

Connecting ComponentsWhen you add connections to a Qsys system, you connect the interfaces of themodules in the system. The individual signals in each interface are connected by theQsys interconnect when the HDL for the system is generated. You connect interfacesof compatible types and opposite directions. For example, you can connect amemory-mapped master interface to a slave interface, and an Interrupt senderinterface to an Interrupt receiver interface.

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 12: Qsys Intro

7–12 Chapter 7: Creating a System With QsysCreating a Qsys System

To view possible connections for an interface on the System Contents by hoveringyour pointer in the Connections column. In this view, open circles represent possibleconnections, and filled circles indicate connections that you have made. To make aconnection, click the open circle at the intersection of the two interface names.Clicking a filled-in circle removes the connection. Figure 7–3 illustrates theconnections display.

h For more information about connecting components, refer to Connecting QsysComponents in Quartus II Help.

Filtering ComponentsYou can use the Filters dialog box to filter the display of your system in the SystemContents tab. You can filter the display of your system by interface type, instancename, or by using custom tags. For example, you can use filtering to view onlyinstances that include memory-mapped interfaces, instances that are connected to aparticular Nios II processor, or to temporarily hide clock and reset interfaces tosimplify the display.

h For more information about filtering components, refer to the Filters Dialog Box inQuartus II Help.

Using the System InspectorThe System Inspector tab displays the underlying model of your complete system,and provides comprehensive details about your system such as the followinginformation:

■ The connections between signals

■ The names of signals included in exported interfaces

Figure 7–3. Connections Column

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 13: Qsys Intro

Chapter 7: Creating a System With Qsys 7–13Creating a Qsys System

■ The internal connections of Qsys subsystems that are included as components

1 In contrast, the System Contents tab displays only the exported interfacesof Qsys subsystems included as components.

■ The global parameter settings that you specified on the Project Settings tab

You can use the System Inspector tab to review and change component parametersand to review interface timing. For example, Figure 7–4 shows the timing for theAvalon-MM DMA write master for the PCI Express-to-Ethernet system illustrated inFigure 7–12 on page 7–30..

1 To display the timing for an interface, expand the component, and then click theinterface name.

Defining the Address MapThe Address Map tab provides a table including all the memory-mapped slaves inyour design and the address range that each connected memory-mapped master usesto address that slave. The table shows the slaves on the left and masters across the top,with the address span of the connection shown in each cell. A blank cell implies thatthere is no connection between that master and slave.

Follow these steps to change or create a connection between master and slavecomponents:

1. In Qsys, click the Address Map tab.

2. Locate the table cell that represents the connection between the master and slavecomponent pair.

3. Either type in a base address or update the current base address in the cell.

Figure 7–4. Avalon-MM Write Master Timing Waveforms Available on the Project Settings Tab

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 14: Qsys Intro

7–14 Chapter 7: Creating a System With QsysCreating a Qsys System

1 You can design a system where two masters access a slave at different addresses. Ifyou use this feature, the Base and End address columns of the System Contents tabare labeled mixed rather than providing the address range.

Specifying Clock SettingsThe Clock Settings tab defines the Name, Source, and frequency (MHz) of each clockin your system. Clicking the Add button adds a new clock.

h For more information, refer to the Adding Components to a Qsys System in Quartus IIHelp.

Specifying Project SettingsThe Project Settings tab allows you to view and change the properties of your Qsyssystem. Table 7–1 describes system-level parameters available on the Project Settingstab.

Table 7–1. Project Settings Parameters

Parameter Name Description

Device Family Specifies the Altera device family.

Device Specifies the target device for the selected device family.

Clock Crossing Adapter Type

Specifies the default implementation for automatically inserted clock crossing adapters. Thefollowing choices are available:

■ Handshake–This adapter uses a simple hand-shaking protocol to propagate transfercontrol signals and responses across the clock boundary. This methodology uses fewerhardware resources because each transfer is safely propagated to the target domainbefore the next transfer can begin. The Handshake adapter is appropriate for systemswith low throughput requirements.

■ FIFO–This adapter uses dual-clock FIFOs for synchronization. The latency of theFIFO-based adapter is a couple of clock cycles more than the handshaking clock crossingcomponent, but the FIFO-based adapter can sustain higher throughput because itsupports multiple transactions at any given time. The FIFO-based clock crossers requiremore resources. The FIFO adapter is appropriate for memory-mapped transfersrequiring high throughput across clock domains.

■ Auto–If you select Auto, Qsys specifies the FIFO adapter for bursting links, and theHandshake adapter for all other links.

Limit interconnect pipelinestages to

Specifies the maximum number of pipeline stages that Qsys may insert in each commandand response path to increase the fMAX at the expense of additional latency. You can specifybetween 0–4 pipeline stages, where 0 means that the interconnect has a combinational datapath. Choosing 3 or 4 pipeline stages may significantly increase the logic utilization of thesystem. This setting is per Qsys system or subsystem, meaning that each subsystem canhave a different setting. Note that the additional latency is for both the command andresponse directions for the two Qsys systems, even if you combine them into a singleQuartus II project.

Generation Id A unique integer value that is set to a timestamp just before Qsys system generation thatQsys uses to check for software compatibility.

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 15: Qsys Intro

Chapter 7: Creating a System With Qsys 7–15Creating a Qsys System

1 Qsys generates a warning message if the selected device family and target device donot match the Quartus II software project settings. Also, when you open Qsys fromwithin the Quartus II software, the device type in your Qsys project is replaced withthe selected device in your open Quartus II software project.

Defining Qsys Instance ParametersThe Instance Parameters tab allows you to define parameters for a Qsys system. Youcan use instance parameters to modify a Qsys system when you use the system as asubcomponent in another Qsys system. The higher-level Qsys system can assignvalues to these instance parameters.

The Instance Script on the Instance Parameters tab defines how the specified valuesfor the instance parameters should affect your Qsys design subcomponents. Theinstance script allows you to make queries about the instance parameters you defineand set the values of the parameters for the subcomponents in your design.

When you click Preview Instance, Qsys creates a preview of the current Qsys systemwith the specified parameters and instance script, and shows the parameter editor forthe instance. This allows you to see how an instance of this system appears when youuse it in another system. The preview instance does not affect your saved system.

h For more information, refer to Working with Instance Parameters in Qsys in Quartus IIHelp.

To use Instance Parameters, the components or subsystems in your Qsys system musthave parameters that can be set when they are instantiated in a higher-level system.Many components in the Component Library have parameters that you can set whenadding the component to your system. If you create your own IP components, youuse the _hw.tcl file to specify which parameters can be set when the component isadded to a system. If you create hierarchical Qsys systems, each Qsys system in thehierarchy can include instance parameters to pass parameter values through multiplelevels of hierarchy.

f For more information on creating your own components and specifying parameters,refer to the Component Interface Tcl Reference chapter in the Quartus II Handbook.

Creating an Instance ScriptThe first command in an instance script must specify the version of the Tcl commandsto be used in the script. This command ensures the Tcl commands behave identicallyin future versions of the tool. Use the following Tcl command to specify the version ofthe Tcl commands, where <version> is a Quartus II software version number, such as13.0:

package require -exact qsys <version>

To use Tcl commands that work with instance parameters in the instance script, youmust specify the commands within a Tcl procedure called a composition callback. Inthe instance script, you specify the name for the composition callback with thefollowing command:

set_module_property COMPOSITION_CALLBACK <name of callback procedure>

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 16: Qsys Intro

7–16 Chapter 7: Creating a System With QsysCreating a Qsys System

Specify the appropriate Tcl commands inside the Tcl procedure with the followingsyntax:

proc <name of procedure defined in previous command> {} {#Tcl commands to query and set parameters go here

}

Use Tcl commands in the procedure to query the parameters of a Qsys system, or toset the values of the parameters of the subcomponents instantiated in the system.Table 7–2 describes the supported Tcl commands.

f For more information about _hw.tcl syntax and manipulating parameters, refer to theComponent Interface Tcl Reference chapter in the Quartus II Handbook.

You can use standard Tcl commands to manipulate parameters in the script, such asthe set command to create variables, or the expr command for mathematicalmanipulation of the parameter values.

Example 7–4 shows an instance script of a simple system that uses a parameter calledpio_width to set the width parameter of a parallel I/O (PIO) component. Note thatthe script combines the get_parameter_value and set_instance_parameter_valuecommands into one command using square brackets [].

Table 7–2. Hardware Tcl Commands Used in Instance Scripts

Command Name Value Description

get_parameters — Get the names of all defined parameters (as aspace-separated list).

get_parameter_value <parameter name > Get the value of a parameter.

get_instance_parameters <instance name>Get the names of parameters on a child instancethat can be manipulated by the parent (as aspace-separated list).

get_instance_parameter_value <instance name> Get the value of a parameter for a child instance.

send_message <message level> <message text>

Send a message to the user of the component,using one of the message levels Error, Warning,Info, or Debug. Enclose text with multiple wordsin quotation marks.

set_instance_parameter_value <instance name> <parameter name><parameter value> Set a parameter value for a child instance.

Example 7–4. Simple Instance Script

# Request a specific version of the scripting APIpackage require -exact qsys 13.0

# Set the name of the procedure to manipulate parameters:

set_module_property COMPOSITION_CALLBACK composeproc compose {} {

#Get the pio_width parameter value from this Qsys system and pass the#value to the width parameter of the pio_0 instance

set_instance_parameter_value pio_0 width [get_parameter_value \pio_width]

}

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 17: Qsys Intro

Chapter 7: Creating a System With Qsys 7–17Creating a Qsys System

For another example, refer to “Hierarchical System Using Instance ParametersExample” on page 7–33.

Viewing the HDL ExampleThe HDL Example tab provides the top-level HDL definition of your system in eitherVerilog HDL or VHDL, and also displays VHDL component declarations. You cancopy and paste the example into a top-level HDL file that instantiates the Qsyssystem, if the system is not the top-level module in your Quartus II project.

Creating Hierarchical SystemsQsys supports team-based and hierarchical system design. You can include any Qsyssystem that exports an interface as a component in another Qsys system. In a team-based design flow, you can have one or more systems in your design developedsimultaneously by other team members, decreasing time-to-market for the completedesign.

Figure 7–5 shows the top-level of a Qsys hierarchical design that implements a PCIExpress™ to Ethernet bridge. This example combines separate PCI Express andEthernet subsystems with Altera’s DDR3 SDRAM Controller with UniPHY IP core.

Hierarchical system design in Qsys offers the following advantages:

■ Enables team-based, modular design by dividing large designs into subsystems.

■ Enables design reuse by allowing you to use any Qsys system as a component.

■ Enables scalability by allowing you to instantiate multiple instances of a Qsyssystem.

1 For more information about hierarchical design, refer to “PCI Express SubsystemExample” on page 7–29.

Figure 7–5. Top-Level for a PCI Express to Ethernet Bridge

DDR3SDRAM

Ethernet Subsystem

Ethernet

Embedded Cntl

PCI ExpressSubsystem

Qsys SystemPCIe to Ethernet Bridge

PCIe

CSRMemMstr

MemSlave

PHYCntl

MemMstr

CSR

DDR3 SDRAM

Controller

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 18: Qsys Intro

7–18 Chapter 7: Creating a System With QsysCreating a Qsys System

Adding Systems to the Component LibraryAny Qsys system that exports an interface is available for use in other Qsys systems.Figure 7–6 shows the component library, including the PCI Express and Ethernetsubsystems as components in the component library for the PCI Express to EthernetBridge example system in Figure 7–15 on page 7–31. To include systems ascomponents in other designs, you can add the system to the component library, orinclude the directory for the system in component search path for Qsys.

Creating a Component Based on a SystemThe Export System as hw.tcl Component command on the File menu allows you tosave the system currently open in Qsys as an _hw.tcl file in the current workingdirectory. The saved system appears in the System list under Project in the QsysComponent Library.

1 Because Qsys systems become components in the component library, be careful not togive your system a name that is already is use.

Creating Secure Systems (TrustZones)TrustZone refers to the security extension of the ARM architecture, which includes theconcept of secure and non-secure transactions, and a protocol for processing betweenthe designations. TrustZone security support is a part of the Qsys interconnect.

In Qsys, AXI masters are treated as TrustZone-aware; all other memory-mappedinterfaces are set to secure, non-secure or TrustZone-aware (only for AXI slaves withTrustZone support). The default value for non-AXI master interfaces is non-secure.Unless specified, all non-TrustZone-aware components are treated as non-secure, forexample, Avalon master and slave components.

Qsys provides compilation-time TrustZone support for non-TrustZone-awarecomponents, for cases such as when an Avalon master needs to communicate with asecure AXI slave. For example, the designer can specify whether the connection pointis secure or non-secure at compilation time. You can specify secure address ranges onmemory slaves, if a per-interface security setting is not sufficient.

Figure 7–6. Qsys Component Library

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 19: Qsys Intro

Chapter 7: Creating a System With Qsys 7–19Creating a Qsys System

For TrustZone-aware masters, the interconnect uses the master's AxPROT signal todetermine the security status of each transaction.

The table below summarizes secure and non-secure access between master, slave, andmemory components in Qsys. Per-access refers to allowing a TrustZone-aware masterto allow or disallow a particular access (or transactions).

If a master issues transactions that fall into the per-access or not allowed cells, asdescribed in the table above, your design must contain a default slave. A transactionthat violates security is rerouted to the default slave and subsequently terminatedwith an error. You can connect any slave as the default that is able to respond to themaster that requires a default slave with errors. You can share the default slavebetween multiple masters. Altera recommends that you have one default slave foreach domain. Altera also recommends that you use the altera_axi_default_slavecomponent as the default slave because this component has the required TrustZonefeatures.

In Qsys, you can achieve an optimized secure system by planning how you partitionyour design. For example, for masters and slaves under the same hierarchy, it ispossible for a non-secure master to initiate continuous transactions resulting inunsuccessful transfer to a secure slave. In the case of a memory aliasing, you mustcarefully designate secure or non-secure address maps to maintain reliable data.

Managing Secure Settings in QsysTo create a secure design, you must first add masters and slaves and the connectionsbetween them. Once you establish connections between the masters and slaves, youcan then set the security options, as required, with options in the Security column.

On the System Contents tab, in the Security column, the following selections areavailable for master, slave, and memory components:

■ Non-secure—Master issues only non-secure transactions. There is no securityavailable for the slave.

■ Secure—Master issues only secure transactions. For the slave, Qsys prevents non-secure transactions from reaching the slave, and routes them to the default slavefor the master that issued the transaction.

■ Secure Ranges—Slave only, the specified address ranges within the slave'saddress span are secure; all others are not. The format is a comma-separated list ofinclusiveLow:inclusiveHigh addresses, for example, 0x0:0xfff,0x2000:0x20ff.

■ TrustZone-aware—Master issues either secure or non-secure transactions at run-time. The slave accepts either secure or non-secure transactions at run-time.

Table 7–3.

Transaction Type TrustZone-awareMaster

Non-TrustZone-awareMasterSecure

Non-TrustZone-awareMaster

Non-Secure

TrustZone-aware slave/memory OK OK OK

Non-TrustZone-aware slave (secure) Per-access OK Not allowed

Non-TrustZone-aware slave (non-secure) OK OK OK

Non-TrustZone-aware memory (secure region) Per-access OK Not allowed

Non-TrustZone-aware memory (non-secure region) OK OK OK

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 20: Qsys Intro

7–20 Chapter 7: Creating a System With QsysGenerating Output Files From a Qsys System

After setting security options for the masters and slaves, you must identify thosemasters that require a default slave before generation. To designate a slave as thedefault slave, turn on Default Slave in the Systems Contents tab. A master can haveonly one default slave.

Understanding Compilation-Time Security Configuration OptionsThe following compile-time configurations are available when creating secure designsthat have mixed secure and non-secure components:

■ Masters that support TrustZone and are connected to slaves that are compile-timesecure. This configuration requires a default slave.

■ Slaves that support TrustZone and are connected to masters that have compile-time secure settings. This configuration does not require a default slave.

■ Master connected to slaves with secure address ranges. This configuration requiresa default slave.

Generating Output Files From a Qsys SystemQsys system generation creates the interconnect between components and generatesfiles that you use to synthesize or simulate the design. You specify the files that youwant to generate on the Generation tab. You can generate simulation models,simulation testbench files, as well as HDL files for Quartus II synthesis, or a BlockSymbol File (.bsf) for schematic design.

For your simulation model and testbench system, you can select Verilog or VHDL forthe top-level module language, which applies to the system's top-level definition andchild instance that support generation for the selected target language.

For synthesis, you can select the top-level module language as Verilog or VHDL,which applies to the system’s top-level definition. If the design contains a composed_hw.tcl component or .qsys sub-modules, the language selection also applies to thesub-modules. For non-composed _hw.tcl sub-modules, a Verilog synthesis file isgenerated.

The default target language for simulation, testbench system, and synthesis is Verilog.

Qsys places the generated output files in a subdirectory of your project directory,along with an HTML report file. To change the default behavior, on the Generationtab, specify a new directory under Output Directory.

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 21: Qsys Intro

Chapter 7: Creating a System With Qsys 7–21Generating Output Files From a Qsys System

Figure 7–7 illustrates the directory structure for the output files.

Table 7–4 describes the files that Qsys generates. Each time you generate your system,Qsys overwrites these files, therefore, you should not edit Qsys-generated outputfiles. If you have constraints, such as board-level timing constraints, Alterarecommends that you create a separate Synopsys Design Constraints File (.sdc) andinclude that file in your Quartus II project. If you need to change top-level I/O pinnames or instance name, Altera recommends you create a top-level HDL file thatinstantiates the Qsys system, so that the Qsys-generated output is instantiated in yourdesign without any changes to the Qsys output files.

Figure 7–7. Qsys Generated Files Directory Structure

<qsys_design>

submodules

synthesis

simulation

testbench

simulation

submodules

submodules

Table 7–4. Qsys Generated Files (Part 1 of 2)

File Name or Directory Name Description

<qsys_design> The top-level project directory.

<qsys_design>.bsf A Block Symbol File (.bsf) representation of the top-level Qsys system for use inQuartus II Block Diagram Files (.bdf).

<qsys_design>.html A report for the system, which provides a system overview including the followinginformation:

■ External connections for the system

■ A memory map showing the address of each slave with respect to each master towhich it is connected

■ Parameter assignments for each component

<qsys_design>.sopcinfo

Describes the components and connections in your system. This file is a completesystem description and is used by downstream tools such as the Nios II tool chain.It also describes the parameterization of each component in the system;consequently, you can parse its contents to get requirements when developingsoftware drivers for Qsys components.

This file and the system.h file generated for the Nios II tool chain include addressmap information for each slave relative to each master that accesses the slave.Different masters may have a different address map to access a particular slavecomponent.

/synthesis This directory includes the Qsys-generated output files that the Quartus II softwareuses to synthesize your design.

<qsys_design>.v An HDL file for the top-level Qsys system that instantiates each component in thesystem.

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 22: Qsys Intro

7–22 Chapter 7: Creating a System With QsysGenerating Output Files From a Qsys System

CMSIS Support for Qsys Systems With An HPS ComponentQsys systems that contain a Hard Processor System (HPS) component generate aSystem View Description (.svd) file that lists peripherals connected to the ARMprocessor. The .svd (or CMSIS-SVD) file format is an XML schema specified as part ofthe Cortex Microcontroller Software Interface Standard (CMSIS) provided by ARM.The CMSIS-SVD file allows HPS System Debug tools (such as the DS-5 Debugger) togain visibility into the register maps of peripherals connected to the HPS within aQsys system.

Qsys supports the ability for IP component designers to specify register mapinformation on their slave interfaces. This allows components with slave interfacesthat are connected to an HPS component to include their internal register descriptionin the generated .svd file. To specify their internal register map, the IP componentdesigner must write and generate their own .svd file and attach it to the slaveinterface using the following command:

set_interface_property <slave interface> CMSIS_SVD_FILE <file path>

<qsys_design>.qip This file lists the Quartus II software needed to compile your design. You must addthe.qip file to your Quartus II project.

<qsys_design>.sip This file lists the files necessary for simulation with Nativelink. You must add the.sip file to your Quartus II project.

<qsys_design>.spd Required input file for ip-make-simscript to generate simulation script forsupported simulators.

/submodules Contains Verilog HDL or VHDL submodule files for synthesis.

/simulation This directory includes the Qsys-generated output files to simulate your Qsysdesign or testbench system.

<qsys_design>.v or<qsys_design>.vhd

An HDL file for the top-level Qsys system that instantiates each submodule in thesystem.

/mentor/ Contains a ModelSim® script msim_setup.tcl to set up and run a simulation.

/aldec Contains Riviera-PRO script rivierapro_setup.tcl to setup and run a simulation.

/synopsys/vcs/ Contains a shell script vcs_setup.sh to set up and run a VCS® simulation.

/synopsys/vcsmx Contains a shell script vcsmx_setup.sh and synopsys_sim.setup to set up and runa VCS MX simulation.

/cadence Contains a shell script ncsim_setup.sh and other setup files to set up and run anNCSIM simulation.

/testbench Contains a Qsys testbench system as described in the “Simulating a Qsys System”section below.

<qsys_design>_tb.qsys A Qsys testbench system.

<qsys_design>_tb.v<qsys_design>_tb.vhd

The top-level testbench file, which connects BFMs to the top-level interfaces of<qsys_design>.qsys.

<system_name>_<module_name>_<master_interface_name>.svd

Allows HPS System Debug tools to view the register maps of peripherals connectedto the HPS within a Qsys design.

Table 7–4. Qsys Generated Files (Part 2 of 2)

File Name or Directory Name Description

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 23: Qsys Intro

Chapter 7: Creating a System With Qsys 7–23Using Qsys With the Quartus II Software

1 For information about the set_interface_property command and its properties,refer to the Component Interface Tcl Reference chapter in the Quartus II Handbook. Forcomplete CMSIS specifications, refer to CMSIS - Cortex Microcontroller SoftwareInterface Standard on the ARM website.

Using Qsys With the Quartus II SoftwareThis section describes the Quartus® II software features that integrate with Qsys,including the following:

■ Quartus II IP File

■ Synopsys Design Constraint

■ Quartus II Simulation IP File

■ PLLs and Clocks

Quartus II Project FilesThe Quartus II IP File (.qip) provides the Quartus II software with all requiredinformation about your Qsys system. Qsys creates the .qip during system generationand adds a reference to it in the Quartus II Settings File (.qsf). The informationrequired to process most Qsys components is included in the system's single .qip file,though some more complex components provide their own .qip file, in which case thesystem's .qip file references the component’s .qip file.

You must add the Qsys-generated Quartus II IP File (.qip) to your Quartus II projectbefore you compile a design that includes a Qsys system. The .qip file is stored in thesynthesis directory after generation, and lists the files necessary for compilation, andincludes references to the following information:

■ HDL files used in the Qsys system

■ TimeQuest Timing Analyzer Synopsys Design Constraint (.sdc) files

■ Component definition files for archiving purposes

Qsys automatically generates an .sdc file for Qsys systems and components. In mostcases, you use TimeQuest constraints to declare false paths for signals that cross clockdomains within a component, so that the TimeQuest Timing Analyzer does notperform setup and hold analysis for them. You can add .sdc files for customcomponents, with the Add Files command on Files tab in the Component Editor.

To use Nativelink simulation integration with a Qsys system, you must add theQuartus II Simulation IP File (.sip) file to your Quartus II project. The .sip file lists thefiles necessary for simulation with Nativelink. The .sip file is stored in the synthesisdirectory after generation.

1 Add the generated .qip file, not the .qsys file, to your Quartus II project.

f Refer to the Quartus II TimeQuest Timing Analyzer chapter in volume 3 of the Quartus IIHandbook for further description of the TimeQuest Timing Analyzer.

h For more information about adding files to your Quartus II project, refer to ManagingFiles in a Project in Quartus II Help.

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 24: Qsys Intro

7–24 Chapter 7: Creating a System With QsysUsing Qsys With the Quartus II Software

Working With PLLs and ClocksYou must provide clock and timing constraints in Synopsys Design Constraint File(.sdc) format to direct Quartus II synthesis and fitting to optimize the designappropriately, and to set up the TimeQuest timing analyzer to check that the designmeets timing performance requirements.

You must specify a base clock assignment for each clock input with the create_clockcommand, and then you can use the derive_pll_clocks command to define the PLLclock output frequencies and phase shifts for all PLLs in the Quartus II project.

The Qsys system shown in Figure 7–8 illustrates the .sdc commands required for thecase of a single clock input signal called clk, and one PLL with a single output.

For this system, use the following commands in your .sdc file for the TimeQuestTiming Analyzer:

create_clock -name master_clk -period 20 [get_ports {clk}]derive_pll_clocks

These commands create the input clock and the derived clock output of the PLL. TheTimeQuest Timing Analyzer analyzes and reports performance of the constrainedclocks in the Clocks Summary report, as shown in Figure 7–9.

master_clk is defined by the create_clock command, and the_my_pll clock isderived from the derive_pll_clocks command.

Figure 7–8. Single Clock Input Signal

Figure 7–9. Clocks Summary Report

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 25: Qsys Intro

Chapter 7: Creating a System With Qsys 7–25Simulating a Qsys System

Simulating a Qsys SystemThe Qsys Generation tab provides the following options for simulating a Qsyssystem:

■ Generate the Verilog or VHDL simulation model for your system to use in yourown simulation environment.

■ Generate a standard or simple testbench system with BFM or Mentor VerificationIP (for AXI3/AXI4) components that drive the external interfaces of your system,and generate a Verilog or VHDL simulation model for the testbench system to usein your simulation tool.

■ First generate a testbench system, and then modify the testbench system in Qsysbefore generating its simulation model.

In most cases, you should select only one of the simulation model options, that isgenerate a simulation model for the original system, or for the testbench system.

Table 7–5 summarizes the options on the Generation tab that correspond to thesimulation flows described above.le

Table 7–5. Summary of Settings Simulation and Synthesis on Qsys Generation Tab

Simulation Setting Value Description

Create simulationmodel

NoneVerilogVHDL

Creates simulation model files and simulation scripts. Use this option toinclude the simulation model in your own custom testbench or simulationenvironment. You can also use this option to generate models for atestbench system that you have modified.

Create testbench Qsyssystem

Standard, BFMs forstandard QsysInterconnect

Creates a testbench Qsys system with BFM components attached toexported Avalon and AXI3 interfaces. Includes any simulation partnermodules specified by IP cores in the system.

In Qsys 13.0, the testbench generator supports AXI interfaces and canconnect AXI3/AXI4 interfaces to Mentor Graphics AXI3/AXI4 master/slaveBFM. For more information, refer to the Mentor Verification IP (VIP) AlteraEdition (AE) document. However, BFM supports only an address width ofup to 32-bits.

Simple, BFMs forclocks and resets

Creates a testbench Qsys system with BFM components driving onlyclocks and reset interfaces. Includes any simulation partner modulesspecified by IP cores in the system.

Create testbenchsimulation model

NoneVerilogVHDL

Creates simulation model files and simulation scripts for the testbenchQsys system specified in the setting above. Use this option if you do notneed to modify the Qsys-generated testbench before running thesimulation.

Create HDL design filesfor synthesis On/Off Creates Verilog or VHDL design files.

Top-level modulelanguage for synthesis

VerilogVHDL Creates the top-level module in the system in the selected language.

Create block symbolfiles (.bsf) On/Off You can optionally create a (.bsf) file to use in schematic Block Diagram

File (.bdf) designs.

Output Directory <directory name> Allows you to browse and locate an alternate directory than the projectdirectory for each generation target.

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 26: Qsys Intro

7–26 Chapter 7: Creating a System With QsysSimulating a Qsys System

f For more information about using bus functional models (BFMs) and monitors tosimulate Avalon standard interfaces, including tutorials demonstrating samplesystems, refer to the Avalon Verification IP Suite User Guide. For AXI verificationprotocol information, refer to the Mentor Verification IP (VIP) Altera Edition (AE)document.

h For more information about generating system synthesis or simulation models, and astandard Qsys testbench, refer to Generating a System for Synthesis or Simulation andGeneration Tab (Qsys) in Quartus II Help.

Testbench Design FlowYou can use the following design flows to create a testbench system of your Verilog orVHDL design.

Generate the Testbench System and a Simulation modelat the Same Time (Verilog only)1. Create a Qsys system.

2. Generate a Verilog testbench system and the simulation model for the testbenchsystem on the Qsys Generation tab.

3. Create a custom test program for the BFMs.

4. Compile and load the Qsys design and testbench in your simulator, and then runthe simulation.

Generate the Testbench System (Verilog and VHDL)1. Create a Qsys system.

2. Generate a Verilog or VHDL testbench system on the Qsys Generation tab.

3. Open the testbench system in Qsys. Make changes, as needed, to the BFMs, suchas changing the BFM instance names and BFM's VHDL ID value. You can modifythe VHDL ID value in the Altera Avalon Interrupt Source component.

4. If you modified a BFM, generate the simulation model for the testbench system onthe Qsys Generation tab.

5. Create a custom test program for the BFMs.

6. Compile and load the Qsys design and testbench in your simulator, and then runthe simulation.

Adding Assertion MonitorsYou can add monitors to Avalon-MM, AXI, and Avalon-ST interfaces in your systemto verify protocol correctness and test coverage with a simulator that supportsSystemVerilog assertions.

1 Modelsim Altera Edition does not support SystemVerilog assertions. If you want touse assertion monitors, you will need to use an advanced simulator such as MentorQuestasim, Synopsys VCS, or Cadence Incisive.

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 27: Qsys Intro

Chapter 7: Creating a System With Qsys 7–27Simulating a Qsys System

Figure 7–10 demonstrates the use of monitors with an Avalon-MM monitor betweenthe previously connected pcie_compiler bar1_0_Prefetchable Avalon-MM masterinterface and the dma_0 control_port_slave Avalon-MM slave interface.

Similarly, you can insert an Avalon-ST monitor between Avalon-ST source and sinkinterfaces.

Simulation ScriptsQsys generates simulation scripts to script the simulation environment set up forMentor Graphics Modelsim and Questasim, Synopsys VCS and VCS MX, Cadence®

Incisive® Enterprise Simulator (NCSIM), and the Aldec Riviera-PRO Simulator. Youcan use the scripts to compile the required device libraries and system design files inthe correct order and elaborate or load the top-level design for simulation.

The simulation scripts provide the following variables that allow flexibility in yoursimulation environment:

■ TOP_LEVEL_NAME—If the Qsys testbench system is not the top-level instance in yoursimulation environment because you instantiate the Qsys testbench within yourown top-level simulation file, set the TOP_LEVEL_NAME variable to the top-levelhierarchy name.

■ QSYS_SIMDIR—If the simulation files generated by Qsys are not in the simulationworking directory, use the QSYS_SIMDIR variable to specify the directory location ofthe Qsys simulation files.

■ QUARTUS_INSTALL_DIR— Points to the device family library.

Example 7–5 shows a simple top-level simulation HDL file for a testbench systempattern_generator_tb, which was generated for a Qsys system calledpattern_generator. The top.sv file defines the top-level module that instantiates thepattern_generator_tb simulation model as well as a custom SystemVerilog testprogram with BFM transactions, called test_program.

Figure 7–10. Inserting an Avalon-MM Monitor between Avalon-MM Master and Slave Interfaces

Example 7–5. Top-level Simulation HDL File

module top();pattern_generator_tb tb();test_program pgm();endmodule

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 28: Qsys Intro

7–28 Chapter 7: Creating a System With QsysSystem Examples

1 Refer to the following documents for simulation script examples:

■ ModelSim-Altera software, Mentor Graphics ModelSim support

■ Synopsys VCS and VCS MX support

■ Cadence Incisive Enterprise Simulator (IES) support

■ Aldec Active-HDL and Rivera-PRO support

Simulating Software Running on a Nios II ProcessorTo simulate the software in a system driven by a Nios II embedded processor,generate the simulation model for a simple Qsys testbench system by completing thefollowing steps:

1. On the Generation tab, set Create testbench Qsys system to Simple, BFMs forclocks and resets.

2. Set Create testbench simulation model to Verilog or VHDL.

3. Click Generate.

Follow these steps to use the software build tools for simulation:

1. Open the Nios II Software Build Tools for Eclipse.

2. Set up an application project and board support package (BSP) for the<qsys_system> .sopcinfo file.

3. To optimize the BSP for simulation and disable hardware programming,right-click the BSP project and click Properties, and then click Nios II BSPProperties, and turn on ModelSim only, no hardware support.

4. To simulate, right-click the application project in Eclipse, point to Run as, and thenclick 4 Nios II ModelSim. The Run As Nios II ModelSim command sets up theModelSim simulation environment, compiles and loads the Nios II softwaresimulation.

5. To run the simulation in ModelSim, type run -all in the ModelSim transcriptwindow.

6. If prompted, set ModelSim configuration settings and select the correct QsysTestbench Simulation Package Descriptor (.spd) file, <qsys_system>_tb.spd. The.spd file is generated with the testbench simulation model for Nios II designs andspecifies all the files required for the Nios II software simulation.

f For more information about the Nios II SBT for Eclipse, refer to Getting Started with theGraphical User Interface in the Nios II Software Developer’s Handbook. For moreinformation about the Nios II SBT command-line options, refer to Getting Started fromthe Command-Line in the Nios II Software Developer's Handbook.

System ExamplesThis section includes a detailed system example that demonstrates design hierarchyand the use of pipeline bridges, and an example that shows the use of instanceparameters to control the instantiation of subcomponents in a hierarchical system.

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 29: Qsys Intro

Chapter 7: Creating a System With Qsys 7–29System Examples

PCI Express Subsystem ExampleFigure 7–11 shows the details of the PCI Express example subsystem, which is alsoillustrated at a high level in Figure 7–5 on page 7–17. In this example, an applicationrunning on the root complex processor programs the DMA controller. The DMAcontroller’s Avalon-MM read and write master interfaces initiate transfers to and fromthe DDR3 memory and to the PCI Express Avalon-MM TX data port. The systemexports the DMA master interfaces through an Avalon-MM pipeline bridge. AsFigure 7–11 illustrates, all three masters connect to a single slave interface. Duringsystem generation, Qsys automatically inserts arbitration logic to control access to thisslave interface. By default, the arbiter provides equal access to all requesting masters;however, you can weight the arbitration by changing the number of arbitration sharesfor the requesting masters. The second pipeline bridge allows an external master, suchas a host processor, to also issue transactions to the CSR interfaces.

f For more information, refer to “Arbitration” in the Qsys Interconnect chapter involume 1 of the Quartus II Handbook.

Figure 7–11. PCI Express Subsystem

PCI Express Subsystem

PCIe Link

DMA Avalon-MM Master (exported to DDR3 Controller)

Cntl and Status Avalon-MM Slave (exported to Embedded Controller)

(exportedto PCIe root port)

DMAController

CSR

Rd

Wr

Avalon-MM PIpeline Bridge (Qsys)

Avalon-MM PIpeline Bridge (Qsys)

PCI ExpressIP Core

CSR

CSR

Tx Data

M

M

M

M

M

S

S

S

S

S

Cn

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 30: Qsys Intro

7–30 Chapter 7: Creating a System With QsysSystem Examples

Figure 7–12 shows the Qsys representation of the PCI Express subsystem.

Ethernet Subsystem ExampleFigure 7–13 expands the details of the Ethernet subsystem example from Figure 7–5.In this subsystem, the transmit (TX) DMA receives data from the DDR3 memory andwrites it to the Altera Triple-Speed Ethernet IP core using an Avalon-ST sourceinterface. The receive (RX) DMA accepts data from the Triple-Speed Ethernet IP coreon its Avalon-ST sink interface and writes it to DDR3 memory.

The read and write masters of both Scatter-Gather DMA controllers and theTriple-Speed Ethernet IP core connect to the DDR3 memory through an Avalon-MMpipeline bridge. This Ethernet example subsystem exports all three control and statusinterfaces through an Avalon-MM pipeline bridge, which connects to a controlleroutside of the Qsys system.

Figure 7–12. Qsys Representation of the PCI Express Subsystem

Figure 7–13. Scatter-Gather DMA-to-Ethernet Subsystem

TX Avalon-ST

RX Avalon-ST

Scatter GatherDMA

M

Src

M M

Scatter GatherDMA

MM M

S

S

S

Src

Snk

Triple SpeedEthernet

Snk

M

S

Avalon-MM PipelineBridge (Qsys)

CSR

M SDDR3

CSRCSR

CSR

EthernetCn

CalibrationCn

Ethernet Subsystem

Avalon-MM PipelineBridge(Qsys)

Qsys inserts arbitration

logic

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 31: Qsys Intro

Chapter 7: Creating a System With Qsys 7–31System Examples

Figure 7–14 shows the Qsys representation of the Ethernet subsystem.

PCI Express to Ethernet Bridge ExampleThe PCI Express-to-Ethernet Bridge example in Figure 7–15 includes two clockdomains and an Ethernet subsystem. The PCI Express and Ethernet subsystems run at125 MHz. The DDR3 SDRAM controller runs at 200 MHz. Qsys automatically insertsclock crossing logic to synchronize the DDR3 SDRAM Controller with the PCIExpress and Ethernet subsystems.

Figure 7–14. Qsys Representation of the Ethernet Subsystem

Figure 7–15. PCI Express-to-Ethernet Bridge Example System

Qsys insertsarbitration andClock crossing

logic (125 MHz-200MHz)

Qsys System

400 MHz

Ethernet Subsystem

SCSR M DDR3

CnEthernet

CnCalibration

CSRM

PCIe link Cn

PCI ExpressSubsystem

S

SM

Avalon-MMPIpeline

Bridge (Qsys)

MC

DDR3 SDRAM

Controller

125 MHz

125 MHz

125 MHz

200 MHz

DDR3SDRAM

to CPU

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 32: Qsys Intro

7–32 Chapter 7: Creating a System With QsysSystem Examples

Figure 7–16 shows the Qsys representation of the PCI Express-to-Ethernet Bridgeexample.

Pipeline BridgesThe PCI Express to Ethernet bridge example system uses several pipeline bridges.These bridges must be configured to accommodate the address range of all ofconnected components, including the components in the originating subsystem andthe components in the next higher level of the system hierarchy. As the namesuggests, the pipeline bridge inserts a pipeline stage between the connectedcomponents. Altera recommends registering signals at the subsystem interface levelfor the following reasons:

■ Registering interface signals decreases the amount of combinational logic thatmust be completed in one cycle, making it easier to meet timing constraints.

■ Registering interface signals raises the potential frequency, or fMAX, of your designat the expense of an additional cycle of latency, which might adversely affectsystem throughput.

■ The Quartus II incremental compilation feature can achieve better fMAX results ifthe subsystem boundary is registered.

f For more information about optimizing a Qsys design for performance using bridgesand other techniques, refer to Optimizing System Performance for Qsys in volume 1 ofthe Quartus II Handbook.

1 AXI bridge components are not available in the Quartus II software, but you canconnect AXI interfaces with other bridge types. Connections between AXI and Avaloninterfaces are made without requiring the use of explicitly instantiated bridges; theinterconnect provides all necessary bridging logic.For more information about AXIsupport, refer to the Qsys System Design Components chapter in volume 1 of theQuartus II Handbook.

Figure 7–16. Qsys Representation of the Complete PCI Express to Ethernet Bridge

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 33: Qsys Intro

Chapter 7: Creating a System With Qsys 7–33System Examples

Hierarchical System Using Instance Parameters ExampleYou can use an instance parameter to control the implementation of systemcomponents from a higher-level Qsys system. You define instance parameters on theInstance Parameters tab in Qsys.

In this example, a Qsys design called my_system.qsys has two instances of the sameIP component, My_IP. My_IP is a Qsys component with a system identificationparameter called MY_SYSTEM_ID. When my_system.qsys is instantiated within anotherhigher-level Qsys system, the two My_IP subcomponents require different values fortheir MY_SYSTEM_ID parameters based on a value determined by the higher-levelsystem. In this example, the value specified by the top-level system is designatedtop_id and in my_system.qsys, the component instance comp0 requires MY_SYSTEM_IDset to top_id + 1, and instance comp1 requires MY_SYSTEM_ID set to top_id + 2.

The following _hw.tcl code defines the MY_SYSTEM_ID system ID parameter in the IPcomponent My_IP:

add_parameter MY_SYSTEM_ID int 8set_parameter_property MY_SYSTEM_ID DISPLAY_NAME \MY_SYSTEM_ID_PARAMset_parameter_property MY_SYSTEM_ID UNITS None

To satisfy the design requirements for this example, you define an instance parameterin my_system.qsys that is set by the higher-level system, and then define an instancescript to specify how the values of the parameters of the My_IP componentsinstantiated in my_system.qsys are affected by the value set on the instanceparameter.

To do this, in Qsys, open the my_system.qsys Qsys system that instantiates the twoinstances of the My_IP components. On the Instance Parameters tab, create aparameter called system_id. For this example, you can set this parameter to be of typeInteger and choose 0 as the default value.

Next, you provide a Tcl Instance Script that defines how the value of the system_idparameter should affect the parameters of comp0 and comp1 subcomponents inmy_system.qsys.

The example script in Example 7–6gets the value of the parameter system_id from thetop-level system and saves it as top_id, and then increments the value by 1 and 2. Thescript then uses the new calculated values to set the MY_SYSTEM_ID parameter in theMy_IP component for the instances comp0 and comp1. The script uses informationalmessages to print the status of the parameter settings when the my_system.qsyssystem is added to the higher-level system.

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 34: Qsys Intro

7–34 Chapter 7: Creating a System With QsysUsing Qsys Command-Line with Utilities and Scripts

You can click Preview Instance to see a parameters panel that allows you to modifythe parameter value interactively and see the effect of the scripts in the message panelwhich can be useful for debugging the script. In this example, if you change theparameter value in the Preview screen, the component generates messages to reportthe top-level ID parameter value and the parameter values used for the two instancesof the component.

h For more information on creating a parameter on the Instance Parameters tab, refer toWorking with Instance Parameters in Qsys in Quartus II Help.

Using Qsys Command-Line with Utilities and ScriptsYou can perform many of the functions available in the Qsys GUI from the command-line with the qsys-generate, qsys-script, ip-generate, and ip-make-simscriptutilities. You run these command-line executables from the Quartus II installationdirectory, as follows:

<Quartus II installation directory>\quartus\sopc_builder\bin

You can use qsys-generate, ip-generate, and ip-make-simscript to generate Qsysoutput files outside of the Qsys GUI. You can use qsys-script to create andmanipulate or manage a Qsys system with command-line scripting. The followingsubsections provide information about using Qsys from the command-line and withscripts. For command-line help listing options for these executables, type thefollowing command:

<Quartus II installation directory>\quartus\sopc_builder\bin\<executable name> --help

Example 7–7 below shows an example using Qsys command-line scripting.

Example 7–6. Using an Instance Script To Set Parameters On Subcomponents

package require qsys 13.0Set_module_property Composition_callback My_callback

proc My_callback { } {

# Get The Value Of System_id Parameter From The Higher-level SystemSet Top_id [Get_parameter_value System_id]

# Print Info MessageSend_message Info "System_id Value Specified: $top_id"

# Use Above Value To Set Parameter Values For The SubcomponentsSet Child_id_0 [Expr {$top_id + 1} ]Set Child_id_1 [Expr {$top_id + 2} ]

# Set The Parameter Values On The Subcomponent InstancesSet_instance_parameter_value Comp0 My_system_id $child_id_0Set_instance_parameter_value Comp1 My_system_id $child_id_1

# Print Info MessagesSend_message Info "System_id Value Used In Comp0: $child_id_0"Send_message Info "System_id Value Used In Comp1: $child_id_1"

}

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 35: Qsys Intro

Chapter 7: Creating a System With Qsys 7–35Using Qsys Command-Line with Utilities and Scripts

1 For more information about Qsys utilities and scripting, including examples, refer tothe Altera Wiki Qsys Scripts page.

Generating Qsys Systems with the qsys-generate UtilityYou can use the qsys-generate utility to generate RTL for your Qsys system, tocompile in Quartus II, simulation models and scripts, and to create testbench systemsfor testing your Qsys system in a simulator using BFMs. Output from the qsys-generate command is the same as when generating using the Qsys GUI.

When possible, you should use qsys-generate instead of ip-generate and ip-make-simscript. The command-line options for qsys-generate are simpler, and thegeneration options and output directory structure always match those from the QsysGUI generation.

The following is a list of options that you can use with the qsys-generate utility:

■ <1st arg file>—Required. The name of the .qsys system file to generate.

■ --synthesis=<VERILOG|VHDL>—Optional. Creates synthesis HDL files thatQsys uses to compile the system in a Quartus II project. You must specify thepreferred generation language for the top-level RTL file for the generated Qsyssystem.

■ --block-symbol-file—Optional. Creates a block symbol file (.bsf) for the system.

■ --simulation=<VERILOG|VHDL>—Optional. Creates a simulation model forthe system. The simulation model contains generated HDL files for the simulator,and may include simulation-only features. You must specify the preferredsimulation language.

■ --testbench=<SIMPLE|STANDARD>—Optional. Creates a testbench system.The testbench system instantiates the original system, adding bus functionalmodels to drive the top-level interfaces. Once generated, the bus functionalmodels interact with the system in the simulator.

■ --testbench-simulation=<VERILOG|VHDL>—Optional. After creating thetestbench system, also create a simulation model for the testbench system.

■ --output-directory=<value>—Optional. Sets the output directory. Eachgeneration target is created in a subdirectory of the output directory. If you do notspecify the output directory, a subdirectory of the current working directorymatching the name of the system is used.

Example 7–7. Using an Instance Script To Display Component Names

qsys-script --script=my_script.tcl --system-file=fancy.qsys

my_script.tcl contains:

package require -exact qsys 13.0

# get all the instance names in the system and print them one by one

set instances [ get_instances ]

foreach instance $instances {

send_message Info "$instance"

}

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 36: Qsys Intro

7–36 Chapter 7: Creating a System With QsysUsing Qsys Command-Line with Utilities and Scripts

■ --search-path=<value>—Optional. If omitted, a standard default path is used. Ifprovided, a comma-separated list of paths is searched. To include the standardpath in your replacement, use "$", for example, "/extra/dir,$".

■ --jvm-max-heap-size=<value>—Optional. The maximum memory size that Qsysuses for allocations when running this tool. The value is specified as <size><unit>where unit can be m (or M) for multiples of megabytes or g (or G) for multiples ofgigabytes. The default value is 512m.

Generating Qsys Systems with the ip-generate UtilityYou use ip-generate to configure parameters and generate HDL and other outputfiles for Qsys systems and IP cores.

When you generate a system in the Qsys GUI, the generation output messagesinclude the command-lines that you can use to run generation with the same settingsusing the ip-generate utility. For example, when you generate synthesis files for asystem called test.qsys in c:/my_dir, Qsys outputs a message such as the followingspecifying the command-lines for the ip-generate utility:

Info: ip-generate --project-directory=C:/my_dir / --output-directory=C:/my_dir/test/synthesis/ --file-set=QUARTUS_SYNTH --report-file=sopcinfo:C:/my_dir/test.sopcinfo --report-file=html:C:/my_dir/test.html --report-file=qip:C:/my_dir/test/synthesis/test.qip --system-info=DEVICE_FAMILY="Stratix IV" --system-info=DEVICE=EP4S40G2F40I1 --system-info=DEVICE_SPEEDGRADE=1 --component-file=C:/my_dir/test.qsys

The following is a list of options that you can use with the ip-generate utility:

■ --project-directory=<directory>—Optional. Components are found in thelocations relative to the project, if any. By default, the current directory '.' is used.To exclude any project directory, use ''.

■ --output-directory=<directory>—Optional. This directory will contain theoutput file set(s). The directory is created if required. If omitted, the currentdirectory is used.

■ --file-set=<QUARTUS_SYNTH | SIM_VERILOG | SIM_VHDL>—Optional. Type ofoutput to generate. QUARTUS_SYNTH produces HDL that is compiled by the QuartusII software integrated synthesis. SIM_VERILOG and SIM_VHDL produce simulationmodels in the respective languages.

■ --report-file=<type><filename>—Optional. Partial or complete path for thegenerated report file, for example, html:report.html. A partial path is relative tothe current directory. To assign multiple files, use this option multiple times. Thefollowing are common report types.

■ Block Symbol File (.bsf)

■ Hypertext Markup Language File (.html)

■ Quartus II IP File (.qip)

■ Quartus II Simulation IP File (.sip)

■ SOPC Information File (.sopcinfo)

■ Simulation Package Descriptor File (.spd)

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 37: Qsys Intro

Chapter 7: Creating a System With Qsys 7–37Using Qsys Command-Line with Utilities and Scripts

■ --standard-reports—Optional. Produce standard generated report files:.sopcinfo, and .qip files.

■ --search-path=<value>—Optional. If omitted, a standard default path is used. Ifprovided, a comma-separated list of paths is searched. To include the standardinstallation directory path, use $, for example, /<directory path>/dir,$. You canalso use any directory path, or a path to an .ipx file. Multiple directory referencesare separated with a comma.

■ --component-file=<file>—Optional. A file from which to extract an IPcomponent or system, for example, "my_system.qsys" or "my_component_hw.tcl".

■ --component-name=<value>—Optional. The name of an IP component toinstantiate, for example, "altera_avalon_uart". If a component file is specified,the component must be found within that file.

■ --component-parameter=<value>—Optional. A single value assignment for acomponent parameter, for example, "--component-param=WIDTH=11". To assignmultiple parameters, use this option multiple times.

■ --system-info=<parameter>=<value>—Optional. A single value assignment, forexample, "--system-info=DEVICE_FAMILY=Stratix IV". To assign multiple systemparameters, use this option multiple times. Common parameters are:DEVICE_FAMILY, DEVICE, and DEVICE_SPEEDGRADE.

■ --language=<value>—Optional. Supported values are Verilog and VHDL, withVerilog as the default value.

■ --jvm-max-heap-size=<value>—Optional. The maximum memory size that Qsysuses for allocations when running this utility. The value is specified as<size><unit>, where unit can be m (or M) for multiples of megabytes or g (or G) formultiples of gigabytes. The default value is 512m.

Generating Qsys Simulation Scripts with the ip-make-simscript UtilityYou can use the ip-make-simscript utility to create simulation scripts, and specifyoptions related to simulation scripts that are not available in the Qsys GUI. qsys-generate, by default, generates these simulation scripts; this utility is only necessaryif you use the ip-generate flow. For example, you can use the --compile-to-workoption of the ip-make-simscript command if you want to use a single directory foryour simulation files rather than the default compilation structure. To use this utility,you must specify an .spd file that lists the required simulation files.

The following is a list of options that you can use for the ip-make-simscript utility:

■ --spd=<file>—Required. The .spd files describe the list of files to be compiled,and the memory models hierarchy.

■ --output-directory=<directory>—Optional. Directory path specifying thelocation of output files. If not specified, defaults to the directory from which theip-make-simscript is run.

■ --compile-to-work—Optional—Compiles all design files to the default library,../work.

■ --use-relative-paths—Optional. Uses relative paths whenever possible.

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 38: Qsys Intro

7–38 Chapter 7: Creating a System With QsysUsing Qsys Command-Line with Utilities and Scripts

■ --naivelink-modes—Optional. Generates files for Quartus II NativeLink RTLsimulation.

■ --jvm-max-heap-size=<value>—Optional. The maximum memory size that theqsys-script tool uses. You specify this value as <size><unit> when unit is m or M formultiples of megabytes, or g or G for multiples of gigabytes.

Creating and Managing a System with qsys-scriptYou can use the qsys-script tool to create and manipulate a Qsys system with Tclscripting commands.

1 You must provide a package version for the qsys-script. If you do not specify the--package-version=<value> qsys-script command, you must then provide a Tclscript and request the system scripting API directly with the package require -exactqsys <version> command.

The following is a list of options that you can use with the qsys-script utility:

■ --system-file=<file>—Optional. Specifies the path to a .qsys system file. Thissystem is loaded before running scripting commands.

■ --script=<file>—Optional. A file containing Tcl scripting commands forcreating or manipulating Qsys systems. If you specify both --cmd and --script,the --cmd commands are run before the script specified by --script.

■ --cmd=<value>—Optional. A string that contains Tcl scripting commands to createor manipulate a Qsys system. If you specify both --cmd and --script, the --cmdcommands are run before the script specified by --script.

■ --package-version=<value>—Optional. Specifies which system scripting Tcl APIversion to use and determines the functionality and behavior of the Tcl commands.The Quartus II software supports the Tcl API scripting commands. If you do notspecify the version on the command-line, your Tcl script must request the systemscripting API directly with the package require -exact qsys <version>command.

■ --help—Optional. Displays help for the qsys-script tool.

■ --search-path=<value>—Optional. If omitted, a standard default path is used. Ifprovided, a comma-separated list of paths is searched. To include the standardpath in your replacement, use "$", for example, /<directory path>/dir,$.Multiple directory references are separated with a comma.

■ --jvm-max-heap-size=<value>—Optional. The maximum memory size that isused by the qsys-script tool. You specify this value as <size><unit> where unitcan be m or M for multiples of megabytes or g or G for multiples of gigabytes.

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 39: Qsys Intro

Chapter 7: Creating a System With Qsys 7–39Using Qsys Command-Line with Utilities and Scripts

Qsys Scripting Command ReferenceTable 7–6 summarizes the Qsys scripting commands and provides a reference to thefull command description.

Table 7–6. Qsys System Scripting Command Reference (Part 1 of 2)

Command Full Description

add_connection <start> [<end>] page 7–41

add_instance <name> <type> [<version>] page 7–41

add_interface <name> <type> <direction> page 7–41

auto_assign_base_addresses <instance> page 7–42

auto_assign_irqs <instance> page 7–42

auto_connect <element> page 7–42

create_system [<name>] page 7–42

get_composed_connection_parameter_value <instance> <childConnection><parameter>

page 7–43

get_composed_connection_parameters <instance> <childConnection> page 7–43

get_composed_connections <instance> page 7–43

get_composed_instance_assignment <instance> <childInstance> <key> page 7–44

get_composed_instance_assignments <instance> <childInstance> page 7–44

get_composed_instance_parameter_value <instance> <childInstance> <parameter> page 7–44

get_composed_instance_parameters <instance> <childInstance> page 7–45

get_composed_instances <instance> page 7–45

get_connection_parameter_property <connection> <parameter> <property> page 7–45

get_connection_parameter_value <connection> <parameter> page 7–45

get_connection_parameters <connection> page 7–46

get_connection_properties page 7–46

get_connection_property <connection> <property> page 7–46

get_connections [<element>] page 7–46

get_instance_assignment <instance> <key> page 7–47

get_instance_assignments <instance> page 7–47

get_instance_interface_assignment <instance> <interface> <key> page 7–47

get_instance_interface_assignments <instance> <interface> page 7–47

get_instance_interface_parameter_property <instance> <interface> <parameter><property>

page 7–48

get_instance_interface_parameter_value <instance> <interface> <parameter> page 7–50

get_instance_interface_parameters <instance> <interface> page 7–48

get_instance_interface_port_property <instance> <interface> <port> <property> page 7–49

get_instance_interface_ports <instance> <interface> page 7–49

get_instance_interface_properties page 7–49

get_instance_interface_property <instance> <interface> <property> page 7–49

get_instance_interfaces <instance> page 7–50

get_instance_parameter_property <instance> <parameter> <property> page 7–50

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 40: Qsys Intro

7–40 Chapter 7: Creating a System With QsysUsing Qsys Command-Line with Utilities and Scripts

get_instance_parameter_value <instance> <parameter> page 7–50

get_instance_parameters <instance> page 7–50

get_instance_port_property <instance> <port> <property> page 7–51

get_instance_properties page 7–51

get_instance_property <instance> <property> page 7–51

get_instances page 7–51

get_interface_port_property <interface> <port> <property> page 7–52

get_interface_ports <interface> page 7–52

get_interface_properties page 7–52

get_interface_property <interface> <property> page 7–52

get_interfaces page 7–53

get_module_properties page 7–53

get_module_property <property> page 7–53

get_parameter_properties page 7–53

get_port_properties page 7–54

get_project_properties page 7–54

get_project_property <property> page 7–58

load_system <file> page 7–54

lock_avalon_base_address <instance.interface> page 7–55

preview_insert_avalon_streaming_adapters page 7–55

remove_connection <connection> page 7–55

remove_instance <instance> page 7–55

remove_interface <interface> page 7–56

save_system [<file>] page 7–56

send_message <level> <message> page 7–56

set_connection_parameter_value <connection> <parameter> <value> page 7–57

set_instance_parameter_value <instance> <parameter> <value> page 7–57

set_instance_property <instance> <property> <value> page 7–57

set_interface_property <interface> <property> <value> page 7–58

set_module_property <property> <value> page 7–53

set_project_property <property> <value> page 7–58

set_validation_property <property> <value> page 7–59

unlock_avalon_base_address <instance.interface> page 7–59

upgrade_sopc_system <filename> page 7–59

validate_connection <connection> page 7–60

validate_instance <instance> page 7–60

validate_instance_interface <instance> <interface> page 7–60

validate_system page 7–60

Table 7–6. Qsys System Scripting Command Reference (Part 2 of 2)

Command Full Description

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 41: Qsys Intro

Chapter 7: Creating a System With Qsys 7–41Using Qsys Command-Line with Utilities and Scripts

add_instanceThis command adds an instance of a component, referred to as a child or childinstance, to the system.

add_interfaceThis command adds an interface to your system, which you can use to export aninterface from within the system. You specify the exported interface with thecommand set_interface_property EXPORT_OF <instance.interface>.

1 Interface properties work differently for qsys scripting than with _hw.tcl scripting. In_hw.tcl, interfaces do not distinguish between properties and parameters; in qsysscripting, properties and parameters are unique.

add_connectionThis command connects interfaces using an appropriate connection type. Interfacenames consist of a child instance name, followed by the name of an interface providedby that module, for example, mux0.out is the interface out on the instance namedmux0.

add_connection

Usage add_connection <start> [<end>]

Returns None

Arguments start The start interface to be connected, in <instance_name>.<interface_name> format.

end (optional) The end interface to be connected, <instance_name>.<interface_name>

Example add_connection dma.read_master sdram.s1

add_instance

Usage add_instance <name> <type> [<version>]

Returns None

Arguments

nameSpecifies a unique local name that you can use to manipulate the instance. Thisname is used in the generated HDL to identify the instance.

typeThe type refers to a kind of instance available in a library, for examplealtera_avalon_uart.

version(optional)

The required version of the specified instance type. If no version is specified, thelatest version is used.

Example add_instance uart_0 altera_avalon_uart

add_interface

Usage add_interface <name> <type> <direction>

Returns None

Argumentsname The name of the interface that will be exported from the system

type The type of interface

direction The interface direction

Exampleadd_interface my_export conduit end

set_interface_property my_export EXPORT_OF uart_0.external_connection

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 42: Qsys Intro

7–42 Chapter 7: Creating a System With QsysUsing Qsys Command-Line with Utilities and Scripts

auto_assign_base_addressesThis command assigns base addresses to memory-mapped interfaces on an instancein the system. Instance interfaces that are locked with lock_avalon_base_addresscommand keep their addresses during address auto-assignment.

auto_assign_irqsThis command assigns interrupt numbers to all connected interrupt senders on aninstance in the system.

auto_connectThis command creates connections from an instance or instance interface to matchinginterfaces in other instances in the system. For example, Avalon-MM slaves areconnected to Avalon-MM masters.

create_systemThis command replaces the current system in the system script with a new systemwith the specified name.

auto_assign_base_addresses

Usage auto_assign_base_addresses <instance>

Returns None

Arguments instance The name of the instance with memory mapped interfaces

Example auto_assign_base_addresses sdram

auto_assign_irqs

Usage auto_assign_irqs <instance>

Returns None

Arguments instance The name of the instance with an interrupt sender

Example auto_assign_irqs sdram

auto_connect

Usage auto_connect <element>

Returns None

Arguments element The name of the instance interface, or the name of an instance

Exampleauto_connect sdram

auto_connect uart_0.s1

create_system

Usage create_system [<name>]

Returns None

Arguments name (optional) The name of the new system

Example create_system my_new_system_name

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 43: Qsys Intro

Chapter 7: Creating a System With Qsys 7–43Using Qsys Command-Line with Utilities and Scripts

get_composed_connection_parameter_valueThis command returns the value of a parameter in a connection in the subsystem, foran instance that contains a subsystem.

get_composed_connection_parametersThis command returns a list of parameters on a connection in the subsystem, for aninstance that contains a subsystem.

get_composed_connectionsThis command returns a list of all connections in a subsystem, for an instance thatcontains a subsystem.

get_composed_connection_parameter_value

Usage get_composed_connection_parameter_value <instance> <childConnection> <parameter>

Returns String The parameter value

Argumentsinstance The child instance containing a subsystem

childConnection The name of the connection in the subsystem

parameter The name of the parameter to query on the connection

Example get_composed_connection_parameter_value subsystem_0 cpu.data_master/memory.s0baseAddress

get_composed_connection_parameters

Usage get_composed_connection_parameters <instance> <childConnection>

Returns String[] A list of parameter names

Arguments instance The child instance containing a subsystem

childConnection The name of the connection in the subsystem

Example get_composed_connection_parameters subsystem_0 cpu.data_master/memory.s0

get_composed_connections

Usage get_composed_connections <instance>

Returns String[]A list of connection names in the subsystem. These connection names will not bequalified with the instance name.

Arguments instance The child instance containing a subsystem

Example get_composed_connections subsystem_0

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 44: Qsys Intro

7–44 Chapter 7: Creating a System With QsysUsing Qsys Command-Line with Utilities and Scripts

get_composed_instance_assignmentThis command returns the value of an assignment on an instance of a subsystem, foran instance that models a subsystem.

get_composed_instance_assignmentsThis command returns a list of assignments on an instance of a subsystem, for aninstance that contains a subsystem.

get_composed_instance_parameter_valueThis command returns the value of a parameters on an instance in a subsystem, for aninstance that contains a subsystem.

get_composed_instance_assignment

Usage get_composed_instance_assignment <instance> <childInstance> <key>

Returns String The value of the assignment

Argumentsinstance The child instance containing a subsystem

childInstance The name of a child instance found in the subsystem

key The assignment key

Example get_composed_instance_assignment subsystem_0 video_0"embeddedsw.CMacro.colorSpace"

get_composed_instance_assignments

Usage get_composed_instance_assignments <instance> <childInstance>

Returns String[] A list of assignment names

Arguments instance The child instance containing a subsystem

childInstance The name of a child instance found in the subsystem

Example get_composed_instance_assignments subsystem_0 cpu

get_composed_instance_parameter_value

Usage get_composed_instance_parameter_value <instance> <childInstance> <parameter>

Returns String The value of a parameter on an instance of a subsystem

Argumentsinstance The child instance containing a subsystem

childInstance The name of a child instance found in the subsystem

parameter The name of the parameter to query on an instance of a subsystem

Example get_composed_instance_parameter_value subsystem_0 cpu DATA_WIDTH

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 45: Qsys Intro

Chapter 7: Creating a System With Qsys 7–45Using Qsys Command-Line with Utilities and Scripts

get_composed_instance_parametersThis command returns a list of parameters on an instance of a subsystem, for aninstance that contains a subsystem.

get_composed_instancesThis command returns a list of child instances in the subsystem, for an instance thatcontains a subsystem.

get_connection_parameter_propertyThis command returns the value of a parameter property in a connection.

get_connection_parameter_valueThis command gets the value of a parameter on the connection. Parameters representaspects of the connection that can be modified once the connection is created, such asthe base address for an Avalon-MM connection.

get_composed_instance_parameters

Usage get_composed_instance_parameters <instance> <childInstance>

Returns String[] A list of parameter names

Arguments instance The child instance containing a subsystem

childInstance The name of a child instance found in the subsystem

Example get_composed_instance_parameters subsystem_0 cpu

get_composed_instances

Usage get_composed_instances <instance>

Returns String[] A list of instance names found in the subsystem

Arguments instance The child instance containing a subsystem

Example get_composed_instances subsystem_0

get_connection_parameter_property

Usage get_connection_parameter_property <connection> <parameter> <property>

Returns various The value of the parameter property

Argumentsconnection The connection to query

parameter The name of the parameter

property The property of the connection

Example get_connection_parameter_property cpu.data_master/dma0.csr baseAddress UNITS

get_connection_parameter_value

Usage get_connection_parameter_value <connection> <parameter>

Returns various The value of the parameter

Arguments connection The connection to query

parameter The name of the parameter

Example get_connection_parameter_value cpu.data_master/dma0.csr baseAddress

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 46: Qsys Intro

7–46 Chapter 7: Creating a System With QsysUsing Qsys Command-Line with Utilities and Scripts

get_connection_parametersThis command returns a list of parameters found on a connection. The list ofconnection parameters is the same for all connections of the same type.

get_connection_propertiesThis command returns a list of properties found on a connection. The list ofconnection properties is the same for all connections, regardless of type.

get_connection_propertyThis command returns the value of a connection property.

get_connectionsThis command returns a list of connections in the system if no element is specified. Ifa child instance is specified, for example cpu, all connections to any interface on theinstance are returned. If an interface on a child instance is specified, for examplecpu.instruction_master, only connections to that interface are returned.

get_connection_parameters

Usage get_connection_parameters <connection>

Returns String[] A list of parameter names

Arguments connection The connection to query

Example get_connection_parameters cpu.data_master/dma0.csr

get_connection_properties

Usage get_connection_properties

Returns String[] A list of connection properties

Arguments None

Example get_connection_properties

get_connection_property

Usage get_connection_property <connection> <property>

Returns String The value of a connection property

Arguments connection The connection to query

property The name of the connection property

Example get_connection_property cpu.data_master/dma0.csr TYPE

get_connections

Usage get_connections [<element>]

Returns String[] A list of connections

Arguments element(optional)

The name of a child instance, or the qualified name of an interface on a childinstance

Example

get_connections

get_connections cpu

get_connections cpu.instruction_master

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 47: Qsys Intro

Chapter 7: Creating a System With Qsys 7–47Using Qsys Command-Line with Utilities and Scripts

get_instance_assignmentThis command returns the value of an assignment on a child instance.

get_instance_assignmentsThis command returns a list of assignment keys for any assignments defined for theinstance.

get_instance_interface_assignmentThis command returns the value of an assignment on an interface of a child instance.

get_instance_interface_assignmentsThis command returns the value of an assignment on an interface of a child instance.

get_instance_assignment

Usage get_instance_assignment <instance> <key>

Returns String The value of the specified assignment

Arguments instance The name of the child instance

key The assignment key to query

Example get_instance_assignment video_processor embeddedsw.CMacro.colorSpace

get_instance_assignments

Usage get_instance_assignments <instance>

Returns String[] A list of assignment keys

Arguments instance The name of the child instance

Example get_instance_assignments sdram

get_instance_interface_assignment

Usage get_instance_interface_assignment <instance> <interface> <key>

Returns String The value of the specified assignment

Argumentsinstance The name of the child instance

interface The name of an interface on the child instance

key The assignment key to query

Example get_instance_interface_assignment sdram s1 embeddedsw.configuration.isFlash

get_instance_interface_assignments

Usage get_instance_interface_assignments <instance> <interface>

Returns String[] A list of assignment keys

Arguments instance The name of the child instance

interface The name of an interface on the child instance

Example get_instance_interface_assignments sdram s1

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 48: Qsys Intro

7–48 Chapter 7: Creating a System With QsysUsing Qsys Command-Line with Utilities and Scripts

get_instance_interface_parameter_propertyThis command returns the property value on a parameter in an interface of a childinstance.

get_instance_interface_parameter_valueThis command returns the value of a parameter of an interface in a child instance.

get_instance_interface_parametersThis command returns a list of parameters for an interface in a child instance.

get_instance_interface_parameter_property

Usage get_instance_interface_parameter_property <instance> <interface> <parameter><property>

Returns various The value of the parameter property

Arguments

instance The name of the child instance

interface The name of an interface on the child instance

parameter The name of the parameter on the interface

property The name of the property on the parameter

Example get_instance_interface_parameter_property uart_0 s0 setupTime ENABLED

get_instance_interface_parameter_value

Usage get_instance_interface_parameter_value <instance> <interface> <parameter>

Returns various The value of the parameter

Argumentsinstance The name of the child instance

interface The name of an interface on the child instance

parameter The name of the parameter on the interface

Example get_instance_interface_parameter_value uart_0 s0 setupTime

get_instance_interface_parameters

Usage get_instance_interface_parameters <instance> <interface>

Returns String[] A list of parameter names for parameters in the interface

Arguments instance The name of the child instance

interface The name of an interface on the child instance

Example get_instance_interface_parameters uart_0 s0

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 49: Qsys Intro

Chapter 7: Creating a System With Qsys 7–49Using Qsys Command-Line with Utilities and Scripts

get_instance_interface_port_propertyThis command returns the property value of a port in the interface of a child instance.

get_instance_interface_portsThis command returns a list of ports in an interface of a child instance.

get_instance_interface_propertiesThis command returns a list of properties that you can be query for an interface in achild instance.

get_instance_interface_propertyThis command returns the property value for an interface in a child instance.

get_instance_interface_port_property

Usage get_instance_interface_port_property <instance> <interface> <port> <property>

Returns various The value of the port property

Arguments

instance The name of the child instance

interface The name of an interface on the child instance

port The name of the port in the interface

property The name of the property of the port

Example get_instance_interface_port_property uart_0 exports tx WIDTH

get_instance_interface_ports

Usage get_instance_interface_ports <instance> <interface>

Returns String[] A list of port names found in the interface

Arguments instance The name of the child instance

interface The name of an interface on the child instance

Example get_instance_interface_ports uart_0 s0

get_instance_interface_properties

Usage get_instance_interface_properties

Returns String[] A list of property names

Arguments None

Example get_instance_interface_properties

get_instance_interface_property

Usage get_instance_interface_property <instance> <interface> <property>

Returns String The value of the property

Argumentsinstance The name of the child instance

interface The name of an interface on the child instance

property The name of the property of the interface

Example get_instance_interface_property uart_0 s0 DESCRIPTION

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 50: Qsys Intro

7–50 Chapter 7: Creating a System With QsysUsing Qsys Command-Line with Utilities and Scripts

get_instance_interfacesThis command returns a list of interfaces in a child instance.

get_instance_parameter_propertyThis command returns the value of a property on a parameter in a child instance.

get_instance_parameter_valueThis command returns the value of a property in a child instance.

get_instance_parametersThis command returns a list of parameters in a child instance.

get_instance_interfaces

Usage get_instance_interfaces <instance>

Returns String[] A list of interface names

Arguments instance The name of the child instance

Example get_instance_interfaces uart_0

get_instance_parameter_property

Usage get_instance_parameter_property <instance> <parameter> <property>

Returns various The value of the parameter property

Argumentsinstance The name of the child instance

parameter The name of the parameter in the instance

property The name of the property of the parameter

Example get_instance_parameter_property uart_0 baudRate ENABLED

get_instance_parameter_value

Usage get_instance_parameter_value <instance> <parameter>

Returns various The value of the parameter

Arguments instance The name of the child instance

parameter The name of the parameter in the instance

Example get_instance_parameter_value uart_0 baudRate

get_instance_parameters

Usage get_instance_parameters <instance>

Returns String[] A list of parameters in the instance

Arguments instance The name of the child instance

Example get_instance_parameters uart_0

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 51: Qsys Intro

Chapter 7: Creating a System With Qsys 7–51Using Qsys Command-Line with Utilities and Scripts

get_instance_port_propertyThis command returns the value of a property of a port contained by an interface in achild instance.

get_instance_propertiesThis command returns a list of properties for a child instance.

get_instance_propertyThis command returns the value of a property for a child instance.

get_instancesThis command returns a list of the instance names for all child instances in the system.

get_instance_port_property

Usage get_instance_port_property <instance> <port> <property>

Returns various The value of the property for the port

Argumentsinstance The name of the child instance

port The name of a port in one of the interfaces on the child instance

property The name of a property found on the port; DIRECTION, ROLE, WIDTH

Example get_instance_port_property uart_0 tx WIDTH

get_instance_properties

Usage get_instance_properties

Returns String[] A list of property names for the child instance

Arguments None

Example get_instance_properties

get_instance_property

Usage get_instance_property <instance> <property>

Returns String The value of the property

Arguments instance The name of the child instance

property The name of a property found on the instance

Example get_instance_property cpu ENABLED

get_instances

Usage get_instances

Returns String[] A list of child instance names

Arguments None

Example get_instances

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 52: Qsys Intro

7–52 Chapter 7: Creating a System With QsysUsing Qsys Command-Line with Utilities and Scripts

get_interface_port_propertyThis command returns the value of a property of a port contained by one of the top-level exported interfaces.

get_interface_portsThis command returns the names of all of the ports that have been added to aninterface.

get_interface_propertiesThis command returns the names of all the available interface properties. The list ofinterface properties is the same for all interface types.

get_interface_propertyThis command returns the value of a property from the specified interface.

get_interface_port_property

Usage get_interface_port_property <interface> <port> <property>

Returns various The value of the property

Argumentsinterface The name of a top-level interface on the system

port The name of a port found in the interface

property The name of a property found on the port

Example get_interface_port_property uart_exports tx DIRECTION

get_interface_ports

Usage get_interface_ports <interface>

Returns String[] A list of port names

Arguments interface The name of a top-level interface on the system

Example get_interface_ports export_clk_out

get_interface_properties

Usage get_interface_properties

Returns String[] A list of interface properties

Arguments None

Example get_interface_properties

get_interface_property

Usage get_interface_property <interface> <property>

Returns various The property value

Arguments interface The name of a top-level interface on the system

property The name of the property, EXPORT_OF

Example get_interface_property export_clk_out EXPORT_OF

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 53: Qsys Intro

Chapter 7: Creating a System With Qsys 7–53Using Qsys Command-Line with Utilities and Scripts

get_interfacesThis command returns a list of top-level interfaces in the system.

get_module_propertiesThis command returns the properties that you can manage for the top-level module.

get_module_propertyThis command returns the value of a top-level system property.

get_parameter_propertiesThis command returns a list of properties that you can query on parameters. Theseproperties can be queried on any parameter, such as parameters on instances,interfaces, instance interfaces, and connections.

get_interfaces

Usage get_interfaces

Returns String[] A list of the top-level interfaces exported from the system

Arguments None

Example get_interfaces

get_module_properties

Usage get_module_properties

Returns String[] A list of property names

Arguments None

Example get_module_properties

get_module_property

Usage get_module_property <property>

Returns String The value of the property

Arguments property The name of the property to query; NAME

Example get_module_property NAME

get_parameter_properties

Usage get_parameter_properties

Returns String[] A list of parameter properties

Arguments None

Example get_parameter_properties

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 54: Qsys Intro

7–54 Chapter 7: Creating a System With QsysUsing Qsys Command-Line with Utilities and Scripts

get_port_propertiesThis command returns a list of properties that you can query on ports.

get_project_propertiesThis command returns a list of properties that you can query for the Quartus IIproject.

get_project_propertyThis command returns the value of a Quartus II project property.

load_systemThis command loads a Qsys system from a file, and uses the system as the currentsystem for scripting commands.

get_port_properties

Usage get_port_properties

Returns String[] A list of port properties

Arguments None

Example get_port_properties

get_project_properties

Usage get_project_properties

Returns String[] A list of project properties

Arguments None

Example get_project_properties

get_project_property

Usage get_project_property <property>

Returns String The value of the property

Arguments property The name of the project property; DEVICE_FAMILY

Example get_project_property DEVICE_FAMILY

load_system

Usage load_system <file>

Returns None

Arguments file The path to a .qsys file

Example load_system example.qsys

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 55: Qsys Intro

Chapter 7: Creating a System With Qsys 7–55Using Qsys Command-Line with Utilities and Scripts

lock_avalon_base_addressThis command prevents the memory-mapped base address from being changed forconnections to an interface on an instance when the auto_assign_base_addresses orauto_assign_system_base_addresses commands are run.

preview_insert_avalon_streaming_adaptersThis command runs the adapter insertion for Avalon-ST connections, which adaptconnections with mismatched configuration, such as mismatched data widths.

remove_connectionThis command removes a connection from the system.

remove_instanceThis command removes a child instance from the system.

lock_avalon_base_address

Usage lock_avalon_base_address <instance.interface>

Returns None

Arguments instance.interfaceThe qualified name of the interface of an instance, in<instance>.<interface> format

Example lock_avalon_base_address sdram.s1

preview_insert_avalon_streaming_adapters

Usage preview_insert_avalon_streaming_adapters

Returns None

Arguments None

Example preview_insert_avalon_streaming_adapters

remove_connection

Usage remove_connection <connection>

Returns None

Arguments connection The name of the connection to remove

Example remove_connection cpu.data_master/sdram.s0

remove_instance

Usage remove_instance <instance>

Returns None

Arguments instance The name of the child instance to remove

Example remove_instance cpu

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 56: Qsys Intro

7–56 Chapter 7: Creating a System With QsysUsing Qsys Command-Line with Utilities and Scripts

remove_interfaceThis command removes an exported top-level interface from the system.

save_systemThis command saves the current in-memory system to the named file. If the file is notspecified, the system saves to the same file that was opened with the load_systemcommand.

send_messageThis command sends a message to the user of the script. The message text is normallyinterpreted as HTML. You can use the <b> element to provide emphasis.

remove_interface

Usage remove_interface <interface>

Returns None

Arguments interface The name of the exported top-level interface

Example remove_interface clk_out

save_system

Usage save_system [<file>]

Returns None

Arguments file (optional) If present, the path of the .qsys file to save

Examplesave_system

save_system example.qsys

send_message

Usage send_message <level> <message>

Returns None

Arguments level

The following message levels are supported:

■ ERROR—Provides an error message.

■ WARNING—Provides a warning message.

■ INFO—Provides an informational message.

■ PROGRESS—Provides a progress message.

■ DEBUG—Provides a debug message when debug mode is enabled.

message The text of the message.

Example send_message ERROR "The system is down!"

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 57: Qsys Intro

Chapter 7: Creating a System With Qsys 7–57Using Qsys Command-Line with Utilities and Scripts

set_connection_parameter_valueThis command sets the parameter value for a connection.

set_instance_parameter_valueThis command set the parameter value for a child instance. Derived parameters andSYSTEM_INFO parameters for the child instance can not be set with this command.

set_instance_propertyThis command sets the property value of a child instance. Most instance propertiesare read-only and can only be set by the instance itself. The primary use for thiscommand is to update the ENABLED parameter, which includes or excludes a childinstance when generating the system.

set_connection_parameter_value

Usage set_connection_parameter_value <connection> <parameter> <value>

Returns None

Argumentsconnection The connection

parameter The name of the parameter

value The new parameter value

Example set_connection_parameter_value cpu.data_master/dma0.csr baseAddress "0x000a0000"

set_instance_parameter_value

Usage set_instance_parameter_value <instance> <parameter> <value>

Returns None

Argumentsinstance The name of the child instance

parameter The name of the parameter

value The new parameter value

Example set_instance_parameter_value uart_0 baudRate 9600

set_instance_property

Usage set_instance_property <instance> <property> <value>

Returns None

Argumentsinstance The name of the child instance

property The name of the property

value The new property value

Example set_instance_property cpu ENABLED false

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 58: Qsys Intro

7–58 Chapter 7: Creating a System With QsysUsing Qsys Command-Line with Utilities and Scripts

set_interface_propertyThis command sets the property value on an exported top-level interface. Thiscommand is used to set the EXPORT_OF property to specify which interface of a childinstance is exported by the top-level interface.

set_module_propertyThis command sets the system property value, such as the name of the system usingthe NAME property.

set_project_propertyThis command sets the project property value, such as the device family.

set_interface_property

Usage set_interface_property <interface> <property> <value>

Returns None

Argumentsinterface The name of an exported top-level interface

property The name of the property

value The new property value

Example set_interface_property clk_out EXPORT_OF clk.clk_out

set_module_property

Usage set_module_property <property> <value>

Returns None

Arguments property The name of the property

value The new property value

Example set_module_property NAME "new_system_name"

set_project_property

Usage set_project_property <property> <value>

Returns None

Arguments property The name of the property

value The new property value

Example set_project_property DEVICE_FAMILY "Cyclone IV GX"

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 59: Qsys Intro

Chapter 7: Creating a System With Qsys 7–59Using Qsys Command-Line with Utilities and Scripts

set_validation_propertyThis command sets a property that affects how and when validation is run duringsystem scripting. To disable system validation after each scripting command, setAUTOMATIC_VALIDATION to false.

unlock_avalon_base_addressThis command allows the memory-mapped base address to be changed forconnections to an interface on an instance when the auto_assign_base_addresses orauto_assign_system_base_addresses commands are run.

upgrade_sopc_systemThis command loads the specified .sopc file, which then upgrades the file as aQsys-compatible system. Some child instances and interconnect are replaced so thatthe system functions in Qsys. You must save the new Qsys-compatible system withthe save_system command.

set_validation_property

Usage set_validation_property <property> <value>

Returns None

Arguments property The name of the property

value The new property value.

Example set_validation_property AUTOMATIC_VALIDATION false

unlock_avalon_base_address

Usage unlock_avalon_base_address <instance.interface>

Returns None

Arguments instance.interfaceThe qualified name of the interface of an instance, in<instance>.<interface> format

Example unlock_avalon_base_address sdram.s1

upgrade_sopc_system

Usage upgrade_sopc_system <filename>

Returns None

Arguments filenameThe path to the .sopc file being upgraded. The upgrade will move the .sopc file andrelated generation files to a backup directory.

Example upgrade_sopc_system old_system.sopc

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 60: Qsys Intro

7–60 Chapter 7: Creating a System With QsysUsing Qsys Command-Line with Utilities and Scripts

validate_connectionThis command validates the specified connection, and returns the during validationmessages.

validate_instanceThis command validates the specified child instance, and returns the validationmessages.

validate_instance_interfaceThis command validates an interface on a child instance, and returns the validationmessages.

validate_systemThis command validates the system, and returns the validation messages.

validate_connection

Usage validate_connection <connection>

Returns String[] A list of messages produced validation

Arguments connection The name of the connection to validate

Example validate_connection cpu.data_master/sdram.s1

validate_instance

Usage validate_instance <instance>

Returns String[] A list of messages produced validation

Arguments instance The name of the child instance to validate

Example validate_instance cpu

validate_instance_interface

Usage validate_instance_interface <instance> <interface>

Returns String[] A list of messages produced validation

Arguments instance The name of a child instance

interface The name of the instance on the child instance to validate

Example validate_instance_interface cpu data_master

validate_system

Usage validate_system

Returns String[] A list of messages produced validation

Arguments None

Example validate_system

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis

Page 61: Qsys Intro

Chapter 7: Creating a System With Qsys 7–61Document Revision History

Document Revision HistoryTable 7–7 shows the revision history for this document.

f For previous versions of the Quartus II Handbook, refer to the Quartus II HandbookArchive.

m For more information about the benefits of using Qsys, refer to Five Reasons to Switchfrom SOPC Builder to Qsys on the Webcasts and Videos page of the Altera website.

Table 7–7. Document Revision History

Date Version Changes

May 2013 13.0.0

■ Added AMBA APB support.

■ Added qsys-generate utility.

■ Added VHDL BFM ID support.

■ Added “Creating Secure Systems (TrustZones)”.

■ Added “CMSIS Support for Qsys Systems With An HPS Component”.

■ Added VHDL language support options.

November 2012 12.1.0 ■ Added AMBA AXI4 support.

June 2012 12.0.0

■ Added AMBA AX3I support.

■ Added Preset Editor updates.

■ Added command-line utilities, and scripts.

November 2011 11.1.0

■ Added Synopsys VCS and VCS MX Simulation Shell Script.

■ Added Cadence Incisive Enterprise (NCSIM) Simulation Shell Script.

■ Added Using Instance Parameters and Example Hierarchical System Using Parameters.

May 2011 11.0.0

■ Added simulation support in Verilog HDL and VHDL.

■ Added testbench generation support.

■ Updated simulation and file generation sections.

December 2010 10.1.0 Initial release.

May 2013 Altera Corporation Quartus II Handbook Version 13.0Volume 1: Design and Synthesis

Page 62: Qsys Intro

7–62 Chapter 7: Creating a System With QsysDocument Revision History

Quartus II Handbook Version 13.0 May 2013 Altera CorporationVolume 1: Design and Synthesis