* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Keysight M9195A/B PXIe Digital Stimulus/Response with PPMU
Survey
Document related concepts
Transcript
User Guide For the User Guide, software and other important documentation, see the M9195A/B Software and Product Information CD. Keysight M9195A/B PXIe Digital Stimulus/Response with PPMU: 250 MHz, 16 channel Notices © Keysight Technologies, Inc. 2016 U.S. Government Rights Warranty 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, Inc. as governed by United States and international copyright laws. 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.keysight.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. 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 MERCHANTABILITY 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 OF 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 SHALL CONTROL. Manual Part Number M9195-90005 Edition Second Edition, March 2016 Published by Keysight Technologies, Inc. 900 S. Taft Ave. Loveland, CO 80537 USA Trademarks PICMG®, Compact PCI® are registered trademarks of the PCI Industrial Computer Manufacturers Group. AdvancedTCA® and ATCA are registered trademarks of the PCI Industrial Computer Manufacturers Group. PCI-SIG®, PCI Express®, and PCIe® are registered trademarks of PCI-SIG. 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://keysight.com/go/conformity. You can then search by product number to find the latest Declaration of Conformity. Keysight Technologies does not warrant third-party system-level (combination of chassis, controllers, modules, etc.) performance, safety, or regulatory compliance unless specifically stated. Safety Information A CAUTION denotes a hazard. It calls attention to an operating procedure or practice 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 denotes a hazard. It calls attention to an operating procedure or practice, 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. Contents 1 Introduction M9195A versus M9195B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Common M9195A/B Functionality. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Functional Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How to Use this Guide. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scope of this Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Document Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Manuals and Help Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M9195A/B Documents and Help Systems . . . . . . . . . . . . . . . . . . . . . . . . Other Keysight PXI and PXIe Modular Systems . . . . . . . . . . . . . . . . . . . . Where to Find the Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 2 3 3 3 4 4 4 5 7 Hardware Upgrade Option Licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Firmware Updates/Downgrades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 M9195A/B Front Panel Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Returning a module for service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 APIs and Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2 Theory of Operation PXIe Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Reference Clock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Stimulus Data Sequencer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Digital IO Channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Driver/Receiver Electronics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 17 18 Response Data Comparator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 High Voltage Channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 High-Speed Data Channel Dependency . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Open Drain Auxiliary Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Per-Pin Parametric Measurement Unit (PPMU) . . . . . . . . . . . . . . . . . . . . . . . . 23 PPMU Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide iii Voltage Clamps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Triggers and Markers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Multi-Module Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Sites and Banks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3 Using the Four DSR Site Types Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Four Site Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Site Configuration Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Signal Direction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Table Summarizing Signal Directions and Signal Operation . . . . . . . . . . . . 33 Active Sites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Common Site Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Transitioning Between Active Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Generation of Results for PatternSites, CaptureSites, and StaticSites . . . . 35 Using PatternSites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Programming Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 PatternSite Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Markers and Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 PatternSite Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 WaveformCharacter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 PatternSite Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 PatternSite Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Using CaptureSites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Programming Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Command Sequencing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 CaptureSite Results. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 CaptureSite Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Using StaticSites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Programming Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Static Site Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 StaticSite Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Using PpmuSites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Programming Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 PPMU Site Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Example PPMU Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Example: Using ForceVoltageMeasureCurrent . . . . . . . . . . . . . . . . . . . . 47 iv Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 4 Using STIL Files Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . STIL Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . General STIL Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . STIL Block Names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . STIL Signal and SignalGroups Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . STIL Signal Blocks not supported in the KtMDsr IVI API . . . . . . . . . . . . Supported STIL Signal Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . STIL Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Signal Reference Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Examples of Signal Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Numeric Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . STIL Site Block. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Site Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using Ordinals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Trigger Specification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Marker Specification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . STIL DCLevels Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . General Syntactic Extensions per IEEE 1450.2. . . . . . . . . . . . . . . . . . . . DCLevels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DCLevels parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DCLevel Limitations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . STIL Timing and Waveform Tables Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . Waveform Character Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Waveforms and WaveformTables . . . . . . . . . . . . . . . . . . . . . . STIL Pattern Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Patterns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Supported Non-Data Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cyclized Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Non-Cyclized data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . STIL Expressions not Supported: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . STIL Macros Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Constant Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scan substitution with # and Shift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scan Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . KtMDSR-Specific STIL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Backus-Naur Form Description for KtMDsr STIL. . . . . . . . . . . . . . . . . . . . . Notes:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Legend: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NameSpace Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Loading STIL files in the IVI API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Load STIL File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Accessing block names from IVI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 49 50 52 52 53 53 54 54 54 55 55 57 57 57 58 58 60 60 60 60 61 62 62 63 66 66 67 68 68 68 69 69 69 69 70 71 71 71 71 76 76 76 77 v Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 STIL Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 5 Using Bulk Data Files Header Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 The Bulk Data file Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Notes and examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Loading a Bulk Data File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 LoadBulkData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 6 Using OpenXML (Spreadsheet) Data Files OpenXML Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 General Syntax Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Sheet Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Signals Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Site Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 WaveformTable Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 DCLevels Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 PatternExec Sheet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Pattern Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 MacroDefs Sheet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Settings Sheet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Using an OpenXML file with the M9195A/B. . . . . . . . . . . . . . . . . . . . . . . . . 98 IVI Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 vi Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide M9195A/B PXIe Digital Stimulus/Response User Guide 1 Introduction The M9195A and M9195B modules are PXIe Digital Stimulus/Response (DSR) modules. Both offer: – 16 bidirectional channels with per-pin programmable logic levels – High speed pattern application and clock rates up to 250 MHz – Flexible, per-bit timing control for fast and accurate waveform development – – – – – – – Per-pin Parametric Measurement Unit (PPMU) for each channel Single site (16 channel) and multi-site (four, 4-channel) configurations Edit patterns on the fly, without recompiling and downloading the test Ability to execute patterns in arbitrary order Flexible allocation of deep pattern memory, per channel or per site 4 high voltage channels for usages such as flash programming or fuse test 4 open drain auxiliary output pins for usages such as fixture relays – Channel delay adjustment to compensate for cable and fixture propagation delays – Comprehensive software tool set for quick test development M9195A M9195B 1 Introduction M9195A versus M9195B The main distinction is that the M9195B with the multi-module option can support up to 12 synchronized modules handling patterns of up to 192 channels. Common M9195A/B Functionality The Keysight M9195A and M9195B are ideal for digital integrated circuit design validation and production test environments. Both modules provide fundamental automated test environment features such as high speed pattern application rates up to 250 MHz, per-pin programming of voltage levels, real time compare, per-pin parametric measurement unit (PPMU), deep vector memory, and flexible pattern sequencing. The 16 channel, single-slot PXIe module introduces a high performance pattern sequencer which enables very powerful pattern creation, two drive edges per period, and supports up to four independent multi-sites to enable quick test development. The M9195A/B drivers provide automatic response delay cable compensation. Functional Overview At its most basic level, the M9195A/B DSR modules deliver test vectors to a DUT at up to 250 MHz and monitor responses. Each of 16 channels can be configured for PPMU operation. Four high voltage, and four open drain channels are also available. 2 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide How to Use this Guide Introduction How to Use this Guide To see if a later version of this document is available, refer to the section “Obtaining the Latest Introduction and KtMDsr Driver” in the Introduction document, or go to the M9195A or M9195B page on the Keysight website and look for a newer release under the Document Library tab. Scope of this Document This guide aims to give an overview of the use of M9195A/B modules as digital test instruments. It also provides details on where to go for specific API information. This guide also includes detailed presentations on: – STIL Programming of the M9195A/B – Using Bulk Data Files – Using OpenXML Spreadsheets Document Conventions Automatic hypertext links in Keysight documents are highlighted in red. This document provides manual links to detailed discussion of software topics and API-level details through key words that can be used in help system search boxes. These key words are in bold italic. For example, in a discussion of reference clock functionality it this guide, you may find: – Programming Guide: “KtMDsr_InstrumentReferenceClockConfigure” The bold italic wording can be copied and paster into the Search function on the KtMDsr Programming Guide .chm file to find the appropriate API detail. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 3 Introduction How to Use this Guide Manuals and Help Systems M9195A/B Documents and Help Systems - Introduction: This document summarizes current information on the M9195A/B modules including: -- current release details -- hardware and software requirements This document is on the Software and Product Information CD that came with your system. To find the most recent Introduction on the website, go to the web page for either the M9195A or B, on Keysight.com, and select Technical Support. Under Technical Support, select the Drivers, Firmware & Software tab and then click on the drivers for download. On the drivers download page, there is a link to the Introduction. To see if a later version of this document is available refer to the section in it entitled: Obtaining the latest Introduction and KtMDsr Driver. - Startup Guide: This document describes installation of the module. - Programming Guide : This help system provides overview material for programmers as well as detailed reference material on APIs for the M9195A/ B. - Soft Front Panel (SFP) Help file: This help system supports the use of the DSR Software Front Panel. It is inter-linked with the Programming Guide. - LabVIEW Driver Help : Supports LabVIEW driver for M9195A/B. - Specification Guide: Contains technical specifications for all manufacturing versions of the M9195A/B PXIe Digital Stimulus/Response module. Specifications published in the data sheet only apply to the current manufacturing version of the module. - Security Guide: This document details the internal memory locations of the M9195A/B PXIe Digital Stimulus/Response module. It describes instrument security features and the steps necessary to declassify the products through memory sanitization or removal. Other Keysight PXI and PXIe Modular Systems www.keysight.com/find/pxi 4 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide How to Use this Guide Introduction Where to Find the Documentation At the Windows Start Button Click through Start>All Programs>Keysight>MDsr. The display will appear: Click on the appropriate icon for: -- Startup Guide -- User Guide -- Software Front Panel (SFP) help system For addition documentation, go further down the Start button listing to Start>All Programs>Keysight Instrument Drivers>KtMDsr Digital Stimulus Response. The display will appear something like: Here click on the icons for: -- KtMDsr Programming Guide -- KtMDSr Introduction Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 5 Introduction How to Use this Guide At the Keysight website Go to the M9195 page on the web: www.keysight.com/find/M9195A (go to Document Library ). www.keysight.com/find/M9195B (go to Document Library ). All released M9195A/B help systems and documents are there, including the Introduction. On the Software and Product Information CD Bring up the CD main menu. All M9195A/B documents and help systems are here, including accessory guides. 6 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide System Requirements Introduction System Requirements For up-to-date details on M9195A/B hardware and software requirements, see the Introduction document section: Hardware and software supported with this driver. For details on finding the Introduction, see “Manuals and Help Systems” on page 4. Hardware Upgrade Option Licenses Hardware upgrade options extend M9195B capabilities. For details, refer to the M9195A/B Startup Guide (see “Manuals and Help Systems” on page 4). In the Startup Guide, Step 7: Check M9195B Licensing (Optional) describes available licensing options. The Startup Guide section, Installing Hardware Upgrade License Options, details the upgrade process. This section shows how to check which M9195B hardware upgrade options are already present. Firmware Updates/Downgrades As new driver releases are installed, M9195A/B users will usually have to upgrade the firmware on the modules. For the procedure, refer to the MDsr Soft Front Panel Help and search for Firmware Update. In general, updating to the latest driver release is the recommended process. At some point, M9195A/B users may find that a new driver is not compatible with their application. Therefore, they may wish to roll back to an earlier driver. This will make downgrading firmware necessary. Another possibility is that a new additional module may be added to an existing test system with an older driver and older firmware. If there is no desire to update the driver, it becomes necessary to roll back the firmware on the new module. For details on this procedure, go to the MDsr Soft Front Panel Help and search for Firmware Downgrade. Automatic Corrections must be performed after both Firmware Updates and Downgrades. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 7 Introduction M9195A/B Front Panel Features M9195A/B Front Panel Features M9195A Digital I/O (DIO) Connector Pinout Signal Sync GPIO 1 Clk In* GPIO 2 DIO Status LED DIO Pin 1 Channel 03 GND Channel 01 GND Channel 07 GND Channel 05 GND HV22 GND HV21 GND Channel 11 GND Channel 09 GND Channel 13 GND Channel 15 GND_SENSE Ppmu_Sense12 Ppmu_Sense13 Ppmu_Sense11 Ppmu_Sense09 Open Drain 2 Open Drain 3 Ppmu_Sense06 Ppmu_Sense07 Ppmu_Sense01 Ppmu_Sense00 Pin # 60 58 56 54 52 50 48 46 44 42 40 38 36 34 32 30 28 26 24 22 20 18 16 14 12 10 8 6 4 2 Pin # DIO Pin 1 Latch/GND 59 57 55 53 51 49 47 45 43 41 39 37 35 33 31 29 27 25 23 21 19 17 15 13 11 9 7 5 3 1 M9195B Signal GND Channel 00 GND Channel 02 GND Channel 06 GND Channel 04 GND HV23 GND HV20 GND Channel 10 GND Channel 08 GND Channel 12 GND Channel 14 Ppmu_Sense14 Ppmu_Sense15 Ppmu_Sense10 Ppmu_Sense08 Open Drain 0 Open Drain 1 Ppmu_Sense05 Ppmu_Sense04 Ppmu_Sense02 Ppmu_Sense03 Sync* GPIO 1 Clk In* GPIO 2 DIO Status LED DIO Pin 1 MultiModule Sync Conn. Latch/GND M9195A/B Front Panel and Connector Pin-out * The CLK In SMB connector allows you to input a 10 MHz or 100 MHz reference clock Returning a module for service Refer to the M9195A/B Startup Guide for details. 8 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide APIs and Programming Introduction APIs and Programming The M9195A/B is supported by multiple APIs and programming approaches. The following references present overview material on these: IVI-COM – Programming Guide: “Using Visual C++” IVI-C – Programming Guide: “Using Visual C#” LabVIEW – LabVIEW Driver help: “VI Tree” VEE – Programming Guide: “Using Keysight VEE Pro” MatLAB – Programming Guide “MATLAB” STIL See chapter in this section on “Using STIL Files” on page 49. Bulk Data In this document see section on “Using Bulk Data Files” on page 79. OpenXML Spread Sheets Files In this document, section on “Using OpenXML (Spreadsheet) Data Files” on page 83. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 9 Introduction 10 APIs and Programming Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide M9195A/B PXIe Digital Stimulus/Response User Guide 2 Theory of Operation The following block diagram presents a conceptual overview of the M9195A/B. The flow of information in the system is mainly from the upper left to the lower right. Click within the dash-lined boxes for details on specific material. To get a quick overview of system operations, click through these topics: – “PXIe Interface” on page 12 – “Reference Clock” on page 13 – “Memory” on page 14 – “Stimulus Data Sequencer” on page 16 – “Digital IO Channels” on page 17 – “Response Data Comparator” on page 19 – “High Voltage Channels” on page 20 – “Open Drain Auxiliary Outputs” on page 22 – “Per-Pin Parametric Measurement Unit (PPMU)” on page 23 – “Triggers and Markers” on page 25 – “Multi-Module Operations” on page 26 – “Sites and Banks” on page 27 11 GPIO2 (External2) GPIO1 (External1) The Sync connector is used to implement MatchLoops across multiple M9195B modules. In order to do this, the Sync signals are daisy-chained together between modules. PXI_TRIG[0:7] Triggers and Markers PXI_STAR PXIe_DSTARC (marker only) PXIe chassis backplane PXIe_CLK100 PXIe_DSTARA (10 MHz or 100 MHz) (connectors XP3 and XP4) The four stimulus sequencers (one for each bank) can operate independently and in parallel, each producing their own 4-bit output pattern at independent clock rates. See the mapping between banks and channels below. If an output pattern is specified that spans more than a single bank, the four sequencers will be slaved together, and will no longer operate independently. In this case, only one pattern (which can be 16 bits wide) can be output at a time. Bank 3 sequencer Pattern Cache VIT Min Clamp Voltage 24 . . . Receiver . . . Channel 1 Channel 0 Response Comparator 2 GB memory Internal Loopback – This feature allows each channel’s Receiver to monitor its associated Driver. This permits the Response Data Comparator to receive and process data generated by the Stimulus Data sequencer. This capability enables trial programs to be developed and executed without connection of the M9195A/B to any cable or device. Master module The Sync connectors are daisy-chained together for multi-module MatchLoop operation. High speed channel number Channel 1 . . . Channel 1 PPMU 57 High voltage channel 23 (associated with high speed channel 14) 41 High High voltage channel 22 (associated with high speed channel 10) Voltage High voltage channel 21 (associated with high speed channel 6) Channels 44 High voltage channel 20 (associated with high speed channel 2) 40 37 Channel numbers and banks 10 23/14 13 12 11 22/10 9 8 7 21/6 5 4 3 20/2 1 0 12 Bank 3 Y1250A Four module sync cable This cable connects from the master module to the 3 slave modules. Bank 2 Bank 1 For the 16 high speed channels, “output” refers to DUT outputs while “input” refers to DUT inputs. 56 Channel 0 DUT HV23 HV22 HV21 HV20 High voltage (HV) channel number 15 Voltage Channel 15 16 high speed channels PPMU Channel 0 Slave modules V Measurement selection PPMU Channel 15 Four M9195B modules are configured below in a multi-module system. Up to 12 total M9195B modules can be configured in a multi-module system. I Current Receiver Driver Data for compares Results Memory PPMU VOL Bank 2 sequencer Bank 1 sequencer Active load Force selection Force current 50 VOH Channel 15 Bank 0 sequencer Module interface Max Clamp Voltage V Force nothing Driver/Receiver Driver VIL Stimulus Sequencer System clock x8, Gen 2 VIH Multi-module Sync Connector: This connector is only present on the M9195B, and is used to synchronize software and hardware triggers across multiple modules. Clock Selector/ Generator Force voltage Digital I/O and PPMU Front panel Clk In (10 MHz or 100 MHz) PXIe_DSTARB (trigger only) M9195A/B PXIe Digital Stimulus/Response These two signals can each be a trigger input or a marker output. Bank 0 In single module operation, I/O operations can be performed with each bank independently of the other banks, allowing four different DUTs to be tested simultaneously. Alternatively, all four banks can be combined to provide 16 channels of synchronized I/O to the DUT. See the User Guide for other supported configurations. 9 11 Open Drain Auxiliary Outputs Open Drain 3 Open Drain 2 Open Drain 1 Open Drain 0 (device under test) Theory of Operation PXIe Interface PXIe Interface With an aggregate throughput maximum of 4 GB/s, the PXIe backplane provides sufficient bandwidth for multiple DSR modules. The DSR connects with the host controller over a PXIe interface supporting transfer rates of up 5 Gb/s per lane with up to 8 lanes available. The DSR interface fully conforms with PXI Systems Alliance PXI Express hardware and software specifications. For more information on PXIe standards, see the PXI Systems Alliance website. The interface supports the legacy PXI single-ended trigger bus as well as PXI_STAR to support multiple triggering and synchronization options. The module can be driven by an embedded controller such as an M9037A or by a PC, external to the PXIe chassis. For the best performance in a Keysight M9018A PXIe chassis, position DSR modules in slots 2, 6, 11 and 15. 12 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Reference Clock Theory of Operation Reference Clock M9195A/B clocking options allow the use of either external or PXIe bus sources for a reference clock. Typically, the underlying system clock for DSR modules is derived from the differential reference clock signal on the PXIe bus, PXIe_CLK100. This clock is sourced by the PXIe chassis itself and delivered independently to each module. As a differential signal, PXIe_CLK100 delivers great noise immunity and device-to-device skew of less than 250 picoseconds. The external clock option consists of a 10 or 100 MHz signal through the front panel SMB Clk In connector. The modules can also use a PXIe_DSTARA clock input, thus allowing a system timing module to replace the backplane clock with a higher precision timebase. Specific API allow the clock to configured: – Programming Guide IVI-COM: “IKtMDsrInstrumentReferenceClock.Configure” For IVI-C: “KtMDsr_InstrumentReferenceClockConfigure” – LabVIEW Driver help: “Instrument Reference Clock Configure” Whatever the source, the module derives is a 100 MHz clock to provide a reference timebase with accuracy of +25ppm and period jitter of less than 2 picoseconds RMS. This reference can support IO channels in up to four different time domains (one per bank, see “Sites and Banks” on page 27) with channel-to-channel jitter within those time domains of less than 25 picoseconds RMS. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 13 Theory of Operation Memory Memory The DSR includes 2 GB of SDRAM to hold test patterns on the way to the DUT, and response data returned from the DUT. By default, about 1.9 GB is allocated to Pattern Cache, and 100 MB to Results Memory. This 95% allocation to Pattern Cache reflects a typical test scenario where data is stored to the Results Memory only when the Response Data Comparator is set to store "Cycles with Failing Compare." Specific API calls re-configure memory allocation as needed.: – Programming Guide: IVI-COM: “IKtMDsrInstrument.ConfigureMemory” IVI-C: “KtMDsr_InstrumentConfigureMemory” – LabVIEW Driver help: “Reference Clock Configure” APIs support reporting of the amount of cache remaining after patterns have been compiled to it: – Programming Guide: IVI-COM: “IKtMDsrInstrument.RemainingCache” IVI-C: “KtMDsr_GetRemainingCache” – LabVIEW Driver help: “Instrument Get Remaining Cache” APIs can also report the amount of memory used by test vectors: – Programming Guide: IVI-COM: “IKtMDsrInstrument.PatternCacheSize” IVI-C: “KtMDsr_GetRemainingCache” 14 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Memory Theory of Operation – LabVIEW Driver help: “Instrument Get Pattern Cache Size” The APIs support clearing the cache: – Programming Guide: IVI-COM: “IKtMDsrInstrument.ClearCache” IVI-C: “KtMDsr_InstumentClearCache” – LabVIEW Driver help: “Instrument Clear Cache” On the results side, the APIs can reserve specific amounts of memory for results through the configure memory and query for this amount: – Programming Guide: IVI-COM: “IKtMDsrInstrument.ResultSize” IVI-C: “KtMDsr_InstumentGetResultSize” – LabVIEW Driver help: “Instrument Get Result Size” Results Memory is typically much smaller than Pattern Cache because the Response Data Comparator only creates a record when a compare operation is present in a vector and then, depending on test configuration, the Comparator may only store the record to Results Memory when a compare failure is detected. The Response Data Comparator will simply stop writing result records to memory when the space allocated for the pattern has been filled. The APIs provide a number of fetch operations with which the contents of results memory for specific patterns are retrieved from the Results Memory and assemble in to comprehensible data: – Programming Guide: IVI-COM; IVI-C: “Acquiring Results and Data Collection” – LabVIEW Driver help: “Acquiring Results and Data Collection” Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 15 Theory of Operation Stimulus Data Sequencer Stimulus Data Sequencer The Stimulus Data Sequencer fetches pattern data from the Pattern Cache and outputs it to the DUT. In addition to containing pattern data, the Pattern Cache also contains data indicating the DUT’s expected response to the pattern data. This is the expected response data which, again, is stored with the pattern data. See ““Response Data Comparator” on page 19” for information on how the expected response data is used. The Stimulus Data Sequencer can operate as one site of up to 16 channels, or it can operate as four individual, 4-channel sites. For more information, see ““Sites and Banks” on page 27. 16 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Digital IO Channels Theory of Operation Digital IO Channels Introduction Each module provides 16 bi-directional digital IO channels. In multi-module configurations, up to 12 modules can be configured to support 192 modules. On each module, the 16 bi-directional digital IO channels are numbered channel 0 through channel 15. In a multi-module configuration, up to 12 M9195B modules can be configured in a multi-module instrument, which will support 192 channels (12 modules x 16 channels/module). In a multi-module instrument, the channel numbers have this format: <mm><cc> Where <mm> is the module number (0-11) while <cc> is the channel number (0-15) on the specified module. For example channel 603 represents module 6 and channel 3 on that module, while channel 1114 represents module 11 and channel 14 on that module. “Multi-Module Operations” on page 26 for more details. Programming See the KtMDsr Programming Guide and LabVIEW Driver help files for overviews on IO Channel programming: – Programming Guide: IVI-COM and IVI-C: “Channels Overview”, “Channels”, “Multi-Module Operation” – LabVIEW Driver help: “Channels Overview” Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 17 Theory of Operation Driver/Receiver Electronics Driver/Receiver Electronics The following diagram summarizes Driver/Receiver channel electronics. When the DSR is sending a signal to the DUT, the output Driver is connected. The high and low Driver voltages are controlled by VIH and VIL, respectively. When the DSR is receiving a DUT output signal, the Receiver data comparators compare the DUT signal to the high and low threshold voltages, VOH and VOL, respectively. The default Receiver configuration is high input impedance. Alternatively, the user can specify 50 ohm input impedance or can specify an active load. 18 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Response Data Comparator Theory of Operation Response Data Comparator The Response Data Comparator receives the response from the DUT and determines if the response is correct. As shown in “Driver/Receiver Electronics”, the user can specify the high and low threshold voltages for signals from the DUT. In determining whether the DUT response is correct, the Response Data Comparator uses the expected response data that is stored with the pattern data. The data path for the expected response data is shown as the arrow labeled “Data for Compares” between the Stimulus Data Sequencer and the Response Data Comparator. The Response Data Comparator can be set to store all results, or only clock cycles in which failures are indicated. The Response Data Comparator can be set to incorporate compensation for delays resulting from cabling and connectors between the DUT and the module. For more on this, refer to the channel overview topics: – Programming Guide: IVI-COM and IVI-C: “Channels Overview”, “Channels” and “ResponseDelay Compensation” – LabVIEW Driver help: “Channels Overview” and “Channel Response Delay Compensation” Once results move from the Response Data Comparator to memory, a number of API functions support further movement. For an overview: – Programming Guide and LabVIEW Driver help: “Fetch” or “Results” Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 19 Theory of Operation High Voltage Channels High Voltage Channels As shown in the diagram below, each of the banks supports one high voltage channel associated with an IO channel line. The M9195A/B provides four high voltage channels (HV20 - HV23, 0V to +13.5V). These channels are slower-speed I/O channels that can be used for flash programming memory devices such as EEPROMS. The HV20-HV23 channels are typically used as a programming enable voltage (sometimes called VPP) and should be maintained as long as the program/verify mode is operating when programming your EEPROM. These four HV channels may not be used simultaneously with their corresponding high speed channel. See the data channel dependency table below. High-Speed Data Channel Dependency Each high voltage channel is associated with a high-speed channel on its respective IO bank. It is important to note that a high-speed channel may not be used at the same time as its corresponding high voltage channel (for example, channels 2 and 20 may not be used at the same time). These dependencies are outlined in the table below. IO Bank / HV channel 20 Tied to Channel IO Bank 0, HV20 CH02 IO Bank 1, HV21 CH06 IO Bank 2, HV22 CH10 IO Bank 3, HV23 CH14 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide High Voltage Channels Theory of Operation When a high voltage channel is enabled, the associated high-speed channel will be disabled and set to high impedance. When a high-speed channel is enabled, the associated high voltage channel will be disabled. A disabled high voltage channel will appear as 50 ohms to ground. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 21 Theory of Operation Open Drain Auxiliary Outputs Open Drain Auxiliary Outputs Each M9195A/B provides four general-purpose open-drain auxiliary outputs that can be used for driving relays on your Device Under Test (DUT) interface board. These lines are designed for low voltage application (up to 16 VDC) and are independent of any other data or HV lines on the module. Each line offers built-in inductive feedback protection, drive for latching or non-latching relays, and open load and short circuit protection. Each open-drain line features a 10 k pull-up resistor to +5 volts, 0.3 (typical) on-resistance, and can sink up to 1 A (maximum) of load current. For more information, see: – Programming Guide: “SetAuxilaryOutputControl “QueryAuxiliaryOutputControl” – LabVIEW Driver help: Auxiliary 22 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Per-Pin Parametric Measurement Unit (PPMU) Theory of Operation Per-Pin Parametric Measurement Unit (PPMU) Each of the 16 IO Channels on a M9195A/B can be configured as a PPMU line. PPMU operations involve five measurement modes: – Force Nothing, Measure Voltage (FNMV) – Force Voltage, Measure Current (FVMI) – Force Voltage, Measure Voltage (FVMV) – Force Current, Measure Voltage (FIMV) – Force Current, Measure Current (FIMI) PPMU Applications PPMU applications include open and shorts testing as well as precise measurement of leakage currents. During PPMU testing, voltage clamps may be set to prevent damage to the M9195A/B. See the following section for details on Voltage Clamps. Voltage Clamps The on-board clamps prevent large voltage transient spikes when changing operating mode or current range. The specified clamp voltages are active in two situations: – When the DSR is sourcing a digital signal via the PatternSite or the StaticSite – When the DSR is in Ppmu mode, and the Ppmu is forcing a current, the clamps are enabled or disabled using the ClampVoltagePpmuEnable function Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 23 Theory of Operation Per-Pin Parametric Measurement Unit (PPMU) At other times, the clamps are inactive. This includes: – When the pattern, capture, or static sites are sensing an input – When the Ppmu is forcing a voltage – When the channels are disabled – When the DSR is forcing a voltage from an active pattern site or static site Setting the clamp voltages does not change the setting of ClampVoltagePpmuEnable. This setting determines if the DSR should enable the clamps when the PPMU is forcing a current. The clamps are never active when the PPMU is forcing a voltage. Setting and clearing the ClampVoltagePpmuEnable has no effect on the settings of the clamp voltages For more detail see: – Programming Guide: IVI-COM: “IKtMDsrChannels.ClampVoltagePpmuEnable” IVI-C: “KtMDsr_ChannelClampVoltagePpmuEnable” – LabVIEW driver help: “Channel Clamp Voltage Ppmu Enable” 24 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Triggers and Markers Theory of Operation Triggers and Markers The M9195A/B supports both Triggers and Markers to synchronize testing. Triggers are inputs to the DSR, and can be used to initiate the generation of a pattern or the continuation of a pattern that has already been started. Markers are outputs from the DSR, and can be used to trigger other devices, either other modules in the same chassis or external devices. Most of the DSR signals associated with triggers and markers are bi-directional, that is, they can be programmed to be either a trigger input or a marker output. Because of this, care must be taken to avoid contention between signals. This can occur if two marker outputs are programmed on the same signal line, such as between the DSR and another module in the chassis. – Programming Guide: IVI-C, IVI-COM: “Triggers and Markers” – LabVIEW Driver help: “Triggers and Markers” Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 25 Theory of Operation Multi-Module Operations Multi-Module Operations When two or more M9195B modules are licensed for multi-module operation, they can be connected via the Y1250A or Y1251A multi-module sync cables. The major advantage from this configuration is that sites of more than 16 channels can be created. The driver detects the presence of the sync cable at Initialize. If the sync cable is not detected, an error is thrown the first time a PatternSite is activated. As with other warnings, the error is only thrown the first time a PatternSite is activated. A PattenSite in a multi-module configuration can extend across two or more modules. However, there can be only one PatternSite when more than one module is involved. In a multi-module configuration, the Master Module is defined by the first module in the driver initialize string: Module0(Master) Module1(slave) Module2(slave) Driver Initialize (“PXI2:00...”; “PXI5:00...”; “PXI8:00...”;) Channels are assigned on this order: Master channels: 0 - 15 Module1 channels: 100 - 115 Module2 channels: 200 - 215 26 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Sites and Banks Theory of Operation Sites and Banks On M9195A/B modules, banks are defined as four IO channels with the same Stimulus Sequencer. So, a bank is the smallest collection of IO channels that can share timing parameters. Channel 15 Channel 14 Channel 13 Channel 12 Channel 11 Channel 10 Channel 9 Channel 8 Channel 7 Channel 6 Channel 5 Channel 4 Channel 3 Channel 2 Channel 1 Channel 0 One M9195A/B module can support up to four sites as long as each site is confined to a bank. A site can extend to include IO channels from more than one bank, but then it can be the only “active” site on the module. An “active” site is one that is moving test vectors to and from a DUT, such as a Pattern Site or Capture Site. Importantly, a site is not a DUT. Multiple sites can test the same DUT, or one site can test multiple DUTs. The are four site types supported by the M9195A/B DSR: – Pattern — The DSR sends pattern vectors of multiple signals to the DUT and montiors responses. See “Using PatternSites” on page 36. – Capture — A subset of Pattern Sites in which the DSR sends only one signal, typically a clock, to the DUT and captures the response pattern from the DUT. See “Using CaptureSites” on page 40. – Static — The DSR delivers DC voltage levels over specific IO channels and monitors DC voltage levels over others. See “Using StaticSites” on page 42. – PPMU — See “Per-Pin Parametric Measurement Unit (PPMU)” on page 23. See also “Using PpmuSites” on page 44. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 27 M9195A/B PXIe Digital Stimulus/Response User Guide 3 Using the Four DSR Site Types A site specifies a mapping to physical channels and triggers, and is used to bind Patterns, PPMU, and Static operations to physical channels. This chapter looks at operation and configuration of DSR sites and steps necessary to run tests on different site types: – Sites, see below. – “Using PatternSites” on page 36 – “Using CaptureSites” on page 40 – “Using StaticSites” on page 42 – “Using PpmuSites” on page 44 For site examples, complete programming examples showing site setup (C++ using IVI-C and IVI-Com, C#, VisualBasic, etc.) are located in the following folders: C:\Program Files\IVI Foundation\IVI/Drivers\KtMDsr\Examples C:\Program Files (x86)\IVI Foundation\IVI\Drivers\KtMDsr\Examples Sites A site is a group of channels that are organized around a common purpose. For example, four DSR channels can be grouped into a PatternSite, and then two channels can be used to send pattern data to the DUT while the remaining two channels can be used to receive data from the DUT. Four Site Types The following table summarizes the four DSR site types. Active Site Usage PpmuSite A site is activated for PPMU measurements in order to perform various analog measurement and analog stimulus operations. This includes selecting a forcing function such as voltage, current, or none, and selecting a simultaneous measurement function which is voltage, current, or none. PatternSite A PatternSite has the functions and attributes necessary to control the execution of a test pattern. This includes operations that are used to run the pattern, monitor its execution, and modify the pattern in cache memory so it can be modified between runs. To activate a pattern, both a site and a PatternExec (PatternBurst and DCLevels) are provided. The driver implementation must compile a pattern, for a specific site, then download it to the module. To reduce download and compile times for large patterns, functions are provided in the pattern site for loading a pre-compiled pattern site, and for activating a pattern site that has been stored in cache memory on the module. 29 Using the Four DSR Site Types Sites Active Site Usage StaticSite A StaticSite provides a way to programmatically set the logical values of the signals in a site. This gives the opportunity to programmatically write the values to each channel. There are two primary uses of StaticSite: • Verifying the physical connections and software configuration of a pattern site. By using the static site methods to read and write the signals, it is possible to verify the connectivity without the overhead of creating a pattern. This permits verifying the mapping of signals to the module outputs and inputs, including the software layers and the physical wiring. • Utilizing extra bits on the module for programmed IO when there are leftover bits not being used for pattern IO or PPMU. CaptureSite CaptureSites provide a straightforward mechanism to capture data in the DSR. They are similar to a PatternSite except that no pattern definition is required. A capture site requires only the timing information for the site (in terms of a WaveformTable block), the DCLevels for the site (in terms of a DCLevels block), and instead of pattern definition, the amount of time to operate the capture. Note: CaptureSites are only supported on a single module. For further overview on sites, see: – Programming Guide: IVI-C and IVI-COM: “Active Sites” – LabVIEW Driver help: “Active Sites” Depending on your configuration and your options, multiple sites can co-exist and run simultaneously on the DSR. For example, you can have a 4-channel PatternSite and a 4-channel CaptureSite running simultaneously, as long as certain channel assignment requirements are met. The diagram on the next page shows several example single-site and multiple-site configurations. Keysight recommends that you review this diagram in detail. 30 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Configuration 2: If a PatternSite expands beyond a single bank, then only one PatternSite can be executed at a time. In this example, the PatternSite includes all channels of Bank 0 and two channels of Bank 1. Another PatternSite cannot be executed because the existing PatternSite is not constrained to a single bank. Example single-site and multi-site configurations for a single-module M9195A and M9195B In this configuration, the S04 Multi-site Enabled option is unnecessary because only one PatternSite is possible. PatternSite or CaptureSite (shades of blue) -References to PatternSites implicitly include CaptureSites. PpmuSite When a PatternSite crosses bank boundaries, the PatternSite channels should always be contiguous. The channels not used in the PatternSite can be used for PpmuSites or for StaticSites. PpmuSites and StaticSites are not affected by bank boundaries and can contain 1-16 channels, depending on what channels are available. In this configuration, the PpmuSite contains 4 channels while the StaticSite contains 3 channels. Multiple StaticSites and multiple PpmuSites can be executing simultaneously, i.e. operation is not constrained to just one PpmuSite and one StaticSite. StaticSite Configuration 3: In this example, all 16 channels are dedicated to a single PatternSite. Configuration 1 Configuration 2 Configuration 3 Configuration 4 15 14 13 12 StaticSite A PatternSite D PatternSite D PatternSite D StaticSite A StaticSite A StaticSite A PatternSite A PatternSite A PatternSite A PatternSite A StaticSite A 11 10 9 8 PatternSite C PatternSite C PatternSite C PatternSite C 7 6 5 4 PpmuSite A PatternSite B PatternSite B PatternSite B Bank # Channel # Bank 3 Bank 2 Bank 1 Bank 0 3 2 1 0 PatternSite A PatternSite A PatternSite A PatternSite A PpmuSite A PpmuSite A PpmuSite A PpmuSite A PatternSite A PatternSite A PatternSite A PatternSite A PatternSite A PatternSite A PatternSite A PatternSite A PatternSite A PatternSite A PatternSite A PatternSite A PatternSite A PatternSite A PatternSite A PatternSite A PatternSite A PatternSite A StaticSite A Configuration 4: In this configuation, Bank 0 is used as a PatternSite while high-voltage channel 21 is also used. Because high-voltage channel 21 is being used, high-speed channel 6 will not be available (high voltage channels 20-23 map into high-speed channels 2, 6, 10, 14, respectively). There are two ways that channel 21 can be used: 1. Channel 21 could be included as part of the Site definition of the PatternSite. For example, the high voltage signal could be switched synchronously with channels 0-3 of the PatternSite (although not at the same speed as channels 0-3). If channel 21 is included in the PatternSite, then the PatternSite has crossed bank boundaries and no other PatternSites can be created. 2. Channel 21 could be contained within its own StaticSite as a means to programmatically control the high voltage signals. In this case, the PatternSite is constrained to one bank (channels 0-3) and it would be possible to implement other PatternSites in this configuration. HV channel 21 Configuration 1: Up to four independent PatternSites can be executed as long as the following requirements are met: PatternSite A PatternSite A PatternSite A PatternSite A 1. Each PatternSite is constrained to a single bank. In this example, four PatternSites are created, PatternSites A, B, C, and D. Each PatternSite resides in a single bank (but doesn't necessarly need to consume all of its channels). 2. For the M9195B, the S04 Multi-Site option must be purchased. This option is not required on the M9195A, the M9195A is always multi-site enabled. If the S04 Multi-site Enable option is not purchased on the M9195B, only one PatternSite is allowed, which can occupy from 1-16 channels as shown in Configurations 2 and 3. NOTE: The phrase "multi-site" refers to multiple PatternSites and/or CaptureSites running simultaneously. It does not refer to, for example, having a PatternSite running at the same time as a StaticSite. In the four configurations above, only Configuration 1 represents a multi-site configuration since there are 4 PatternSites that could be running simultaneously. Configurations 2, 3, and 4 are all single-site configuration since there is only one PatternSite in each configuration. To enable multi-site operation on the M9195B, the S04 Multi-Site option must be purchased. Channels not used in PatternSites can be used in PpmuSites and StaticSites. Site Configuration Guidelines Using the Four DSR Site Types Site Configuration Guidelines Summarized below are the guidelines that apply to creating single-site and multi-site configurations. Note that “multi-site” refers to multiple PatternSites and/or CaptureSites that are active simultaneously. It does not refer to, for example, having a PatternSite active at the same time as a StaticSite. Because of their similarities, references to PatternSites implicitly include CaptureSites. 1 The M9195A module includes a multi-site license (S04), which allows up to four PatternSites to be active simultaneously. The multi-site license is an option on the M9195B. To enable multi-site operation on the M9195B, the S04 multi-site option must be purchased. 2 The following rules apply to a single module with a multi-site license: a If each of several PatternSites are constrained to occupy their own 4-channel bank, up to four simultaneous PatternSites can be active simultaneously on a single module. b If a PatternSite is spread across more than one bank, only one PatternSite can be active at one time. c If a M9195B module does not have a multi-site license, then only one PatternSite can be active at one time. This PatternSite can occupy from 1 to 16 channels. d Any channels not used in a PatternSite can be used in a StaticSite and/or a PpmuSite. Multiple PatternSites and/or StaticSites can exist simultaneously. 3 The following rules apply to a multi-module instrument, which consists of 2 to 12 M9195B modules (the M9195A module cannot be configured as a multi-module instrument): a Only one PatternSite can be active at one time, regardless of how many modules are in the multi-module instrument. b Because only one PatternSite can be active in a multi-module instrument, the S04 multi-site license is not needed in a multi-module instrument. c At least one channel of a multi-module instrument PatternSite must be in Bank 0 of the master module. d Any channels not used in a PatternSite in a multi-module instrument can be used in a StaticSite and/or a PpmuSite. Multiple PatternSites and/or StaticSites can exist simultaneously. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 31 Using the Four DSR Site Types Signals Signals The first step in creating a site is to define the Signals that will be in the site. Next, the Site name is defined followed by specifying the channels in the site. At the same time the channels are defined, the previously-defined Signal names are assigned to the desired channels. Signal Direction When defining a Signal, the DSR requires that you specify its Direction, that is, that you declare whether the signal is a DUT output, DUT input, or both (InOut). This specification permits the DSR to avoid driving pins that are DUT outputs and attempting to take input from pins that are DUT inputs. When a Signal is declared as InOut, that is, to be used as both an Input to the DUT and an output from the DUT, then the DSR applies either stimulus or measure responses on this channel, depending on the particular I/O operation. “Inputs” and “output” are always with reference to the DUT. So “Inputs” are inputs to the DUT and “Outputs” are outputs from the DUT. The PPMU ignores the Signal Direction setting in order to permit making the full suite of PPMU measurements on both DUT inputs and outputs. Since the CaptureSite does not have a pattern, CaptureSites use the Signal Direction to determine whether a pin should be used to generate a clock or to capture data. The following table lists interaction between Signal Direction and Site operations. 32 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Table Summarizing Signal Directions and Signal Operation Signal Direction* StaticSite Read Operation Pattern Site Write Operation Compare Operation Capture Output Operation Error is generated if: 1 WFC's are defined that In Reads return 0 for any channel that is defined to be a DUT input (DSR output). Performs a write operation to the DUT. perform compares (parse + runtime). 2 Direction is inconsistent with the WFC's at compile time. DSR asserts the signal on those channels specified as DUT inputs or DUT inputs/outputs. DSR output (DUT input) is generated on those channels that have waveform table characters that specify output event(s). See NOTE 2. InOut Out If the DSR is set to DSR out, the DSR will switch to DSR in to perform the read, i.e. it will cease driving its output channel(s). If the DSR is set to DSR in, the DSR will switch to DSR out to perform the write, i.e. it will begin driving its output channel(s). Writes do nothing on channels defined as DUT outputs. No error is generated if this is attempted. Read returns the DUT output value. See NOTE 1. Error is generated if: 1 WFC's are defined that The Fail bit is set based on the compare operation with DUT outputs. perform output (parse + runtime). 2 Direction is inconsistent with the WFC's at compile time. See NOTE 3. Error is generated on activation (see NOTE 4 below). DSR input (DUT output) is captured on those channels that have waveform table characters that specify a compare operation. * Signal Direction is with respect to the DUT. NOTES: 2 Compares are only supported when the DUT is supplying a signal (Direction = Out). Hence, this case generates an error. 3 DSR outputs can only be supplied to DUT inputs (Direction = In). Hence, this case generates an error. 4 Capture site signals must be either DUT inputs or outputs. Hence a Direction of Ipout is not supported for capture sites. 33 Using the Four DSR Site Types 3 1 If a Static Site was performing DSR output (Direction = In), followed by an Inactivate, setting Direction = Out, and then an Activate, the DSR will still be driving its outputs. The DSR will cease driving its output upon the first read operation. Using the Four DSR Site Types Active Sites Active Sites Active Sites are dynamic repeated capabilities (see “Dynamic Repeated Capabilities” in the KtMDsr Programming Guide or the LabVIEW driver help file). An active site is created by calling an Activate function and passing it a site name, which is a STIL component. The site contains a list of hardware channels and optionally other resources such as trigger paths. When a site is activated, a dynamic repeated capability is created that is used to perform operations on that active site. The name for the dynamic repeated capability is the site name. For example, to make PPMU measurements, a site is defined that contains the necessary channels, then that site is activated. Once activated, conventional repeated capabilities functions and attributes can be used to perform PPMU measurements on those sites. Common Site Operations – The Active Site is created with an Activate call (or one of the special activate calls for the pattern sites). The activate site name is then the name of the site itself; a new name is not created. – When the application is done with the Active Site and the channels are to be used for other operations, the site is Inactivated rather than Removed. When a site is Inactivated, the site definition still exists by the same name; however, the Active Site no longer exists. – In addition to Inactivate, active sites have a function called InactivateAndDisable. It performs an inactivate operation and also disables the signals in the site. That is, the drive is turned off and each channel is put into a high-impedance state. If a subsequent site is defined with different signal directions, then InactivateAndDisable should be used. Transitioning Between Active Sites When Ppmu, pattern, capture, or static operations are completed on a site, the channels can be released for use on another site by calling one of two functions. The InactivateAndDisable function releases the channels and places each channel in a disabled state (similar to the IVI Disable functions). That is, the drive on all channels is shut off. If transitioning between sites that change the direction of the signals on the channels, InactivateAndDisable should be used when inactivating the first site. If the signal directions are changed in subsequent sites, InactivateAndDisable should be used in most cases. 34 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Transitioning Between Active Sites Using the Four DSR Site Types The Inactivate function releases the channels, but does not change their state. This is useful if a signal needs to be retained between different operations. For example, an application may execute a digital pattern to configure a DUT, then transition to making Ppmu measurements without causing unwanted signal transitions on the DUT inputs. Once a site has been inactivated, individual channels from the site may be used in other sites. This means it is possible to have shared channels between Sites defined, but you cannot have two Sites active at the same time with shared channels. Signal lines are not driven until the new active site defines a signal level. For PatternSites and CaptureSites, this occurs when Initiate is called. For Static sites, this occurs when one of the write functions is called. For the Ppmu, this occurs when one of the force functions is called. Generation of Results for PatternSites, CaptureSites, and StaticSites The Generations of Results Diagram shows how the DSR module generates results for the four Site types based on the following parameters: – The DUT output voltage relative to VOL and VOH. VOL and VOH are the DUT output low and high voltage thresholds, respectively. – The position of VOL and VOH relative to each other. For normal operation VOH > VOL. – The Pattern Site compare codes provided in WaveformTables. – The types of results: Fail, Trinary, Valid, etc. The comparators shown in the Generation of Results Diagram convey how the Compare Responses are generated based on VOL, VOH and the DUT output voltage. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 35 Generation of Results for PatternSites, CaptureSites, and StaticSites This diagram shows how the DSR generates results for PatternSites, CaptureSites, and StaticSites based on the following parameters: • The DUT output voltage relative to Vol and Voh. Vol and Voh are the DUT output low and output high voltage thresholds, respectively. • The position of Vol and Voh relative to each other. For normal operation, Voh > Vol. • The PatternSite and CaptureSite Compare Codes that are provided in waveform tables. • The type of results: Fail, Trinary, Valid, etc. Comparators are shown below to convey how the Compare Responses are generated based on Vol, Voh, and the DUT output voltage. These are the characters that appear in the pattern vectors, and can be any desired characters. These characters are not defined by STIL. STIL-defined characters “D” also used 0 = ForceDown at 0 ns and a CompareLow at 16ns 1 = ForceUp at 0 ns and a CompareHigh at 16 ns Normal operation: Vol < Voh Compare Responses The comparators produce a 1 when the “+” input voltage is greater than the “-” input voltage. Voh + - Vol C DUT output (DSR input) HC = high comparator output LC = low comparator output HC 1 LC 1 0 1 Voh Vol 0 0 0 VDC DUT output voltage (DSR input) These are the 3 normal Compare Responses that will be generated. Compare Codes + C - HC 1 LC 1 Vol 1 0 0 0 Voh 0 VDC DUT output voltage (DSR input) Unexpected operation: Vol > Voh It is possible to set Vol above Voh, which produces what’s called the “unexpected state” (yellow region) with compare codes of HC = 1 and LC = 0 (indicating that the voltage is above the high threshold and below the low threshold). This is not a useful state, so setting Vol and Voh in this manner should be avoided. NOTE: The WhatToLog parameter applies only to pattern sites, not capture sites. Using the Four DSR Site Types Using PatternSites Using PatternSites PatternSites involve multiple DSR channels simultaneously sending and receiving signals to the DUT as directed by the test program. For an overview of possible PatternSite configurations see the diagram: Common Scenarios for Creating PatternSites. Programming Details For specific details in programming PatternSites, refer the Programming Guide, the LabVIEW driver help system, and the Example folder: – Programming Guide IVI-COM, IVI-C, or LabVIEW: “PatternSites Overview” For a graphical summary of the programming steps, see PatternSite Sequence. PatternSite Options – – – – – – – ConditionalLoopFailureMode ConditionalLoopSuccessMode EndBehavior ForceValidateEnable TriggerMode TriggerSource WhatToLog Once a PatternSite is activated, changes to PatternSite do not affect the site. For example, if you change the trigger source, if won’t affect sites that have already been activated. For details for the sequence to program and execute a PatternSite, see: – Programming Guide IVI-COM, IVI-C: “PatternSite Sequence” – LabVIEW Driver Help IVI-COM, IVI-C: “PatternSite Sequence” The End Behavior for pattern sites is respected after the pattern completes. Thus, clocks can be continuously generated while other channels are used for PPMU measurements or pattern or static operations. When a channel transitions from being driven from a previous setting (because it was Inactivated and not disabled) to a new setting, the transition may pass through some intermediate values. The transition behaves as follows: 36 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Using PatternSites Using the Four DSR Site Types – If the level being driven from the previous operation is the same as the target level, the transition does not disturb the signal. Therefore if transitioning between sites that use DCLevels to define the signal levels, and if using the same DCLevels block, the transitions do not disturb the signals. – If different DCLevels are specified between the sites, the new DCLevels settings are applied before new digital data is applied. If the old digital level is different from the new digital level, this can result in an intermediate level appearing. – If the transition is from the PPMU to a site controlled with DCLevels, the DCLevels settings are applied before new digital data is applied—but before the PPMU is disabled. This momentarily activates both drive signals, resulting in a step occurring during the transition from one level to the next. – If the transition is from a site controlled with DCLevels to the PPMU, the PPMU is turned on before the DCLevels are withdrawn. This can result in a step occurring during the transition from one level to the next. Markers and Triggers For PatternSites Markers and Triggers can also be added. Within a Site Markers0-2 and Triggers0-5 can be mapped to physical or software triggers. (“Loading STIL files in the IVI API” on page 76) Along with this mapping, Triggers and Markers can be configured for Direction (Marker or Trigger), PulseWidth, Polarity, Termination, and ThresholdLevel. Hardware Trigger properties such as direction are also configurable. – Programming Guide: “Triggers and Markers” Most hardware Triggers are bidirectional (other than PXIe_DSTARB and PXIe_DSTARC), but can only be used in one direction at a time. Either as a Trigger (IN to the DSR) or a Marker (OUT of the DSR). The examples folder, see CS_UsingMarkers. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 37 Using the Four DSR Site Types Using PatternSites PatternSite Sequence Signals.AddSignalList DcLevels.Add DcLevels.get_Item().SetDcLevels Sites2.Add Sites2.get_Item().AssignSignalList SpecifythePatternSitesignalnamesandtheirdirection.Notethatthe module’sinternalloopbackfeature(asshownontheM9195A/Bblock diagramintheUserGuide)canbeusedtodevelopabasicinstructional PatternSiteprogram.Bysettingeachchannel’sDirectionpropertytoInOut, theoutputfromthemodulecanbecapturedasinputtothemodule– noDUT norcableconnectionsarerequired. 1. AddaDcLevelblock. 2. FortheDcLevelblock,definetheDCvoltagelevels fortheDUTinputandoutputsignalsspecified above. 1. AddaSiteblock. 2. FortheSiteblock,listthesignalsinthesite,theirchannels, andtheirordinals(positioningofresponses). WaveformTables.Add WaveformTables.get_Item().DefineWaveformCharacter WaveformTables.get_Item().Period Patterns.Add PatternFille.LoadBulkData Seethenextpagefora descriptionoftheevents thatcanbespecifiedina WaveformCharacter. AddaPatternblock. Patterns.get_Item().Vector PatternBursts.Add PatternBursts.get_Item().Patterns PatternExecs.Add PatternExecs.get_Item().DcLevels PatternExecs.get_Item().PatternBurst PatternSites2.Activate 1. AddaWaveformTableblock. 2. FortheWaveformTableblock, definetheWaveformCharacters,the signalstheyapplyto,theevent times,andtheeventactions. 3. DefinetheWaveformTablePeriod. Thisshowstwooptionsforcreatingpatterndata.Ontheleft, patterndataisloadedfromabulkdatafile.Ontheright,pattern dataiscreatedprogrammatically.Whileloadingpatterndatafroma fileismorecommon,creatingpatterndataprogrammaticallycanbe ausefulwaytolearnabouttheDSRmodule,especiallyinconcert withtheinternalloopbackfeaturementionedabove. 1. AddaPatternBurstblock,whichallowsmultiplepatternstobe collectedtogether. 2. ForthePatternBurstblock,definethepattern(s)thatareintheblock. 1. AddaPatternExecblock. 2. ForthePatternExecblock,definewhichDcLevelblockshouldbeused. 3. ForthePatternExecblock,definewithPatternBurstblockshouldbeused. ActivatethePatternSitebyspecifyingtheSite,thePatternExec,andother parameters.ThisActivateassumesthattheTriggerModeisimmediate. PatternSites2.get_Item().Initiate Initiate(startexecutionof)thePatternSitebyspecifyingtheSite. PatternSites2.get_Item().WaitforAcquisitionComplete PatternSites2.get_Item().FetchResultByte 38 WaitforthePatternSiteexecutiontobecomplete. Fetchtheresults(inthiscase,asanarrayofbytes). Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Using PatternSites Using the Four DSR Site Types WaveformCharacter Guidelines for creating WaveformTable characters, known as WaveformCharacters, are listed below: 1 A WaveformCharacter can specify a maximum of two Force Events and a maximum of one Compare Event. This allows 0, 1, or 2 Force Events, and 0 or 1 Compare Events during the WaveformTable Period. 2 For the maximum data rate of 250 MHz (corresponding to a WaveformTable Period of 4 ns), Force Events and Compare Events can be specified at 0 ns, 1 ns, 2 ns, or 3 ns. A time of 4 ns cannot be specified since it corresponds to 0 ns of the next period. 3 For the maximum data rate of 250 MHz (again, corresponding to a WaveformTable Period of 4 ns), the time between two consecutive Force Events must be 2 ns or greater. This requirement includes consecutive periods. For example, if a Force Even occurs at 3 ns in one period, a Force Event cannot occur at 0 ns in the next period. The diagram below shows an example WaveformCharacter that is defined to have two Force Events and one Compare Event: PatternSite Results See the Generation of Results Diagram. PatternSite Scenarios PatternSite scenarios. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 39 Common scenarios for creating PatternSites This diagram shows several common scenarios for creating PatternSites. PatternSites can be created from pattern files or they can be created programmatically. Options 1 and 2 show two different ways of creating PatternSites from pattern files. In both cases, the DSR SFP can be used to perform the same operations. In Option 3, the non-pattern STIL components are created programmatically while the pattern data is loaded from a bulk data file. In Option 4, all STIL components are created programmatically. Options 2, 3, and 4 also show two different ways that the STIL components can be stored to a file. Option 2: Non-pattern STIL components are loaded from a STIL or OpenXML file while the pattern data is loaded from a bulk data file. These files can also be loaded from the SFP and used to create a PatternSite. Option 1: All STIL components are loaded from a STIL or OpenXML file, and used to create the PatternSite. These files can also be loaded from the SFP and used to create a PatternSite. STIL or OpenXML file NOTE 1 STIL or OpenXML file NOTE 1 Programmatically load all STIL components from a STIL or OpenXML pattern file, and create the PatternSite Load non-pattern STIL components Option 3: Non-pattern STIL components are created programmatically while the pattern data is loaded from a bulk data file. NOTE 2 NOTE 2 Programmatically create nonpattern STIL components Load pattern data Bulk data file SFP Programmatically create all STIL components, including pattern data NOTE 2 Bulk data file Pattern files Execute PatternSite Option 4: All STIL components are created programmatically, including the pattern data. Save-to-file options: 1. Compile pattern and save to a file. 2. Backlist STIL components to a STIL file. Execute pattern site Fetch results Save-to-file options: 1. Compile pattern and save to a file. 2. Backlist STIL components to a STIL file. Load pattern data Execute pattern site Execute pattern site Fetch results SFP Save-to-file options: 1. Compile pattern and save to a file. 2. Backlist STIL components to a STIL file. Fetch results Fetch results NOTES: 1. STIL files are the preferred format of pattern files compared to OpenXML files. 2. The minimum required non-pattern STIL components are Signals, Sites, WaveformTable(s) and DCLevels. Using the Four DSR Site Types Using CaptureSites Using CaptureSites In CaptureSites, the DUT typically receives only a clock signal from the DSR and returns patterns to the DSR. CaptureSites are not supported on M9195B multi-module implementations. For Signal Direction in CaptureSites: – Data may be captured from Signals defined as Out. – Clocks are generated on Signals defined as In. – InOut direction is not supported for CaptureSites. Signal Direction is always relative to the Device Under Test (DUT). Part of defining a Signal is declaring the direction, whether In (DUT Input), Out (DUT Output), or both (InOut). Programming Details For specific details in using the IVI Functions in CaptureSites, refer to the Programming Guide or the LabVIEW driver help system – Programming Guide: IVI-COM, IVI-C: “CaptureSites Overview” – LabVIEW Driver help: IVI-COM, IVI-C: “CaptureSites Overview” The diagram on the next page shows a typical CaptureSite Sequence. Command Sequencing The CaptureSite properties (RequestedResultCount, TriggerMode, TriggerSource) need to be set before activating a CaptureSite. Once a CaptureSite is activated, changes to CaptureSite do not affect the site. For example, if you change the trigger source, it won’t affect sites that have already been activated. CaptureSite Results See Generation of Results Diagram. 40 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Using CaptureSites Using the Four DSR Site Types CaptureSite Sequence ForthisCaptureSite,itisassumedthat Channel0isprogrammedasaDUTinput, andthattheWaveformTable character “C”hasbeenprogrammedtoactasa clock,namelytogohighatthestartof theperiodandgolowhalfͲwaythrough theperiod. Character ItisfurtherassumedthatChannels1Ͳ 4areDUTOutputs(DSRinputs),and aresampledbytheWaveformTable character“0”whichuses‘L” (CompareLow)initsdefinition.This samplingoccursthreeͲquartersofthe waythrougheachperiodasindicated bytheticmarks. Signals.AddSignalList Specifythesignalnamesandtheirdirection forthe5signals shownabove. DcLevels.Add DcLevels.get_Item().SetDcLevels 1. AddaDcLevelblock. 2. FortheDcLevelblock,definetheDCvoltagelevelsfor theDUTinputandoutputsignalsspecifiedabove. Sites2.Add Sites2.get_Item().AssignSignalList 1. AddaSiteblock. 2. FortheSiteblock,listthesignalsinthesite,their channels,andtheirordinals(positioningofresponses). 1. AddaWaveformTableblock. 2. FortheWaveformTableblock,definethe waveformcharacters,thesignalstheyapply to,theeventtimes,andtheeventactions. Inthisexample,itisassumedthatthe WaveformTablecharacter“C”isusedto WaveformTables.Add generateaperiodicclockonChannel0 WaveformTables.get_Item().DefineWaveformCharacter whiletheWaveformTablecharacter“0”is WaveformTables.get_Item().Period usedtosamplethesignalsonChannels1Ͳ4. 3. FortheWaveforM9195Ͳ90002 4. mTable block,definethewaveformperiod. Thiscontrolshowoftentheinputsignals CaptureSites.RequestedResultCount aresampled. Specifyhowmanytimesthewaveformtablecharacterswillberepeated.For waveformtablecharactersthatspecifycompares(i.e.aredoinginputtothe DSR),thiscountthenspecifieshowmanyresultaretobeobtained. CaptureSites.Activate ActivatetheCaptureSite. CaptureSites.get_Item().WaitforAcquisitionComplete CaptureSites.get_Item().FetchResultByte WaitfortheCaptureSiteexecutiontobecomplete(achievedwhenthe RequestedResultCountnumberofinputshavebeenreceived). Fetchtheresults(inthiscase,asanarrayofbytes). Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 41 Using the Four DSR Site Types Using StaticSites Using StaticSites For Signal Direction in StaticSites: – Stimulus may be applied to Signals defined as either In or InOut. – Response may be received from Signals defined as either Out or InOut. Signal Direction is always relative to the Device Under Test (DUT). In = DUT input; Out = DUT output; InOut = both. Programming Details For specific details in using the IVI Functions in StaticSites, refer to the Programming Guide or the LabVIEW driver help system: – Programming Guide: “StaticSites Overview” – LabVIEW Help driver: “StaticSites Overview” For details on the programming steps, see StaticStites Sequence. Static Site Results See the Generation of Results Diagram. 42 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Using StaticSites Using the Four DSR Site Types StaticSite Sequence Once a StaticSite is activated, changes to the Site do not affect its operation. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 43 Using the Four DSR Site Types Using PpmuSites Using PpmuSites PPMU Sites allow DC tests of DUT IO cells: – Force Nothing, Measure Voltage (FNMV) – Force Voltage, Measure Current (FVMI) – Force Voltage, Measure Voltage (FVMV) – Force Current, Measure Voltage (FIMV) – Force Current, Measure Current (FIMI) Programming Details For specific details in using PpmuSites, refer to the Programming Guide and the LabVIEW help file: – Programming Guide: IVI-COM, IVI-C: “PpmuSites Overview” – LabVIEW Driver help: IVI-COM, IVI-C: “PpmuSites Overview” The current and voltage parameters cannot be set independently. The read-only Current Limit property returns which current range is used to make the measurement. This is a function of which shunt resistance is switched in to make the measurement, which in turn is a function of the expected current specified in the ForceVoltageMeasureCurrent method. For the ForceCurrentMeasureCurrent and ForceCurrentMeasureVoltage methods, the specified force current sets the range. For the ForceVoltageMeasureVoltage method, the current range is set to 40 mA, since that gives the best chance of avoiding an overload condition. 44 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Using PpmuSites Using the Four DSR Site Types PPMU Site Sequence Once a PpmuSite is activated, changes to the Site do not affect its operation. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 45 Using the Four DSR Site Types Using PpmuSites Example PPMU Operation The following diagram and code example show demonstrate a ForceVoltageMeasureCurrent (FVMI) configuration. In the simplified schematic below, reconfiguring the Force and Measure switches will setup different test types, including: FNMV, FVMV, FIMV and FIMI. Each channel's measurement result is placed at the index in the array specified by the ordinal in the site definition. The maximum compliance voltage is dependent on the current range. Below is a applicable table of values for this test setup. Current Range Voltage ±40 mA -2.0 to +5.75 V ±25 mA -2.0 to +6.0 V ±2 mA (and less) -2.0 to +6.5 V A positive current measurement indicates a flow of current out of the DSR and into the DUT. For details on setting PPMU clamps, see “Voltage Clamps” on page 23. 46 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Using PpmuSites Using the Four DSR Site Types Example: Using ForceVoltageMeasureCurrent The following C# program example demonstrates the complete process of setting the Ppmu to Force Voltage and Measure Current. public void ForceVoltageMeasureCurrentExample() { const string ppmuSiteName = "PpmuSite"; string[] PpmuSiteSignalNames = {"Channel0", "Channel1", "Channel2", "Channel3"}; int[] PpmuSiteChannelNumbers = {0, 1, 2, 3}; var Measurements = new Double[PpmuSiteChannelNumbers.Length]; var VoltageLevels = new Double[] { -1.0, 0.0, +1.0, +2.0, +3.0 }; Double ExpectedCurrent = 0.001; // actual measured current depends on load Driver.Sites.Add(ppmuSiteName); foreach (int ChannelNumber in PpmuSiteChannelNumbers) { int Ordinal = ChannelNumber; Driver.Signals.Add(PpmuSiteSignalNames[ChannelNumber]); Driver.Signals.Item[PpmuSiteSignalNames[ChannelNumber]] .Direction = KtMDsrSignalDirectionEnum.KtMDsrSignalDirectionInOut; Driver.Sites.Item[ppmuSiteName].AssignSignal(PpmuSite SignalNames[ChannelNumber], ChannelNumber, Ordinal); } Driver.PpmuSites.Activate(ppmuSiteName); foreach (Double VoltageLevel in VoltageLevels) { Measurements = Driver.PpmuSites.Item[ppmuSiteName].ForceVoltageMeasureCurrent(Voltag eLevel, ExpectedCurrent); foreach (Double Measurement in Measurements) { Debug.WriteLine("Forcing: {0}, Measured: {1}", VoltageLevel, Measurement); } Debug.WriteLine(Environment.NewLine); } } Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 47 Using the Four DSR Site Types 48 Using PpmuSites Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide M9195A/B PXIe Digital Stimulus/Response User Guide 4 Using STIL Files "STIL (pronounced like "style") is the IEEE Standard Test Interface Language (STIL) for Digital Test Vector Data. STIL is a standard pattern definition language, defined by a series of IEEE 1450 specifications. STIL is a very complete language for defining stimulus and response. The Keysight DSR implements a subset of STIL, and also adds a few custom block types" It is beyond the scope of this User Guide to fully describe the STIL language and all the ways it may be used. You should refer to the STIL (IEEE 1450) standards documentation for detailed information. Overview This section describes the STIL language and file format. The STIL specification requires that the component definitions in a STIL file occur in a specified order. The Signals STIL block must be defined first, before any other blocks are used. After Signals, the other components may be defined in any order (since references to undefined STIL components are permitted from the API). Although the DSR accepts definitions in an arbitrary order, the STIL input file should be in the order defined by the IEEE 1450 specification. The highest level structure in STIL (PatternExec) references all the pieces that go into a pattern. The individual components represent timing, amplitude, pattern, branching, etc. Patterns are constructed from building blocks that are collectively called STIL components. The STIL components closely follow the block definitions that are provided by STIL (IEEE 1450). They are dynamically created and defined by either loading a pattern file or by programmatically providing the definition. 49 Using STIL Files STIL Blocks STIL Blocks The following diagram illustrates the basic STIL building blocks and how they interrelate. STIL Block Diagram The following table lists the STIL elements in the recommended block order in a STIL file: 50 STIL Block Description Signals The Signals block defines the signals that are used by the various blocks to compose the patterns. Signals must be defined in the signals block before they are referred to from one of the other blocks. Only one Signals block is allowed. SignalGroups SignalGroups permit referring to multiple signals with a single name. This simplifies defining items like DCLevels where numerous signals may need to be assigned at the same time. Only one SignalGroup block is allowed. A SignalGroup is defined with a string that contains one or more signals. There are basic operators available for referencing a series of signals and for adding and removing signals from a group. Sites The Sites block is a Keysight extension to the STIL standard. It specifies how a pattern definition is applied to the physical DSR. This includes: mapping the signals to DSR channels, specifying an ordinal for each signal and channel, and mapping the trigger references in the pattern. DCLevels The DCLevels block specifies two things. First, the voltage levels associated with either detecting or producing a logical 1 or 0. Second, the DCLevels also describe how each signal line should be electrically loaded. The DCLevels are defined independently for each signal in the pattern, so there is a dependency to the signal definitions. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide STIL Blocks Using STIL Files STIL Block Description Timing (includes WaveformTable) A WaveformTable defines the waveform that should be produced, or expected by the DSR when a particular waveform character is executed on a particular signal. Only one Timing block is allowed per WaveformTable. The waveform table name is used in the pattern to specify how each vector of the pattern should be executed. The waveform tables define the timing characteristics, including the total time for the bit period, and the time within the period when responses should be expected or stimulus levels generated. The timing information in the waveform tables may be specified independently for each signal; therefore, signals are dependent on the waveform tables. PatternBurst The PatternBurst is a list of pattern blocks. The PatternBurst structure permits specifying a list of patterns blocks to execute in a sequence. Patterns are permitted to be defined in terms of macros. The PatternBurst also has a reference to the macros used when evaluating the patterns. PatternExec The PatternExec is the highest level definition of a pattern. In the general IEEE 1450 (STIL) model it can have other information, but in the M9195A/B Soft Front Panel it only contains the list of pattern blocks that should be executed and the DCLevels for each signal in the block. MacroDefs The MacroDefs block identifies the pattern block used to fill in the macros specified when evaluating a pattern. Pattern The Pattern blocks contain the actual ones and zeros that are produced and expected by the DSR. The pattern is defined in terms of vectors that specify the values for all signals, and a reference to a waveform table. Each vector specifies the stimulus and/or expected response value for each signal in the pattern. The timing characteristics are permitted to change for each vector in the pattern; therefore, each vector has an independent waveform table defined. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 51 Using STIL Files STIL Blocks General STIL Statements The following general statements are supported: STIL Statement Description STIL The STIL version number for M9195A/B must be 1.0. If another version is encountered, M9195A/B will not process the file. Header Optional block after the STIL statement and before any other STIL block. Typically includes Title, Date, Source, and History statements. Ann Annotation statements are supported. Note that the text may span multiple lines. Include Include statement is supported. The IfNeed clause is not supported, any included files are loaded. File path resolution is supplied by the programming environment. UserKeywords UserKeywords may be used to specify the M9195A/B defined keywords. User Functions Not supported in the M9195A/B. The concept of Inheritance is not supported in the M9195A/B DSR module. STIL Block Names The M9195A/B supports the following STIL blocks that are permitted to have names (domain names): – PatternExec – PatternBurst – WaveformTable – Pattern – MacroDefs – DCLevels – Site – Spec (only one Spec block may be defined in a STIL file)1 – Per STIL standard, any block can be defined once (and only once) without a name. This null-named block becomes the default block (‘!Default’). – Once the STIL file is loaded, all blocks are accessible from the IVI API by name. The default block (that is the unnamed block), can be referenced from IVI using the special name ‘!Default’. This token is a legal IVI repeated capability selector. ‘!’ is a special character in STIL and should not be used elsewhere in a name. 1 STIL SPEC blocks are containers for Category information. Spec blocks are treated as global definitions in STIL. 52 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide STIL Signal and SignalGroups Blocks Using STIL Files STIL Signal and SignalGroups Blocks Signals must be defined before they are used. A signal is a symbolic representation of a single DSR channel; however, it is not associated with a physical channel. By separating the concept of a signal from a channel it is possible to define patterns that can be bound to a different set of channels. This separates the pattern definition from the details of the physical connector. It also permits the same pattern to be executed on multiple sites at the same time. The Signals block differs somewhat from the other STIL components. - The other STIL components are always referenced using the block name. For instance, the block name is passed to the Item method to access the block to configure it. The block name is also used whenever the block is referenced. Thus, the block name provides a way to manage multiple copies of the block. - For Signals, the block name for a Signal is the name of that Signal. This signal name is used primarily in the pattern definition itself, so the block name is not directly used. Signals also differ from other STIL components because they are defined for the entire DSR (that is, they are global in scope). - Signals must be defined before they are used. Signals must be defined as In, Out, or InOut. – Supply is not supported. – Pseudo is not supported. STIL Signal Blocks not supported in the KtMDsr IVI API - Alignment - Termination - DataBitCount - DefaultState Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 53 Using STIL Files STIL Signal and SignalGroups Blocks Supported STIL Signal Blocks Supported STIL Signal Blocks Description Base STIL permits a base to be specified for a series of bits. It may be Hexadecimal or Decimal. In either case, the specification is followed by a list of waveform characters that specify the mapping between bits in the number to waveform characters. ScanIn/ScanOut Scan is handled on arbitrary lines since it is expanded in software. Since any signal can receive Scan data, these attributes are not necessary for M9195A/B but are required by STIL. Therefore M9195A/B only permits shift on pins that are defined as ScanIn or ScanOut. STIL Expressions There are two expressions used frequently in STIL: STIL Expression Description SignalExpressions This is used for a group of signals. It is used to define a group (for example, sig0...sig9), but is also permitted in most circumstances where a group or signal is permitted. The syntax provides a convenient way to reference a series of signals Numeric expressions This specifies a time. Signal Reference Expressions When defining a pattern, it is frequently useful to deal with numerous signals at the same time. In many applications, such as when defining a bus, all signals may define the same waveform characters and DC levels. Signal Expressions provide a simple way to specify a group of signals. Most DSR entries that accept a signal, also accept a signal expression. Signal expressions are created using the following syntax: 54 Expression Definition + or , Signals can be added into the expression using plus or comma. So ’Signal1+Signal2’ refers to both signals. [..] A range of signals that have a numeric suffix defined with square brackets can be added using ’…’. For instance, if you have defined ’Signal[0]’ , ’Signal[1]’, and ’Signal[2]’ , you can refer to all three with the syntax ’Signal[0..2]’. - Signals can be removed from an expression using minus. For instance, ’Signal[0..2]-Signal[1]’ is the same as ’Signal[0]+Signal[2]’. () Parenthesis can be used for grouping operations. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide STIL Signal and SignalGroups Blocks Using STIL Files In addition, a SignalGroup can be defined. In STIL, a Signal Group is defined using the SignalGroup block, which similarly permits defining a group as a signal reference expression. Once defined, a signal group can be used just like a signal expression that includes each signal in the group. The ‘-’ (minus) operation can be used to take signals away from a group within a larger expression. For instance, ‘Group-Signal’ or ‘Group1-Group2’ are both legal. Examples of Signal Expressions Expression Examples Note The sum (or difference) of signals or signal groups. Signal1+Signal2 D3+D2+D1+D0 SignalGroup1+ SignalGroup2 Operands may be signals or signal groups, separated by plus '+' or minus '-' signs, and grouped by parentheses. Removing a signal reference expression from another signal or group SignalGroup1 - Signal1 Signal1 must be part of SignalGroup1 in order to remove it from SignalGroup1. A comma-separated list of Signals Signal1, Signal2, Signal3, Signal10, Signal11, Signal12 A range of Signals, in either ascending or descending order Data[0..15] Data[5..0] The sum (or difference) of signal ranges Signal[0..7]+Data[0..3] Signal[0..7]-Signal[3] Data[0..15]-Data[2] Parenthesis for grouping Data[0..15]-(Data[0]+Data[1]) Data[0..15] yields 16 signals: Data[0], Data[1], … Data[15] Data[5..0] yields 6 signals: Data[5], Data[4], Data[3], Data[2], Data[1], Data[0] Numeric Expressions The KtMDsr driver provides conventional numeric expression evaluation. There are several benefits: - There is utility in having units conversions built into the pattern file formats. For example, using the unit designators, a time of 22 nanoseconds can be specified as ’22 ns’ instead of ‘22e-9 seconds’. - The expressions can be used to evaluate times in the waveform table definition in terms of previous edges. For instance, the special character, ’@’ (commercial at) can be used to indicate the previously specified time. Using this, if an edge in a pattern specification were set to ’@+5ns’, the edge would be established relative to the previous edge. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 55 Using STIL Files STIL Signal and SignalGroups Blocks - Most importantly, the expression can be reevaluated after the pattern has been compiled. This provides a way to change a family of related values based on a variable setting without the overhead of recompiling a pattern. Evaluating expressions The KtMDsr expressions, in general, are strings that are evaluated to produce a number. The strings are reasonably conventional expressions that provide the usual meanings of the following. Number parsing Interpretation +, -, *, / Numeric operations with conventional precedence ^ Exponentiation () Conventional meaning of parenthesis ; Semicolon separates multiple operations; the result of evaluating a string is the value obtained from the final semicolon separated string. <identifier>=<expression> An equal operation assigns the expression to a variable, and implicitly creates the variable. <identifier> When used in an expression, then an identifier is treated as a variable and replaced with the value most recently assigned to it. @<digit> The commercial at (@) followed by a digit indicates one of the ten expression evaluations on a logical line. Thus @1 is the value of the first expression evaluated on a logical line. This is convenient when defining waveform tables, so that the latter times in a waveform table can be defined based on the earlier values. @ The commercial at (@) without a digit indicates the most recently evaluated expression. The utility is similar to @<digit>. Reevaluating expressions after compiling a pattern As noted, the primary utility of the expressions is that both DC Levels and times within a waveform table may be reevaluated without recompiling a pattern. For details, see the functions: PatternSite > ReevaluateVariables and PatternSite > ReevaluateDcLevels in the API. Units The DSR handles all the conventional engineering prefixes. The DSR accepts physical units for inputs to help make the input more readable; however, it does not actually utilize the units in interpreting the numbers. The physical units accepted are seconds, Volts, and Amps. The value entered 4 ns .000001 kV 56 Interpreted as 4E-9 seconds 1E-3 Volts (i.e., 1 millivolt) 33 s 33E-6 seconds (i.e., 33 microseconds) 1 A 1E-6 Amps (i.e., 1 microamp) Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide STIL Site Block Using STIL Files STIL Site Block For an overview of the architecture of sites, see “Sites” on page 29. Sites is used to specify how a pattern is applied to the physical DSR. This includes: – Mapping the Signals to DSR Channels – Specifying an Ordinal for each Signal and Channel that specifies the position that Signal will take in response data. – Mapping the Trigger references in the pattern to physical trigger sources. – Mapping of Marker references in the pattern to physical marker destinations. Since the Site specifies this physical mapping, it is used to bind Patterns, PPMU operations, and StaticSite operations each to physical channels. A Site block specifies the mapping of the signals to physical pins on your test device. Site Syntax The Site syntax in a STIL file is: Site <name> { Channels { ((SIGNAL) (DECIMAL_INTEGER) (DECIMAL_INTEGER);)*} } } The first parameter after the Signal is the channel number assigned to it. The second is an optional ordinal to specify the order in which data from this signal is packed into results. Using Ordinals An Ordinal specifies the bit location (or array location) where data associated with a Signal will be placed. – In the case of DSR Pattern, Static and Capture operations, the ordinal is a zero-based bit position, which may be the same or different than the designated channel number for that Signal. – For DSR PPMU operations, an ordinal specifies the array element that contains data for this Signal. This is the element number to use when packing measurement results into bytes or arrays. The way that an ordinal is assigned to a Signal depends on the way the Signal or Site is defined. – From the API, an ordinal is specified from IKtMDsrSite.AssignSignal or IKtMDsrSite.AssignSignalList. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 57 Using STIL Files STIL Site Block – In a STIL file, an ordinal is specified in the Site block. – In an OpenXML (spreadsheet) file, an ordinal is specified for a Signal on the Site sheet of the .xlsx file. Trigger Specification The Site also defines the physical signal used to Trigger the Watch/OnTrigger syntax. – Sixteen software triggers are available for the DSR (SoftwareTrigger0 – SoftwareTrigger15) plus the hardware triggers: PXI_TRI[7:0], PXI_STAR, and PXIe_STARB. – Trigger0 – Trigger5 are mapped to SoftwareTrigger0 – Software Trigger15 or to hardware triggers in the Site Definition. – The trigger mode determines whether the pattern begins executing immediately (Trigger Mode = Immediate) after it is initiated or whether it waits for a trigger event (Trigger Mode = Triggered). – The TriggerSource string is used to get or set the trigger source, which is then used to begin execution of a particular pattern. Triggers are valid for Pattern Sites and Capture Sites. They begin the execution of the pattern on Initiate. If Trigger Mode is set to Immediate, the pattern begins executing immediately. If Trigger Mode is set to Triggered, the hardware fully initializes, then waits for a trigger event before proceeding. The following syntax is used: Triggers { (Trigger<n> EVENT;)* } where ’n’ is a digit from 0 to 5. For example: Triggers { Trigger3 “SoftwareTrigger0”; } This example maps Trigger 3 to Software Trigger0 Marker Specification The Site also defines the signals used to mark a vector (Trigger Out). The available Triggers are: PXI_TRIG(0-7), External1 & 2, PXI_STAR, and PXIe_DSTARC. Up to 3 markers are allowed per Site. The syntax is: Markers { (Marker<n> EVENT;)* } 58 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide STIL Site Block Using STIL Files Where ‘n’ is an integer 0-2. For example: Markers { Marker0 “PXI_TRIG0”; } Triggers and Markers are bidirectional, but can only be used in one direction at a time for all Sites in a driver instance. Because of this, we need to explicitly set the direction in the triggers interface. See: KtMDsr Programming Guide: “Triggers and Markers” In order to mark a Vector we will override the CrossReference (XRef) tag with a marker name. The marker will be output during the period of next vector after the XRef tag. For example: Pattern "testpat" { W WFT1; V{ Bank0=TTTT; } V{ Bank0=TTTT; } V{ Bank0=1111; } V{ Bank0=0100; } V{ Bank0=0000;} X Marker0; V{ Bank0=TTTT; } Marker0 output beginning at this Vector // V{ Bank0=TTTT; } V{ Bank0=1111; } V{ Bank0=0100; } V{ Bank0=TTTT; } V{ Bank0=TTTT; } V{ Bank0=TTTT; } V{ Bank0=TTTT; } Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 59 Using STIL Files STIL DCLevels Blocks STIL DCLevels Blocks The STIL (IEEE 1450.2) standard defines the DCLevels block. This is supported as follows: General Syntactic Extensions per IEEE 1450.2 Generally, if a default DCLevels block is defined (one with no name), it is applied to all patterns. In addition, a DCLevels block may be provided by referencing it in either the PatternExec or Pattern itself. However, DCLevels can not be changed on-the-fly. The following syntaxes are extended consistent with IEEE 1450.2: – STIL block may specify ’DCLevels 2002;’ – The PatternExec may specify a DCLevels block. DCLevels DCLevels Description SignalGroups This specifies the group definition that these DCLevels apply to. Inherit DCLevels is not supported in the DSR module. Instead, the KtMDsr IVI driver uses Logic Families. DCLevels parameters DCLevels Parameter 60 Description VIH This defines the drive high voltage to be applied to Signals in the specified SignalExpression. In most situations, a single dc_expr is present. Multiple dc_expr statements are present to support changing values during one Vector. VIL This defines the drive low voltage to be applied to Signals in the specified SignalExpression. In most situations, a single dc_expr is present. Multiple dc_expr statements are present to support changing values during one Vector. VCOM This defines the input commutation voltage for differential Signals in the specified SignalExpression. VCOM is used to specify when IOH or IOL switch to drive or sync current. VCOM, IOH, and IOL are used together. VOH This defines the compare high voltage to be applied to Signals in the specified SignalExpression. In most situations, a single dc_expr is present. Multiple dc_expr statements are present to support changing values during one Vector. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide STIL DCLevels Blocks DCLevels Parameter Using STIL Files Description VOL This defines the compare low voltage to be applied to Signals in the specified SignalExpression. In most situations, a single dc_expr is present. Multiple dc_expr statements are present to support changing values during one Vector. IOH This defines the output high load current to be applied to Signals in the specified SignalExpression. IOH is typically a negative current value. IOL This defines the output low load current to be applied to Signals in the specified SignalExpression. IOL is typically a positive current value. VHYST Hysteresis applied to the DUT output low and high thresholds, VOL and VOH. This is the peak-to-peak hysteresis voltage. Inputs are coerced to 0, 50 mV or 100 mV. VHH Voltage forced by the DSR on the high voltage pin(s) when high voltage is active. There are four high voltage channels. For example, if the DSR detects a low-to-high transition at 2.5 V, a 100 mV hysteresis would mean that the low-to-high transition is detected at 2.55 V and the high-to-low transition is detected at 2.45 V, a 100 mV difference. Noise could mean the signal crosses the threshold of 2.5 V more than once. VIT This defines the termination voltage for ResistiveTermination. ReistiveTermination is typically used to provide impedance matching to the DUT. This capability is typically implemented on ATE by using the internal impedance of the tester driver. This is distinct from usage of the Termination statement in 14.1 and 17.1 of the IEEE 1450-1999 Standard. ClampHi and ClampLo are not set in DCLevels. However, clamp voltages are defined in the Channel functions. For overview on this, see “Voltage Clamps” on page 23. DCLevel Limitations – Power supply sourcing is not specified – A single set of DCLevels may be specified for each Signal. Since Spec, Category, and Selector blocks are supported, DCLevels can be defined for multiple categories. – DC Sets may not be specified. – DCLevels can be changed on-the-fly. – DC Sequence is not supported, consistent with the lack of support for power supply control. – IEEE 1450.2 defines extensions to the waveform characters to permit designating additional force and compare voltages for a single signal. These are not supported. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 61 Using STIL Files STIL Timing and Waveform Tables Blocks STIL Timing and Waveform Tables Blocks The M9195A/B supports up to 32 WaveformTables per PatternSite and up to 15 waveforms per signal. The following are the blocks allowed in a WaveformTable: STIL Timing Block Description Period Specifies the basic sample rate per vector. However, there can be four events within that period. Waveforms Waveforms are supported subject to the following: SignalReferenceExpression This is the specification of the Signals to which these waveforms apply. Subject to the same limitations as the SignalGroups definition. Waveform Character Specification The Waveform Table includes the specification of the waveforms for various waveform characters. The following describes the supported syntax: – Waveform Character list may be specified and the ’/’ syntax used to separate event definitions. – ‘@’ and ‘@n’ are used to incorporate the time expression from other times in this waveform in the calculation of a given time. – M9195A/B supports up to 15 distinct waveform characters for each signal. Typical characters include: U (force up), D (force down), Z (force high-impedance), P (force prior), H (compare high), L (compare low), X or x (don’t compare), T (three-state compare). Note that a sixteenth waveform character can be used to implement a waveform-character-scoped prior operation. You can specify this by leaving the waveform character absent. Waveform Characters (WFCs) and Events are different concepts. WFCs are user defined, in terms of events. – M9195A/B supports up to two force events per waveform period. – M9195A/B supports one compare event per waveform. The following are NOT supported: – References to subwaveforms are not supported. – ‘\rN’ causes a sub waveform to repeated. Since sub waveforms are not supported this is not supported (only used with sub waveforms). – Inherit Waveform Table – SubWaveforms The DSR module does not support Inheritance. Therefore, a Period must be specified in the Waveform Table. 62 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide STIL Timing and Waveform Tables Blocks Using STIL Files Creating Waveforms and WaveformTables Waveform Tables define the pattern application rate and define how the patterns are actually applied. A STIL test can have multiple waveform tables. The waveform needs to describe every user definable character that is in the pattern for each signal. A simple WaveformTable might be: Timing basic { WaveformTable one { Period '38.46ns'; Waveforms { Sclk { T { '0ns' Sclk { 01 { '0ns' Sdata { 01 { '0ns' Sdata { Z { '0ns' Sdata { LH { '0ns' VIO { 01 { '0ns' } // end waveforms } // end waveform table one } // end timing basic U; '19.23ns' D; }} D/U; }} D/U; }} Z; }} L/H; }} D/U; }} Waveform Tables have two basic elements: Period and Waveforms. – Period defines the pattern or vector application rate. This is the period for a single pattern element. For example, Period '38.46ns' defines a 26MHz pattern application rate used for RFFE. Each vector or pattern is clocked every 38.46ns. – Waveforms describes the actual waveform characteristics. The WaveformTable translates user defined pattern characters to specific hardware actions. In the example above, we defined the characters ’T’, ’0’, ’1’, ’Z’, ’L’, and ’H’. These characters are used in the actual patterns. The WaveformTable translates these pattern characters to the hardware specific functions ’U’, ’D’, ’Z’, ’L’, ’H’, and ’X’. U/D/Z/L/H/X are STIL reserved characters that map to hardware actions. The hardware specific functions are not user definable and include: – ’U’ (which means to Force High) – ’D’ (which means to Force Low), – ’Z’ (which means that driver is put into a high Z state). When this character is used, the voltage assigned to VIT is output from channel. If you do not specify VIT in DCLevels, when Z is applied, the channel is set to high impedance (Force Low). – ’L’ (which means that the tester pin is expecting to receive a low state (Compare Low)) – ’H’ (which means that the tester pin is expecting to receive a high state (Compare High)) Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 63 Using STIL Files STIL Timing and Waveform Tables Blocks – ’X’ (which means that we are receiving a don't care state (No Compare)). In the example above: – we used a user definable character ’T’ to mean a toggle in the pattern. In the following waveform statement: Sclk { T { '0ns' U; '19.23ns' D; ‘19.23ns’ L;}} ‘T’ is the user defined pattern character. The ’U’ and ’D’ are the STIL reserved characters that describe the specific hardware function. When programming the Sclk pin in the pattern, you will see the character T. When the pattern is applied, T means drive Up at 0ns (this is the first strobe) and drive low at 19.23ns (this is the second strobe). The drive strobes are relative to the Period that was defined. In this case, T creates a 26MHz clock in a single vector of the pattern. You don't need to use two vectors to create the clock. Normally, if you use two vectors you would try to drive a 0 then 1, etc. That would result in a 26/2 MHz clock. Using T allows Double Data Rate, and the 0/1 occurs within the same period...or 26MHz. – we also used ’0’ and a ’1’ to mean a drive low then high state, respectively. In the statement: Sclk { 01 { '0ns' D/U; }} ’0’ and ’1’ are the user-defined characters. ’D’ and ’U’ are the STIL reserved characters. This line is interpreted wherever the Pattern has a ’0’, then at 0 nS, the line is driven Down. Likewise when the pattern has a ’1’, then at 0 nS, the line is driven Up. – ’Z’, ’L’, and ’H’ are the same as the hardware specific functions. They could have different meanings if it makes more sense to the programmer. Sdata Sdata { { Z LH { '0ns' Z; }} { '0ns' L/H; }} In the first of these two lines, ’Z’ is used as a user-definable character which, in this example, has the same meaning as the STIL reserved character; namely, a high impedance state. This works only if VIT is 64 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide STIL Timing and Waveform Tables Blocks Using STIL Files assigned NaN. If VIT is set to some voltage in the STIL file, the DUT will see 50 ohms into some voltage which could be zero or anything that makes sense to the driving circuit. In the second line, ’L’ and ’H’ are the User-defined characters which mean the same as the STIL characters. This line is interpreted wherever the Pattern has an ’L’, then at 0 nS, the line is driven Low. Likewise when the pattern has an ’H’, then at 0 nS, the line is driven High. You can define multiple WaveformTables and can change which WaveformTable to use. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 65 Using STIL Files STIL Pattern Blocks STIL Pattern Blocks Patterns is one of the STIL Components. As with all STIL components, they can be created using the IVI API, or by loading a file in one of the file formats supported by the DSR software. A Pattern block provides the data that is used to stimulate the DUT and the data that is expected back from DUT. This data includes the stimulus and response values and also various non-data instructions. The data output on each signal in the pattern in a single WaveformTable period is referred to as a Vector. Each Vector in the Pattern can be output using a different WaveformTable. Thus, each vector in the pattern includes the Signals being defined, the waveform character for each signal, and the WaveformTable that defines the waveform character and specifies the period for this cycle. The Vector method may be called multiple times to provide a complete definition of a clock cycle. This permits independently specifying signals or signal groups with separate calls. Vectors may be labeled using LabelVector or from within a loaded file. This makes them available as locations accessible with GoTo as well as Pattern Update methods. Creating Patterns The Pattern blocks contain the actual ones and zeros that are produced and expected by the M9195A/B. The pattern is defined in terms of vectors that specify the values for all signals, and a reference to a waveform table. Each vector specifies the stimulus and/or expected response value for each signal in the pattern. Here is an example: Pattern Read_data_pattern { WaveformTable one; //This refers to the WaveFormTable in the Timing block. V {'Sclk+Sdata+VIO'=000; } //The first vector needs to define a state for every signal. //In this case, all pins driven to 0. Remember that the 0 //is a user definable character. The WaveformTable translates //the 0 to a hardware specific action. In this example, a 0 is //defined to be a D (or drive down action at 0ns into the v //vector period). Loop 0 { V {'Sclk+Sdata+VIO'=T01; } // 1st instance of the Vector V {'Sclk+Sdata+VIO'=T11; } // 2nd instance of Vector V {'Sclk+Sdata+VIO'=T01; } //3rd instance of Vector V {'Sclk+Sdata+VIO'=T11; } // 4th instance of Vector } } // end Pattern 66 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide STIL Pattern Blocks Using STIL Files This example specifies three channels: Sclk, Sdata, and VIO. These three all start with the User Defined character ’0’ which in our Waveform Table meant the line is driven Down. Then we crate an indefinite program loop. At the first instance of the Vector, Sclk is Toggled, Sdata is driven Down, and VIO is driven Up. At the second instance of the Vector, Sclk is once again Toggled, Sdata is driven Up, and VIO is driven Up. At the third instance, Sclk is once again Toggled, Sdata is driven Down, and VIO is driven Up. At the fourth instance of the Vector, Sclk is once again Toggled, Sdata is driven Up, and VIO is driven Up. There are many different pattern execution control words like Loop that determine how your apply the pattern. In this case, Loop 0 creates a infinite loop. Infinite loops are useful in debugging patterns where you may need to connect an oscilloscope and look at the pattern. Supported Non-Data Instructions The timing characteristics are permitted to change for each vector in the pattern; therefore each vector has an independent waveform table defined. Instruction Notes CrossReference Places a mark in the pattern that is included in the response log. This simplifies relating the response log to the line in the pattern that generated it. GoTo Forces the execution to transfer to a locations identified with a label. Loop Indicates a block to be repeated a fixed number of times. Macro Executes the pattern from the specified macro. Optionally includes parameter substitution if defined using the MacroWithSubstitution function. MatchLoop Indicates a block should be repeated until all Compare operations pass, or a specified number of loops are completed. Shift Shift is a parameter substitution operation. It indicates that the parameters from the input parameter list should be executed until the list is exhausted. Shift may only be used within a Pattern that is designated as a macro using MacroDef. WatchLoop Indicates a block should be repeated until an external trigger event is received, or a specified number of loops are completed. Pattern Labels Pattern labels are supported. They are used with Goto statements, and to flag special statements to the M9195A/B. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 67 Using STIL Files STIL Pattern Blocks Each instruction is programmed using an Index that indicates the location within the pattern. When the Pattern is completely defined, the various instructions are sorted by Index and executed in that order. There are performance benefits to using consecutive Indexes, but Indexes can be assigned in any order. Although the Vector function may require multiple invocations to fully define a vector, no two distinct instructions can have the same Index. In general, the mechanism for capturing data is to specify a CompareLow operation on the Signals where the data is being captured. Then the DSR is configured to log all compares. Thus if the input is low, the compare succeeds and ‘0’ is logged; if the input is high, the compare fails and ‘1’ is logged. Thus the log represents the data values of the input. Cyclized Data Cyclized data is specified as: Signal Reference Expression = Vector Data The Signal Reference Expression has the same syntax limitations as described for SignalGroups. Vector data may be specified in: – Waveform Characters – Hexadecimal Non-Cyclized data STIL permits specifying non-cyclized data. The Keysight M9195A/B does not support this. Multiple-bit cyclized data is not supported. STIL Expressions not Supported: 68 STIL Expression Description \w Set to waveform characters \rN xxxx Repeat the character XXXX N number of times. (e.g.; ’\r2 ab’ is the same as ’abab’, which depending on the context may be a hex number or a waveform character). Note, this is not supported in the KtMDsr driver. \h Set to hex, use the conversion from hex to waveform characters specified in the signal/groups \hCHARS Set to hex, use the specified characters to convert from hex to waveform characters. \d Set to decimal, uses the conversion from hex to waveform characters specified in the signal/groups \dCHARS Set to decimal, use the specified characters to convert from hex to waveform characters. \iN Necessary to supported multi-bit specifications. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide STIL Macros Blocks Using STIL Files STIL Macros Blocks Macros Macros are supported. They are expanded when a STIL input is compiled. Constant Substitution Macros permit constant substitution using the ‘%’ syntax. A ‘%’ in the Macro definition is replaced by a waveform character specified in the Macro invocation. For example, the invocation: myMacro { mySignal = “W” } Then, in the body of the macro, the sequence: Vector { All = {AAB%CCD ; }} Is expanded to: Vector { All = {AABWCCD ; }} % substitution is supported. Scan substitution with # and Shift Macros permit a string of values, typically the values used to setup a scan chain, to be specified using a macro. The string of values is specified on the macro invocation, and the character ‘#’ is used to indicate where the values should go in the resulting expansion. For example, Macro Definition: MyMacro { V { All=1111111; } V { All=0000000; } Shift { V { All=AAB#CCD; } } } Calling the macro from a pattern: Pattern TestPattern1 { W one; . . . Macro MyMacro {mySignal=WXYZ;} Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 69 Using STIL Files STIL Macros Blocks . . . } The call to MyMarco would be equivalent to: V { All=1111111; } V { All=0000000; } V { All=AABWCCD; } substituted // First shift, WFC W is V { All=AABXCCD; } substituted // Next shift, WFC X is V { All=AABYCCD; } substituted // Next shift, WFC Y is V { All=AABZCCD; } substituted // Next shift, WFC Z is This assumes that the waveform characters 1,0,A,B,C,D,W,X,Y,Z are all defined. As part of the expansion, shift statements are expanded into the pattern. Therefore, the expanded macro consumes the same amount of pattern memory it would if the SCAN were manually expanded by the customer. The Shift and # syntaxes are accepted. Scan Data Scan data is supported, but is converted into pattern data in a Macro expansion (1 vector for each scan step). This expansion is done when the pattern is compiled, and therefore, scan data can only be used when invoking a macro. 70 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide KtMDSR-Specific STIL Using STIL Files KtMDSR-Specific STIL Backus-Naur Form Description for KtMDsr STIL Notes: 1 Language constructs from STIL.1 and STIL.2 are so noted by comments a STIL.1 = PatternBurst-Fixed b STIL.2 = DCLevels, PatternExec-DCLevels 2 KtMDsr stil allows only one each of the certain block types (see Note 3, below) which may be either: a an unnamed global block b a named block with a direct reference 3 The following UserKeywords have been added; a Site – a new top level STIL block construct used to define signal name to tester channel mapping and data logging b Channels – a sub block within a Channel block to define Signal to physical channel mapping. c Triggers – a sub-block with a Site block to define triggers to be used with a pattern d Markers - a sub-block with a Site block to define Markers to be used with a pattern e WatchLoop – new pattern statement to loop until trigger condition is meant or count is exceeded. f VCOM, VHH, VIT, VHYST – additional DCLevels. 4 Block ordering is as defined in STIL0, Clause 7.1 Legend: – All tokens are white space separated (new-line has no special significance) – Bold tokens are Literals – “{}” Braces refer to literal braces in the input, including the productions “{*” and “*}” where the star appears literally in the input. – “;” Semicolons refer to literal semicolons in the input – “()” Parenthesis set off a group of tokens and may be followed by “*” indicating 0 or more, or “+” meaning one or more, or nothing meaning optional. – “<>” Angle brackets set off a group of tokens and indicates that one and only one may be used. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 71 Using STIL Files KtMDSR-Specific STIL – // is a comment in the grammar itself – Tokens in little-caps refer to syntactic elements defined by STIL, and generally the token describes the usage. Where tokens in little-caps have quotes around them, they must be quoted strings in the input. – “’’” single quotes are literals and indicate a timing expression. STIL 1.0 { Design 2005; DCLevels 2002; } Header { ( Title "TITLE_STRING"; ) ( Date "DATE_STRING"; ) ( Source "SOURCE_STRING"; ) ( History { Ann {* ( ANNOTATION *} )* // end History } ) // end Header } (Ann {* ANNOTATION *})* UserKeywords Site Channels Triggers Markers WatchLoop VCOM VHH VIT VHYST; DSR specific // Signals { ( SIG_NAME < In | Out | InOut >; )* ( SIG_NAME < In | Out | InOut > { ( Base < Hex > WAVEFORM_CHARACTER_LIST ; ) ( ScanIn (DECIMAL_INTEGER) ; )// length required when Base Hex ( ScanOut (DECIMAL_INTEGER) ; )// length required when Base Hex } )* } // end sig_name // end Signals (SignalGroups (DOMAIN_NAME) { ( GROUPNAME = sigref_expr; )* })* 72 // end SignalGroups Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide KtMDSR-Specific STIL Using STIL Files (Site (SITE_NAME) { (Channels { ( SIGNAL_NAME DECIMAL_INTEGER // tester channel number (DECIMAL_INTEGER) ; } ) )+// the order in which data is packed into results // end _Channels (Triggers { (<TRIGGER0|TRIGGER1|TRIGGER2|TRIGGER3|TRIGGER4|TRIGGER5> “TRIGGER_SOURCE”; )* })? // Trigger source is // string defining the physical trigger input. (Markers { ( <MARKER0|MARKER1|MARKER2|> “MARKER_SOURCE”; )* })? // Marker source is // string defining the physical marker output. })* // end _Site (Spec (SPEC_NAME) { // this block statement defines variable values for a given category, SPEC_NAME is ignored ( Category CAT_NAME { // CAT_NAME is ignored ( VAR_NAME = time_expr; )* } )* }) // define only the Typ value // end Category // end Spec (DCLevels (DC_LEVELS_NAME ) { (sigref_expr { // STIL.2 // individual settings may be in any order (VIH ‘dc_expr’;) (VIL ‘dc_expr’;) (VOH ‘dc_expr’;) (VOL ‘dc_expr’;) (VIT ‘dc_expr’;) Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 73 Using STIL Files KtMDSR-Specific STIL (VCOM ‘dc_expr’;) (VHH ‘dc_expr’;) (IOH ‘dc_expr’;) (IOL ‘dc_expr’;) (VHYST ‘dc_expr’;) })* // end sigref_expr })* // end DCLevels (Timing ( TIME_DOMAIN_NAME WaveformTable WFT ) { { Period ‘time_expr’; Waveforms { ( sigref_expr ( WFC { ( ‘time_expr’ event ; )+ } )* // end wfc ( WFC_LIST { ( ‘time_expr’ <event_list | event > ; )* // end wfc_list } )* } )+ // end Waveform } // end Waveforms } // end WaveformTables // end Timing }) PatternBurst PAT_BURST_NAME { ( SignalGroups GROUPS_DOMAIN ; )* ( MacroDefs MACROS_DOMAIN ; )* ( PatList { ( (PAT_NAME); )* } )+ } 74 // end of PatList // end of PatternBurst Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide KtMDSR-Specific STIL Using STIL Files PatternExec (PAT_EXEC_NAME) { ( Timing TIMING_NAME ; ) ( PatternBurst PAT_BURST_NAME ; ) // STIL.2 ( DCLevels (DC_LEVELS_NAME);) // end PatternExec } MacroDefs ( MACRO_DOMAIN_NAME ) { ( MACRO_NAME ( PATTERN-STATEMENT } } { | Shift (vec_data | #) )* // end macro_name )* // endMacroDefs Pattern PATTERN_NAME { ( LABEL : ) ( V(ector) { ( cyclized-data )* } ) ( C(ondition) { ( cyclized-data )* } ) ( Macro MACRONAME ; ) ( Macro MACRONAME { ( scan-data )*( cyclized-data )* } ( Loop LOOPCNT { ( pattern-statements )* } ) ( MatchLoop < LOOPCNT | Infinite > { (pattern-statements)+ } ) // end MatchLoop (Goto LABELNAME ; ) (WatchLoop < LOOPCNT | Infinite > <TRIGGER0|TRIGGER1|TRIGGER2|TRIGGER3|TRIGGER4|TRIGGER5> { (pattern-statements)+ }) ( X < “IDENTIFIER” |INTEGER|MARKER0|MARKER1|MARKER2> ; ) STIL.1 // } // end Pattern Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 75 Using STIL Files KtMDSR-Specific STIL NameSpace Notes – To support managing multiple unrelated patterns in memory at the same time, the DSR supports a NameSpace. The symbols that are used are uniquely qualified with the NameSpace so that the same symbol can be used in multiple pattern files with distinct meanings. – Signals are an exception, and are always in the Default NameSpace. SignalNames get a namespace as well. – When a file is loaded, all the symbols defined, except for Signals, are placed into the designated NameSpace. All symbols referenced, except for Signals, are referenced within the designated NameSpace. This means that <namespace> is prepended to each name. – To reference symbols from the API that are within a NameSpace, precede the symbol name with the NameSpace name and an exclamation mark (!). For example, ’MyNameSpace!WaveformTable1’. – If the NameSpace is null, all symbols are put into the default NameSpace. – Multiple files may be loaded into the same NameSpace. Loading STIL files in the IVI API This section provides a brief introduction to loading STIL files, checking for errors, and storing STIL files. It briefly lists the methods/properties that load STIL files. Load STIL File IVI Method: PatternFile > PatternFileLoad This function loads a STIL, OpenXml, or bulk data file and creates objects based on the content of the file. If an element is loaded and there is already one by that name in the same namespace, an error is generated. – If the file suffix is .stil, the file is parsed as STIL. If the file suffix is .xlsx, the file is read as an OpenXML file with the DSR defined STIL data. Otherwise, the file is read as an ASCII text file that contains bulk pattern data in the DSR defined format. – If the file is in the BulkData format, the file must include a header (see “Using Bulk Data Files” on page 79) that defines the Signals to which the waveform characters are to be applied, as described in bulk data file format. The name of the generated pattern block is the base portion of the file name. For example, a file named patternfile.txt would produce a pattern block named patternfile. 76 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide KtMDSR-Specific STIL Using STIL Files – If an OpenXML file is loaded that does not contain either a PatternExec or a PatternBurst, they are created automatically for that file. If additional OpenXML files are loaded simultaneously, the names of the generated blocks may collide with the names created for the original file. Therefore, to load multiple OpenXML files simultaneously, you should include a definition of the PatternExec and PatternBurst. – Duplicate block names may appear within the pattern file. If they do, they must be unique names in the file. Accessing block names from IVI Most named blocks defined in STIL are accessible from IVI. In order to support loading multiple STIL files, the block names within a file may have an additional string concatenated with the name when the file is loaded. This is done by the customer specifying a STIL namespace parameter to the IVI API to load the file. Doing this has the following behaviors: – The namespace string is attached to the front of each name, and a ‘!’ separator is used. Note that any default blocks already have the ‘!’ separator and it is not duplicated. – References within that STIL file also have the namespace prepended. Example For the following source code: Timing { WaveformTable mywft { Period ‘8ns’; Waveforms { Data { 01 { ‘0ns’ D/U; } X { ‘2ns’ ForceOff; } } } } … Vector { Data = 0; } Vector { Data = 1; } When loaded with the namespace ’Foo’ appears as if it had been defined as follows: Timing Foo!Default { WaveformTable Foo!mywft { Period ‘8ns’; Waveforms { Foo!Data { 01 { ‘0ns’ ForceDown/ForceUp; } X { ‘2ns’ ForceOff; } } } Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 77 Using STIL Files STIL Examples } } … Vector { Foo!Data = 0; } Vector { Foo!Data = 1; } STIL Examples Complete programming examples (C++ using IVI-C and IVI-Com, C#, VisualBasic, etc.) are located in the following folders: C:/Program Files/IVI Foundation/IVI/Drivers/KtMDsr/Examples C:/Program Files (x86)/IVI Foundation/IVI/Drivers/KtMDsr/Examples 78 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide M9195A/B PXIe Digital Stimulus/Response User Guide 5 Using Bulk Data Files The BulkData format provides a way to load only the data that makes up the pattern. The result of a loaded a bulk data file is a pattern STIL component that can be used with the additional definition information from STIL, OpenXML, or the KtMDsr API. The BulkData format is a flexible format based on a text file. The content can be just the waveform characters that define the pattern, or waveform timing information and line numbers may be included. A bulk data file may have its load operation deferred until the pattern is compiled and written to memory. This allows much larger patterns to be loaded. When LoadBulkDataDeferred is used, a STIL component for the pattern is created, but it does not contain any pattern elements because the file is not actually read until compile time. At compile time, the file is read, compiled, and written to the DSR memory a small block at a time, and again, no STIL component pattern elements are created. This is done so that the DSR can handle very large data files (up to 125 million vectors) without exceeding computer memory. This chapter describes the syntax of the bulk data file. Header Line The header line establishes the format that will be used to read the bulk data file. The header line can be the first non-comment line in the file, or it can be provided via the API. By providing the header line in the API, an arbitrary file containing only the target data may be loaded. The header line has the following format: [[“Index”] ["WaveformTable"](<SignalList>)+ ] If the word Index is present, then an optional Pattern Index is parsed from the input. If it is not present, then the parser will automatically assign an index starting with 0. Indexes are numbered beginning with zero (0). If the word WaveformTable is present, then an optional WaveformTable name is parsed from the input. If it is not present, the parser will use the waveform table specified in the LoadBulkData function call for each vector in the pattern. The signal list is a space or comma (,) separated list of signals. This provides the list of signals associated with the columns of data. Note that although signal names are separated by white space and comma in the header line, no separator is required between signals in the pattern area. 79 Using Bulk Data Files The Bulk Data file Syntax The file is read using the following rules: – Header format [<optional index><optional WFT><signal>...] – Comments are designated with a hash (#) or double slash (//). Comments extend to the end of line. Blank lines are also treated as comments. – The first non-comment line of the file may be a header that indicates the syntax of the file. If the header begins with the word “Index”, a numeric Index is expected on each data line. If the header has the word “WaveformTable” then a WaveformTable is parsed on each line. Finally, the header has a list of signals, indicating the order and signal name to associate with each position in the data lines. – If no header line is present, the file is assumed to only contain bulk data with an unchanging waveform table and signals as provided via the API. – Data lines are parsed based on the header line. Individual waveform characters may be separated by comma or space or may be grouped together. - A hyphen (-) can be from the previous vectors, and used in place of a waveform character. This indicates that the waveform character on that signal should be repeated. In STIL this is indicated by leaving the waveform character unspecified, but it must be explicit in bulk data. Notes and examples Generally, values provided by the API override any values appear in the file. For example, if the signal list is provided in the API, any signals appears on the header line are ignored. The following are typical examples: # this file includes a header showing indexes # and waveform table [Index WaveformTable Signal1 Signal2 Signal3 Clock] 0 One 011T 1 011T #The waveform table defaults to previous line 2 100T 3 1 0 1 T #separators are ignored between characters 80 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Using Bulk Data Files The following example shows a more terse description. When using this syntax, the waveform table must be specified in the function invocation and the indexes are automatically generated counting from 0. # this datafile only defines file includes a header # showing indexes and waveform table [Signal1 Signal2 Signal3 Clock] 0 1 1 T 0 1 1 T 0 0 0 T 0 0 1 T This next example is the most dense, but has exactly the same meaning as the previous one, except the signal list must be provided via the API (and the comment has been left out). 011T 011100101- Here is an example bulk data file that does not include a header. Because this file does not include a header, it must be provided via the API. # U U U U U U U U U U U U L BulkData test file D U L H L L D U L H L L D U L H L L D U L H L L D U L H L L D U L H L L D U L H L L D U L H L L D U L H L L D U L H L L D U L - L L - D - U - L - - - - - L L L L L L This last example shows a bulk data file with a WaveformTable and no Index: # Test file for BulkData [WaveformTable Sig1 Sig2 Sig3 Sig4 Sig5 Sig6 Sig7] WFT1 U D U L H L L WFT1 U D U L H L L U D U L H L L WFT2 - - - - WFT1 U D U L H L L U D U L H L L WFT1 U D U L H L L WFT1 U D U L H L L WFT1 U D U L - L L WFT1 U D U L - - L Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 81 Using Bulk Data Files Loading a Bulk Data File Loading a Bulk Data File There are two API methods of loading a Bulk Data file: LoadBulkData and LoadBulkDataDeferred. Both methods must follow the rules described previously. LoadBulkData This method loads the bulk data file into a pattern of a specified name using the bulk data format. Header in file can be over-riden here. 82 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide M9195A/B PXIe Digital Stimulus/Response User Guide 6 Using OpenXML (Spreadsheet) Data Files OpenXML files are spreadsheet files where the content is based on STIL. OpenXML files do not provide any features or capabilities that are not available from STIL, but they do provide the following benefits: – They are a convenient tool for editing several blocks at the same time. The spreadsheet “sheet” model provides a convenient way to organize the data needed to fully describe a pattern. – For many applications the spreadsheet is useful for calculating and manipulating values. For example, edge times or voltages can be calculated with formulas. – For some applications, the actual bulk data that makes up the pattern can be easily acquired in a spreadsheet. – You do not have to learn and deal with the syntax of the STIL language. However, you do need to deal with the syntax required by the M9195A/B OpenXML input. Comma-separated lists are not supported in OpenXML files. OpenXML Files M9195A/B OpenXML files are standard spreadsheet files (in a workbook) that contain all of the necessary information (signals, waveform tables, DCLevels, Sites, etc.) for the M9195A/B module. Each “sheet” in the workbook corresponds to a specific type of information. The M9195A/B OpenXML format is based on the STIL grammar. STIL is heavily based on “blocks”. With only minor exceptions, the sheets in the OpenXML workbook correspond to the STIL blocks. Each sheet name (the string on the tab across the bottom in Excel). Is both the default type of block, and the name for the block generated. For example, the default sheet has a tab called “Pattern” and a pattern block of name pattern is generated from that sheet. The M9195A/B OpenXML parser allows the OpenXML to override the default name and type by putting an entry in cell A1 (the upper left corner). An entry of the form: 83 Using OpenXML (Spreadsheet) Data Files <type>:<name> Is used to indicate that this sheet if of the specified type and name. For example if the following were in cell A1: Pattern:SPI_Test Then that sheet is parsed as a Pattern sheet with the name “SPI_Test”. Using this syntax numerous patterns (or other blocks) can be defined. A rectangular array of cells is taken from each sheet to define the contents of that sheet. It can be preceded by comment lines, and any arbitrary data can follow it. The rectangular array always beings with a title row that defines the columns in the table. These column headers are defined for each sheet type. General Syntax Rules The following rules generally describe how OpenXML input is parsed. – Formatting (colors, fonts, sizes, cell sizes) are ignored – Generally strings are case sensitive – If a value is generated with a spreadsheet formula, that value is used as it appears in the spreadsheet tool. If a value is entered as a formula in string, then that string will transferred to the instrument driver and evaluated by the driver. This can be useful when using formula's that are recalculated in the driver, or when using IEEE 1450 symbols such as “@”. – An entire line can be commented out by making the first non-blank cell on a row begin with “#” or “//”. The DSR module uses the following rules to convert an OpenXML file into STIL Components: – The KtMDsr OpenXML syntax uses the sheets in the file to define STIL blocks (STIL Components). The type of sheet is taken from the sheet name or cell A1 (see below). The following are the kinds of sheets: -- Signals. The Signals sheet defines the STIL signals and the STIL SignalGroups. The name of this sheet is always Signals since Signals are global and can never have a block name. -- DCLevels. The DCLevels sheet defines a STIL DCLevels block. -- WaveformTable. The WaveformTable sheet defines a STIL WaveformTable block. -- Pattern. The Pattern sheet defines a STIL Pattern block. -- Site. The Site sheet defines a STIL Site block. – The OpenXML reader will look at cell A1 and at the name of the sheet to determine the type and name of the sheet. 84 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Using OpenXML (Spreadsheet) Data Files -- To specify the type and name in cell A1, the contents of the cell must be a string containing a colon. The substring to the left of the colon is the type of sheet. The substring to the right of the colon indicates the sheet name. For example, Pattern:Beta -- To specify the type using the sheet name, the sheet name must start out with one of the defined type names. The name of the sheet may be optionally specified by concatenating that on the end of the name with an optional hyphen (-) separator. For example, Pattern-Beta would indicate this is a pattern sheet and it is called Beta. – The pattern reader will ignore comments. These are lines that: -- begin with the hash character (#) character -- begin with a double slash (//) -- are blank lines – The pattern reader looks for a rectangular table. The width of the table is defined by the first non-comment line. This first non-comment line contains headers that define the columns. -- The table extends till the end of the sheet or a blank line. Comments may be added to the right of the table once the header has established the width. To add a comment to the right of the header, start it with a comment character (# or //). – In cells where a numeral is required, either a spreadsheet number or a string may be entered. If a string is entered, the “Numeric Expressions” evaluator is used to convert the string to a number. This permits using engineering units and prefixes. For example, a time can be entered as the string "10ns". Additionally, the numeric variables implemented by the KtMDsr driver may be used. This permits deferring the evaluating of the strings until the pattern is activated at which time the expressions may be evaluated with new variables using the ReevaluateExpressions function. – In general, formatting is ignored. It is generally useful to use cell shading to improve the readability of a pattern; however, it is ignored by the KtMDsr. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 85 Using OpenXML (Spreadsheet) Data Files Sheet Types The following table lists the types of sheets used in an OpenXML spreadsheet: Sheet type Summary of usage and notes on usage. Signals Specify signals and groups. Same usage as the STIL Signal and SignalGroup blocks put together. Only one Signal sheet is permitted. WaveformTables Define WaveformTables, multiple allowed DCLevels Specify the DCLevels for each signal, multiple allowed PatternExec Define the PatternBurst and the PatternExec. Multiple are allowed. PatternBursts defined in one PatternExec may be used in other PatternExecs. Pattern Pattern definition, multiple allowed Settings Optional Sheet that contains general settings for the pattern MacroDef Optional Sheet. A MacroDef sheet is very similar to a Pattern sheet, the difference is that the MacroDef sheet is made up of macro definitions. Thus, the MacroDef sheet permits the pattern data to include MacroDef/EndMacro statements whereas the Pattern sheet does not. The following pages describe in detail the individual spreadsheet “sheets” along with very simple examples of each sheet. Note that each example sheet shows several comments along with the actual data. Signals Sheet This sheet defines the Signals and the SignalGroups used in the pattern. Two columns are required: Signal and Direction. Column Definition Signal Name of the signal or signal group. Follows STIL syntax. This column may include a range or signal reference expression. Names that define a range are permitted for example: Data[0..15] This defines 16 signals of name: Data[0], Data[1], ],..., Data[15]. When the Signal column contains a (valid) signal reference expression, then the signal name is taken to be a signal group and is defined with that expression. For example, ("Signal1+Signal2"). Direction Defines the signal direction: either In, Out, or InOut. These are defined DUT-centric. For example, "Out" means an output from the DUT, which as an input to the DSR. 86 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Using OpenXML (Spreadsheet) Data Files In addition, this same sheet can be used to define a signal group. That is, a single name that can be used to refer to a group of signals. Optional comments used in this Open XML example Actual Signal data used in this Open XML example Simple example of a Signals sheet in an OpenXML Spreadsheet Site Sheet The Site sheet defines the Channel that a Signal should be mapped to on the M9195A/B. The ordinal is used when reading values from the site. The ordinal is used to set the element of the array that contains the value for this Channel, or the bit position where this Channel's result is. Column Definition Signal The signal name as defined. A signal group or range does not make sense because each needs its own Channel setting Channel The channel on the M9195A/B (0-15, and 20-23) Ordinal The Ordinal column specifies the bit location (or array location) where data associated with this Signal will be placed. In the case of M9195A/B Pattern, Static and Capture operations, this is a zero-based bit position. For PPMU operations this the element of the array that contains data for this Signal. . Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 87 Using OpenXML (Spreadsheet) Data Files Actual Site data used in this Open XML example Optional comments used in this Open XML example Simple example of a Site sheet in an OpenXML Spreadsheet WaveformTable Sheet The WaveformTable sheet defines a single waveform table. Several may be defined. A single waveform table defines how the DSR should produce all the waveform characters that appear in the pattern definition. Waveform is unique in that it sets a value based on the upper left corner. The upper left corner defines the Period for that table. Column Definition Period=<period> The entries in this column are the signal names. This can be “Signal Reference Expressions” or simple signal names. Character The waveform character for which the transitions are being defined. As with STIL, multiple characters can be defined on the same line. To do so, each character is separated with a slash (/). Then the actions corresponding to each character is separated with a slash. 88 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Using OpenXML (Spreadsheet) Data Files Column Definition Time (up to 3 columns) The nth time column is the time at which to apply the action specified in the nth action column. Action (up to 3 columns) The action columns specify an action character. Characters are defined below. The following table defines the Action characters that are supported Character Action Definition U Force Force the output to a 1 D Force Force the output to a 0 Z Force Stop forcing, and do not drive the output P Force Continue Force from previous cycle L Compare Compare the input with a low H Compare Compare the input with a high T Compare Verify the input is Three-stated, that is, neither high nor low X Compare Do not compare, doesn't matter what the signal is, but log data Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 89 Using OpenXML (Spreadsheet) Data Files Note that the STIL pattern of defining multiple waveform characters on a single line is supported. For example, waveform characters A,B,C, and D are all defined by this line: Character time action time action time action A/B/C/D 10ns D/U/D/U 150ns Z 190ns X/X/L/H Optional comments used in this Open XML example Actual WaveformTable data used in this Open XML example Simple example of a Waveform Table sheet in an OpenXML Spreadsheet 90 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Using OpenXML (Spreadsheet) Data Files DCLevels Sheet The DCLevels sheet is used to define a STIL DCLevels block. There can be multiple occurrences of DCLevels sheets, but each must have a unique name. The DCLevels sheet has the following columns: Column Signal Definition “Signal Reference Expressions” that describes the signals that this DC Level defines VOH The output high voltage from the DUT. This is the minimum voltage that will be treated as High as measured at the DUT output VOL The output low voltage from the DUT. This is the maximum voltage that will be treated as Low as measured at the DUT output VHYST This is the hysteresis used when measuring DUT outputs. The input value is rounded to either 0, 75mV, or 150mV VIH This is the input to the DUT. This is the voltage that will be presented at the DUT input for a High. VIL This is the input to the DUT. This is the voltage that will be presented at the DUT input for a Low. IOL This is the low output current for use with the active load. To turn on the active load, set values other than NaN for Ioh, Iol, and Vcom that is injected into the DUT when the DUT is driving When active load is on, and the DUT voltage output exceeds Vcom, Ioh is output. If the DUT voltage is less than Vcom, Iol is input. IOH This is the high output current for use with the active load. To turn on the active load, set values other than NaN for Ioh, Iol, and Vcom that is injected into the DUT when the DUT is driving When active load is on, and the DUT voltage output exceeds Vcom, Ioh is output. If the DUT voltage is less than Vcom, Iol is input. VCOM This is the commutation voltage for use with the active load. To turn on the active load, set values other than NaN for Ioh, Iol, and Vcom that is injected into the DUT when the DUT is driving When active load is on, and the DUT voltage output exceeds Vcom, Ioh is output. If the DUT voltage is less than Vcom, Iol is input. VIT This is the termination voltage used with the 50 termination. To turn on this mode, set the Vit value and leave the active load settings of Ioh, Iol, and Vcom blank (or put in 'NaN' for not a number). VHH VHH is the high voltage output used in the high voltage output mode on the high voltage channels (20–23). Any cell within the table can also specify a logical level from a standard logic family. Once a standard logic family is encountered, it is used for the rest of the blank cells in the table. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 91 Using OpenXML (Spreadsheet) Data Files The following standard logic families are supported: – LVCMOS_1_2 – LVCMOS_1_8 – LVCMOS_2_5 – CMOS_5 – TTL – LVTTL – LVDS – PECL All signals must have DCLevels specified for them. NaN is defined as “Not a Number.” It is a numeric data type value representing an undefined or unrepresentable value, especially in floating-point calculations. Optional comments used in this OpenXML example Actual DCLevel data used in this OpenXML example FSimple example of a DCLevels sheet in an OpenXML Spreadsheet 92 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Using OpenXML (Spreadsheet) Data Files PatternExec Sheet If the optional PatternExec sheet is not defined, a PatternExec and PatternBurst is automatically created named PatternExec_<filename> and PatternBurst_<filename> respectively. The PatternBurst contains the single default pattern (Pattern!Default), and the PatternExec references that PatternBurst and the default DC Levels (DCLevels!Default). The PatternExec sheet permits explicitly defining a PatternExec instead of using the abbreviated syntax in the Settings sheet. The PatternExec provides the PatternBurst and the DCLevels that will be used to generate a named pattern. The syntax for specifying the PatternBurst is a plus (+) separated list of pattern sheets. The syntax for specifying the DCLevels is just the name of the DCLevels sheet. The columns in the PatternExec sheet are: Column Description SheetType This syntax indicates if this line is defining a PatternBurst or a DCLevels. Thus, this column needs to contain either the string "PatternBurst" or the string "DCLevels". Name This column identifies the names of the sheets to be used. For PatternBurst, it is a plus (+) separated list of sheet names. For DCLevels it is a single sheet name. Pattern Sheet The Pattern sheet has the pattern definition. Multiple pattern sheets can be defined. The pattern table has the following columns: Column Name Definition Index This is an optional column that permits entering a pattern index. The pattern index is returned with the comparison response data, so including it in the pattern makes it easier to identify the pattern line that was responsible for a given response. If the pattern index is not filled in, consecutive numbers starting from 0 are used. When assigning an index, it is beneficial to increment the previous line by one. This creates a more efficient compiled pattern than incrementing the index by other amounts. WaveformTable This is an optional column that permits entering a WaveformTable for this row. Using this, a different WaveformTable, defining different characters, timings or period can be used for each vector. If the column is specified, but the entry is blank, this vector will be produced with the same WaveformTable as the previous vector. If no column is specified, and if there is a single WaveformTable defined, that will be used. Signal columns Additional columns can be put in the pattern sheet, where each column defines another signal. The column header is merely the name of the signal as defined on the Signal sheet. Note that if the signal sheet defines a group of Signal using a syntax like: "Chan[0..10]", a separate column must be defined in the pattern for each Chan signal using the syntax: Chan[0], Chan[1], etc. (for all 11 signals in the range). Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 93 Using OpenXML (Spreadsheet) Data Files Column Name Definition Control This is an optional column for entering control information. This is an optional column. If not included, the row is a vector with no label: 94 Label: Appears on a line with a normal vector. The Control column just contains the label following by a colon. For example: "HandleErr:" X:Label Appears on a line with a normal vector. The control column has X:<label>. For example: "X:Trial1". GoTo Vector description must be blank. The control column contains Goto <label>. For example: "Goto HandleErr". Loop / EndLoop Loop and EndLoop constructs must be on a line with a blank vector. The control column for Loop has Loop <count>. For example: Loop 42. MatchLoop / EndLoop MatchLoop and EndLoop constructs must be on a line with a blank vector. The control column for MatchLoop has MatchLoop <count>. For example: MatchLoop 42. The loop will execute either the number of times specified in <count>, or until all the compares in the loop test true. No response data is captured within a MatchLoop. WatchLoop / EndLoop WatchLoop and EndLoop constructs must be on a line with a blank vector. WatchLoop Indicates a block should be repeated until an external trigger event is received. WatchLoop syntax is: WatchLoop <LoopCount><Trigger> EndLoop EndLoop is used with all loop types to identify the end of the loop. This is the same as the close brace (}) in STIL. EndLoop must be on a line with a blank vector. MacroDef / EndMacro MacroDef and EndMacro constructs must be on a line with a blank vector. The control column for MacroDef has MacroDef:<MacroName>. For example: MatcroDef:OutputByte. MacroDef blocks can only be defined in a MacroDef sheet. Shift / Endshift Shift and EndShift operations must appear on a line with a blank vector. Vectors within the Shift block are repeated until the macro parameters have all been used. Shift and EndShift can only appear in a MacroDef sheet. Macro Invocation Macro's are invoked with the syntax Macro:<MacroName>. For example: Macro:OutputByte. The signal columns in the pattern contain parameters that are passed to the macros. In STIL, a separate parameter may be passed for each signal, therefore in the OpenXML format, each signal column can designate another parameter. STIL macro parameters can contain multiple characters. This is useful if the macro is defined using the special waveform character percent (%). Each time the macro expander sees the percent (%) character, another waveform character is used from the string. If the macro definition uses the waveform character hash (#), this indicates that a single character substitution should be done. Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Using OpenXML (Spreadsheet) Data Files Actual Pattern data used in this Open XML example Optional comments used in this Open XML example Simple example of a Pattern sheet in an OpenXML Spreadsheet Another example of a Pattern Sheet showing MacroDefs: Simple example of a Pattern sheet with a MacroDefs call Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 95 Using OpenXML (Spreadsheet) Data Files MacroDefs Sheet Similar to Pattern sheet, the optional MacroDefs sheet encloses all of the pattern code in a Macro/EndMacro. MacroDef:<name> -- Defines a macro with the given name EndMacro -- Defines a match loop. The count is the number of passes to dwell in the loop, Within a macro, a Shift may be provided. Shift -- On a line by itself with no vector defined. Shift is a parameter substitution operation. It indicates that the parameters from the input parameter list should be executed until the list is exhausted. Shift may only be used within a Pattern that is designated as a macro using MacroDef. EndShift -- On a line by itself with no vector defined Simple example of a MacroDefs sheet in an OpenXML Spreadsheet MacroDef statements and the WaveformTable syntax or a Vector must be on the same line. If they are not on the same line, a syntax error will occur. In order to use Shift and EndShift, the Signal Sheet must have ScanIn and ScanOut defined. ScanIn and ScanOut requires a length value, which is the number of characters to be shifted. Note that while STIL does not require a length, it is required in the OpenXML implementation of ScanIn and ScanOut. 96 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide Using OpenXML (Spreadsheet) Data Files Figure shows another MacroDefs sheet example showing the use of Shift/EndShift: MacroDefs sheet example showing Shift/EndShift Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide 97 Using OpenXML (Spreadsheet) Data Files Settings Sheet The settings sheet is optional and contains general settings for the pattern. The columns in the settings sheet are: Column Definition Sheet This is the name of the sheet to set. At this time, the only syntaxes supported are: • Sheet is set to "PatternExec" and the setting to "PatternBurst". The value is set to a <Name>=<plus (+) separated list of patterns to execute>. A PatternExec of the specified name is created with a pattern burst composed of the listed patterns. • Sheet is set to the name of a Site sheet. The setting is set to Trigger <0|1|2|3|4|5> and Marker <0|1|2>. The value is set to a trigger source. For example "SoftwareTrigger0". This syntax binds the trigger source to the Trigger specified in the pattern, within the WatchLoop instructions. Setting This is the parameter to set. The allowed values are dependent on the sheet type. Value This is the value to set the parameter to. The meaning is dependent on the setting and sheet type. Using an OpenXML file with the M9195A/B IVI Functions The following IVI functions may be used to load an OpenXML file to the module: Method Description Load This function loads a STIL or OpenXml file and creates objects based on the content of the file. The objects created are dependent on the actual file. When an element is loaded and one by that name already exists in the same namespace, the duplicate element will replace the original one. LoadAndUpdateOpenXml This function loads an OpenXml file and creates STIL components based on the content of the file. The STIL Components created are dependent on the file contents. Syntax errors are written to a new sheet in the original OpenXml file. Syntax errors can either be: – Read out one at a time from the API – Displayed by the SFP – Incorporated into the Spreadsheet file as an additional sheet. 98 Keysight M9195A/B PXIe Digital Stimulus/Response Module User Guide This information is subject to change without notice. © Keysight Technologies 2016 *M1995-90005* M9195-90005 www.keysight.com