Implementation ============== - VirtualEnv distribution to PCs - Devices stored in database - GUI from web server - Scripts stored in revision control system - Measurement stored in MySQL database and/or local SQLite database - Measurement convertible to CSV, Excel and Matlab Components ========== * Device control - Find devices - Connect to devices - Initialize devices - Control devices - Observe devices/external changes * Administration - Project management - Add/remove Projects - Change meta data - DUT management - Add/remove DUTs - Change meta data - Add/remove versions - Add/remove blocks - Part management - Add/remove parts - Change meta data - Device management - Add/remove devices - Add/remove device parameters * Setup control - Select project - Select DUTs - Select parts - Manage connections * Log control - Add/remove logs - Inspect entries * Measurement control - Add/remove parameters - Add/remove loops - Order loops - Create functions - Keep history - Record/Replay actions - Add/remove breakpoints Driver ====== IDEAL MEASUREMENT ================= - reproducible - well documented - clear and complete results * Log project/version (Dom revA), operator's name (tcve) * Log Lab PCs (lemming 2341:0C21:23AD0:18DC) * Start software, log version of all tools (SVN version 54123) * Log date/time/temperature/location of environment (13.07.2013, 08:15, 27.2°C, Thalwil) * Take devices, log SNs (if any), initialize them to a defined setting. (Keithley 2602B #213-43523, Rohde&Schwarz FSP, Char'board 1274) * Take components, log SN if possible (Katja, Lab PCB). * Mark the DUT (Dom). * Note connections between devices and components (Katja/3.3V->Char'board/VDD_CON) * Take a picture of the setup and save/log it. * Log anything else worth noticing (the clouds are fluffy) * Change a parameter (set Keithley mode to voltage source, apply 1.2V to channel A, turn on channel A). * Log the change device/time/previous/current and allow UNDO * Change a connection (connect FSP/RFin to Char'board/DAC_I) * Log the change connection/time/previous/current and allow UNDO * Measure a parameter (get Dom LPF bandwidth setting) * Log the time/value * Mark parameters to be saved for measurement loops. * Mark parameters/connections to be set for measurement loops. * Set ranges for loop set parameters. * Create measurement database with set and get parameters and save loop results there. * Log measurements time, measurement id, set and get parameters. FLOW ==== - Log in - Work on project (-> Measurement) - Select project, version - Select measurement - Select devices and DUTs - Select components - Select connections - Take a picture - Take additional notes - Name measurement - FEATURES ======== - web based GUI - shell access to devices, measurement and log tasks - scripts saved and executable with Python - move measurements from local machine to server WHAT IS NOT COVERED YET ======================== - complex parameters (frequency setting in Dom from dividers) WHAT IS NOT SOLVED YET ====================== - parameter constraints Database ======== Project (Dom) (Matterhorn AC) - ID/Name/Description Dom/Multichannel GNSS MA_AC/Analog Companion for Matterhorn Baseband -> Version -> Blocks -> Characterization -> DUT Version - ID/Name/Description revA-FIB3/eFuse FIB rev. A MPW0723/MPW Release 0723 -> Project Block - ID/Name/Description RF/RF Receiver PMU/Power Management Unit -> Project Characterization (IF Amplifier) - ID/Name/Description RF Power LDO Stability -> Project -> Version -> Blocks -> Measurement DUT - ID/Name/Description Dom M8030 MA_AC Horny - Serial number ID2073 ID3211 -> Project -> Version Component (Katja A) (Resistor) - ID/Name/Description Katja Char-Board 470 kOhm - Serial number ID431 -> Notes Component Notes - ID - Title Changed Relais - Text Relais was broken. -> Author Setup - ID/Name/Description Setup for IF amp char -> Components -> Devices -> Connections Setup Meta - ID/Name -> Setup - Key - Value ==> Photo Connection - ID/Name -> Setup - From part Dom V_CORE Dom XTAL_IN - To part Katja A 3V3 TCXO XTAL_IN - Connector Wire Cut - Comment Need to Program eFuse Log - ID - Time - Source - Event Measurement - ID/Name/Description - DUT - Log - Operator (Login for the Characterization Center) - Start Date/Time - Machine/MAC, IP - Script/Version -> Characterization -> Setup Device (Bitfield) (SCPI) - ID/Name/Description Dom RF I2C FSP-3 -> Parameters -> Variables -> Groups -> Settings -> Defaults Device Meta - ID/Name -> Device - Key - Value ==> Photo, Manual Parameter (Bitfield) (SCPI) - ID/Name/Description d_ifa/IF Amp Bias marknoise/Noise Marker - Device ID(RFI2C) ID(FSP-3) - Type Integer List - Constraints 0:15 "ON, OFF" - Value (not in DB) Parameter Meta (Bitfield) (SCPI) - ID/Name bitfield_position scpi_read_command -> Parameter ID(d_ifa) ID(marknoise) - Value "20,19,18,14" "CALC:MARK{marker}:FUNC:NOIS?" ==> read_only, scpi_id, ... Variable (Bitfield) (SCPI) - ID/name bitfield_subfield scpi_variable - Device ID(RFI2C) ID(FSP-3) - Name "Register Bank" "Marker" - Type Integer String - Constraints 1:2 "A,B,C,D" Group (Bitfield) (SCPI) - ID/Name/Description if_amp/IF Amplifier Settings freq/Frequency - Parameters {en_ifa,d_ifa,ifa_amp} {startfreq,stopfreq,centfreq,fspan} Constraints (Plugin) - Name - Check function - (De-)Serialization function Type (Plugin) - ID/Name/Description - Check function - (De-)Serialization function Loop - ID - Parent loop - Loop variable - Loop values Result - ID - Measurement - Date/Time - Settings Value - ID - Result