No part of this manual may be reproduced in
any form or by any means (including electronic storage and retrieval or translation
into a foreign language) without prior agreement and written consent from Keysight
Technologies as governed by United States
and international copyright laws.
Trademarks
UNIX is a registered trademark of UNIX System Laboratories in the U.S.A. and other
countries. Target is copyrighted by Thru-Put
Systems, Inc.
Manual Part Number
M3xxx-90004
Edition
1.2, February 2021
Available in electronic format only
Published by
Keysight Technologies, Inc.
1900 Garden of the Gods Road
Colorado Springs, CO 80907 USA
Technology Licenses
The hardware and/or software described in
this document are furnished under a license
and may be used or copied only in accordance with the terms of such license.
Declaration of Conformity
Declarations of Conformity for this product
and for other Keysight products may be
downloaded from the Web. Go to
http://www.keysight.com/go/conformity
and click on “Declarations of Conformity.”
You can then search by product number to
find the latest Declaration of Conformity.
U.S. Government Rights
The Software is "commercial computer software," as defined by Federal Acquisition
Regulation ("FAR") 2.101. Pursuant to FAR
12.212 and 27.405-3 and Department of
Defense FAR Supplement ("DFARS")
227.7202, the U.S. government acquires
commercial computer software under the
same terms by which the software is customarily provided to the public. Accordingly,
Keysight provides the Software to U.S. government customers under its standard commercial license, which is embodied in its
End User License Agreement (EULA), a copy
of which can be found at http://www.key-
sight.com/find/sweula. The license set forth
in the EULA represents the exclusive authority by which the U.S. government may use,
modify, distribute, or disclose the Software.
The EULA and the license set forth therein,
does not require or permit, among other
things, that Keysight: (1) Furnish technical
information related to commercial computer
software or commercial computer software
documentation that is not customarily provided to the public; or (2) Relinquish to, or
otherwise provide, the government rights in
excess of these rights customarily provided
to the public to use, modify, reproduce,
release, perform, display, or disclose commercial computer software or commercial
computer software documentation. No additional government requirements beyond
those set forth in the EULA shall apply,
except to the extent that those terms, rights,
or licenses are explicitly required from all
providers of commercial computer software
pursuant to the FAR and the DFARS and are
set forth specifically in writing elsewhere in
the EULA. Keysight shall be under no obligation to update, revise or otherwise modify
the Software. With respect to any technical
data as defined by FAR 2.101, pursuant to
FAR 12.211 and 27.404.2 and DFARS
227.7102, the U.S. government acquires no
greater than Limited Rights as defined in
FAR 27.401 or DFAR 227.7103-5 (c), as
applicable in any technical data.
Warranty
THE MATERIAL CONTAINED IN THIS DOCUMENT IS PROVIDED "AS IS," AND IS SUBJECT TO BEING CHANGED, WITHOUT
NOTICE, IN FUTURE EDITIONS. FURTHER,
TO THE MAXIMUM EXTENT PERMITTED BY
APPLICABLE LAW, KEYSIGHT DISCLAIMS
ALL WARRANTIES, EITHER EXPRESS OR
IMPLIED WITH REGARD TO THIS MANUAL
AND ANY INFORMATION CONTAINED
HEREIN, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANT-
ABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. KEYSIGHT SHALL NOT BE LIABLE
FOR ERRORS OR FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION
WITH THE FURNISHING, USE, OR PERFORMANCE OF THIS DOCUMENT OR ANY
INFORMATION CONTAINED HEREIN.
SHOULD KEYSIGHT AND THE USER HAVE A
SEPARATE WRITTEN AGREEMENT WITH
WARRANTY TERMS COVERING THE MATERIAL IN THIS DOCUMENT THAT CONFLICT
WITH THESE TERMS, THE WARRANTY
TERMS IN THE SEPARATE AGREEMENT WILL
CONTROL.
Safety Information
A CAUTION notice denotes a hazard. It
calls attention to an operating procedure, practice, or the like that, if not
correctly performed or adhered to,
could result in damage to the product
or loss of important data. Do not proceed beyond a CAUTION notice until
the indicated conditions are fully
understood and met.
A WARNING notice denotes a hazard.
It calls attention to an operating procedure, practice, or the like that, if not
correctly performed or adhered to,
could result in personal injury or
death. Do not proceed beyond a
WARNING notice until the indicated
conditions are fully understood and
met.
Page 3
Contents
1 Understanding PXIe Digitizers Theory of Operation
2 Using the KS2201A PathWave Test Sync Executive Software
Implementing SD1 API functions — Sample Programs / 183
Sample program for the overall Digitizer work flow using Python / 183
Sample program for Auto-triggering input waveform using Python / 184
Sample program for DAQ multiple triggering using Python / 188
Sample program for PXI triggering on DAQs using Python / 191
7 Understanding Error Codes in SD1 API
Description of Error & Warning IDs / 196
Description of SD1 Error IDs / 196
Description of SD1 Warning IDs / 198
8 Documentation References
Accessing Online Help for SD1 3.x software / 200
Links to other documents / 201
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide7
Page 8
Index
8SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 9
SD1 3.x Software for M310xA / M330xA Digitizers
User’s Guide
1.Understanding PXIe Digitizers
Theory of Operation
Understanding Digitizer’s operation 11
Working with I/O Triggers 19
Working with Clock System 20
Page 10
1Understanding PXIe Digitizers Theory of Operation
Keysight M31/M33XX digitizers are part of the new M3XXXA family of FPGA-programmable AWGs
and Digitizers. These high-performance digitizers with high channel density have an advanced data
acquisition system (DAQ), includes easy-to-use programming libraries and provides optional
real-time sequencing and decision making capability using the Hard Virtual Instrumentation (HVI)
technology with precise timing and multi-module synchronization. Graphical FPGA programing
allows for FPGA customization without HDL programming expertise and performance penalty. This is
a new family of FPGA-Programmable Digitizers with precise multi-module synchronization and real
time sequencing technology (HVI).
10SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 11
Understanding PXIe Digitizers Theory of Operation1
Section 1.1: Understanding Digitizer’s operation
The M31/M33XXA Digitizers has a flexible and powerful input structure to acquire signals (Figure 1).
Tabl e 1 shows Keysight standards for the output labeling (channel enumeration starts with CH1).
Compatibility mode, which can be changed by open(), is available to support legacy modules and
allows the channel numbering (channel enumeration) to start with either CH0 or CH1.
Modules are opened by default with the enumeration mode of its front panel. However, it is possible
to open them in compatibility mode, forcing enumeration to the selected option. This option might
be needed when different modules coexist.
Table 1Compatibility mode options
OptionDescriptionNameValue
LegacyChannel enumeration starts with CH0COMPATIBILITY_LEGACY0
KeysightChannel enumeration starts with CH1COMPATIBILITY_KEYSIGHT1
Legacy modules refer to SD1 modules that were manufactured by Signadyne before they were
acquired by KeysightTechnologies. If the hardware equipment configuration being used only
contains modules from KeysightTechnologies, channel enumeration should start with CH1.
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide11
Page 12
1Understanding PXIe Digitizers Theory of Operation
1.1.2: Input settings
The M31/M33XXA Digitizers provides a block that allows the user to configure all the input settings
such as input impedance, full scale, coupling, prescaler, and so on.
Figure 2Input settings in the M31/M33XXA Digitizers functional block diagram
Full Scale, Impedance and Coupling
Depending on the product specifications the user can configure the input full scale value, the input
impedance (Tab le 2) and the input coupling (Tab le 3).
Product-dependent Settings: This section describes all the possible input settings, but in reality they
are product-dependent. Check the corresponding Product Data Sheet to see if they are applicable.
Table 2Input Impedance options
OptionDescriptionNameValue
High ImpedanceInput impedance is high (value is product dependent, check the
corresponding Data Sheet)
50ΩInput impedance is 50ΩAIN_IMPEDANCE_501
Table 3Input Coupling options
OptionDescriptionNameValue
DCDC couplingAIN_COUPLING_DC0
ACAC couplingAIN_COUPLING_AC1
AIN_IMPEDANCE_HZ0
12SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 13
Understanding PXIe Digitizers Theory of Operation1
NOTE
The full scale parameter adjusts automatically the input gain to maximize the input dynamic range.
Tabl e 4 shows the accepted range of voltage values for full scale, as a function of impedance.
Table 4Full Scale Voltage range as a function of Impedance
Impedance OptionVoltage range for DIG500Voltage range for DIG100
HiZ0.1V to 8V0.1V to 10V
50Ω0.0625V to 4V0.2V to 3V
Prescaler
The prescaler is used to reduce the effective input sampling rate, capturing 1 out of n samples and
discarding the rest. The resulting sampling rate is as follows:
Figure 3Resulting sampling rate when prescaler is applied
where, f
fs = f
is final effective sampling frequency
s
f
CLKsys
/ (5 * prescaler)
CLKsys
is the Clock System
prescaler is an integer value (4 bits)
Prescaler vs. Downsampling/Decimation:The prescaler cannot be
considered as a full decimation or down-sampling block as it does not
contain any filters and therefore, it generates aliasing. For applications
where full downsampling is required, you must choose an IF Keysight
Digitizer or Transceiver, which provides DDC (Digital Down Conversion).
Table 5Programming functions related to the input prescaler
Function NameDescriptionAPI function
channelPrescalerConfigConfigures the input prescalerchannelPrescalerConfig()
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide13
Page 14
1Understanding PXIe Digitizers Theory of Operation
1.1.3: Analog Trigger
The analog trigger block processes the input data and generates a digital trigger that can be used by
any Data Acquisition Block (“Data Acquisition (DAQs)” on page 15).
Figure 4Analog trigger processor in the M31/M33XXA Digitizers functional block diagram
You can select the threshold and the trigger mode. The available trigger modes are shown in Table 6 .
Table 6Analog Trigger Mode options
OptionDescriptionNameValue
Positive EdgeTrigger is generated when the input signal is rising and crosses the
threshold
Negative EdgeTrigger is generated when the input signal is falling and crosses the
threshold
Both EdgesTrigger is generated when the input signal crosses the threshold, no
matter if it is rising or falling
Table 7Programming functions related to analog triggers
Function NameDescriptionAPI function
channelTriggerConfigConfigures the analog trigger for each channelchannelTriggerConfig()
AIN_RISING_EDGE1
AIN_FALLING_EDGE2
AIN_BOTH_EDGES3
14SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 15
1.1.4: Data Acquisition (DAQs)
The Data Acquisition (DAQ) is a powerful and flexible block which acquires incoming words and
sends them to the user PC using dedicated DMA channels (Figure 5).
Understanding PXIe Digitizers Theory of Operation1
Figure 5DAQ units in the M31/M33XXA Digitizers functional block diagram
Operation
The words acquisition requires two easy steps:
1 Configuration: A call to the function “DAQconfig()” allows the user to configure, among others,
the trigger method (Table 8 ), the number of DAQ cycles to perform (number of triggers), the
number of acquired words per cycle (DAQpointsPerCycle), and the number of words that must be
acquired before interrupting the PC (DAQpoints). Figure 6 illustrates the flexibility of the DAQ
block operation.
2 Data read:
a Using “DAQread()”: a blocking/non-blocking function that returns the array of acquired words
(DAQdata).
b Using a callback function: a user function that is automatically called when the configured
amount of data (set with DAQpoints) is available.
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide15
Page 16
1Understanding PXIe Digitizers Theory of Operation
Figure 6M31/M33XXA Digitizers words acquisition operation
Pausing and Resuming the DAQ: The function “DAQpause()” pauses the DAQ operation (triggers are
discarded). The acquisition can be resumed calling “DAQresume()”. A “DAQstop()” is performed
automatically when the DAQ block reaches the specified number of acquisition cycles.
Figure 7Examples of the DAQ operation
Onboard memory and DAQpoints selection: The acquired words are first stored in a DAQ buffer
located in the module onboard RAM and then sent to the PC RAM via the ultra-fast PXI Express bus
(Figure 6) using dedicated DMA channels. This DAQ buffer, and therefore the minimum amount of
onboard RAM needed for an application, is directly the size of the data array, which you want to
16SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 17
Understanding PXIe Digitizers Theory of Operation1
NOTE
receive in each “DAQread()” or callback function call. This data array, called (DAQdata), contains
(DAQpoints) words. Therefore, its size is calculated as DAQpoints x 2 bytes/word (in the case of the
M31/M33XXA Digitizers). The size of this DAQ buffer must be chosen according to two criteria:
• High speed transients: the DAQ onboard buffer can store bursts of words at higher rates than the
PXIe and the computer can handle. Larger buffers allow handling longer high speed bursts.
• PC load: The DAQ buffer must be chosen to allow the PC enough time to process each DAQ buffer
(DAQdata) and to handle interrupts and process-context switching tasks. For example, if a
computer requires 500 ms to process DAQdata, the buffer size must be such that it can store more
than 500 ms of input words without interrupting the computer. The DAQ block facilitates the task
of adjusting the PC processing rate with the introduction of the DAQ cycles (Figure 6).
The amount of required PC RAM is double the amount of required onboard
RAM.
Prescaler: The DAQ block has an input prescaler which can be configured to discard words, reducing
the effective acquisition data rate “DAQconfig()”.
DAQ counter: The DAQ block has a dedicated counter to store the number of acquired words since the
last call to “DAQconfig()” or “DAQflush()”. This counter can be read with “DAQcounterRead()”.
DAQ Trigger
As previously explained, you can configure the trigger for the acquisition. The available trigger modes
for the DAQ are shown in Tab le 8 . Note that not all trigger methods are available in all modules.
Table 8DAQ Trigger Mode options
OptionDescriptionNameValue
Auto (Immediate)The acquisition starts automatically after a call to function DAQstartAUTOTRIG0
Software / HVISoftware trigger. The acquisition is triggered by the function DAQtrigger,
Hardware Digital
Tri gger
Hardware Analog
Tri gger
DAQtrigger provided that the DAQ is running. DAQtrigger can be
executed from the user application (VI) or from an HVI.
Hardware trigger. The DAQ waits for an external digital trigger (see
Table 9 External Hardware Digital Trigger Source for the DAQ).
Hardware trigger. The DAQ waits for an external analog trigger (only
products with analog inputs).
As shown in Tab le 8, you have the following options for hardware triggers:
• Hardware Digital Trigger: If the DAQ is set to use a digital hardware trigger, you must configure it
using the function “DAQdigitalTriggerConfig()”. The available digital hardware trigger options are
shown in Tab le 9 and Table 1 0. If external I/O trigger is selected in “DAQdigitalTriggerConfig()”,
you must configure additional settings of this particular I/O line, such as input/output direction,
sampling/synchronization options, etc. (“Working with I/O Triggers” on page 19).
• Hardware Analog Trigger: (Only products with analog inputs) If the DAQ is set to use an analog
hardware trigger, you must configure it using the function “DAQanalogTriggerConfig()”. The
Analog Trigger Block of the corresponding analog input channel must also be configured.
SWHVITRIG1
HWDIGTRIG2
HWANATRIG3
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide17
Page 18
1Understanding PXIe Digitizers Theory of Operation
Table 9External Hardware Digital Trigger Source for the DAQ
OptionDescriptionNameValue
External I/O
Tri gger
PXI TriggerPXI form factor only. The DAQ trigger is a PXI trigger line and it is
Table 10Trigger behavior for the DAQ
OptionDescriptionNameValue
NoneNo trigger has been activatedTRIGGER_NONE0
Active HighTrigger is active when it is at level highTRIGGER_HIGH1
Active LowTrigger is active when it is at level LowTRIGGER_LOW2
Rising EdgeTrigger is active on the rising edgeTRIGGER_RISE3
Falling EdgeTrigger is active on the falling edgeTRIGGER_FALL4
The DAQ trigger is a TRG connector/line of the product (I/O Triggers).
PXI form factor only: this trigger can be synchronized to CLK10.
synchronized to CLK10.
TRIG_EXTERNAL0
TRIG_PXI1
18SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 19
Understanding PXIe Digitizers Theory of Operation1
Section 1.2: Working with I/O Triggers
The M3100A/M3102A PXIe Digitizers have general purpose input/output triggers (TRG
connectors/lines). A trigger can be used as a general purpose digital IO or as a trigger input, and can
be sampled using the options shown below in Trigger Synchronization/Sampling Options.
Table 11I/O Trigger types and corresponding functions
Typ eDescriptionNameValue
Trigger Output (readable)TRG operates as a general purpose digital output signal, that can be written
by the user software.
Trigger InputTRG operates as a trigger input, or as general purpose digital input signal,
that can be read by the user software.
Table 12Trigger Synchronization options
Typ eDescriptionNameValue
Non-synchronized modeThe trigger is sampled with an internal 100 MHz clock.SYNC_NONE0
Synchronized mode(PXI form factor only) The trigger is sampled using CLK10.SYNC_CLK101
AIN_TRG_OUT0
AIN_TRG_IN 1
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide19
Page 20
1Understanding PXIe Digitizers Theory of Operation
Section 1.3: Working with Clock System
The M3100A/M3102A PXIe Digitizer uses an internally generated high-quality clock (CLKref) which is
phase-locked to the chassis clock. Therefore, this clock is an extremely jitter-cleaned copy of the
chassis clock. This implementation achieves a jitter and phase noise above 100 Hz which is
independent of the chassis clock, depending on it only for the absolute frequency precision and long
term stability. A copy of CLKref is available at the CLK connector.
CLKref is used as a reference to generate CLKsys, the high-frequency clock used to sample data.
Chassis Clock Replacement for High-Precision Applications
For applications where clock stability and precision is crucial (for example: GPS, experimental
physics, etc.), you can replace the chassis clock with an external reference.
In the case of PXI/PXIe, this is possible via a chassis clock input connector or with a PXI/PXIe timing
module. These options are not available in all chassis; see the corresponding chassis specifications.
1.3.1: CLK Output Options
Table 13Clock Output options
OptionsDescriptionNameValue
Disable The CLK connector is disabled.N/A0 (default)
CLKref OutputA copy of the reference clock is available at the CLK connector.N/A1
The sampling frequency of the M3100A/M3102A PXIe Digitizers (CLKsys frequency) can be changed
using the advanced clocking system.
Figure 8Block Diagram depicting the Advanced Flex Clock System in PXIe DIGs
FlexCLK System, where:
• CLKref is the internal reference clock, and is phase-locked to the chassis clock.
• CLKsys is the system clock used to sample data.
20SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 21
Understanding PXIe Digitizers Theory of Operation1
• CLKsync is an internal clock used for the synchronization features of the M3100A/M3102A PXIe
Digitizers.
• PXI CLK10 is the 10 MHz clock of the PXI/PXIe backplane.
The CLKsys frequency can be changed within the range indicated in the Data Sheet of the
corresponding product [clockSetFrequency()]. The CLKsync frequency changes with the CLKsys
frequency as per the following equation:
f
= GreatestCommonDivisor (f
CLKsync
PXI_CLK10
, f
CLKsys
/ 5)
The CLKsync frequency is returned by clockSetFrequency().
Table 14CLKsync frequency mode options
OptionsDescriptionNameValue
Low Jitter ModeThe clock system is set to achieve the lowest jitter, sacrificing tuning speed.CLK_LOW_JITTER0
Fast Tuning ModeThe clock system is set to achieve the lowest tuning time, sacrificing jitter
performance.
CLK_FAST_TUNE1
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide21
Page 22
1Understanding PXIe Digitizers Theory of Operation
22SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 23
SD1 3.x Software for M310xA / M330xA Digitizers
User’s Guide
2.Using the KS2201A PathWave
Test Sync Executive Software
Licensing for KS2201A PathWave Test Sync Executive software 24
Comparing ProcessFlow GUI with KS2201A HVI API 25
Working with KS2201A PathWave Test Sync Executive software 26
Understanding the HVI elements used in SD1 API 27
Implementing HVI in SD1 API - Sample Programs 29
This chapter provides an introduction to the KS2201A PathWave Test Sync Executive Software and
describes its implementation in the SD1 3.x API. For detailed information about the KS2201A
PathWave Test Sync Executive Software and its API, refer to the KS2201A PathWave Test Sync Executive Software User Guide.
Page 24
2Using the KS2201A PathWave Test Sync Executive Software
Section 2.1: Licensing for KS2201A PathWave Test Sync Executive
software
Hardware license option (-HV1) on the M3xxxA modules
All M3xxxA modules support HVI technology. However, the hardware license option -HV1 must be
available on each module that is required to be programmed using the KS2201A PathWave Test
Sync Executive software and for usability with SD1 3.x software. The newer M3xxxA cards are
shipped with the newest versions of firmware and SD1 software, which support the PathWave Test
Sync Executive software. During procurement, you may choose to procure the -HV1 hardware
option.
To use an older module with the KS2201A PathWave Test Sync Executive software, the firmware and
SD1 software must be upgraded. KS2201A PathWave Test Sync Executive software requires that
Keysight SD1 SFP software version 3.x be installed on the same machine. Also, the PXIe M3xxxA
modules products must have Firmware versions greater than or equal to 4.0 (for M320xA AWGs /
M330xA Combos) and greater than or equal to 2.0 (for M310xA Digitizers). For more information
regarding the supported firmware and software versions, refer to the SD1 3.x Software Startup Guide.
Software license option for the KS2201A software
Refer to the KS2201A PathWave Test Sync Executive User Guide to know about the licenses that you
must procure for the KS2201A PathWave Test Sync Executive software.
24SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 25
Using the KS2201A PathWave Test Sync Executive Software2
NOTE
Section 2.2: Comparing ProcessFlow GUI with KS2201A HVI API
Beginning with SD1 3.x software release, the M3601A Hard Virtual
Instrument (HVI) Design Environment (ProcessFlow) is replaced by the
KS2201A PathWave Test Sync Executive Software for HVI integration. Both
the GUI elements and the API functions from the former HVI design
environment are not supported in the SD1 3.x software.
Tabl e 15 summarizes the main operations necessary in an HVI design as performed from the point of
view of the M3601A HVI GUI use model and the KS2201A HVI API use model. You may use this table
of equivalence to transition from ProcessFlow to the KS2201A PathWave Test Sync Executive
software.
Table 15Differences in operations of ProcessFlow and KS2201A HVI API
OperationsProcessFlow Use ModelKS2201A HVI API Use Model
HVI Design FlowFirst, a “.HVIprj” project file must be created using M3601A GUI
HVI SequenceIt is implemented by means of a graphical flowchart. Each HVI
HVI SyncSequenceThe concept of HVI SyncSequences is not available in the
HVI Resources (Chassis,
Triggers, M9031A modules,
and so on)
Program HVI SequencesYou may program HVI sequences by adding flowchart boxes
HVI Compile, Load, RunOnce an “.HVI” file is open from a script, you can assign each
to design the required HVI sequences in form of flow-charts. A
binary “.HVI” file is generated from the “.HVIprj” file once the HVI
sequence design is final. The “.HVI” file must be open from code
to integrate the HVI solution into the application code.
Engine in each instrument has a single or main HVI Sequence
associated. All statements, both local and synchronized, are
added to it graphically.
M3601A flowcharts.
Connected chassis are automatically recognized. M9031A
boards are transparent to the M3601A software. PXI trigger
resources that can be allocated to the HVI solution are chosen
from the “Chassis settings” window.
using the M3601A GUI. Configure settings for statements in the
“Properties” window of each flowchart box.
sequence to an HW engine for it to be compiled, loaded to HW,
and executed. Project “.HVIprj” files can be also tested directly
from the M3601A GUI using the “Compile and Run” function.
Application code must import the “keysight_pathwave_hvi”
library to use the HVI API. HVI sequences can be created using
programs directly into the application code without importing
external files.
KtHviSequence class enables you to create a Local HVI
sequence using programs that run “locally” on a specific HVI
engine in a specific instrument. Local Sequences are accessed
using ‘SyncMultiSequenceBlock’ statement placed in a
SyncSequence (KtHviSyncSequence). The HVI top sequence is a
SyncSequence that contains SyncStatements.
KtHviSyncSequence class enables you to add synchronized
operations (Sync Statements) common to all HVI engines within
the HVI instance. The HVI top sequence is a SyncSequence that
contains SyncStatements. Local instructions are added and
executed within Local Sequences that can be accessed by
adding a ‘SyncMultiSequenceBlock’ in a SyncSequence.
HVI resources can be configured using “KtHviPlatform” class and
all the classes inside it.
You may program both HVI SyncSequences and HVI (Local)
Sequences with the API methods add_XXX(), where ‘XXX’ is the
statement name.
API SW methods can
compile the sequence using (hvi.compile()),
load it to hardware using (hvi.load_to_hw()),
run the sequence using (hvi.run()).
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide25
Page 26
2Using the KS2201A PathWave Test Sync Executive Software
Section 2.3: Working with KS2201A PathWave Test Sync Executive
software
Beginning with Keysight SD1 3.x release, the KS2201A PathWave Test Sync Executive software has
been introduced to enhance the functionalities of one or more PXIe modules both individually and
interactively. PathWave Test Sync Executive is a new API based environment for developing and
running programs with a new generation of Keysight’s Hard Virtual Instrument (HVI) technology. The
KS2201A software enables programmatic development and execution of synchronous real-time
operations across multiple instruments. It enables you to program multiple instruments together so
they can act together with other instruments, like one instrument.
2.3.1: Overview on HVI technology
Keysight’s Hardware Virtual Instrumentation (HVI) technology provides the capability to create
time-deterministic execution sequences with precise synchronization by deploying FPGA hardware
simultaneously among the constituent instruments. This makes the technology a powerful tool in
MIMO systems, such as massive-scale quantum control networks.
A virtual instrument may be considered to function like any other instrument in the system; its main
objective being to digitally sequence events and instructions in the application while synchronizing
multiple modules. This instrument, (referred to in this document as the HVI instrument),
accomplishes this by running one or more “engines” synchronously by referencing a common digital
clock that all instruments (engines) operate on.
The KS2201A PathWave Test Sync Executive software provides you with the capability of designing
HVI sequences using an Application Programming Interface (API) available in both Python and C#
coding languages. The HVI Application Programming Interface (API) is the set of programming
classes and methods that allows the user to create and program an HVI instance. HVI API currently
supports Python v3.7. The HVI core functionality is extended by the PXIe M3xxxA modules using the
SD1 API. The core HVI features and the SD1 API extensions that are specific to M3xxxA, allow a
heterogeneous array of instruments and resources to coexist on a common framework.
All the PXIe M3xxxA modules support HVI technology. When Keysight SD1 is installed on a PXI
system, it installs the drivers required to interact with the M3xxxA series modules. The SD1 API
classes in the Keysight SD1 Library contain HVI add-on interfaces provided as an extension of the
instrument. These add-on interfaces provide access to instrument specific HVI features such as
triggering a digitizer acquisition, outputting a waveform, queuing a waveform, etc.
The primary HVI elements defined for the SD1 API and the corresponding API functions are described
in the following sections.
26SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 27
Using the KS2201A PathWave Test Sync Executive Software2
Section 2.4: Understanding the HVI elements used in SD1 API
The HVI Core API exposes all HVI functions and defines base interfaces and classes, which are used
to create an HVI, control the hardware execution flow, and operate with data, triggers, events and
actions, but it alone does not include the ability to control operations specific to the M3xxxA product
family. It is the HVI instrument extensions specific to M3xxxA modules that enable instrument
functionalities in an HVI. Such functions are exposed by the module specific add-on HVI definitions.
The SD1 API describes the instrument specific resources and operations that can be executed or
used within HVI sequences.
Figure 9 & Figure 10 display the AWG and Digitizer specific HVI definitions, which are added to the
SD1 library.
Figure 9M310xA specific HVI definitions
Figure 10M320xA specific HVI definitions
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide27
Page 28
2Using the KS2201A PathWave Test Sync Executive Software
2.4.1: Description of various HVI elements
HVI Engine
An HVI Engine block controls the functions of the instrument and the timing of operations. For HVI to
control an SD1 module, the latter requires an HVI Engine. The HVI Engine is included directly in the
instrument hardware or it can be programmed using the SD1 API into the Field programmable Gate
Array (FPGA) on each module. The HVI Engine executes sequences, which are made up of
Statements.
To define an HVI Engine in SD1 API, see the API syntax in Module HVI Engine.
HVI Actions
An HVI Action is defined for module-specific operations, such as playing waveform in an AWG or
starting an acquisition in Digitizers.
To define an HVI Action in SD1 API, see the API syntax for various HVI actions in SD_AIN functions
and SD_Module functions (specific to Pathwave FPGA).
HVI Events
An HVI Event is defined to occur when specific conditions are met during module-specific
operations, such as when an AWG queue is flushed or when a DAQ is empty.
To define an HVI Event in SD1 API, see the API syntax for various HVI events in SD_AIN functions and
SD_Module functions (specific to Pathwave FPGA).
HVI Trigger
An HVI Trigger is defined to activate the logic signal triggering source and perform various triggering
operations, which are shared between instruments to initiate module-related operations,
communicate states or other information.
To define an HVI Trigger in SD1 API, see the API syntax in Module HVI Triggers.
HVI Instructions
An HVI Instruction is defined to configure various settings related to the module. There are two types
of HVI instructions:
• Product specific (custom) HVI instructions—can change a module’s setting (such as amplitude,
frequency, etc.) or trigger a functionality in the module (such as output a waveform, trigger a data
acquisition, etc.).
• HVI core instructions (general purpose)—provide global, non-module specific or custom
functions, such as register arithmetic, read/write general purpose I/O triggers, execution actions,
etc.
To define an HVI Trigger in SD1 API, see the API syntax in SD_AIN functions.
FPGA sandbox registers
For the modules that contain an FPGA with a user-configurable sandbox, HVI can, potentially (if the
configuration of the module allows it), access (read/write) the registers that you define in that
sandbox. To accomplish this, you must obtain the “.k7z” file for the FPGA sandbox, generated by the
PathWave FPGA application. This file contains all the necessary information to access the registers
by name.
To define FPGA Action/Event in SD1 API, see the API syntax in User FPGA HVI Actions/Events.
28SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 29
Using the KS2201A PathWave Test Sync Executive Software2
Section 2.5: Implementing HVI in SD1 API - Sample Programs
The following section shows a sample program where HVI is implemented in SD1 API to create an
HVI sequence, add HVI main engine, define HVI trigger, assign ‘module hvi instruction set’ functions
followed by compiling the HVI sequence and loading it onto the hardware. Based on your
requirements, you may add ‘module hvi actions’ as well as ‘module hvi events’ functions to the HVI
sequence.
The SD1 API functions related to HVI are covered in Chapter 5, “Using Keysight SD1 API Command
Reference”.
Refer to the KS2201A PathWave Test Sync Executive User Guide to know more about the HVI Python
API.
2.5.1: Sample program using Python for HVI instructions
30SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 31
SD1 3.x Software for M310xA / M330xA Digitizers
User’s Guide
3.Using the PathWave FPGA
Board Support Package (BSP)
Licensing for PathWave FPGA BSP support 32
Comparing FPGAFlow with PathWave FPGA 33
Working with PathWave FPGA software 34
Using BSP with PathWave FPGA software 37
Generating a k7z file using PathWave FPGA BSP 39
Loading k7z file into modules 48
Implementing BSP using SD1 API - Sample Programs 50
This chapter provides an introduction to the PathWave FPGA Board Support Package (BSP) and
describes its implementation in the SD1 3.x API. For detailed information about using the PathWave
FPGA 2020 Update 1.0 software along with BSP for supported modules, refer to the PathWave FPGA
Customer Documentation and the BSP guides for the respective modules.
Page 32
3Using the PathWave FPGA Board Support Package (BSP)
Section 3.1: Licensing for PathWave FPGA BSP support
All instruments that can be programmed with PathWave FPGA BSP will enable programming using
the licensing option -FP1. You are required to procure an -FP1 license option for each instrument
that must be programmed. For example, if you are purchasing ten M3102A DIG cards, each M3102A
requires an individual -FP1 license option enabled.
New Hardware - Latest Software
The new modules for M3201A AWG 1G, M3202A AWG 500 and M3102A DIG500, where you have the
-FP1 license option enabled are supported only with SD1 software version 3.x (or later) installed on
your machine. If you have SD1 version 2.x.x installed on your machine, you must upgrade the
software for hardware compatibility. For more information regarding the supported firmware and
software versions, refer to the SD1 3.x Software Startup Guide.
Latest Software - New Hardware
Keysight SD1 SFP software version 3.x or later recognize only those PXIe M3xxxA products that have
Firmware versions greater than or equal to 4.0 (for M320xA AWGs / M330xA Combos) and greater
than or equal to 2.0 (for M310xA Digitizers). You may either update the firmware on your modules or
contact Keysight Sales to upgrade your hardware. After upgrading your hardware, you must have the
-FP1 license option enabled to make it compatible with the latest version of SD1 software.
The M3201A / M3202A may be purchased as a 4 channel configuration, each of which may include
an option to specify a variable sampling clock.
The M3102A / M3100A may be purchased as a 4 channel configuration, which have fixed sampling
clock.
These modules may also be purchased to include one of two possible Xilinx FPGAs:
1 xc7k410tffg676-2
2 xc7k325tffg676-2
The xc7k410tffg676-2 part offers a substantial increase in the amount of FPGA resources available to
the user for custom logic. The following table outline the FPGA resources, which are available for
custom logic for each part.
Table 16Available FPGA Resources for custom logic on each module
xc7k325tffg676-2xc7k410tffg676-2
Resource Type4 Channel4 Channel
Slice LUTs82800102000
Slice Registers165600204000
DSP Blocks360660
Block Ram (RAMB18)360660
32SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 33
Using the PathWave FPGA Board Support Package (BSP)3
NOTE
Section 3.2: Comparing FPGAFlow with PathWave FPGA
Beginning with SD1 3.x software release, the M3602A Graphical FPGA
Development Environment (FPGAFlow) is replaced by the KF9000A
PathWave FPGA software for FPGA programming. The files generated by
FPGAFlow are not supported in the SD1 3.x software.
The following sections describe the differences between FPGAFlow and PathWave FPGA software
along with the new features introduced in the latter software.
3.2.1: Differences between FPGAFlow and PathWave FPGA
While most of the features are same, but there are subtle differences in the appearances and certain
aspects of both the FPGA programming environments. Tab le 1 7 highlights such differences.
Table 17Differences between FPGAFlow and PathWave FPGA
l
FPGAFlowPathWave FPGA
Support limited to Legacy Signadyne boardsSupport for larger number of Keysight developed boards
Uses one or more BitGen servers to generate the output bitstreamUses Xilinx Vivado Design Suite locally on Host Machine to generate the output bitstream
Generates “sbp” file, which is loaded on the legacy module’s FPGAGenerates “k7z” file, which is loaded on the FPGA of the new modules
3.2.2: New features in PathWave FPGA
Apart from the differences listed above, the PathWave FPGA software has certain new elements:
• IPs can be defined using IP-XACT file. This gives you information about the IP name, version,
interfaces, category, and so on.
• A repository of IPs that are using IP-XACT can be loaded concurrently.
• Block designs are now called sub-modules.
• Multiple boards are supported using the BSP technology.
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide33
Page 34
3Using the PathWave FPGA Board Support Package (BSP)
NOTE
Section 3.3: Working with PathWave FPGA software
Beginning with Keysight SD1 3.x release, the KF9000A PathWave FPGA Programming Environment
(commonly known as PathWave FPGA), powered by Xilinx Vivado Design Suite, has been introduced
for FPGA designing on supported Keysight modules.
Some applications require the use of custom on-board real-time processing, which might not be
covered by the comprehensive off-the-shelf functionalities of standard hardware products. For these
applications, Keysight supplies Option -FP1 (Enabled FPGA Programming) that provide the capability
to program the on-board FPGA. With PathWave FPGA, development time is dramatically reduced
and you can focus exclusively on expanding the functionality of the standard instrument, instead of
developing a complete new one.
PathWave FPGA is a graphical environment that provides a complete FPGA design flow for rapid
FPGA development from design creation to simulation to Gateware deployment to
Hardware/Gateware verification on Keysight hardware with Open FPGA. This environment provides a
design flow from schematic to bitstream file generation with the click of a button.
The PathWave FPGA 2020 is a licensed software. Contact Keysight Support
for more information on procuring the respective licenses.
Once you have installed the PathWave FPGA 2020 software, you can launch its user interface from
the Start menu. Alternatively, you may use the corresponding command line or scripts to launch the
application.
Figure 11Default window for PathWave FPGA 2020 Update 1.0 software
34SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 35
Using the PathWave FPGA Board Support Package (BSP)3
In Keysight PathWave, FPGA code is represented as boxes (called blocks) with IO ports. An empty
project contains the “Default Product Blocks”, and the “Design IO Blocks” that provide the outer
interface of the design. You can add/remove blocks from the Keysight Block Library, External Blocks,
or Xilinx IP cores.
To know about the required prerequisite software, system requirements and licensing information for
the PathWave FPGA 2020 Update 1.0 software, refer to the “Getting Started” section of the
PathWave FPGA Customer Documentation. To view the installation procedure, refer to the “Installing
PathWave FPGA 2020 Update 1.0 software” section and to view how to launch the software, refer to
the “Launching the PathWave FPGA BSP” section in the SD1 3.x Software Startup Guide.
3.3.1: Understanding Partial Configuration (PR)
The FPGA configurable region utilizes Xilinx FPGA partial reconfiguration technology to allow you to
design and configure a defined section of the supported M3xxxA FPGA without the need to power
down or reboot the M3xxxA module or host computer, respectively.
PathWave FPGA supports the design flow in the Partial Reconfiguration (PR) technology. In a PR
flow, a full FPGA reconfiguration is only necessary once for a given static region version. The
sandboxes can be reconfigured anytime, without a full reconfiguration, and without stopping the
current operation of the FPGA.
Partial Reconfiguration enables performing dynamic change of modules within an active design. By
implementing multiple configurations in this flow, you can achieve full bitstream for each
configuration and partial bitstream for each reconfigurable module.
While FPGA technology facilitates direct programming and re-programming of modules without
going through re-fabrication with a modified design; the partial reconfiguration technique allows the
modification of an operating FPGA design by loading a partial configuration file. The logic in the
FPGA design is divided into two different types, reconfigurable logic and static logic. The static logic
remains functional and is unaffected by the loading of a partial bitstream file, whereas the
reconfigurable logic is replaced by the contents of that bitstream file.
Figure 12Block diagram depicting partial reconfiguration using bitstream files
Partial Reconfiguration (PR) is modifying a subset of logic in an operating FPGA design by
downloading a partial bitstream. In some cases, a complete FPGA reconfiguration might be
preferable (better routing, timing closure, and so on). This is also supported by PathWave FPGA, as
long as a reboot is not required after the reconfiguration process.
The PathWave FPGA software does not, by itself, provide access to the waveform and digitizer
controls for the supported Keysight M3xxxA PXIe modules. You must install the module-specific
Board Support Package (BSP) to leverage the features within the PathWave FPGA software for FPGA
designing and for loading your customized code onto the Keysight instrument.
The design part in Keysight FPGA consists of two regions: the static region and the sandbox region.
The static region for each supported module is defined within BSP and cannot be modified. This
region defines the implementation of the FPGA interfaces to external resources, and defines the
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide35
Page 36
3Using the PathWave FPGA Board Support Package (BSP)
interfaces to the sandbox. A static region implementation can define one or more sandbox regions in
an FPGA design. The sandbox region contains the user specific FPGA design. The interface of the
sandbox depends on the static region implementation.
Figure 13Block diagram representing layout of Static and Sandbox regions
36SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 37
Using the PathWave FPGA Board Support Package (BSP)3
Section 3.4: Using BSP with PathWave FPGA software
3.4.1: Understanding BSP composition
In embedded systems, the board support package (BSP) is the layer of software containing
hardware-specific drivers and other routines that allow a particular operating system (traditionally a
real-time operating system, or RTOS) to function in a particular hardware environment (a computer
or CPU card), integrated with the RTOS itself. Third-party hardware developers, who wish to support
a particular RTOS must create a BSP that allows that RTOS to run on their platform. In most cases
the RTOS image and license, the BSP containing it, and the hardware are bundled together by the
hardware vendor. BSPs are typically customizable, allowing you to specify the drivers and routines,
which should be included in the software build based on their selection of hardware and software
options. (source: Wikipedia)
The Board Support Package (BSP), installed separately from PathWave FPGA, comprises of two
parts—an FPGA Support Package (FSP) and a Runtime Support Package (RSP). A BSP configuration
file contains all the necessary information to identify the configuration, which includes static region
implementation, an RSP implementation, build scripts, examples, project templates, and
documentation.
• The FSP is that portion of the BSP that allows you to build a bitstream file for the target FPGA. It is
consumed by PathWave FPGA to support design creation and sandbox compilation; everything
that is performed without the physical hardware. The FPGA Support Package allows you, as a
PathWave FPGA user, to create a design targeting your instrument. It includes descriptions of the
sandbox interfaces, template PathWave FPGA projects, and files required for compiling a sandbox
image from HDL sources. An FSP fulfills the ‘design-time requirements’ of PathWave FPGA, which
covers everything prior to loading a bit image onto the instrument.
• The RSP is that portion of the BSP that allows you to control your target FPGA. It provides a ‘C’
API that you can use to load design images onto hardware, verify your FPGA bitstream image and
perform simple register and streaming accesses to the sandbox. An RSP requires a hardware
driver with the following capabilities:
• Hardware discovery/enumeration
• Program the FPGA sandbox regions
• Read and write registers inside the sandbox
• Read and write to streaming interfaces inside the sandbox (if the sandbox has streaming
interfaces)
Both PathWave FPGA software and the BSP work together and cannot be used individually.
The block diagram shown in Figure 14 indicates how the bitstream file is generated using both the
PathWave FPGA software and BSP together for any specific supported PXIe module.
Figure 14Bitstream file compilation flow using PathWave FPGA and BSP
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide37
Page 38
3Using the PathWave FPGA Board Support Package (BSP)
PathWave FPGA manages bitstream file generation using a scripted flow of the FPGA tools. The
scripts for building a specific design are provided by the FSP. The FSP build script can also add
metadata, which are delivered to the RSP. The bitstream file and metadata are packaged into a
Keysight PathWave FPGA program archive file with the filename extension *.k7z.
To load a bitstream image on the FPGA, PathWave FPGA supplies the program archive file to the
RSP. The RSP unpacks the contents of the program archive file and checks that the image is
compatible. The original bitstream file and the metadata are then passed to the instrument-specific
portion of the RSP, which eventually configures the FPGA with the bitstream file.
The output from a PathWave FPGA design compilation is saved in a Keysight PathWave FPGA
program archive file, with a k7z extension. To understand how to generate the k7z file onto a module,
see “Generating a k7z file using PathWave FPGA BSP” on page 39.
Hereafter, you may load the k7z file onto the required hardware using the Keysight SD1 3.x SFP
software’s user interface or the corresponding SD1 API functions. To understand how to load the k7z
file onto a module, see “Loading k7z file into modules” on page 48.
For information regarding the Board Support Package for M3102A Digitizer modules, refer to
M3102A Digitizer PathWave FPGA User Guide.
38SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 39
Using the PathWave FPGA Board Support Package (BSP)3
Section 3.5: Generating a k7z file using PathWave FPGA BSP
After you install BSP for one or more modules, you can proceed with creating a new project to design
the sandbox region for the corresponding modules.
Following steps give you a quick glance into creating a new sandbox project using PathWave FPGA
2020 software for FPGA designing followed by generating a bitstream file for one or more supported
PXIe modules. This example uses the BSP file for an M3102A module.
You can also perform most of the steps shown below using command line arguments. Refer to the
“Advanced Features” section of the PathWave FPGA Customer Documentation.
1 On the main window of the PathWave FPGA 2020 software, click the icon for new project.
A new sandbox project dialog appears.
Figure 15Creating a new Sandbox project
2Click Next >.
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide39
Page 40
3Using the PathWave FPGA Board Support Package (BSP)
3 For the Project Type, choose the BSP corresponding to one of the modules whose FPGA you wish
to update.
Figure 16Selecting the module-specific BSP
4Click Next >.
40SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 41
Using the PathWave FPGA Board Support Package (BSP)3
5 For the Project Options, choose the BSP options and Board Configurations you wish to include in
your FPGA design logic for the selected module.
Figure 17Selecting various options for FPGA design logic
6Click Next >.
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide41
Page 42
3Using the PathWave FPGA Board Support Package (BSP)
7 For the Project Template, either choose the default template offered within the PathWave FPGA
design environment or choose blank to start a new custom design logic.
Figure 18Selecting the PathWave FPGA project template
8Click Next >.
42SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 43
Using the PathWave FPGA Board Support Package (BSP)3
9 Verify all information displayed in the Project Summary. To make any amendments, click Back. If
the selected options for the corresponding BSP are satisfactory, click Finish.
Figure 19Viewing the project summary information
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide43
Page 44
3Using the PathWave FPGA Board Support Package (BSP)
Various blocks are displayed, which are part of the default template in the PathWave FPGA
2020 software.
Figure 20Viewing FPGA design blocks in the default template
10 Customize the configuration as per your requirements using one or more elements from the
Design Interfaces and IP Catalog panels.
For more information regarding the configurable region of the M3xxxA FPGA interfaces and BSP
IP Repository, refer to the BSP User Guide for the corresponding modules, which can be
accessed via Help > BSPs Help menu options in the PathWave FPGA 2020 software. The guides
for the supported modules are:
•M3102A PXIe Digitizers
•M3100A PXIe Digitizers
•M3201A PXIe Arbitrary Waveform Generators
•M3202A PXIe Arbitrary Waveform Generators
•M3302A PXIe AWG and Digitizer Combination
•M3300A PXIe AWG and Digitizer Combination
44SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 45
Using the PathWave FPGA Board Support Package (BSP)3
11 After you have finished designing your logic, you can proceed with the k7z file generation. Click
the Generate Bit File... icon as shown in Figure 21.
Figure 21Initiating Bit File generation for the selected module
If you do not have the Xilinx Vivado Design Suite on the same machine where PathWave FPGA
2020 software and BSP are installed, the following error is prompted when you click the
Generate Bit File... icon.
Refer to PathWave FPGA Customer Documentation for more information on installing the
software and the licenses for the Xilinx Vivado Design Suite.
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide45
Page 46
3Using the PathWave FPGA Board Support Package (BSP)
12 On the FPGA Hardware Build window that appears, click Run.
Figure 22Generating FPGA Hardware Build
46SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 47
Using the PathWave FPGA Board Support Package (BSP)3
Depending on the configuration, the software takes some time before finishing the process of
k7z file generation.
Figure 23Progress status for the k7z file generation
Once the Bitstream file (which is the k7z file) is generated, your custom FPGA logic is ready to be
loaded on the selected module using either the SD1 API or the Load Firmware feature (under FPGA
menu of the Module panel in the SFP software).
Other than configuring and designing your FPGA Logic using the PathWave FPGA 2020 Update 1.0
software, you can perform one or more of the following operations:
• Build your FPGA Logic
• Generate the Bit File (covered briefly in this section)
• Verify the Bit File
• Simulate your FPGA Logic
• Simulation Testbench Designing
• Test Bench Address Mapping
• Work with Advanced features
• Using Command Line Arguments
• Migrating a design to a new BSP
• Changing a Submodule Project Target Hardware
• Debugging in Hardware
For detailed instructions on performing these steps and to understand the features of the PathWave
FPGA 2020 software, refer to the PathWave FPGA Help file accessible via the Help menu of the
software. For information about the features and various elements along with understanding the
workflow associated with the PathWave FPGA 2020 Update 1.0 software, refer to the “User Guide”
section of the PathWave FPGA Customer Documentation.
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide47
Page 48
3Using the PathWave FPGA Board Support Package (BSP)
Section 3.6: Loading k7z file into modules
After a bitstream file (k7z) is generated using the PathWave FPGA software, you may use either the
SD1 3.x software user interface or the SD1 API functions to load the FPGA on the corresponding
module and also, verify design compatibility on that module.
3.6.1: Using SD1 SFP user interface to load FPGA
To load the FPGA using SD1 3.x software,
1From the Start menu, launch Keysight SD1 SFP.
2 From the main menu of a specific module’s dialog, click FPGA > Load firmware....
Figure 24Accessing FPGA firmware loader option in SD1
48SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 49
Using the PathWave FPGA Board Support Package (BSP)3
3 On the Firmware Loader dialog that appears, click the button to browse for the required k7z file for
that particular module.
Figure 25Firmware Loader window for the selected module
4Click Load to initiate the process of FPGA loading.
If the progress bar displays “Loading successful” and “100%”, it indicates that the FPGA is updated
as well as the FPGA design logic is compatible on hardware.
3.6.2: Using SD1 API to load FPGA
To load the FPGA using SD1 3.x API,
1 Import system and Keysight SD1 libraries.
2 Open the module with open().
3 Load FPGA sandbox using *.k7z file with FPGAload().
4 (Optional) Read/Write into registers using functions defined in SD_SandboxRegister functions.
5 (Optional) Perform FPGA related operations using other functions defined in SD_Module
functions (specific to Pathwave FPGA).
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide49
Page 50
3Using the PathWave FPGA Board Support Package (BSP)
Section 3.7: Implementing BSP using SD1 API - Sample Programs
3.7.1: Sample program using Python for read write on sandbox region
52SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 53
SD1 3.x Software for M310xA / M330xA Digitizers
User’s Guide
4.Using Keysight SD1 3.x SFP
Software
Installing the Keysight SD1 3.x Software Package55
Launching the Keysight SD1 SFP software 56
Understanding the SD1 SFP features & controls 58
Understanding Digitizer SFP features & controls 64
This chapter describes how to use Keysight SD1 SFP software.
Page 54
4Using Keysight SD1 3.x SFP Software
KeysightM3201A/M3202A PXIe AWGs, M3100A/M3102A PXIe Digitizers, and M3300A/M3302A
PXIe AWG/Digitizer Combos can be operated as classical bench-top instruments using Keysight SD1
SFP software; no programming is required.
Keysight SD1 SFP Software provides a fast and intuitive way of operating KeysightM3201A/M3202A
PXIe AWGs, M3100A/M3102A PXIe Digitizers, and M3300A/M3302A PXIe AWG/Digitizer Combos.
Based on your preference, you may also perform various operations using the programming library
provided within Keysight SD1 Core API. An API function is available for almost every control within
the user interface. You can build and run custom scripts to carry out various operations / workflow,
which can be performed by the SD1 SFP user interface.
The sections in this chapter cover the functionality of each SD1 SFP feature available in its user
interface, along with describing the workflow required to perform some specific operations.
Wherever applicable, the API function corresponding to the feature/control has been specified for
reference.
To know about the programming libraries and the available API functions, see Chapter 5, “Using
Keysight SD1 API Command Reference” followed by Chapter 6, “Using SD1 API functions in sample
programs”.
54SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 55
Using Keysight SD1 3.x SFP Software4
Section 4.1: Installing the Keysight SD1 3.x Software Package
The Keysight SD1 3.x Software Package includes:
• Keysight SD1 3.x SFP Software
• KF9000A PathWave FPGA Programming Environment (commonly known as PathWave FPGA
software)—required for FPGA logic designing
• PathWave FPGA Board Support Package (BSP)—required for FPGA logic designing
• KS2201A PathWave Test Sync Executive Software—required for integration with HVItechnology
Prior to installing the software package components listed above, the following software must be
installed on your machine that runs a Windows 10 (64-bit) Operating System.
Prerequisites• Keysight IO Libraries Suite 2018 (version 18.0 or later)
• Microsoft .NET 3.5 or later
• Any API interface
• Python 64-bit version 3.7.x or later
• Any C#/.NET Compiler
• Any C/C++ Compiler
• Xilinx Vivado Design Suite (required with PathWave FPGA software)
• Option -HV1 (to implement HVI technology using the PathWave Test Sync Executive software)
Refer to the Keysight SD1 3.x Software Startup Guide for download links and installation
instructions.
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide55
Page 56
4Using Keysight SD1 3.x SFP Software
Section 4.2: Launching the Keysight SD1 SFP software
After the Keysight SD1 3.x SFP software is installed, click Start > Keysight > Keysight SD1 SFP.
Figure 26Launching SD1 SFP software from the Start menu
The Keysight SD1 3.x SFP software window is displayed, as shown in Figure 27 and Figure 28.
When SD1 SFP is launched, it identifies all Keysight PXIe hardware modules that are connected to
the embedded controller or desktop computer and opens a corresponding soft front panel for each
piece of hardware. As shown in Figure 27, the soft front panel for the M3201A AWG and M3302A
(AWG & Digitizer) Combo are displayed by default, which indicates these modules are connected.
Figure 27SD1 SFP software window (online mode with M3201A and M3302A cards connected)
If one or more modules are not inserted into the chassis (or disconnected), the soft front panel for
each of such modules is displayed as “Demo module” on the Keysight SD1 3.x SFP software. See
Figure 28.
56SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 57
Using Keysight SD1 3.x SFP Software4
Figure 28SD1 SFP software (offline mode without any card connected)
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide57
Page 58
4Using Keysight SD1 3.x SFP Software
Section 4.3: Understanding the SD1 SFP features & controls
As the name indicates, the Soft Front Panel (SFP) provides you controls so that you may configure
settings associated with the front panel features (namely, Channel, Clock and Trigger) on the
connected PXIe AWG, Digitizer and Combo cards. Considering the basic functionality of an AWG and
a Digitizer, the appearance and functions on each SFP window for AWG modules are different from
that for the Digitizer modules.
The SFP windows that are specific to AWG modules correspond to:
• M3202A AWG 1G
• M3201A AWG 500
• AWG front panel of the M3302A AWG 500 DIG 500 Combo
• AWG front panel of the M3300A AWG 500 DIG 100 Combo
The SFP windows that are specific to Digitizer modules correspond to:
• M3102A DIG 500
• M3100A DIG 100
• DIG front panel of the M3302A AWG 500 DIG 500 Combo
• DIG front panel of the M3300A AWG 500 DIG 100 Combo
The SD1 SFP user interface, primarily, consists of three types of windows:
1 Main window—includes controls for displaying each module window and hardware configuration.
2 AWG Module SFP window—includes front panel controls for performing operations pertaining to
AWGs.
3 Digitizer Module SFP window—includes front panel controls for performing operations pertaining
to Digitizers.
In the offline (Demo) mode, even though the front panel controls appear to be available and even
configurable, they are meant for demonstrative purposes only. On the other hand, when connected,
each module has its respective SFP window and all controls and functions are available. The
following sections describe the controls that appear on each window.
4.3.1: Understanding main window features and controls
Figure shows the SD1 SFP main window without any overlapping SFP window.
Figure 29SD1 SFP main window
The controls under each menu item are further described in the order displayed above.
58SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 59
Using Keysight SD1 3.x SFP Software4
1. File
Figure 30Controls in the File menu
• Exit—Click File > Exit to close the SD1 SFP main window along with any SFP windows that may be
displayed.
2. Window
Figure 31Controls in the Window menu
• The menu under Window lists the names assigned to the connected modules. By default, a tick
mark appears against each entry, indicating that the corresponding SFP window is active. Any
name that does not appear indicates that the module is not connected. An offline instance for
each module is available in the Demo Modules sub-menu.
1 To close any SFP window that is open, clear the tick from the corresponding entry.
2 To open an SFP window for a module that is connected, click the corresponding entry.
• Demo Modules—The drop-down sub-menu under Window > Demo Modules lists the names of each
module. You may perform the steps described above, but the corresponding SFP windows that
appear are meant for demonstration purpose only.
3. Help
Figure 32Controls in the Help menu
• Hardware Manager...—Click Help > Hardware Manager... to launch the Hardware Manager window.
See “Understanding features in Hardware Manager” on page 60 for more information on features
available in the Hardware Manager window.
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide59
Page 60
4Using Keysight SD1 3.x SFP Software
•About—Click Help > About to view the About Keysight SD1 SFP window. This window conveys the
SD1 SFP software’s version installed on your machine.
Figure 33About Keysight SD1 SFP window
4.3.2: Understanding features in Hardware Manager
The features in this window are described below in the order shown in Figure 34.
Figure 34Hardware Manager window
60SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 61
Using Keysight SD1 3.x SFP Software4
1 File—The File menu has two items, which are:
Figure 35Controls in the File menu for Hardware Manager
•Refresh HW list—This feature requires an active network connection to fetch information
from the database. Click File > Refresh HW list so that the SD1 SFP software checks the
Firmware database for any new Firmware version for each M3xxxA module that is
displayed in the Modules area below. If an updated firmware version is found
corresponding to one or more modules, the firmware version is updated/refreshed in the
Available FW Version list. Performing the Refresh HW list is recommended prior to
proceeding with Firmware update using the SD1 SFP software on one or more connected
modules.
•Load update package...—In case your machine is offline, that is, does not have an active
network connection, this feature is useful to load an updated and pre-saved firmware
package so that you can still proceed with firmware updates on one or more connected
M3xxxA modules. Click File > Load update package... to access the Load SDM package...
window, as shown in Figure 36. Navigate to the folder where the firmware update file is
saved. Open the required SDM package file with extension *.sdpkg. You may proceed with
firmware update on the module which the SDM package file corresponds to.
Figure 36Accessing firmware update file from Load SDM package window
2 Help—The Help > Database Version to view the version of the Firmware update file Database
server.
Figure 37Control in the Help menu for Hardware Manager
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide61
Page 62
4Using Keysight SD1 3.x SFP Software
NOTE
Figure 38Database Version window
3 Software—This area displays the installed version of the Keysight SD1 SFP software and
programming libraries along with that of the compatible driver.
4 Module—This area consists of the following information:
•Chassis—the Chassis number where the M3xxxA cards are inserted into. Related API
•<M3xxxA>—the model number for one or more modules that are inserted into the specific
Keysight SD1 SFP 3.x software does not recognize cards that have
Firmware version less than 4.0 (for M32xxA/M33xxA modules) or less than
2.0 (for M31xxA modules).
function: “getChassis()”.
Chassis number. The following information is displayed for each module. Related API
function: “getType()”.
Figure 39Information pertaining to each module in the Hardware Manager window
•Instance name—Product Name assigned to the software instance when the SD1 SFP
detects the connected module. Format is <M3xxxA>#<serial-number>. Related API
function: “getProductName()”.
•Serial Number—Serial number of the connected module. Related API function:
“getSerialNumber()”.
•Options—Hardware license options that are enabled on this module. Related API
function: “getOptions()”.
•HW Version—Hardware version of the module. Related API function:
“getHardwareVersion()”.
•Status—Indicates the current status of the module. ‘ok’ indicates devices is working
properly.
•HW PID—The Product ID number of the Hardware. Indicates which physical options
are available on the product.
•FW PID—The Product ID number of the Firmware. Indicates which firmware elements
are available on the product.
62SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 63
Using Keysight SD1 3.x SFP Software4
•Slot—the slot number in the Chassis where the M3xxxA module is inserted into. Related
API function: “getSlot()”.
•Firmware Version—the firmware version currently installed on each M3xxxA module.
Related API function: “getFirmwareVersion()”.
•Available FW Version—’None’ if only the modules are connected but the machine does not
have an active network connection; else, the latest firmware version number that is
available on the Database server.
•Update—By default, the option is ‘No’ for each module. Change to ‘Yes’ for one or more
modules where you wish to perform a firmware update.
5 Update Selected HW—Click the Update Selected HW button to proceed with firmware update on
your selected module, where you have set the Update flag to Yes . The SD1 SFP software then
displays a confirmation prompt asking you to verify if you wish to proceed with the firmware
update using the version listed in the Available FW Version list for the selected module on the
respective Chassis & Slot numbers. For firmware update instructions, refer to SD1 3.x Software Startup Guide.
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide63
Page 64
4Using Keysight SD1 3.x SFP Software
NOTE
Section 4.4: Understanding Digitizer SFP features & controls
For all those modules that are connected to the Chassis, the respective soft front panel for the
M3100A/M3102A PXIe Digitizer and that for the Digitizer part of the M3300A/M3302A Combo
appear automatically when SD1SFP is launched. By default, the SFP window for the Digitizer
appears, as shown for M3302A module in Figure 40.
The controls are common across all Digitizer SFP windows. However, the
number of DAQs / Channels that appear depends on the module type.
M31xxA modules and the M3300A Combos support 4 DAQs/Channels
whereas the M3302A Combos support 2 DAQs/Channels.
On this window,
• the default name, which is assigned by the SD1 SFP user interface, is displayed on the bar at the
top.
• the hardware options enabled on the module followed by the serial number, Chassis number and
Slot number are displayed on the bar at the bottom.
• the Channel controls are displayed on the main window whereas the Data Acquisition (DAQ)
controls are included within the main menu items, which are explained in the following section.
• The SFP is divided into Time domain and Frequency domain. The main menu is common to both
domains.
Figure 40SFP (Time domain) for the connected M3302A after SD1 SFP software is launched
64SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 65
Using Keysight SD1 3.x SFP Software4
4.4.1: Understanding DIG SFP main menu features & controls
The controls under each menu item are further described in the order displayed in Figure 40. Images
in this section pertain mainly to M3302A DIG module’s SFP only, but are applicable across all DIG
module SFP windows.
1. File
Note that the functionality of this feature is same as that for AWGSFP. The images shown here are
specific to M3201A SFP; however, the functionality is the same across all SFP windows in the SD1 3.x
software.
Figure 41Controls in the File menu of the SFP
• Change Name...—Click File > Change Name... to open the Change name module dialog box.
Figure 42Change name module dialog box
•In the Name: text field, enter an alternate name of your choice.
•Click OK.
The new name appears on the bar at the top of the corresponding module’s SFP window.
• Hide—Click File > Hide to close the module’s SFP window instance.
• To show/open the same window again, click Window > <module name> from the main menu of
the Keysight SD1 SFP software. See description for “Window” in “Understanding main window
features and controls” on page 58.
2. Settings
Here, the controls for DAQ are available in the upper part.
Figure 43Controls in the Settings menu of the DIG SFP
• DAQ External Triggers...—Click Settings > DAQ External Triggers... to open the Configure DAQ Triggers
dialog box. See “Setting the Configure DAQ Triggers dialog” on page 70 for more description.
• Related API function: “DAQtriggerExternalConfig()”
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide65
Page 66
4Using Keysight SD1 3.x SFP Software
• DAQ Settings—Click Settings > DAQ Settings > DAQ n to open the DAQ n Settings dialog box. See
“Setting the DAQ Settings dialog” on page 71 for more description.
• DAQ Trigger—Click Settings > DAQ Trigger > Send Trigger to send a trigger to the selected DAQs in
the same sub-menu. By default, all DAQs are selected.
• Related API functions: “DAQtrigger()”, “DAQtriggerMultiple()”, “DAQtriggerConfig()”
Figure 44Controls in DAQ Trigger sub-menu
•Click one or more DAQ n (where, n = DAQ number) entries to clear the tick mark; thereby,
refraining them from receiving the trigger when you click Send Trigger.
• Alternatively, you may use the shortcut controls to send trigger to DAQs.
Figure 45Shortcut controls for sending trigger to DAQs
• Trigger/Clock...—Click Settings > Trigger/Clock... to open the Trigger / Clock Settings dialog box.
While the DAQ receives the data on trigger, the functionality of the user interface is the same as
that for Trigger / Clock Settings dialog in AWG SFP modules. See Setting the Trigger / Clock
Settings dialog for more information.
• Related API functions: “triggerIOconfig()”, “clockIOconfig()”
3. FPGA
This feature functions in the same manner across all SFPs.
Figure 46Control in the FPGA menu of the SFP
• Load firmware...—Click FPGA > Load firmware... to open the Firmware Loader dialog box, where you
can load the bitstream file (*.k7z) onto the FPGA sandbox region of the corresponding module. For
more information on how to load the bitstream file onto the FPGA sandbox region, see “Using SD1
SFP user interface to load FPGA” on page 48.
• Related API function: “FPGAload()”
66SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 67
4. Help
This feature functions in the same manner across all SFPs.
Figure 47Control in the Help menu of the SFP
• Module User Guide...—Click Help > Module User Guide... to view the documentation corresponding
to Digitizer/Combo modules in Online Help format. For more information, see “Accessing Online
Help for SD1 3.x software” on page 200.
4.4.2: Other DIG SFP features & controls
5. Time
The Time domain, whose functionality is like that of Oscilloscope, is displayed by default. The controls
in this tab are explained further.
Using Keysight SD1 3.x SFP Software4
6. Display
The display is similar to that of the Oscilloscope and plots the input waveform on the time scale. You
can alter the way the waveform is plotted by using the Channel controls.
7. Points
Indicates the number of sample points to be acquired in a Data Acquisition. Make sure that the input
integer is an even number.
8. Trigger
iChannel—Enter the number for the corresponding Channel n (where, n = Channel number)
where the trigger is checked. Note that each Channel is color-coded, so that the applied
trigger inherit the same color as shown on the selected Channel for easy identification,
when triggers on multiple Channels are applied.
•Positive Edge—(default) indicates that the Trigger is generated when the input signal is
rising and crosses the configured threshold value.
•Negative Edge—indicates that the Trigger is generated when the input signal is falling
and crosses the configured threshold value.
•Both Edges—indicates that the Trigger is generated when the input signal crosses the
configured threshold value, irrespective of whether it is rising or falling.
iiThreshold—indicates the threshold voltage level (in units of Volts), which the input signal
must attain for the Trigger to be generated.
iiiDelay—indicates the time delay (in units of sampling points) on the input signal, after
which the Trigger is generated.
ivMode—select one of the following drop-down options:
•Normal—(default) Triggering is generated when the conditions defined for Edge,
Threshold and Delay levels are met.
•Auto—Triggering is generated irrespective of the conditions defined for Edge,
Threshold and Delay levels.
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide67
Page 68
4Using Keysight SD1 3.x SFP Software
9. Channel
Select the check box for the corresponding Channel n (where, n = Channel number) where the input
sampling points can be plotted as a waveform. Note that each Channel is color-coded, so that the
waveforms inherit the same color as shown on the selected Channel for easy identification, when
multiple waveforms are displayed.
iFull Scale—configures scalability of the input waveform on the Digitizer SFP display.
iiPosition—configures positioning of the input waveform on the Digitizer SFP display.
iiiPrescaler—configures the value by which the effective sampling rate must be reduced.
ivImpedance—configures the impedance value for AC coupling and DC coupling on the input
10. Single
•Click the Single button to capture a single acquisition of the waveform.
11. Run
•Click the Run button to capture a continuous acquisition of the waveform.
•Secondary—Trigger is generated through a secondary triggering mode.
waveform.
12. Frequency
The Frequency domain, whose functionality is like that of a spectrum analyzer, has common Channel
controls described so far, but for the additional Window feature, which is available in this domain
only, as shown in Figure 48.
68SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 69
Using Keysight SD1 3.x SFP Software4
Figure 48SFP (Frequency domain) for the connected M3302A
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide69
Page 70
4Using Keysight SD1 3.x SFP Software
13. Window
Window is a mathematical function that is zero-valued outside of some chosen interval and it is used
in applications including spectral analysis.
• Select one of the following window functions from the drop-down options to apply on the Digitizer
signals:
• Rectangular—Simplest B-spine window
• Bartlett—Hybrid window
• Hanning—Side-lobes roll off about 18 dB per octave
• Hamming—Optimized to minimize the maximum nearest side lobe
• Blackman—(default) Higher-order generalized cosine windows for applications that require
windowing by the convolution in the frequency-domain
14. Channel n
(n represents the Channel number)
• Select the check box for the corresponding Channel number on the module, where the selected
Window function must be applied.
15. Display
The display is similar to that of a Spectrum Analyzer and plots the input waveform on the time scale.
You can alter the way the waveform is plotted by using the Channel controls, described earlier in this
section.
4.4.3: Configuring DAQ and Trigger/Clock Setting dialogs
1. Setting the Configure DAQ Triggers dialog
If you are using an external trigger source to send trigger to one or more DAQs, you must configure
the Configure DAQ Triggers dialog box.
Figure 49Configure DAQ Triggers dialog box
1 Select one or more rows to enable external triggering for DAQ n, where n = DAQ number.
2 Trigger Mode indicates the mode when the trigger signal must be sent. From the Trigger Mode
drop-down options, select one of the following options:
• Disabled—(default) indicates that external triggering is disabled for the selected DAQ.
• Active High—indicates that the trigger signal must be sent when active high voltage on the
signal is attained.
70SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 71
Using Keysight SD1 3.x SFP Software4
• Active Low—indicates that the trigger signal must be sent when active low voltage on the signal
is attained.
• Rising Edge—indicates that the trigger signal must be sent when the rising edge on the signal is
attained.
• Falling Edge—indicates that the trigger signal must be sent when the falling edge on the signal
is attained.
3 Trigger Line indicates the line medium to be used for the trigger signal to be sent. This field is
enabled for all Trigger Mode options except for Disabled. From the Trigger Line drop-down options,
select one of the following options:
• Extern 1 / Extern 2—indicates that line 1 / line 2 from the external triggering source is used to
send the trigger signal.
• PXI n (where, n = 0 to 7)—indicates that lines 0 to 7 from the PXI backplane trigger source can
be used to send the trigger signal. PXI0 is the default option.
4 Sync—By default, the setting to synchronize the DAQ with the trigger source is disabled. You may
select the check box to enable synchronization.
5Click OK to save any changes and return to the DIG module window.
2. Setting the DAQ Settings dialog
To indicate the triggering mode on each DAQ, you must configure the DAQ n settings dialog box
(where, n = DAQ number). Also, see “DAQ Trigger” on page 17 for more information.
Figure 50Configure DAQ Setting dialog box
• Trigger Mode—Select one of the following drop-down options:
• Auto—The acquisition is triggered immediately after the DAQ has started, irrespective of the
triggering source.
• Analog—(default) The acquisition is triggered using an analog triggering source. The DAQ waits
for an external analog trigger (applicable only for products with analog inputs).
• SW/HVI—The acquisition is triggered using any triggering software or using an HVI function. In
either case, the Digitizer must be connected and operational.
• External—The acquisition is triggered using an external digital triggering source.
•Click OK to save any changes and return to the Digitizer module window.
3. Setting the Trigger / Clock Settings dialog
• While the DAQ acquires data on trigger, the functionality of the user interface is the same as that
for Trigger / Clock Settings dialog in AWG SFP modules. If you are using an External Trigger / Clock
source, you can control the point when the trigger must be applied. Use the Trigger / Clock Settings
dialog to perform this action.
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide71
Page 72
4Using Keysight SD1 3.x SFP Software
Figure 51Trigger / Clock Settings dialog box
1 Select the check box for either External Clock, External Trigger, or both to indicate which external
source is being used.
2 External Clock—From the Value drop-down options, select:
• Output Disabled—indicates that the signal from the external clock source is not included in the
AWG output.
• Output Enabled—(default) indicates that the signal from the external clock source is included in
the AWG output.
3 External Trigger—From the Value drop-down options, select:
• Input—Indicates that the signal from the external trigger source is used only to trigger the input
waveform at the selected DIG Channels.
• Output + Input—(default) Indicates that the signal from the external trigger source is used to
trigger both the DIG input and DAQ waveforms.
4Click OK to save any changes and return to the DIG module window.
72SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 73
SD1 3.x Software for M310xA / M330xA Digitizers
User’s Guide
5.Using Keysight SD1 API
Command Reference
Keysight Supplied Native Programming Libraries 74
Support for Other Programming Languages 75
Functions in SD1 Programming Libraries 76
SD_Module functions 88
SD_AIN functions 108
SD_Module functions (specific to Pathwave FPGA) 166
SD_SandboxRegister functions 176
Programs can run on an embedded controller or desktop computer and be controlled with Keysight
SD1 Programming Libraries. Keysight supplies a comprehensive set of highly optimized software
instructions that controls off-the-shelf functionalities of Keysight hardware. These software
instructions are compiled into the Keysight SD1 Programming Libraries. The use of customizable
software to create user-defined control, test and measurement systems is commonly referred as
Virtual Instrumentation. In Keysight documentation, the concept of a Virtual Instrument (or VI)
describes user software that uses programming libraries and is executed by a computer.
Keysight provides ready-to-use native programming libraries for a comprehensive set of
programming languages, such as C, Visual Studio (C#, VB), Python, etc., ensuring full software
compatibility and seamless multi-vendor integration. Ready-to-use native libraries are supplied for
the following programming languages and compilers:
Table 18List of programming languages and compilers
LanguageCompilerLibraryFiles
Microsoft Visual Studio .NET.NET Library*.dll
C
C++Any C++ compilerHeader only*.h
C#Microsoft Visual Studio .NET.NET Library*.dll
PythonAny Python compilerPython Library*.py
BasicMicrosoft Visual Studio .NET.NET Library*.dll
MinGW (Qt)C Library*.h, *.lib
Any C compilerC Library*.h, *.lib
74SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 75
Using Keysight SD1 API Command Reference5
Section 5.2: Support for Other Programming Languages
Keysight provides dynamic libraries, such as DLLs, that can be used in virtually any programming
language. Dynamic-link libraries are compatible with any programming language that has a compiler
capable of performing dynamic linking. Here are some case examples:
• Compilers not listed above.
• Other programming languages: Java, PHP, Perl, Fortran, Pascal.
• Computer Algebra Systems (CAS): Wolfram Mathematica, Maplesoft Maple.
• DLL function prototypes—The exported functions of the dynamic libraries have the same
prototype as their counterparts of the static libraries.
• Function Parameters—Some of the parameters of the library functions are language dependent.
The table of input and output parameters for each function is a conceptual description, therefore,
the user must check the specific language function to see how to use it. One example are the ID
parameters (moduleID, etc.), which identify objects in non object-oriented languages. In
object-oriented languages, the objects are identified by their instances and therefore the IDs are
not present.
• Function Names—Some programming languages like C# have a feature called function
overloading or polymorphism, that allows creating several functions with the same name, but with
different input/output parameters. In languages without this feature, functions with different
parameters must have different names.
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide75
Page 76
5Using Keysight SD1 API Command Reference
Section 5.3: Functions in SD1 Programming Libraries
The functions available in Keysight SD1 Programming Libraries are listed below.
• SD_Module functions
• SD_AIN functions
• SD_Module functions (specific to Pathwave FPGA)
• SD_SandboxRegister functions
Note that there are a few API functions that are specific to M3300A/M3302A PXIe Combo Cards. The
syntax for these API functions use the “SD_AIO” class, which represents Combo modules and use the
“port” parameter to distinguish between the AWG and the Digitizer within. These API functions have
been developed with the flexibility to exclusively use the “SD_AOU” or “SD_AIN” class specifically for
AWG or Digitizer cards, respectively.
Table 19List of SD_Module Functions
Function nameShort description
openInitializes a hardware module and must be called before using any other
closeReleases all resources that were allocated for a module with open and must
moduleCountReturns the number of Keysight SD1 modules in the system.
getProductNameReturns the product name of the specified module.
getSerialNumberReturns the serial number of the specified module.
getChassisReturns the chassis number of where a module is located.
getSlotReturns the slot number of where a module is located.
PXItriggerWriteSets the digital value of a PXI trigger in the PXI backplane. Only available in
PXItriggerReadReads the digital value of a PXI trigger in the PXI backplane. Only available in
getFirmwareVersionReturns the firmware version of the module.
getHardwareVersionReturns the hardware version of the module.
getOptionsReturns all the available option for selected card.
getTemperatureReturns the temperature of the module.
getTypeReturns the type of module.
isOpenReturns true if module is opened successfully.
module-related function.
always be called before exiting the application.
PXI/PXI Express form factors.
PXI/PXI Express form factors.
translateTriggerIOtoExternalTriggerLineReturns the translated external trigger value.
translateTriggerPXItoExternalTriggerLineReturns the translated PXI trigger value.
runSelfTestPerforms a self test on the open module.
76SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 77
Using Keysight SD1 API Command Reference5
Table 20List of SD_AIN Functions
Function nameShort description
channelCouplingReturns the coupling of the specified channel.
channelFullScaleReturns fullScale value for the specified channel.
channelImpedanceReturns the impedance of the specified channel.
channelInputConfigConfigures the input full scale, impedance and coupling.
channelMaxFullScaleReturns maximum fullScale value for the specified input coupling and impedance.
channelMinFullScaleReturns minimum fullScale value for the specified input coupling and impedance.
channelPrescalerReturns the prescaler value for the specified channel.
channelPrescalerConfigConfigures the input prescaler.
channelPrescalerConfigMultipleConfigures prescaler on the selected Digitizer channels.
channelTriggerConfigConfigures the analog trigger block for each channel Analog Trigger.
DAQanalogTriggerConfigConfigures the analog hardware trigger for the selected DAQ Trigger.
DAQconfigConfigures the acquisition of words Data Acquisition (DAQs) in two possible reading
DAQdigitalTriggerConfigConfigures the digital hardware triggers for the selected DAQ Trigger.
DAQreadReads the words acquired with the selected DAQ Data Acquisition (DAQs).
DAQstartStarts an acquisition on the selected DAQ Data Acquisition (DAQ).
DAQstartMultipleStarts an acquisition on the selected DAQs Data Acquisition (DAQs).
DAQstopStops the Data Acquisition (DAQ).
DAQstopMultipleStops multiple channels of Data Acquisition (DAQs).
DAQpausePauses the Data Acquisition (DAQ).
DAQpauseMultiplePauses multiple channels of Data Acquisition (DAQs).
DAQresumeResumes acquisition on the selected DAQ.
DAQresumeMultipleResumes multiple channels of acquisition on the selected DAQs.
DAQflushFlushes the acquisition buffers and resets the acquisition counter included in a data
DAQflushMultipleFlushes the acquisition buffers and resets the acquisition counter included in a Data
DAQnPointsReturns the counter of DAQ.
DAQtriggerTriggers the acquisition of words in the selected DAQs provided that they are configured for
modes.
acquisition block.
Acquisition block.
VI/HVI Trigger.
DAQtriggerMultipleTriggers the acquisition of words in the selected DAQ provided that they are configured for
DAQtriggerConfigConfigures DAQ for the selected DAQ Trigger.
DAQcounterReadReads the number of words acquired by the selected DAQ (Data Acquisition (DAQs))
triggerIOconfigConfigures the trigger connector/line direction (I/O Triggers).
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide77
VI/HVI Trigger.
since the last call to DAQflush or DAQ.
Page 78
5Using Keysight SD1 API Command Reference
Function nameShort description
triggerIOwriteSets the trigger output and synchronization mode.
triggerIOreadReads the trigger input (I/O Triggers).
clockSetFrequencySets the module clock frequency.
clockGetFrequencyReturns the frequency of Clock System.
clockGetSyncFrequencyReturns the frequency of the synchronization clock.
clockIOconfigConfigures the operation of the clock output connector.
clockResetPhaseSets the module in a synchronized state, waiting for the first trigger to reset the phase of the
DAQbufferPoolConfigConfigures buffer pool that will be filled with the data of the channel to be transferred to PC.
DAQbufferAddAdds an additional buffer to the channel’s previously configured pool.
DAQbufferGetRetrieves a filled buffer from the channel buffer pool. You have to call DAQbufferAdd with this
DAQbufferPoolReleaseReleases the channel buffer pool and its resources. After this function is called, you need to
DAQbufferRemoveRequests that a buffer be removed from the channel buffer pool. If a NULL pointer is returned,
DAQtriggerExternalConfigConfigures DAQ for the external trigger source.
FFTCalculates the FFT of data captured by DAQread for the selected channel. FFT frequency
voltsToIntConverts threshold in ChannelTriggerConfig() from ‘double’ to ‘integer’.
Table 21List of SD_Module Functions (specific to PathWave FPGA)
Function nameShort description
FPGAgetSandBoxRegisterGet sandbox register from name if programmable FPGA is loaded from.k7z file.
FPGAgetSandBoxRegistersGet sandbox registers list if programmable FPGA is loaded from.k7z file.
internal clocks CLKsync and CLKsys.
buffer so the buffer can be used again.
call DAQbufferRemove consecutively to get all buffers back and release them.
no more buffers remain in the buffer pool. Returned buffer is a previously added buffer from
the user and the user has to release/delete it.
range goes from 0 to fs/2.
FPGAloadLoads the bit file (*.k7z), which is generated using PathWave FPGA, onto the respective
FPGAresetSends a reset signal to the Sandbox region.
FPGATriggerConfigConfigures PXI or FrontPanel triggers coming in or going out from sandbox region.
FPGAconfigureFromK7zConfigures the FPGA Sandbox region using the K7z bitstream file, without loading it onto the
FPGAGetKernelUUIDGets the KernelUUID string from the FPGA Sandbox region.
User FPGA HVI Actions/EventsDefines the HVI Actions & Events, which are available for sending information to and
78SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
module’s FPGA.
module.
receiving information from the FPGA sandbox.
Page 79
Using Keysight SD1 API Command Reference5
Table 22List of SD_Module HVI Functions
Function nameShort description
Module HVI EngineEnables HVI Engines located in the M3xxxA module’s FPGA.
Module HVI TriggersActivates PXI or Front Panel triggers for HVI sequences.
Table 23List of SD_SandboxRegister Functions
Function nameShort description
readRegisterBufferReads data buffer from a sandbox register bank or memory map.
readRegisterInt32Reads int32 data from a sandbox register bank or memory map.
writeRegisterBufferWrites data buffer to a sandbox register bank or memory map.
writeRegisterInt32Writes int32 data to a sandbox register bank or memory map.
PropertiesDisplays properties associated with registers.
5.3.1: Common References to parameter values
Following certain parameters and their respective values, which are required for one or more API
functions.
Table 24Clock Output options and corresponding values
OptionsDescriptionValue
DisableThe CLK connector is disabled.0
CLKrefOutputThe reference clock is available at the CLK connector.1
Table 25Analog Trigger Mode options
OptionDescriptionNameValue
Positive EdgeTrigger is generated when the input signal is rising and crosses the
threshold
Negative EdgeTrigger is generated when the input signal is falling and crosses the
threshold
Both EdgesTrigger is generated when the input signal crosses the threshold, no
matter if it is rising or falling
AIN_RISING_EDGE1
AIN_FALLING_EDGE2
AIN_BOTH_EDGES3
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide79
Page 80
5Using Keysight SD1 API Command Reference
Table 26DAQ Trigger Mode options
OptionDescriptionNameValue
Auto (Immediate)The acquisition starts automatically after a call to function DAQstartAUTOTRIG0
Software / HVISoftware trigger. The acquisition is triggered by the function DAQtrigger,
Hardware Digital
Tri gger
Hardware Analog
Tri gger
Table 27External Hardware Digital Trigger Source for the DAQ
OptionDescriptionNameValue
External I/O
Tri gger
PXI TriggerPXI form factor only. The DAQ trigger is a PXI trigger line and it is
Table 28Trigger behavior for the DAQ
OptionDescriptionNameValue
NoneNo trigger has been activatedTRIGGER_NONE0
Active HighTrigger is active when it is at level highTRIGGER_HIGH1
Active LowTrigger is active when it is at level LowTRIGGER_LOW2
DAQtrigger provided that the DAQ is running. DAQtrigger can be
executed from the user application (VI) or from an HVI.
Hardware trigger. The DAQ waits for an external digital trigger (see
Table 27 External Hardware Digital Trigger Source for the DAQ).
Hardware trigger. The DAQ waits for an external analog trigger (only
products with analog inputs).
The DAQ trigger is a TRG connector/line of the product (I/O Triggers).
PXI form factor only: this trigger can be synchronized to CLK10.
synchronized to CLK10.
SWHVITRIG1
HWDIGTRIG2
HWANATRIG3
TRIG_EXTERNAL0
TRIG_PXI0-7
Rising EdgeTrigger is active on the rising edgeTRIGGER_RISE3
Falling EdgeTrigger is active on the falling edgeTRIGGER_FALL4
Table 29Trigger Direction options and corresponding values
OptionsDescriptionNameValue
Trigger Output
(readable)
Trigger InputTRG operates as a trigger input, or as a general purpose digital input
80SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
TRG operates as a general purpose digital output signal, that can be
written by the user software.
signal, that can be read by the user software.
AIN_TRG_OUT0
AIN_TRG_IN1
Page 81
Using Keysight SD1 API Command Reference5
Table 30Sync mode options and corresponding values
OptionsDescriptionNameValue
Non-synchronized modeThe trigger is sampled with an internal 100 MHz clock.SYNC_NONE0
Synchronized mode(PXI form factor only) The trigger is sampled using CLK10*.SYNC_CLK101
* In synchronized mode, the trigger is synchronized to the nearest clock edge of the 10 MHz clock from the PXI chassis backplane. If using an external trigger, it should also be synchronized to the same 10 MHz reference. The trigger is sampled using CLKsync. If it is a multiple of 10 MHz, the maximum processing time would be less than 100 ns, varying depending on trigger arrival. If CLKsync is less than 10
MHz, the processing time will be greater than 100 ns.
Table 31Variable clock system operation mode options and corresponding values
OptionsDescriptionNameValue
Low JitterModeThe clock system is set to achieve the lowest jitter, sacrificing tuning
speed.
Fast Tuning ModeThe clock system is set to achieve the fastest tuning time, sacrificing jitter
performance.
Table 32SD_ResetMode attribute values
AttributeValue
LOW0 (to exit reset mode / “HIGH” state of the sandbox region)
HIGH1 (to initiate reset mode and keep the sandbox region in the same mode until a “LOW” state is used to exit reset mode)
PULSE2 (to reset the sandbox region by sending a “pulse”)
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide81
Page 82
5Using Keysight SD1 API Command Reference
OptionDescriptionNameValue
HanningSide-lobes roll off about 18 dB per octaveWINDOW_HANNING2
HammingOptimized to minimize the maximum nearest side lobeWINDOW_HAMMING3
BlackmanHigher-order generalized cosine windows for applications that require
windowing by the convolution in the frequency-domain
WINDOW_BLACKMAN4
82SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 83
5.3.2: Data transfer rates
Tabl e 37 shows the data transfer rate (download speed) to both M3102A DIG 500 and M3100A DIG
100 modules, calculated for specific number of points per cycle for 1 cycle. The average values of
time and data rate have been calculated over five iterations using the following configuration:
• Operation System — Windows 10 (64-bit)
• RAM — 16 GB
• Processor Speed — 2.40 GHz
Table 36Data upload speed to DIG modules
Points per Cycle
1000205.99.79156.413.2
10,000326.3161.52266.077.27
1,00,0001612.79124.061547.4129.61
Average Time (µs)Average Data Transfer
Using Keysight SD1 API Command Reference5
PythonC++
Average Time (µs)Average Data Transfer
Rate (MBps)
Rate (MBps)
5,00,0007754.98128.977478.6133.787
10,00,00015667.91127.7014844.2134.835
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide83
Page 84
5Using Keysight SD1 API Command Reference
NOTE
5.3.3: Latency in Digitizers for various HVI Actions & Instructions
Tabl e 37 displays the HVI actions and instructions along with the corresponding latency measured
for Digitizers. The latency value for each instruction or action is determined and measured based on
the GateWare design. You must use the measured values for the instructions as shown in the
following table.
Table 37Latency (in nanoseconds) for HVI Actions & Instructions
HVI Actions / InstructionsLatency in M3102A (DIG 500)Comments
ChannelPrescalerConfig30Notes 2, 3
ChannelTriggerConfig30Notes 2, 3
DAQConfig80Notes 1, 3
DAQFlush170Notes 2, 3
DAQTrigger330Notes 2, 3
DAQStart120Notes 2, 3
Notes:
1. “DAQConfig” is a multi-step instruction, which takes 20ns to run.
2. This HVI action / instruction takes 10ns to run.
3. The HVI actions / instructions in Digitizers are mutually exclusive, that is, cannot be run simultaneously.
To calculate latency, certain timing parameters in the HVI statements include the
“Instrument_SyncResources_Latency” value, which is specific for each instrument/module
being used. For all SD1 modules, the “Instrument_SyncResources_Latency” value is set to ‘0’ cycles. For more information, refer to Chapter 7: HVI Time Management and Latency in the
KS2201A PathWave Test Sync Executive User Manual.
HVI related latency in FPGA User Sandbox
The FPGA registers and Memory map access latency from HVI for both AWG and Digitizers is
measured as: HVI_FPGA_ProductDelay = 1 cycles (10ns). Refer to the SD1 3.x Software for M320xA / M330xA AWG User’s Guide for latency information in AWGs. Tab le 3 8 summarizes the latency for
all FPGA read/write instructions. For more information regarding latencies related to HVI, refer to
Chapter 7: HVI Time Management and Latency in the PathWave Test Sync Executive User Manual.
Table 38Minimum delay required (in nanoseconds) for FPGA User Sandbox instructions
InstructionsMinimum Delay required
fpga_array_read60
fpga_array_read (Address from HviRegister)80
fpga_array_write30
fpga_array_write (Address or data from HviRegister)50
84SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 85
Using Keysight SD1 API Command Reference5
InstructionsMinimum Delay required
fpga_register_read60
fpga_register_write30
fpga_register_write (Address or data from HviRegister)50
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide85
Page 86
5Using Keysight SD1 API Command Reference
TriggerIO and Action Groups
When writing HVI Native local instructions, any number of TriggerIOs can be written at the same
time. TriggerIOs are organized in groups of 16. The Fetch time of the instruction depends on the
number of different TriggerIO groups included in the instruction (#TriggerIOGroups).
Tabl e 39 shows the elements in the TriggerIO Group.
Table 39Elements in TriggerIO Group
GroupElements
Tri gger IOGr oup_ 0
* The group TriggerIOGroup_0 applies to all AWG, DIG and Combo modules. However, the element ‘FrontPanel2’ trigger applies to the
Combo cards only.
FrontPanel1
FrontPanel2*
The action-execute HVI instruction synchronously runs a list of HVI actions that you have defined.
HVI actions are organized in groups that can contain up to 16 actions. Each M3XXXA defines its own
groups of actions, which are shown below.
Any number of HVI actions can be run synchronously, regardless of the group to which each action,
which you have specified, belongs. However, the number of action groups included in the
action-execute instruction (#ActionGroups) will affect both the Fetch time and the Execution time of
the instruction.
Tabl e 40 shows the action names in the AWG Action Group.
Table 40Action names in AWG Action Group
GroupAction names
CH1ResetPhase - CH4ResetPhase
ActionGroup_0
AWG1Start - AWG4Start
AWG1Stop - AWG4Stop
AWG1Pause - AWG4Pause
AWG1Resume - AWG4Resume
ActionGroup_1
ActionGroup_2UserFpga0 - UserFpga7
86SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
AWG 1Trigger - A WG4Trigger
AWG1JumpNextWaveform - AWG4JumpNextWaveform
AWG1QueueFlush - AWG4QueueFlush
Page 87
Tabl e 41 shows the action names in the DIG Action Group.
Table 41Action names in DIG Action Group
GroupAction names
DAQ1Start - DAQ4Start
Using Keysight SD1 API Command Reference5
ActionGroup_0
ActionGroup_1
DAQ1Stop - DAQ4Stop
DAQ1Resume - DAQ4Resume
DAQ1Trigger - DAQ4Trigger
DAQ1Flush- DAQ4Flush
UserFpga0 - UserFpga7
Tabl e 42 shows the action names in the Combo Action Group.
Table 42Action names in Combo Action Group
GroupAction names
CH1ResetPhase - CH4ResetPhase
ActionGroup_0
ActionGroup_1
AWG1Start - AWG4Start
AWG1Stop - AWG4Stop
AWG1Pause - AWG4Pause
AWG1Resume - AWG4Resume
AWG 1Trigger - A WG4Trigger
AWG1JumpNextWaveform - AWG4JumpNextWaveform
AWG1QueueFlush - AWG4QueueFlush
DAQ1Start - DAQ4Start
ActionGroup_2
ActionGroup_3DAQ1Flush - DAQ4Flush
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide87
DAQ1Stop - DAQ4Stop
DAQ1Resume - DAQ4Resume
DAQ1Trigger - DAQ4Trigger
UserFpga0 - UserFpga7
Page 88
5Using Keysight SD1 API Command Reference
Section 5.4: SD_Module functions
5.4.1: open
DescriptionInitializes a hardware module and must be called before using any other module-related function. A
module can be opened using the serial number or the chassis and slot number. Using the serial
number ensures the same module is always opened regardless of its chassis or slot location.
ParametersTable 43Input parameters for open
Input Parameter nameDescription
productNameModule’s product name (for example, “M3102A” or “M3202A”). The product name can be found on the product or can be retrieved
serialNumberModule’s serial number (for example, “ES5641”). The serial number can be found on the product or can be retrieved with
chassis
nChassis
nSlotSlot number in the chassis where the module is located. The slot number can be found on the chassis or can be retrieved with getSlot.
compatibilityForces the channel numbers to be compatible with legacy models. Channel numbering (channel enumeration) can start as CH0 or
partNumberName of the module such as “M3102A” or “M3202A”.
optionsThe format of the <options> string is “optionName1=value1, optionName2=value2, and so on.”
Output Parameter nameDescription
moduleID(Non-object-oriented languages only) Module identifier or a negative number that indicates an error, see Description of SD1 Error IDs.
errorOutSee Description of SD1 Error IDs.
with getProductName.
getSerialNumber.
Chassis number where the module is located. The chassis number can be found in Keysight SD1 software or can be retrieved with
getChassis.
CH1. See Channel Numbering and Compatibility Mode.
Valid Values are:
simulate=true|false.
If ‘true’, the module is open as a simulated (demo) card.
channelNumbering=Signadyne|Keysight, HVI2=true|false and Factory=XX.
Signadyne modules label their channel numbers starting from 0, Keysight modules start from 1.
Table 44Output parameters for open
88SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide89
Page 90
5Using Keysight SD1 API Command Reference
5.4.2: close
DescriptionReleases all resources that were allocated for a module with open and must always be called before
exiting the application.
ParametersTable 46Input parameters for close
Input Parameter nameDescription
moduleID(Non-object-oriented languages only) Module identifier, returned by open.
Table 47Output parameters for close
Output Parameter nameDescription
errorOutSee Description of SD1 Error IDs.
SyntaxTable 48API syntax for close
LanguageSyntax
Cint SD_Module_close(int moduleID);
C++int SD_Module::close();
.NET, MATLABint SD_Module::close();
PythonSD_Module.close()
LabVIEWclose.vi
HVINot available
90SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 91
Using Keysight SD1 API Command Reference5
NOTE
5.4.3: moduleCount
DescriptionReturns the number of Keysight SD1 modules (M31xxA/M32xxA/M33xxA) installed in the system.
(Specific to object-oriented programming languages only) moduleCount is a
static function.
ParametersTable 49Output parameters for moduleCount
Output Parameter nameDescription
nModulesNumber of Keysight SD1 modules installed in the system. Negative numbers indicate an error. See Description of SD1 Error IDs.
errorOutSee Description of SD1 Error IDs.
SyntaxTable 50API syntax for moduleCount
LanguageSyntax
Cint SD_Module_count();
C++int SD_Module::moduleCount();
.NET, MATLABint SD_Module::moduleCount();
PythonSD_Module.moduleCount()
LabVIEWNot available
HVINot available
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide91
Page 92
5Using Keysight SD1 API Command Reference
NOTE
5.4.4: getProductName
DescriptionReturns the product name of the specified module.
(Specific to object-oriented programming languages only) getProductName
is a static function. Object-oriented languages also have a non-static
function without arguments.
ParametersTable 51Input parameters for getProductName
Input Parameter nameDescription
indexModule index. It must be in the range (0 to nModules-1), where nModules is returned by moduleCount.
chassisChassis number where the module is located. The chassis number can be found in Keysight SD1 software or can be retrieved with
slotSlot number in the chassis where the module is located. The slot number can be found on the chassis or can be retrieved with
moduleIdModule identifier returned by open function.
Output Parameter nameDescription
productNameProduct name of the specified module. This product name can be used in open.
string SD_Module::getProductName(int chassis, int slot);
string SD_Module::getProductName();
PythonSD_Module.getProductNameByIndex(index)
SD_Module.getProductNameBySlot(chassis, slot)
SD_Module.getProductName()
LabVIEWNot available
HVINot available
92SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 93
Using Keysight SD1 API Command Reference5
NOTE
5.4.5: getSerialNumber
DescriptionReturns the serial number of the specified module.
(Specific to object-oriented programming languages only) getSerialNumber
is a static function. Object-oriented languages also have a non-static
function without arguments.
ParametersTable 54Input parameters for getSerialNumber
Input Parameter nameDescription
indexModule index. It must be in the range (0 to nModules-1), where nModules is returned by moduleCount.
chassisChassis number where the module is located. The chassis number can be found in Keysight SD1 software or can be retrieved with
slotSlot number in the chassis where the module is located. The slot number can be found on the chassis or can be retrieved with
moduleIdModule identifier returned by open function.
Output Parameter nameDescription
serialNumberSerial number of the specified module. This serial number can be used in open.
string SD_Module::getSerialNumber(int chassis, int slot);
string SD_Module::getSerialNumber();
PythonSD_Module.getSerialNumberByIndex(index)
SD_Module.getSerialNumberBySlot(chassis, slot)
SD_Module.getSerialNumber()
LabVIEWNot available
HVINot available
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide93
Page 94
5Using Keysight SD1 API Command Reference
NOTE
5.4.6: getChassis
DescriptionReturns the chassis number of where a module is located.
(Specific to object-oriented programming languages only) getChassis is a
static function. Object-oriented languages also have a non-static function
without arguments.
ParametersTable 57Input parameters for getChassis
Input Parameter nameDescription
moduleIDModule identifier, returned by open.
indexModule index. It must be in the range (0 to nModules-1), where nModules is returned by moduleCount.
Table 58Output parameters for getChassis
Output Parameter nameDescription
chassisChassis number of where a module is located. Negative numbers indicate an error. See Description of SD1 Error IDs.
errorOutSee Description of SD1 Error IDs.
SyntaxTable 59API syntax for getChassis
LanguageSyntax
Cint SD_Module_getChassisByIndex(int index);
int SD_Module_getChassis(int moduleID);
C++int SD_Module::getChassis(int index);
int SD_Module::getChassis();
.NET, MATLABint SD_Module::getChassis(int index);
int SD_Module::getChassis();
PythonSD_Module.getChassis()
SD_Module.getChassisByIndex(index)
LabVIEWNot available
HVINot available
94SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 95
Using Keysight SD1 API Command Reference5
NOTE
5.4.7: getSlot
DescriptionReturns the slot number of where a module is located in the chassis.
(Specific to object-oriented programming languages only) getSlot is a static
function.
ParametersTable 60Input parameters for getSlot
Input Parameter nameDescription
moduleIDModule identifier, returned by open.
indexModule index. It must be in the range (0 to nModules-1), where nModules is returned by moduleCount.
Table 61Output parameters for getSlot
Output Parameter nameDescription
slotSlot number of where the module is located in the chassis. Negative numbers indicate an error. See Description of SD1 Error IDs.
errorOutSee Description of SD1 Error IDs.
SyntaxTable 62API syntax for getSlot
LanguageSyntax
Cint SD_Module_getSlotByIndex(int index);
int SD_Module_getSlot(int moduleID);
C++static int SD_Module::getSlot(int index);
int SD_Module::getSlot();
.NET, MATLABstatic int SD_Module::getSlot(int index);
int SD_Module::getSlot();
PythonSD_Module.getSlot()
SD_Module.getSlotByIndex(index)
LabVIEWNot available
HVINot available
SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide95
Page 96
5Using Keysight SD1 API Command Reference
NOTE
5.4.8: PXItriggerWrite
DescriptionSets the digital value of a PXI trigger in the PXI backplane.
This function is only available in PXI/PXI Express form factors.
ParametersTable 63Input parameters for PXItriggerWrite
Input Parameter nameDescription
moduleID(Non-object-oriented languages only) Module identifier, returned by open.
nPXItrigger
trigger
valueDigital value with negated logic: 0 (ON) or 1 (OFF)
Output Parameter nameDescription
errorOutSee Description of SD1 Error IDs.
PXI trigger line number. Input Values 0 to 7.
Table 64Output parameters for PXItriggerWrite
SyntaxTable 65API syntax for PXItriggerWrite
LanguageSyntax
Cint SD_Module_PXItriggerWrite(int moduleID, int nPXItrigger, int value);
C++int SD_Module::PXItriggerWrite(int nPXItrigger, int value);
.NET, MATLABint SD_Module::PXItriggerWrite(int nPXItrigger, int value);
PythonSD_Module.PXItriggerWrite(trigger, value)
LabVIEWNot available
HVINot available
96SD1 3.x Software for M310xA / M330xA Digitizers User’s Guide
Page 97
5.4.9: PXItriggerRead
NOTE
DescriptionReads the digital value of a PXI trigger in the PXI backplane.
This function is only available in PXI/PXI Express form factors.
ParametersTable 66Input parameters for PXItriggerRead
Input Parameter nameDescription
moduleID(Non-object-oriented languages only) Module identifier, returned by open.
Using Keysight SD1 API Command Reference5
nPXItrigger
trigger
Output Parameter nameDescription
valueDigital value with negated logic: 0 (ON) or 1 (OFF). Negative numbers indicate an error. See Description of SD1 Error IDs.
errorOutSee Description of SD1 Error IDs.
PXI trigger line number. Input Values 0 to 7.
Table 67Output parameters for PXItriggerRead
SyntaxTable 68API syntax for PXItriggerRead
LanguageSyntax
Cint SD_Module_PXItriggerRead(int moduleID, int nPXItrigger);