Reference: ! = Mandatory * = Optional - = Flexible % = Function/Method Instrument incl. DUTs ===================== ! ! syntax * name * description * picture * manual - parameters - variables - groups - exclusions - organization (bitfield) % getParameter % setParameter % saveState % loadState % loadDefault % Parameter ========= ! ! setValue ! getValue * (setting, compound, variable) * valueList * defaults * states * constraints * variables * plugin: - aliases - getCommand/setCommand * code - getArguments/getArguments - scope - name - description - bits Group ===== ! id * parameters * groups - name - description Setup ===== ! * instruments * parts * software * connections * jumpers * docs (datasheets/schematics etc) - name - description - time - photo - dut Measurement =========== ! * instruments * operator - name - description - instruments {nr, &ref, autopoll, autowrite} - setup - results - sequence - script - session * start * stop * pause * plotResults * generateScript Parameter ========= - name - description - value/sweep - function Session ======= - log - history * log * addHistory Result ====== - time - parameter - value GUI === {Instruments} * addInstrument * removeInstrument {DUT} * addDUT * removeDUT Open points: ============ - Directory structure (what is local, what is in SVN, how are measurements separated)? - How is a session defined exactly? - How are measurement results saved and loaded? - Meta data in order to search and load measurements and results? - SQL database for results? - How to implement concurrent measurements? - What are useful triggers (time, parameter, ...)? Database Structure for Measurements: ==================================== - *ID - Description (e.g. IF amplifier gain variation over supply and temperature.) - *Start Date/Time - Operator - Department (e.g. Chipset) - Project (e.g. Dom Analog) - Measured DUT (e.g. Characterization Board 639) - Measured Target (IF Amplifier) - *Measured Parameters (e.g. temperature, vddio, vddc, i_vddio) - *Measurement ZIP * = Automatically added. Setup Phase: ============ - Start with reset instruments (loading a configuration is possible later). - Allow adjustments via GUI and via instrument panel (scan for changed parameters). => Log all changes. - Allow to save states at all times. - Provide a record button, which starts the measurement setup. - In record mode: Provide means to select loop variables and recorded values. - Allow to select x/y-Axis and group results. Before Measurement: =================== - Name the measurement. - Verify, that all necessary data is present (DUT, image, description) - Verify, that all scripts and instrument definitions are checked in and all is up to date. - Start a separate measurement log. - Save and check in the measurement setup file, which can be loaded again. Measurement: ============ - Write data to a file. - Visualize data in real-time. After Measurement: ================== - Provide possibility to change necessary data as DUT, image, description etc. - Provide tools to reshape the data (set x/y-Axis, choose shown columns etc, filter data). -> Like Pivot-Table in Excel. - Allow exporting selected data to CSV. - Show data for copy & paste into Python, Matlab and Excel (maybe a format string?) - Allow to combine measurements (e.g. set different voltage/temperature by hand). => Allow to set user-defined variables after the measurement. - Ask to check in the results (zip the files). Hooks ===== * plugins_loaded * user_authenticated * setup_theme * init * cc_loaded Plugins (must load) ======= * Measurement * Intruments * Data types Database stucture ================= * char (Characterization) - ID, name * char_meta (Characterization meta data) - ID, char, key, value * meas (Measurement) * meas_meta * value * value_meta * conf (Configuration) - ID, meas, dev, key, value * conf_meta