diff --git a/acf/deimos.acf b/acf/deimos.acf new file mode 100644 index 0000000..3b29ae0 --- /dev/null +++ b/acf/deimos.acf @@ -0,0 +1,412 @@ +[CONFIG] +BIGBUF = _ARCHON_FRAMEBUFS +FRAMEMODE = _ARCHON_FRAMEMODE +LINECOUNT = _LINENUM +PIXELCOUNT = 100 +RAWENABLE = _RAW_ENABLE +RAWENDLINE = _RAW_ENDLINE +RAWSAMPLES = _RAW_SAMPLES +RAWSEL = _RAW_SELECT +RAWSTARTLINE = _RAW_STARTLINE +RAWSTARTPIXEL = _RAW_STARTPIXEL +SAMPLEMODE = _ARCHON_SAMPLE_MODE +SHP1 = _FIRST_RESET_SAMPLE +SHP2 = _LAST_RESET_SAMPLE +SHD1 = _FIRST_VIDEO_SAMPLE +SHD2 = _LAST_VIDEO_SAMPLE +TAPLINE0 ="AM37L,1,0" +TAPLINE1 ="AM38R,1,0" +TAPLINES=2 +TRIGOUTFORCE=0 +TRIGOUTINVERT=0 +TRIGOUTLEVEL=0 +TRIGOUTPOWER=1 +PARAMETER0="readout_enable=1" +PARAMETER1="integrate_enable=0" +PARAMETER2="integrate_ms=0" +PARAMETER3="integrate_s=0" +PARAMETER4="framecount=0" +PARAMETERS=5 +LINE0=StartSeq: +LINE1="STATE000; if integrate_enable CALL CheckIntegrate" +LINE2="STATE000; if readout_enable CALL FrameReadout" +LINE3="STATE000; GOTO StartSeq" +LINE4=CheckIntegrate: +LINE5="STATE000; if framecount CALL Integrate" +LINE6="STATE000; framecount--" +LINE7=Integrate: +LINE8="STATE000; CALL SetupIntegration" +LINE9="STATE000; CALL Wait1ms(integrate_ms)" +LINE10="STATE000; CALL Wait1s(integrate_s)" +LINE11="STATE000; CALL TearDownIntegration" +LINE12=FrameReadout: +LINE13="STATE000; CALL ReadoutBegin" +LINE14="STATE000; CALL ReadPixels(1074)" +LINE15="STATE000; CALL LineReadout(4104)" +LINE16="STATE000; CALL LineReadout(50)" +LINE17=LineReadout: +LINE18="STATE000; CALL TransferToSerialRegister" +LINE19="STATE000; CALL ReadPixels(50) CALL ParallelForwardSegment1" +LINE20="STATE000; CALL ReadPixels(341)" +LINE21="STATE000; CALL ParallelForwardSegment2" +LINE22="STATE000; CALL ReadPixels(341)" +LINE23="STATE000; CALL ParallelForwardSegment3" +LINE24="STATE000; CALL ReadPixels(341)" +LINE25="STATE000; CALL ReadPixels(1)" +LINE26=LineTransfer: +LINE27="STATE000; STATE000(15998)" +LINE28="STATE000; RETURN LineTransfer" +LINE29=TransferToSerialRegister: +LINE30="STATE000; STATE000(2999)" +LINE31="STATE001;" +LINE32="STATE002; RETURN TransferToSerialRegister" +LINE33=Wait1us: +LINE34="STATE000; STATE000(98)" +LINE35="STATE000; RETURN Wait1us" +LINE36=Wait1ms: +LINE37="STATE000; STATE000(99998)" +LINE38="STATE000; RETURN Wait1ms" +LINE39=Wait1s: +LINE40="STATE000; STATE000(99999998)" +LINE41="STATE000; RETURN Wait1s" +LINE42=SetupIntegration: +LINE43="STATE003; RETURN SetupIntegration" +LINE44=TearDownIntegration: +LINE45="STATE004; RETURN TearDownIntegration" +LINE46=ReadoutBegin: +LINE47="STATE005;" +LINE48="STATE006; RETURN ReadoutBegin" +LINE49=ParallelForwardSegment1: +LINE50="STATE000; RETURN ParallelForwardSegment1" +LINE51=ParallelForwardSegment2: +LINE52="STATE000; RETURN ParallelForwardSegment2" +LINE53=ParallelForwardSegment3: +LINE54="STATE000; RETURN ParallelForwardSegment3" +LINE55=ReadPixels: +LINE56="STATE000; STATE000(16)" +LINE57="STATE007;" +LINE58="STATE008; STATE000(16)" +LINE59="STATE000; RETURN ReadPixels" +LINES=60 +MOD1\ENABLE1=1 +MOD1\FASTSLEWRATE1=10 +MOD1\SLOWSLEWRATE1=1 +MOD1\ENABLE2=1 +MOD1\FASTSLEWRATE2=10 +MOD1\SLOWSLEWRATE2=1 +MOD1\ENABLE3=1 +MOD1\FASTSLEWRATE3=10 +MOD1\SLOWSLEWRATE3=1 +MOD1\ENABLE4=1 +MOD1\FASTSLEWRATE4=10 +MOD1\SLOWSLEWRATE4=1 +MOD1\ENABLE5=1 +MOD1\FASTSLEWRATE5=10 +MOD1\SLOWSLEWRATE5=1 +MOD1\ENABLE6=1 +MOD1\FASTSLEWRATE6=10 +MOD1\SLOWSLEWRATE6=1 +MOD1\ENABLE7=1 +MOD1\FASTSLEWRATE7=10 +MOD1\SLOWSLEWRATE7=1 +MOD1\ENABLE8=1 +MOD1\FASTSLEWRATE8=10 +MOD1\SLOWSLEWRATE8=1 +MOD1\ENABLE9=1 +MOD1\FASTSLEWRATE9=10 +MOD1\SLOWSLEWRATE9=1 +MOD1\ENABLE10=1 +MOD1\FASTSLEWRATE10=10 +MOD1\SLOWSLEWRATE10=1 +MOD1\ENABLE11=1 +MOD1\FASTSLEWRATE11=10 +MOD1\SLOWSLEWRATE11=1 +MOD1\ENABLE12=1 +MOD1\FASTSLEWRATE12=10 +MOD1\SLOWSLEWRATE12=1 +MOD3\ENABLE1=1 +MOD3\FASTSLEWRATE1=500 +MOD3\SLOWSLEWRATE1=100 +MOD3\ENABLE2=1 +MOD3\FASTSLEWRATE2=500 +MOD3\SLOWSLEWRATE2=100 +MOD3\ENABLE3=1 +MOD3\FASTSLEWRATE3=500 +MOD3\SLOWSLEWRATE3=100 +MOD3\ENABLE4=1 +MOD3\FASTSLEWRATE4=500 +MOD3\SLOWSLEWRATE4=100 +MOD3\ENABLE5=1 +MOD3\FASTSLEWRATE5=500 +MOD3\SLOWSLEWRATE5=100 +MOD3\ENABLE6=1 +MOD3\FASTSLEWRATE6=500 +MOD3\SLOWSLEWRATE6=100 +MOD3\ENABLE7=0 +MOD3\FASTSLEWRATE7=1 +MOD3\SLOWSLEWRATE7=1 +MOD3\ENABLE8=0 +MOD3\FASTSLEWRATE8=1 +MOD3\SLOWSLEWRATE8=1 +MOD3\ENABLE9=0 +MOD3\FASTSLEWRATE9=1 +MOD3\SLOWSLEWRATE9=1 +MOD3\ENABLE10=0 +MOD3\FASTSLEWRATE10=1 +MOD3\SLOWSLEWRATE10=1 +MOD3\ENABLE11=0 +MOD3\FASTSLEWRATE11=1 +MOD3\SLOWSLEWRATE11=1 +MOD3\ENABLE12=0 +MOD3\FASTSLEWRATE12=1 +MOD3\SLOWSLEWRATE12=1 +MOD9\HVLC_V1=0.00 +MOD9\HVLC_ORDER1=0 +MOD9\HVLC_V2=20.0 +MOD9\HVLC_ORDER2=0 +MOD9\HVLC_LABEL2=SCI Guard Drain +MOD9\HVLC_V3=0.00 +MOD9\HVLC_ORDER3=0 +MOD9\HVLC_V4=0.00 +MOD9\HVLC_ORDER4=0 +MOD9\HVLC_V5=17.0 +MOD9\HVLC_ORDER5=0 +MOD9\HVLC_LABEL5=SCI E Reset Drain +MOD9\HVLC_V6=17.0 +MOD9\HVLC_ORDER6=0 +MOD9\HVLC_LABEL6=SCI F Reset Drain +MOD9\HVLC_V7=0.00 +MOD9\HVLC_ORDER7=0 +MOD9\HVLC_V8=0.00 +MOD9\HVLC_ORDER8=0 +MOD9\HVLC_V9=0.00 +MOD9\HVLC_ORDER9=0 +MOD9\HVLC_V10=0.00 +MOD9\HVLC_ORDER10=0 +MOD9\HVLC_V11=0.00 +MOD9\HVLC_ORDER11=0 +MOD9\HVLC_V12=0.00 +MOD9\HVLC_ORDER12=0 +MOD9\HVLC_V13=0.00 +MOD9\HVLC_ORDER13=0 +MOD9\HVLC_V14=0.00 +MOD9\HVLC_ORDER14=0 +MOD9\HVLC_V15=0.00 +MOD9\HVLC_ORDER15=0 +MOD9\HVLC_V16=0.00 +MOD9\HVLC_ORDER16=0 +MOD9\HVLC_V17=0.00 +MOD9\HVLC_ORDER17=0 +MOD9\HVLC_V18=0.00 +MOD9\HVLC_ORDER18=0 +MOD9\HVLC_V19=0.00 +MOD9\HVLC_ORDER19=0 +MOD9\HVLC_V20=0.00 +MOD9\HVLC_ORDER20=0 +MOD9\HVLC_V21=0.00 +MOD9\HVLC_ORDER21=0 +MOD9\HVLC_V22=0.00 +MOD9\HVLC_ORDER22=0 +MOD9\HVLC_V23=0.00 +MOD9\HVLC_ORDER23=0 +MOD9\HVLC_V24=0.00 +MOD9\HVLC_ORDER24=0 +MOD9\HVHC_ENABLE1=1 +MOD9\HVHC_V1=29.0 +MOD9\HVHC_IL1=0.1 +MOD9\HVHC_ORDER1=0 +MOD9\HVHC_LABEL1=SCI E Output Drain +MOD9\HVHC_ENABLE2=1 +MOD9\HVHC_V2=29.0 +MOD9\HVHC_IL2=0.1 +MOD9\HVHC_ORDER2=0 +MOD9\HVHC_LABEL2=SCI F Output Drain +MOD9\HVHC_ENABLE3=0 +MOD9\HVHC_V3=29.0 +MOD9\HVHC_IL3=0.0 +MOD9\HVHC_ORDER3=0 +MOD9\HVHC_ENABLE4=0 +MOD9\HVHC_V4=29.0 +MOD9\HVHC_IL4=0.0 +MOD9\HVHC_ORDER4=0 +MOD9\HVHC_ENABLE5=0 +MOD9\HVHC_V5=29.0 +MOD9\HVHC_IL5=0.0 +MOD9\HVHC_ORDER5=0 +MOD9\HVHC_ENABLE6=0 +MOD9\HVHC_V6=29.0 +MOD9\HVHC_IL6=0.0 +MOD9\HVHC_ORDER6=0 +MOD10\LVLC_V1=0.0 +MOD10\LVLC_ORDER1=0 +MOD10\LVLC_V2=0.0 +MOD10\LVLC_ORDER2=0 +MOD10\LVLC_V3=3.0 +MOD10\LVLC_ORDER3=0 +MOD10\LVLC_LABEL3=SCI E Output Gate +MOD10\LVLC_V4=3.0 +MOD10\LVLC_ORDER4=0 +MOD10\LVLC_LABEL4=SCI F Output Gate +MOD10\LVLC_V5=1.0 +MOD10\LVLC_ORDER5=0 +MOD10\LVLC_LABEL5=SCI Summing Well - Low +MOD10\LVLC_V6=12.0 +MOD10\LVLC_ORDER6=0 +MOD10\LVLC_LABEL6=SCI Summing Well - High +MOD10\LVLC_V7=1.0 +MOD10\LVLC_ORDER7=0 +MOD10\LVLC_LABEL7=SCI Reset Gate - Low +MOD10\LVLC_V8=12.0 +MOD10\LVLC_ORDER8=0 +MOD10\LVLC_LABEL8=SCI Reset Gate - High +MOD10\LVLC_V9=0.0 +MOD10\LVLC_ORDER9=0 +MOD10\LVLC_V10=0.0 +MOD10\LVLC_ORDER10=0 +MOD10\LVLC_V11=0.0 +MOD10\LVLC_ORDER11=0 +MOD10\LVLC_V12=0.0 +MOD10\LVLC_ORDER12=0 +MOD10\LVLC_V13=0.0 +MOD10\LVLC_ORDER13=0 +MOD10\LVLC_V14=0.0 +MOD10\LVLC_ORDER14=0 +MOD10\LVLC_V15=0.0 +MOD10\LVLC_ORDER15=0 +MOD10\LVLC_V16=0.0 +MOD10\LVLC_ORDER16=0 +MOD10\LVLC_V17=0.0 +MOD10\LVLC_ORDER17=0 +MOD10\LVLC_V18=0.0 +MOD10\LVLC_ORDER18=0 +MOD10\LVLC_V19=0.0 +MOD10\LVLC_ORDER19=0 +MOD10\LVLC_V20=0.0 +MOD10\LVLC_ORDER20=0 +MOD10\LVLC_V21=0.0 +MOD10\LVLC_ORDER21=0 +MOD10\LVLC_V22=0.0 +MOD10\LVLC_ORDER22=0 +MOD10\LVLC_V23=0.0 +MOD10\LVLC_ORDER23=0 +MOD10\LVLC_V24=0.0 +MOD10\LVLC_ORDER24=0 +MOD10\LVHC_ENABLE1=0 +MOD10\LVHC_V1=0.0 +MOD10\LVHC_IL1=0.0 +MOD10\LVHC_ORDER1=0 +MOD10\LVHC_ENABLE2=0 +MOD10\LVHC_V2=0.0 +MOD10\LVHC_IL2=0.0 +MOD10\LVHC_ORDER2=0 +MOD10\LVHC_ENABLE3=0 +MOD10\LVHC_V3=0.0 +MOD10\LVHC_IL3=0.0 +MOD10\LVHC_ORDER3=0 +MOD10\LVHC_ENABLE4=0 +MOD10\LVHC_V4=0.0 +MOD10\LVHC_IL4=0.0 +MOD10\LVHC_ORDER4=0 +MOD10\LVHC_ENABLE5=0 +MOD10\LVHC_V5=0.0 +MOD10\LVHC_IL5=0.0 +MOD10\LVHC_ORDER5=0 +MOD10\LVHC_ENABLE6=0 +MOD10\LVHC_V6=0.0 +MOD10\LVHC_IL6=0.0 +MOD10\LVHC_ORDER6=0 +MOD10\DIO_SOURCE1=0 +MOD10\DIO_DIR12=0 +MOD10\DIO_SOURCE2=0 +MOD10\DIO_SOURCE3=0 +MOD10\DIO_DIR34=0 +MOD10\DIO_SOURCE4=0 +MOD10\DIO_SOURCE5=0 +MOD10\DIO_DIR56=0 +MOD10\DIO_SOURCE6=0 +MOD10\DIO_SOURCE7=0 +MOD10\DIO_DIR78=0 +MOD10\DIO_SOURCE8=0 +MOD12\DIO_SOURCE1=0 +MOD12\DIO_DIR1=0 +MOD12\DIO_SOURCE2=0 +MOD12\DIO_DIR2=0 +MOD12\DIO_SOURCE3=0 +MOD12\DIO_DIR3=0 +MOD12\DIO_SOURCE4=0 +MOD12\DIO_DIR4=0 +MOD12\DIO_POWER=0 +MOD4\XVP_V1=0 +MOD4\XVP_ORDER1=0 +MOD4\XVP_ENABLE1=1 +MOD4\XVP_V2=0 +MOD4\XVP_ORDER2=0 +MOD4\XVP_ENABLE2=1 +MOD4\XVP_V3=0 +MOD4\XVP_ORDER3=0 +MOD4\XVP_ENABLE3=1 +MOD4\XVP_V4=0 +MOD4\XVP_ORDER4=0 +MOD4\XVP_ENABLE4=1 +MOD4\XVN_V1=-95 +MOD4\XVN_ORDER1=0 +MOD4\XVN_ENABLE1=1 +MOD4\XVN_LABEL1=SCI Backside +MOD4\XVN_V2=-0 +MOD4\XVN_ORDER2=0 +MOD4\XVN_ENABLE2=1 +MOD4\XVN_V3=-0 +MOD4\XVN_ORDER3=0 +MOD4\XVN_ENABLE3=1 +MOD4\XVN_V4=-0 +MOD4\XVN_ORDER4=0 +MOD4\XVN_ENABLE4=1 +STATE0\NAME=STATE000 +STATE0\CONTROL="0,3F" +STATE1\NAME=STATE001 +STATE1\CONTROL="4,3B" +STATE2\NAME=STATE002 +STATE2\CONTROL="0,3B" +STATE3\NAME=STATE003 +STATE3\CONTROL="1,3E" +STATE4\NAME=STATE004 +STATE4\CONTROL="0,3E" +STATE5\NAME=STATE005 +STATE5\CONTROL="2,3D" +STATE6\NAME=STATE006 +STATE6\CONTROL="0,3D" +STATE7\NAME=STATE007 +STATE7\CONTROL="8,37" +STATE8\NAME=STATE008 +STATE8\CONTROL="0,37" +STATES=9 +[SYSTEM] +BACKPLANE_ID=0000000000000000 +BACKPLANE_REV=0 +BACKPLANE_TYPE=1 +BACKPLANE_VERSION=0.0.0 +MOD1_ID=0000000000000000 +MOD1_REV=0 +MOD1_VERSION=0.0.0 +MOD1_TYPE=16 +MOD3_ID=0000000000000000 +MOD3_REV=0 +MOD3_VERSION=0.0.0 +MOD3_TYPE=16 +MOD4_ID=0000000000000000 +MOD4_REV=0 +MOD4_VERSION=0.0.0 +MOD4_TYPE=12 +MOD9_ID=0000000000000000 +MOD9_REV=0 +MOD9_VERSION=0.0.0 +MOD9_TYPE=4 +MOD10_ID=0000000000000000 +MOD10_REV=0 +MOD10_VERSION=0.0.0 +MOD10_TYPE=3 +MOD12_ID=0000000000000000 +MOD12_REV=0 +MOD12_VERSION=0.0.0 +MOD12_TYPE=10 +[MODE_DEFAULT] diff --git a/src/deimos/.gitignore b/src/deimos/.gitignore new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/deimos/.gitignore @@ -0,0 +1 @@ + diff --git a/src/deimos/Makefile b/src/deimos/Makefile new file mode 100644 index 0000000..6f24d87 --- /dev/null +++ b/src/deimos/Makefile @@ -0,0 +1,137 @@ +# ----------------------------------------------------------------------------- +# @file Makefile +# @brief Makefile for Software/Config/Archon/Build/ +# @author David Hale +# @date 2015-xx-xx +# @modified 2016-01-14 +# @modified 2016-01-27 added fixrawendline (special case for Peter) +# @modified 2016-01-28 removed clean. Use @F.h instead of HFILE=archon.h +# @modified 2016-03-31 change how .mod is parsed +# @modified 2016-04-04 add INCPARSER and checks for file existence +# @modified 2016-04-07 add plotting option and check for WAVGEN exit code +# @modified 2016-04-19 changes to implement INCLUDE_FILE= in *.conf +# @modified 2016-04-20 read CDS_FILE and MODULE_FILE from .conf +# @modified 2017-02-08 added modegen +# @modified 2017-11-09 remove copying of acf files to camera computers +# @modified 2020-12-21 added insert_hash +# +# This Makefile uses the general preprocessor GPP 2.24 for macro processing. +# It also requires the ini2acf.pl Perl script for creating an Archon acf file. +# +# ----------------------------------------------------------------------------- +# + +# Copyright (C) <2018> California Institute of Technology +# Software written by: +# +# This program is part of the Waveform Definition Language (WDL) developed +# for ZTF. This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# Please see the GNU General Public License at: +# . +# +# Report any bugs or suggested improvements to: +# +# David Hale or +# Stephen Kaye + +# set to path to gpp +GPP = /usr/bin/gpp +# set to path to wdl code +WDLPATH = $(HOME)/Software/wdl/wdl +# output for *.acf file +ACFPATH = $(HOME)/wdlfiles/src/deimos/ + +PLOT = # --plots # show waveform plots by default, True | False +GFLAGS = +c "/*" "*/" +c "//" "\n" +c "\\\n" "" -x +SEQPARSER = wdl --debug seq +INCPARSER = wdl --debug inc +WDLPARSER = wdl --debug wdl +MODPARSER = wdl --debug mod +WAVGEN = wdl --debug wavgen +MODEGEN = wdl --debug modegen +I2A = ${WDLPATH}/ini2acf.pl +INCL = -I$(CURDIR) + +# Global variable to store the filename +FILE_NAME=deimos + +SCAN_CDSFILE = cat $(FILE_NAME).conf | $(GPP) $(GFLAGS) $(INCL) | \ + awk -F= '{gsub(" |\t","",$$1)} $$1=="CDS_FILE"{print $$2}' | cut -d'"' -f2 +SCAN_MODFILE = cat $(FILE_NAME).conf | $(GPP) $(GFLAGS) $(INCL) | \ + awk -F= '{gsub(" |\t","",$$1)} $$1=="MODULE_FILE"{print $$2}' | cut -d'"' -f2 +SCAN_MODEFILE = cat $(FILE_NAME).conf | $(GPP) $(GFLAGS) $(INCL) | \ + awk -F= '{gsub(" |\t","",$$1)} $$1=="MODE_FILE"{print $$2}' | cut -d'"' -f2 + +F_TMP = $(FILE_NAME)_TMP + +DEBUG ?= 0 + +ifeq ($(DEBUG), 1) + debug_message = @echo "Debug: $(1)" +else + debug_message = @true +endif + +# Main rule for building the target +%: + $(eval FILE_NAME := $(@F)) + $(call debug_message, "Current filename: $(FILE_NAME)") + @$(MAKE) generate_wdl FILE_NAME=$(@F) + @$(MAKE) generate_script_states FILE_NAME=$(@F) + @$(MAKE) assemble_acf FILE_NAME=$(@F) + +# Rule for generating WDL +generate_wdl: + $(eval MODFILE := $(shell $(SCAN_MODFILE))) + @echo "Looking for MODULE_FILE = $(MODFILE) ..." + @test -f $(FILE_NAME).conf || { echo "$(FILE_NAME).conf does not exist"; exit 1; } + $(call debug_message, "Found configuration file: $(FILE_NAME).conf") + + echo "Making $(F_TMP).wdl from $(FILE_NAME).conf ..." + cat $(FILE_NAME).conf | $(SEQPARSER) - | $(GPP) $(GFLAGS) $(INCL) | $(WDLPARSER) - > $(F_TMP).wdl + $(call debug_message, "Created WDL file: $(F_TMP).wdl") + + echo "Making $(F_TMP).script and $(F_TMP).states from $(F_TMP).wdl ..." + test -f $(MODFILE) || { echo "$(MODFILE) does not exist"; exit 1; } + $(call debug_message, "Found MODULE_FILE: $(MODFILE)") + + cat $(MODFILE) | $(GPP) $(GFLAGS) $(INCL) | $(MODPARSER) - + $(call debug_message, "Processed MODULE_FILE: $(MODFILE)") + + $(WAVGEN) $(F_TMP) $(PLOT) || { echo "Waveform generation failed"; exit 1; } + $(call debug_message, "Finished waveform generation for $(F_TMP) with plot: $(PLOT)") + +# Rule for generating script states +generate_script_states: + @echo "Assembling $(FILE_NAME).acf ..." + $(eval CDSFILE := $(shell $(SCAN_CDSFILE))) + $(call debug_message, "Looking for CDS_FILE = $(CDSFILE) ...") + @test -f $(CDSFILE) || { echo "$(CDSFILE) does not exist"; exit 1; } + $(call debug_message, "Preparing to assemble $(FILE_NAME).acf file using:") + $(call debug_message, "INCPARSER: $(INCPARSER)") + $(call debug_message, "CDSFILE: $(CDSFILE)") + $(call debug_message, "GPP Flags: $(GFLAGS)") + @echo "Assembling $(FILE_NAME).acf file ..." + @cat $(FILE_NAME).conf | $(INCPARSER) - | cat - $(CDSFILE) | $(GPP) $(GFLAGS) $(INCL) | \ + cat - $(F_TMP).script $(F_TMP).modules $(F_TMP).states $(F_TMP).system | \ + $(I2A) - > $(FILE_NAME).acf + +# Rule for assembling the ACF +assemble_acf: + $(eval MODEFILE := $(shell $(SCAN_MODEFILE))) + @$(MODEGEN) $(MODEFILE) $(FILE_NAME).acf + @if [ -d ".git" ]; then \ + echo "Inserting REV keyword ..."; $(WDLPATH)/insert_hash $(FILE_NAME).acf; \ + else \ + echo "Not a git archive, skipping REV keyword"; \ + fi + @echo "Done" diff --git a/src/deimos/deimos.acf b/src/deimos/deimos.acf new file mode 100644 index 0000000..0ee24db --- /dev/null +++ b/src/deimos/deimos.acf @@ -0,0 +1,2468 @@ +[CONFIG] + BIGBUF = 0 +RAWSTARTLINE = 0 + RAWSTARTPIXEL = 1061 +SAMPLEMODE = 1 +RAWENABLE = 1 +RAWENDLINE = 800 +RAWSAMPLES = 20000 +FRAMEMODE=2 +TAPLINE0="AM37L,1,100" +TAPLINE1="AM38R,1,100" +TAPLINE2="AM39L,1,100" +TAPLINE3="AM40R,1,100" +TAPLINE4="AM41L,1,100" +TAPLINE5="AM42R,1,100" +TAPLINE6="AM43L,1,100" +TAPLINE7="AM44R,1,100" +TAPLINE8="AM54L,1,100" +TAPLINE9="AM53R,1,100" +TAPLINE10="AM52L,1,100" +TAPLINE11="AM51R,1,100" +TAPLINE12="AM50L,1,100" +TAPLINE13="AM49R,1,100" +TAPLINE14="AM48L,1,100" +TAPLINE15="AM47R,1,100" +TAPLINES=16 +LINECOUNT=4124 +PIXELCOUNT=1094 +RAWSEL = 11 + RAWSEL = 11 +SHP1 = 120 +SHP2 = 303 +SHD1 = 448 +SHD2 = 575 +TRIGOUTFORCE=0 +TRIGOUTINVERT=0 +TRIGOUTLEVEL=0 +TRIGOUTPOWER=1 +PARAMETER0="FcsExpTimeSec=0" +PARAMETER1="FcsExpTimeMSec=0" +PARAMETER2="SciStart=0" +PARAMETER3="FcsStart=0" +PARAMETER4="SciStop=0" +PARAMETER5="engmode=0" +PARAMETER6="engmode_fcs=0" +PARAMETER7="integrate_ms=0" +PARAMETER8="integrate_s=0" +PARAMETER9="framecount=0" +PARAMETER10="abortintegrate=0" +PARAMETER11="illum=0" +PARAMETER12="integrate_illum_ms=50" +PARAMETER13="integrate_illum_s=0" +PARAMETER14="rg_mod_test_mode=0" +PARAMETER15="tdi_wait_us=0" +PARAMETER16="summit_sci_is_integrating=0" +PARAMETER17="line_clamp_delay_us=10" +PARAMETER18="llel_coincident=0" +PARAMETER19="llel_seq=1" +PARAMETER20="slow_pix=0" +PARAMETER21="linbin=0" +PARAMETER22="dch_llel=0" +PARAMETER23="dch_ser=0" +PARAMETER24="llel_bin=1" +PARAMETER25="ser_bin=1" +PARAMETER26="enable_ser_bin=0" +PARAMETER27="dsch_ser_direction=0" +PARAMETER28="dsch_ser_dump_bcs=0" +PARAMETERS=29 +CONSTANT0="sci_llel_high=10.000000" +CONSTANT1="sci_llel_low=0.000000" +CONSTANT2="sci_ser_high=11.000000" +CONSTANT3="sci_ser_low=1.000000" +CONSTANT4="sci_ser_rcv=11.500000" +CONSTANT5="sci_tg_high=10.500000" +CONSTANT6="sci_tg_low=0.000000" +CONSTANT7="fcs_llel_high=7.000000" +CONSTANT8="fcs_mpp_high=7.500000" +CONSTANT9="fcs_ser_high=8.000000" +CONSTANT10="fcs_rg_low=2.000000" +CONSTANT11="fcs_rg_high=12.000000" +CONSTANT12="fcs_sw_low=-2.000000" +CONSTANT13="fcs_sw_high=6.000000" +CONSTANTS=14 +LINE0=StartSeqSummitMode: +LINE1="STATE000; CALL InitialSetup" +LINE2="STATE000; CALL InitialSetupFCS" +LINE3="STATE000; CALL SummitModeLoop" +LINE4="STATE000; RETURN StartSeqSummitMode" +LINE5=SummitModeLoop: +LINE6="STATE000; if engmode CALL StartSeqEngMode" +LINE7="STATE000; if engmode_fcs CALL StartSeqEngModeFCS" +LINE8="STATE000; CALL SummitModeFCSLineFlush" +LINE9="STATE000; IF SciStart CALL SummitModeSciIntegrate" +LINE10="STATE000; IF FcsStart CALL SummitModeFCSIntegrate" +LINE11="STATE000; IF SciStop CALL SummitModeSciReadout" +LINE12="STATE000; GOTO SummitModeLoop" +LINE13=SummitModeAllLineFlush: +LINE14="STATE000; CALL ParallelForwardNoCoincident" +LINE15="STATE000; CALL SummitModeFCSLineFlush" +LINE16="STATE000; RETURN SummitModeAllLineFlush" +LINE17=SummitModeFCSLineFlush: +LINE18="STATE000; CALL FCSParallelForward" +LINE19="STATE000; CALL DumpPixelsFCS(1069)" +LINE20="STATE000; RETURN SummitModeFCSLineFlush" +LINE21=SummitModeSciIntegrate: +LINE22="STATE000; SciStart--" +LINE23="STATE000; CALL OpenShutter" +LINE24="STATE000; CALL SummitModeSciDump" +LINE25="STATE000; CALL CloseShutter" +LINE26="STATE000; summit_sci_is_integrating++" +LINE27="STATE000; RETURN SummitModeSciIntegrate" +LINE28=SummitModeFCSIntegrate: +LINE29="STATE000; FcsStart--" +LINE30="STATE000; CALL KeepThisFrame" +LINE31="STATE000; CALL OpenShutter" +LINE32="STATE000; CALL Wait1ms(FcsExpTimeMSec)" +LINE33="STATE000; CALL Wait1s(FcsExpTimeSec)" +LINE34="STATE000; CALL CloseShutter" +LINE35="STATE000; CALL Wait1ms(2)" +LINE36="STATE000; CALL SummitModeFCSReadout" +LINE37="STATE000; RETURN SummitModeFCSIntegrate" +LINE38=SummitModeSciReadout: +LINE39="STATE000; summit_sci_is_integrating--" +LINE40="STATE000; SciStop--" +LINE41="STATE000; CALL ReadoutBegin" +LINE42="STATE000; CALL Wait1us(50)" +LINE43="STATE000; CALL DumpPixels(1094)" +LINE44="STATE000; if llel_seq CALL LineReadout(4124)" +LINE45="STATE000; if llel_coincident CALL LineReadoutCoincident(4124)" +LINE46="STATE000; CALL ReadoutEnd" +LINE47="STATE000; RETURN SummitModeSciReadout" +LINE48=SummitModeSciDump: +LINE49="STATE000; CALL EvacuateEStart" +LINE50="STATE000; CALL EvacuateFStart" +LINE51="STATE000; CALL ParallelForwardNoCoincident(4124)" +LINE52="STATE000; CALL Wait1us(50)" +LINE53="STATE000; CALL DumpPixels(1094)" +LINE54="STATE000; RETURN SummitModeSciDump" +LINE55=SummitModeFCSReadout: +LINE56="STATE000; CALL FCSLineReadout(4116)" +LINE57="STATE000; RETURN SummitModeFCSReadout" +LINE58=FCSLineReadout: +LINE59="STATE000; CALL FCSParallelForward" +LINE60="STATE000; CALL Wait1us(line_clamp_delay_us)" +LINE61="STATE000; CALL FCSSplitReadout(1069)" +LINE62="STATE000; RETURN FCSLineReadout" +LINE63=StartSeqEngModeFCS: +LINE64="STATE000; if framecount CALL SummitModeFCSIntegrate" +LINE65="STATE000; framecount--" +LINE66="STATE000; if !framecount CALL SummitModeFCSLineFlush(4116)" +LINE67="STATE000; GOTO StartSeqEngModeFCS" +LINE68=StartSeqEngMode: +LINE69="STATE000; if framecount CALL IntegrateAndReadout" +LINE70="STATE000; if !framecount CALL LineReadoutFast(4124)" +LINE71="STATE000; if rg_mod_test_mode CALL TestBrokenReadout" +LINE72="STATE000; GOTO StartSeqEngMode" +LINE73=IntegrateAndReadout: +LINE74="STATE000; CALL Integrate" +LINE75="STATE000; CALL ReadoutKeep" +LINE76="STATE000; RETURN IntegrateAndReadout" +LINE77=TestBrokenReadout: +LINE78="STATE000; CALL OutputTestSetup" +LINE79="STATE000; CALL VRDModulate" +LINE80="STATE000; RETURN TestBrokenReadout" +LINE81=EvacuateE: +LINE82="STATE000; CALL EvacuateEStart" +LINE83="STATE000; CALL Wait1ms" +LINE84="STATE000; CALL EvacuateEFinish" +LINE85="STATE000; RETURN EvacuateE" +LINE86=EvacuateF: +LINE87="STATE000; CALL EvacuateFStart" +LINE88="STATE000; CALL Wait1ms" +LINE89="STATE000; CALL EvacuateFFinish" +LINE90="STATE000; RETURN EvacuateF" +LINE91=Integrate: +LINE92="STATE000; CALL ReadPixels(1094)" +LINE93="STATE000; if illum CALL OpenShutter" +LINE94="STATE000; CALL Wait1ms(integrate_illum_ms)" +LINE95="STATE000; CALL Wait1s(integrate_illum_s)" +LINE96="STATE000; if illum CALL CloseShutter" +LINE97="STATE000; CALL Wait1ms(integrate_ms)" +LINE98="STATE000; CALL Wait1s(integrate_s)" +LINE99="STATE000; RETURN Integrate" +LINE100=ReadoutKeep: +LINE101="STATE000; CALL ReadoutBegin" +LINE102="STATE000; if llel_coincident CALL FrameReadout" +LINE103="STATE000; if llel_seq CALL FrameReadout" +LINE104="STATE000; if slow_pix CALL FrameReadout" +LINE105="STATE000; if linbin CALL FrameReadout" +LINE106="STATE000; if dch_llel CALL FrameReadoutTDCllel" +LINE107="STATE000; if dch_ser CALL FrameReadoutTDCser" +LINE108="STATE000; framecount--" +LINE109="STATE000; RETURN ReadoutKeep" +LINE110=FrameReadoutTDCllel: +LINE111="STATE000; CALL Wait1us(50)" +LINE112="STATE000; CALL DumpPixels(1094)" +LINE113="STATE000; CALL FrameReadoutTDCllel_Innerloop(68)" +LINE114="STATE000; CALL LineReadout(44)" +LINE115="STATE000; CALL ReadoutEnd" +LINE116="STATE000; CALL linbindecr(llel_bin)" +LINE117="STATE000; CALL linbinincr" +LINE118="STATE000; RETURN FrameReadoutTDCllel" +LINE119=FrameReadoutTDCllel_Innerloop: +LINE120="STATE000; CALL LineReadoutAOnly(60)" +LINE121="STATE000; CALL ForwardParallelSectionBNoCoincident(llel_bin)" +LINE122="STATE000; CALL linbinincr(1)" +LINE123="STATE000; RETURN FrameReadoutTDCllel_Innerloop" +LINE124=FrameReadoutTDCser: +LINE125="STATE000; CALL Wait1us(50)" +LINE126="STATE000; CALL DumpPixels(1094)" +LINE127="STATE000; CALL LineReadoutTDCser(4124)" +LINE128="STATE000; CALL ReadoutEnd" +LINE129="STATE000; RETURN FrameReadoutTDCser" +LINE130=LineReadoutTDCser: +LINE131="STATE000; CALL ParallelForwardNoCoincident(llel_bin)" +LINE132="STATE000; CALL Wait1us(line_clamp_delay_us)" +LINE133="STATE000; CALL TDCser_Innerloop(49)" +LINE134="STATE000; if !dsch_ser_direction CALL DumpPixelsEOnly(15)" +LINE135="STATE000; if dsch_ser_direction CALL DumpPixelsFOnly(15)" +LINE136="STATE000; if !dsch_ser_dump_bcs CALL TDCser_ReadoutLoop" +LINE137="STATE000; if dsch_ser_dump_bcs CALL TDCser_ReadoutLoopDumpBright" +LINE138="STATE000; if !dsch_ser_direction CALL EvacuateF" +LINE139="STATE000; if dsch_ser_direction CALL EvacuateE" +LINE140="STATE000; CALL serbindecr(ser_bin)" +LINE141="STATE000; CALL serbinincr" +LINE142="STATE000; RETURN LineReadoutTDCser" +LINE143=TDCser_ReadoutLoopDumpBright: +LINE144="STATE000; if !dsch_ser_direction CALL ReadPixelsEOnly(50)" +LINE145="STATE000; if dsch_ser_direction CALL ReadPixelsFOnly(50)" +LINE146="STATE000; CALL TDCser_ReadoutLoopDumpBright_Inner(49)" +LINE147="STATE000; if !dsch_ser_direction CALL ReadPixelsEOnly(15)" +LINE148="STATE000; if dsch_ser_direction CALL ReadPixelsFOnly(15)" +LINE149="STATE000; RETURN TDCser_ReadoutLoopDumpBright" +LINE150=TDCser_ReadoutLoop: +LINE151="STATE000; if !dsch_ser_direction CALL ReadPixelsEOnly(1094)" +LINE152="STATE000; if dsch_ser_direction CALL ReadPixelsFOnly(1094)" +LINE153="STATE000; RETURN TDCser_ReadoutLoop" +LINE154=TDCser_ReadoutLoopDumpBright_Inner: +LINE155="STATE000; CALL trigpix" +LINE156="STATE000; if !dsch_ser_direction CALL DumpPixelsEOnly" +LINE157="STATE000; if dsch_ser_direction CALL DumpPixelsFOnly" +LINE158="STATE000; if !dsch_ser_direction CALL ReadPixelsEOnly(20)" +LINE159="STATE000; if dsch_ser_direction CALL ReadPixelsFOnly(20)" +LINE160="STATE000; RETURN TDCser_ReadoutLoopDumpBright_Inner" +LINE161=TDCser_Innerloop: +LINE162="STATE000; if !dsch_ser_direction CALL DumpPixelsEOnly(21)" +LINE163="STATE000; if dsch_ser_direction CALL DumpPixelsFOnly(21)" +LINE164="STATE000; if !dsch_ser_direction CALL SerialFBackwards(ser_bin)" +LINE165="STATE000; if dsch_ser_direction CALL SerialEBackwards(ser_bin)" +LINE166="STATE000; CALL serbinincr(1)" +LINE167="STATE000; RETURN TDCser_Innerloop" +LINE168=serbinincr: +LINE169="STATE000; ser_bin++" +LINE170="STATE000; RETURN serbinincr" +LINE171=serbindecr: +LINE172="STATE000; ser_bin--" +LINE173="STATE000; RETURN serbindecr" +LINE174=FrameReadout: +LINE175="STATE000; CALL Wait1us(50)" +LINE176="STATE000; CALL DumpPixels(1094)" +LINE177="STATE000; if tdi_wait_us CALL OpenShutter" +LINE178="STATE000; IF llel_seq CALL LineReadout(4124)" +LINE179="STATE000; IF llel_coincident CALL LineReadoutCoincident(4124)" +LINE180="STATE000; IF slow_pix CALL LineReadoutSlowPix(4124)" +LINE181="STATE000; IF linbin CALL LineReadout(90)" +LINE182="STATE000; IF linbin CALL LineReadoutFast(4034)" +LINE183="STATE000; if tdi_wait_us CALL CloseShutter" +LINE184="STATE000; CALL ReadoutEnd" +LINE185="STATE000; if linbin CALL linbindecr(llel_bin)" +LINE186="STATE000; if linbin CALL linbinincr" +LINE187="STATE000; RETURN FrameReadout" +LINE188=Wait1s: +LINE189="STATE000; if abortintegrate CALL abortintegration" +LINE190="STATE000; CALL Wait1ms(1000)" +LINE191="STATE000; RETURN Wait1s" +LINE192=abortintegration: +LINE193="STATE000; CALL CloseShutter" +LINE194="STATE000; GOTO StartSeqSummitMode" +LINE195=LineReadoutSlowPix: +LINE196="STATE000; CALL ParallelForwardNoCoincident" +LINE197="STATE000; CALL Wait1us(50)" +LINE198="STATE000; CALL ReadPixelsSlow(1094)" +LINE199="STATE000; CALL Wait1us(10)" +LINE200="STATE000; RETURN LineReadoutSlowPix" +LINE201=linbinincrcheck: +LINE202="STATE000; if framecount CALL linbinincr" +LINE203="STATE000; RETURN linbinincrcheck" +LINE204=linbinincr: +LINE205="STATE000; llel_bin++" +LINE206="STATE000; RETURN linbinincr" +LINE207=linbindecr: +LINE208="STATE000; llel_bin--" +LINE209="STATE000; RETURN linbindecr" +LINE210=LineReadoutFast: +LINE211="STATE000; CALL ParallelForwardNoCoincident" +LINE212="STATE000; CALL ReadPixels(1094)" +LINE213="STATE000; RETURN LineReadoutFast" +LINE214=LineReadout: +LINE215="STATE000; CALL ParallelForwardNoCoincident(llel_bin)" +LINE216="STATE000; if linbin CALL linbinincr" +LINE217="STATE000; CALL Wait1us(line_clamp_delay_us)" +LINE218="STATE000; if enable_ser_bin CALL ReadPixels(50)" +LINE219="STATE000; if enable_ser_bin CALL SerBinReadPixels(1024)" +LINE220="STATE000; if enable_ser_bin CALL ReadPixels(20)" +LINE221="STATE000; if !enable_ser_bin CALL ReadPixels(1094)" +LINE222="STATE000; if tdi_wait_us CALL Wait1us(tdi_wait_us)" +LINE223="STATE000; RETURN LineReadout" +LINE224=SerBinReadPixels: +LINE225="STATE000; CALL PrepSerBin" +LINE226="STATE000; CALL serbindecr" +LINE227="STATE000; CALL SerialBinForwards(ser_bin)" +LINE228="STATE000; CALL ReadPixels" +LINE229="STATE000; CALL serbinincr" +LINE230="STATE000; RETURN SerBinReadPixels" +LINE231=LineReadoutCoincident: +LINE232="STATE000; if tdi_wait_us CALL Wait1us(tdi_wait_us)" +LINE233="STATE000; CALL ParallelForwardSegment1" +LINE234="STATE000; CALL TransferToSerialRegisterCoincident" +LINE235="STATE000; CALL ReadPixels(364)" +LINE236="STATE000; CALL ParallelForwardSegment2" +LINE237="STATE000; CALL ReadPixels(364)" +LINE238="STATE000; CALL ParallelForwardSegment3" +LINE239="STATE000; CALL ReadPixels(364) CALL ReadPixels(2)" +LINE240="STATE000; RETURN LineReadoutCoincident" +LINE241=LineReadoutAOnly: +LINE242="STATE000; CALL ForwardParallelSectionANoCoincident" +LINE243="STATE000; CALL Wait1us(line_clamp_delay_us)" +LINE244="STATE000; CALL ReadPixels(1094)" +LINE245="STATE000; RETURN LineReadoutAOnly" +LINE246=LineReadoutAOnlyCoincident: +LINE247="STATE000; CALL TransferToSerialRegisterCoincident" +LINE248="STATE000; CALL ReadPixels(50)" +LINE249="STATE000; CALL ParallelForwardSectionASegment1" +LINE250="STATE000; CALL ReadPixels(364)" +LINE251="STATE000; CALL ParallelForwardSectionASegment2" +LINE252="STATE000; CALL ReadPixels(364)" +LINE253="STATE000; CALL ParallelForwardSectionASegment3" +LINE254="STATE000; CALL ReadPixels(364)" +LINE255="STATE000; CALL ReadPixels(2)" +LINE256="STATE000; RETURN LineReadoutAOnlyCoincident" +LINE257=testConst: +LINE258="STATE001; STATE000(98)" +LINE259="STATE000; RETURN testConst" +LINE260=Wait1us: +LINE261="STATE002; STATE000(98)" +LINE262="STATE000; RETURN Wait1us" +LINE263=Wait1ms: +LINE264="STATE002; STATE000(99998)" +LINE265="STATE000; RETURN Wait1ms" +LINE266=KeepThisFrame: +LINE267="STATE003;" +LINE268="STATE004; RETURN KeepThisFrame" +LINE269=InitialSetup: +LINE270="STATE005; STATE000(999)" +LINE271="STATE006; STATE000(9999)" +LINE272="STATE002; RETURN InitialSetup" +LINE273=InitialSetupFCS: +LINE274="STATE007; STATE000(999)" +LINE275="STATE008; STATE000(9999)" +LINE276="STATE002; RETURN InitialSetupFCS" +LINE277=OpenShutter: +LINE278="STATE009; RETURN OpenShutter" +LINE279=CloseShutter: +LINE280="STATE010; RETURN CloseShutter" +LINE281=ReadoutBegin: +LINE282="STATE011; RETURN ReadoutBegin" +LINE283=ReadoutEnd: +LINE284="STATE012; RETURN ReadoutEnd" +LINE285=TransferToSerialRegisterCoincident: +LINE286="STATE013; STATE000(999)" +LINE287="STATE014; STATE000(49)" +LINE288="STATE015; STATE000(49)" +LINE289="STATE016; RETURN TransferToSerialRegisterCoincident" +LINE290=ParallelForwardNoCoincident: +LINE291="STATE017; STATE000(1199)" +LINE292="STATE018; STATE000(1199)" +LINE293="STATE019; STATE000(1199)" +LINE294="STATE020; STATE000(199)" +LINE295="STATE021; STATE000(49)" +LINE296="STATE022; STATE000(299)" +LINE297="STATE023; STATE000(49)" +LINE298="STATE016; STATE000(599)" +LINE299="STATE024; STATE000(1199)" +LINE300="STATE025; STATE000(1199)" +LINE301="STATE002; RETURN ParallelForwardNoCoincident" +LINE302=ParallelForwardSegment1: +LINE303="STATE026; RETURN ParallelForwardSegment1" +LINE304=ParallelForwardSegment2: +LINE305="STATE027; RETURN ParallelForwardSegment2" +LINE306=ParallelForwardSegment3: +LINE307="STATE028; RETURN ParallelForwardSegment3" +LINE308=OutputTestSetup: +LINE309="STATE029; STATE000(999999)" +LINE310="STATE002; RETURN OutputTestSetup" +LINE311=PulseTGA: +LINE312="STATE030; STATE000(2499)" +LINE313="STATE031; STATE000(2499)" +LINE314="STATE032; RETURN PulseTGA" +LINE315=VRDModulate: +LINE316="STATE033; STATE000(999999)" +LINE317="STATE034; STATE000(99)" +LINE318="STATE035; STATE000(99)" +LINE319="STATE036; STATE000(99)" +LINE320="STATE037; STATE000(99)" +LINE321="STATE038; STATE000(99)" +LINE322="STATE039; STATE000(999999)" +LINE323="STATE034; STATE000(99)" +LINE324="STATE035; STATE000(99)" +LINE325="STATE040; STATE000(99)" +LINE326="STATE041; STATE000(99)" +LINE327="STATE042; STATE000(99)" +LINE328="STATE043; STATE000(999999)" +LINE329="STATE034; STATE000(99)" +LINE330="STATE035; STATE000(99)" +LINE331="STATE044; STATE000(99)" +LINE332="STATE045; STATE000(99)" +LINE333="STATE046; STATE000(99)" +LINE334="STATE047; STATE000(999999)" +LINE335="STATE034; STATE000(99)" +LINE336="STATE035; STATE000(99)" +LINE337="STATE048; STATE000(99)" +LINE338="STATE049; STATE000(99)" +LINE339="STATE050; STATE000(99)" +LINE340="STATE051; STATE000(999999)" +LINE341="STATE034; STATE000(99)" +LINE342="STATE035; STATE000(99)" +LINE343="STATE052; STATE000(99)" +LINE344="STATE053; STATE000(99)" +LINE345="STATE054; STATE000(99)" +LINE346="STATE055; STATE000(999999)" +LINE347="STATE034; STATE000(99)" +LINE348="STATE035; STATE000(99)" +LINE349="STATE056; STATE000(99)" +LINE350="STATE057; STATE000(99)" +LINE351="STATE058; STATE000(99)" +LINE352="STATE059; STATE000(999999)" +LINE353="STATE034; STATE000(99)" +LINE354="STATE035; STATE000(99)" +LINE355="STATE060; STATE000(99)" +LINE356="STATE061; STATE000(99)" +LINE357="STATE062; STATE000(99)" +LINE358="STATE063; STATE000(999999)" +LINE359="STATE034; STATE000(99)" +LINE360="STATE035; STATE000(99)" +LINE361="STATE064; STATE000(99)" +LINE362="STATE065; STATE000(99)" +LINE363="STATE066; STATE000(99)" +LINE364="STATE067; RETURN VRDModulate" +LINE365=ReadPixels: +LINE366="STATE068;" +LINE367="STATE069; STATE000(58)" +LINE368="STATE070;" +LINE369="STATE032; STATE000(298)" +LINE370="STATE071; STATE000(199)" +LINE371="STATE072; STATE000(59)" +LINE372="STATE002; RETURN ReadPixels" +LINE373=ReadPixelsSlow: +LINE374="STATE073;" +LINE375="STATE069; STATE000(13)" +LINE376="STATE074; STATE000(14)" +LINE377="STATE075; STATE000(4)" +LINE378="STATE076; STATE000(9)" +LINE379="STATE077; STATE000(15)" +LINE380="STATE032; STATE000(118)" +LINE381="STATE078; STATE000(14)" +LINE382="STATE079; STATE000(14)" +LINE383="STATE071; STATE000(116)" +LINE384="STATE002; RETURN ReadPixelsSlow" +LINE385=ForwardParallelSectionANoCoincident: +LINE386="STATE002; STATE000(999)" +LINE387="STATE080; STATE000(999)" +LINE388="STATE081; STATE000(999)" +LINE389="STATE082; STATE000(999)" +LINE390="STATE083; STATE000(199)" +LINE391="STATE084; STATE000(49)" +LINE392="STATE022; STATE000(299)" +LINE393="STATE085; STATE000(49)" +LINE394="STATE016; STATE000(399)" +LINE395="STATE086; STATE000(999)" +LINE396="STATE087; STATE000(999)" +LINE397="STATE002; RETURN ForwardParallelSectionANoCoincident" +LINE398=ForwardParallelSectionBNoCoincident: +LINE399="STATE002; STATE000(999)" +LINE400="STATE088; STATE000(999)" +LINE401="STATE089; STATE000(999)" +LINE402="STATE090; STATE000(999)" +LINE403="STATE091; STATE000(999)" +LINE404="STATE092; STATE000(999)" +LINE405="STATE093; STATE000(999)" +LINE406="STATE002; RETURN ForwardParallelSectionBNoCoincident" +LINE407=ForwardParallelSectionA: +LINE408="STATE094; STATE000(364665)" +LINE409="STATE095; STATE000(364666)" +LINE410="STATE096; RETURN ForwardParallelSectionA" +LINE411=ForwardParallelSectionB: +LINE412="STATE097; STATE000(364665)" +LINE413="STATE098; STATE000(364666)" +LINE414="STATE099; RETURN ForwardParallelSectionB" +LINE415=ForwardParallelAll: +LINE416="STATE027; STATE000(364665)" +LINE417="STATE028; STATE000(364666)" +LINE418="STATE026; RETURN ForwardParallelAll" +LINE419=ParallelForwardSectionASegment1: +LINE420="STATE094; RETURN ParallelForwardSectionASegment1" +LINE421=ParallelForwardSectionASegment2: +LINE422="STATE095; RETURN ParallelForwardSectionASegment2" +LINE423=ParallelForwardSectionASegment3: +LINE424="STATE096; RETURN ParallelForwardSectionASegment3" +LINE425=Wait10us: +LINE426="STATE000; STATE000(999)" +LINE427="STATE002; RETURN Wait10us" +LINE428=ReadPixelsEOnly: +LINE429="STATE100;" +LINE430="STATE069; STATE000(58)" +LINE431="STATE101;" +LINE432="STATE032; STATE000(298)" +LINE433="STATE071; STATE000(199)" +LINE434="STATE102; STATE000(59)" +LINE435="STATE002; RETURN ReadPixelsEOnly" +LINE436=ReadPixelsFOnly: +LINE437="STATE103;" +LINE438="STATE069; STATE000(58)" +LINE439="STATE104;" +LINE440="STATE032; STATE000(298)" +LINE441="STATE071; STATE000(129)" +LINE442="STATE105; STATE000(79)" +LINE443="STATE002; RETURN ReadPixelsFOnly" +LINE444=PrepSerBin: +LINE445="STATE106; STATE000(39)" +LINE446="STATE075; STATE000(19)" +LINE447="STATE032; RETURN PrepSerBin" +LINE448=SerialBinForwards: +LINE449="STATE107; STATE000(39)" +LINE450="STATE108; STATE000(39)" +LINE451="STATE072; STATE000(39)" +LINE452="STATE107; STATE000(39)" +LINE453="STATE002; RETURN SerialBinForwards" +LINE454=DumpPixels: +LINE455="STATE109; STATE000(39)" +LINE456="STATE070; STATE000(19)" +LINE457="STATE032; STATE000(279)" +LINE458="STATE071; STATE000(199)" +LINE459="STATE110; STATE000(59)" +LINE460="STATE002; RETURN DumpPixels" +LINE461=trigpix: +LINE462="STATE111;" +LINE463="STATE112; RETURN trigpix" +LINE464=DumpPixelsEOnly: +LINE465="STATE113; STATE000(39)" +LINE466="STATE101; STATE000(299)" +LINE467="STATE071; STATE000(199)" +LINE468="STATE114; STATE000(59)" +LINE469="STATE002; RETURN DumpPixelsEOnly" +LINE470=DumpPixelsFOnly: +LINE471="STATE115; STATE000(39)" +LINE472="STATE104; STATE000(299)" +LINE473="STATE071; STATE000(129)" +LINE474="STATE116; STATE000(79)" +LINE475="STATE002; RETURN DumpPixelsFOnly" +LINE476=SerialFBackwards: +LINE477="STATE117; STATE000(29)" +LINE478="STATE118; STATE000(29)" +LINE479="STATE119; STATE000(29)" +LINE480="STATE120; STATE000(29)" +LINE481="STATE121; RETURN SerialFBackwards" +LINE482=SerialEBackwards: +LINE483="STATE122; STATE000(29)" +LINE484="STATE123; STATE000(29)" +LINE485="STATE124; STATE000(29)" +LINE486="STATE121; STATE000(29)" +LINE487="STATE120; RETURN SerialEBackwards" +LINE488=EvacuateFFinish: +LINE489="STATE125; STATE000(1999)" +LINE490="STATE126; STATE000(499)" +LINE491="STATE002; RETURN EvacuateFFinish" +LINE492=EvacuateFStart: +LINE493="STATE127; RETURN EvacuateFStart" +LINE494=EvacuateEFinish: +LINE495="STATE125; STATE000(1999)" +LINE496="STATE128; STATE000(499)" +LINE497="STATE002; RETURN EvacuateEFinish" +LINE498=EvacuateEStart: +LINE499="STATE129; RETURN EvacuateEStart" +LINE500=BounceTGTest: +LINE501="STATE130;" +LINE502="STATE112; STATE000(498)" +LINE503="STATE031; STATE000(199)" +LINE504="STATE002; RETURN BounceTGTest" +LINE505=ClampTestInner: +LINE506="STATE130;" +LINE507="STATE112; STATE000(98)" +LINE508="STATE031; STATE000(99)" +LINE509="STATE002; RETURN ClampTestInner" +LINE510=ClampOn: +LINE511="STATE022; RETURN ClampOn" +LINE512=ClampOnFCS: +LINE513="STATE131; RETURN ClampOnFCS" +LINE514=ClampOff: +LINE515="STATE016; RETURN ClampOff" +LINE516=ClampOffFCS: +LINE517="STATE132; RETURN ClampOffFCS" +LINE518=ClampTestLineStart: +LINE519="STATE004; RETURN ClampTestLineStart" +LINE520=TGTestLineStart: +LINE521="STATE133; STATE000(99)" +LINE522="STATE016; RETURN TGTestLineStart" +LINE523=setupTGTest: +LINE524="STATE134; RETURN setupTGTest" +LINE525=FCSParallelForward: +LINE526="STATE135; STATE000(19999)" +LINE527="STATE136; STATE000(19999)" +LINE528="STATE137; STATE000(19999)" +LINE529="STATE138; STATE000(19999)" +LINE530="STATE139; STATE000(19999)" +LINE531="STATE140; STATE000(999)" +LINE532="STATE131; STATE000(999)" +LINE533="STATE132; STATE000(199)" +LINE534="STATE002; RETURN FCSParallelForward" +LINE535=FCSSplitReadout: +LINE536="STATE111;" +LINE537="STATE141; STATE000(39)" +LINE538="STATE142; STATE000(39)" +LINE539="STATE143; STATE000(39)" +LINE540="STATE144; STATE000(39)" +LINE541="STATE145; STATE000(39)" +LINE542="STATE146; STATE000(39)" +LINE543="STATE147; STATE000(299)" +LINE544="STATE148; STATE000(299)" +LINE545="STATE002; RETURN FCSSplitReadout" +LINE546=DumpPixelsFCS: +LINE547="STATE149; STATE000(39)" +LINE548="STATE150; STATE000(39)" +LINE549="STATE142; STATE000(39)" +LINE550="STATE143; STATE000(39)" +LINE551="STATE145; STATE000(39)" +LINE552="STATE146; STATE000(39)" +LINE553="STATE151; RETURN DumpPixelsFCS" +LINES=554 +MOD1\ENABLE1=1 +MOD1\FASTSLEWRATE1=6.6666 +MOD1\SLOWSLEWRATE1=0.0303 +MOD1\LABEL1=PCLK_B3_2 +MOD1\ENABLE2=1 +MOD1\FASTSLEWRATE2=6.6666 +MOD1\SLOWSLEWRATE2=0.0303 +MOD1\LABEL2=PCLK_A3_2 +MOD1\ENABLE3=1 +MOD1\FASTSLEWRATE3=6.6666 +MOD1\SLOWSLEWRATE3=0.0303 +MOD1\LABEL3=PCLK_B2_2 +MOD1\ENABLE4=1 +MOD1\FASTSLEWRATE4=6.6666 +MOD1\SLOWSLEWRATE4=0.0303 +MOD1\LABEL4=PCLK_A2_2 +MOD1\ENABLE5=1 +MOD1\FASTSLEWRATE5=6.6666 +MOD1\SLOWSLEWRATE5=0.0303 +MOD1\LABEL5=PCLK_B1_2 +MOD1\ENABLE6=1 +MOD1\FASTSLEWRATE6=6.6666 +MOD1\SLOWSLEWRATE6=0.0303 +MOD1\LABEL6=PCLK_A1_2 +MOD1\ENABLE7=1 +MOD1\FASTSLEWRATE7=6.6666 +MOD1\SLOWSLEWRATE7=0.0303 +MOD1\LABEL7=PCLK_A1_1 +MOD1\ENABLE8=1 +MOD1\FASTSLEWRATE8=6.6666 +MOD1\SLOWSLEWRATE8=0.0303 +MOD1\LABEL8=PCLK_B1_1 +MOD1\ENABLE9=1 +MOD1\FASTSLEWRATE9=6.6666 +MOD1\SLOWSLEWRATE9=0.0303 +MOD1\LABEL9=PCLK_A2_1 +MOD1\ENABLE10=1 +MOD1\FASTSLEWRATE10=6.6666 +MOD1\SLOWSLEWRATE10=0.0303 +MOD1\LABEL10=PCLK_B2_1 +MOD1\ENABLE11=1 +MOD1\FASTSLEWRATE11=6.6666 +MOD1\SLOWSLEWRATE11=0.0303 +MOD1\LABEL11=PCLK_A3_1 +MOD1\ENABLE12=1 +MOD1\FASTSLEWRATE12=6.6666 +MOD1\SLOWSLEWRATE12=0.0303 +MOD1\LABEL12=PCLK_B3_1 +MOD2\ENABLE1=1 +MOD2\FASTSLEWRATE1=50.0000 +MOD2\SLOWSLEWRATE1=3.0030 +MOD2\LABEL1=SCI_RGBACKUP2 +MOD2\ENABLE2=1 +MOD2\FASTSLEWRATE2=50.0000 +MOD2\SLOWSLEWRATE2=3.0030 +MOD2\LABEL2=SCI_SWBACKUP1 +MOD2\ENABLE3=1 +MOD2\FASTSLEWRATE3=50.0000 +MOD2\SLOWSLEWRATE3=3.0030 +MOD2\LABEL3=FCS2_S2L +MOD2\ENABLE4=1 +MOD2\FASTSLEWRATE4=50.0000 +MOD2\SLOWSLEWRATE4=3.0030 +MOD2\LABEL4=FCS1_S2L +MOD2\ENABLE5=1 +MOD2\FASTSLEWRATE5=50.0000 +MOD2\SLOWSLEWRATE5=3.0030 +MOD2\LABEL5=FCS2_S3L +MOD2\ENABLE6=1 +MOD2\FASTSLEWRATE6=50.0000 +MOD2\SLOWSLEWRATE6=3.0030 +MOD2\LABEL6=FCS_S1 +MOD2\ENABLE7=1 +MOD2\FASTSLEWRATE7=50.0000 +MOD2\SLOWSLEWRATE7=3.0030 +MOD2\LABEL7=SCI_SWBACKUP2 +MOD2\ENABLE8=1 +MOD2\FASTSLEWRATE8=50.0000 +MOD2\SLOWSLEWRATE8=3.0030 +MOD2\LABEL8=FCS_RG +MOD2\ENABLE9=1 +MOD2\FASTSLEWRATE9=50.0000 +MOD2\SLOWSLEWRATE9=3.0030 +MOD2\LABEL9=FCS_SW +MOD2\ENABLE10=1 +MOD2\FASTSLEWRATE10=50.0000 +MOD2\SLOWSLEWRATE10=3.0030 +MOD2\LABEL10=FCS1_S3L +MOD2\ENABLE11=0 +MOD2\FASTSLEWRATE11=1 +MOD2\SLOWSLEWRATE11=1 +MOD2\LABEL11=Spare1 +MOD2\ENABLE12=0 +MOD2\FASTSLEWRATE12=1 +MOD2\SLOWSLEWRATE12=1 +MOD2\LABEL12=Spare2 +MOD3\ENABLE1=1 +MOD3\FASTSLEWRATE1=6.6666 +MOD3\SLOWSLEWRATE1=12 +MOD3\LABEL1=TGA1 +MOD3\ENABLE2=1 +MOD3\FASTSLEWRATE2=50.0000 +MOD3\SLOWSLEWRATE2=3.0030 +MOD3\LABEL2=Serial EF +MOD3\ENABLE3=1 +MOD3\FASTSLEWRATE3=50.0000 +MOD3\SLOWSLEWRATE3=3.0030 +MOD3\LABEL3=Serial E2 +MOD3\ENABLE4=1 +MOD3\FASTSLEWRATE4=50.0000 +MOD3\SLOWSLEWRATE4=3.0030 +MOD3\LABEL4=Serial E1 +MOD3\ENABLE5=1 +MOD3\FASTSLEWRATE5=50.0000 +MOD3\SLOWSLEWRATE5=3.0030 +MOD3\LABEL5=Serial F2 +MOD3\ENABLE6=1 +MOD3\FASTSLEWRATE6=50.0000 +MOD3\SLOWSLEWRATE6=3.0030 +MOD3\LABEL6=Serial F1 +MOD3\ENABLE7=1 +MOD3\FASTSLEWRATE7=4.3333 +MOD3\SLOWSLEWRATE7=0.0303 +MOD3\LABEL7=FCS PPhase3U +MOD3\ENABLE8=1 +MOD3\FASTSLEWRATE8=4.3333 +MOD3\SLOWSLEWRATE8=0.0303 +MOD3\LABEL8=FCS PPhase3L +MOD3\ENABLE9=1 +MOD3\FASTSLEWRATE9=4.3333 +MOD3\SLOWSLEWRATE9=0.0303 +MOD3\LABEL9=FCS PPhase2 +MOD3\ENABLE10=1 +MOD3\FASTSLEWRATE10=4.3333 +MOD3\SLOWSLEWRATE10=0.0303 +MOD3\LABEL10=FCS PPhase1 +MOD3\ENABLE11=1 +MOD3\FASTSLEWRATE11=6.6666 +MOD3\SLOWSLEWRATE11=12 +MOD3\LABEL11=TGA2 +MOD3\ENABLE12=0 +MOD3\FASTSLEWRATE12=1 +MOD3\SLOWSLEWRATE12=1 +MOD3\LABEL12=SCI_RGBACKUP1 +MOD9\HVLC_V1=0.00 +MOD9\HVLC_ORDER1=0 +MOD9\HVLC_V2=24.0 +MOD9\HVLC_ORDER2=1 +MOD9\HVLC_LABEL2=SCI1 Guard Drain +MOD9\HVLC_V3=24.0 +MOD9\HVLC_ORDER3=1 +MOD9\HVLC_LABEL3=SCI2 Guard drain +MOD9\HVLC_V4=0.00 +MOD9\HVLC_ORDER4=0 +MOD9\HVLC_V5=17.5 +MOD9\HVLC_ORDER5=1 +MOD9\HVLC_LABEL5=SCI1 E Reset Drain +MOD9\HVLC_V6=17.5 +MOD9\HVLC_ORDER6=1 +MOD9\HVLC_LABEL6=SCI1 F Reset Drain +MOD9\HVLC_V7=0.00 +MOD9\HVLC_ORDER7=0 +MOD9\HVLC_V8=14.00 +MOD9\HVLC_ORDER8=2 +MOD9\HVLC_LABEL8=FCS1 Reset Drain A +MOD9\HVLC_V9=14.00 +MOD9\HVLC_ORDER9=2 +MOD9\HVLC_LABEL9=FCS1 Reset Drain B +MOD9\HVLC_V10=14.50 +MOD9\HVLC_ORDER10=2 +MOD9\HVLC_LABEL10=FCS2 Reset Drain A +MOD9\HVLC_V11=14.50 +MOD9\HVLC_ORDER11=2 +MOD9\HVLC_LABEL11=FCS2 Reset Drain B +MOD9\HVLC_V12=14.90 +MOD9\HVLC_ORDER12=2 +MOD9\HVLC_LABEL12=FCS Overflow Drain +MOD9\HVLC_V13=24.3 +MOD9\HVLC_ORDER13=2 +MOD9\HVLC_LABEL13=FCS1 Output Drain A +MOD9\HVLC_V14=24.3 +MOD9\HVLC_ORDER14=2 +MOD9\HVLC_LABEL14=FCS1 Output Drain B +MOD9\HVLC_V15=24.3 +MOD9\HVLC_ORDER15=2 +MOD9\HVLC_LABEL15=FCS2 Output Drain A +MOD9\HVLC_V16=24.3 +MOD9\HVLC_ORDER16=2 +MOD9\HVLC_LABEL16=FCS2 Output Drain B +MOD9\HVLC_V17=0.00 +MOD9\HVLC_ORDER17=0 +MOD9\HVLC_V18=0.00 +MOD9\HVLC_ORDER18=0 +MOD9\HVLC_V19=0.00 +MOD9\HVLC_ORDER19=0 +MOD9\HVLC_V20=0.00 +MOD9\HVLC_ORDER20=0 +MOD9\HVLC_V21=17.00 +MOD9\HVLC_ORDER21=1 +MOD9\HVLC_LABEL21=SCI2 E Reset Drain +MOD9\HVLC_V22=17.00 +MOD9\HVLC_ORDER22=1 +MOD9\HVLC_LABEL22=SCI2 F Reset Drain +MOD9\HVLC_V23=0.0 +MOD9\HVLC_ORDER23=0 +MOD9\HVLC_V24=0.0 +MOD9\HVLC_ORDER24=0 +MOD9\HVHC_ENABLE1=1 +MOD9\HVHC_V1=29.0 +MOD9\HVHC_IL1=27.0 +MOD9\HVHC_ORDER1=1 +MOD9\HVHC_LABEL1=SCI E Output Drain +MOD9\HVHC_ENABLE2=1 +MOD9\HVHC_V2=29.0 +MOD9\HVHC_IL2=27.0 +MOD9\HVHC_ORDER2=1 +MOD9\HVHC_LABEL2=SCI F Output Drain +MOD9\HVHC_ENABLE3=1 +MOD9\HVHC_V3=29.0 +MOD9\HVHC_IL3=27.0 +MOD9\HVHC_ORDER3=1 +MOD9\HVHC_LABEL3=SCI2 E Output Drain +MOD9\HVHC_ENABLE4=1 +MOD9\HVHC_V4=29.0 +MOD9\HVHC_IL4=27.0 +MOD9\HVHC_ORDER4=1 +MOD9\HVHC_LABEL4=SCI2 F Output Drain +MOD9\HVHC_ENABLE5=0 +MOD9\HVHC_V5=0.0 +MOD9\HVHC_IL5=0.0 +MOD9\HVHC_ORDER5=0 +MOD9\HVHC_ENABLE6=0 +MOD9\HVHC_V6=0.0 +MOD9\HVHC_IL6=0.0 +MOD9\HVHC_ORDER6=0 +MOD10\LVLC_V1=3.3 +MOD10\LVLC_ORDER1=6 +MOD10\LVLC_LABEL1=LVDS Receiver Output Enable +MOD10\LVLC_V2=0.0 +MOD10\LVLC_ORDER2=0 +MOD10\LVLC_V3=3.0 +MOD10\LVLC_ORDER3=4 +MOD10\LVLC_LABEL3=SCI E Output Gate +MOD10\LVLC_V4=3.0 +MOD10\LVLC_ORDER4=4 +MOD10\LVLC_LABEL4=SCI F Output Gate +MOD10\LVLC_V5=0.0 +MOD10\LVLC_ORDER5=0 +MOD10\LVLC_V6=0.0 +MOD10\LVLC_ORDER6=0 +MOD10\LVLC_V7=0.0 +MOD10\LVLC_ORDER7=0 +MOD10\LVLC_V8=0.0 +MOD10\LVLC_ORDER8=0 +MOD10\LVLC_V9=0.0 +MOD10\LVLC_ORDER9=0 +MOD10\LVLC_V10=-4.0 +MOD10\LVLC_ORDER10=4 +MOD10\LVLC_LABEL10=LastGateA FCS 1 +MOD10\LVLC_V11=-4.0 +MOD10\LVLC_ORDER11=4 +MOD10\LVLC_LABEL11=LastGateB FCS 1 +MOD10\LVLC_V12=-1.0 +MOD10\LVLC_ORDER12=4 +MOD10\LVLC_LABEL12=LastGateA FCS 2 +MOD10\LVLC_V13=-1.0 +MOD10\LVLC_ORDER13=4 +MOD10\LVLC_LABEL13=LastGateB FCS 2 +MOD10\LVLC_V14=3.0 +MOD10\LVLC_ORDER14=4 +MOD10\LVLC_LABEL14=SCI E Output Gate 2 +MOD10\LVLC_V15=3.0 +MOD10\LVLC_ORDER15=4 +MOD10\LVLC_LABEL15=SCI F Output Gate 2 +MOD10\LVLC_V16=0.0 +MOD10\LVLC_ORDER16=0 +MOD10\LVLC_V17=0.0 +MOD10\LVLC_ORDER17=0 +MOD10\LVLC_V18=0.0 +MOD10\LVLC_ORDER18=0 +MOD10\LVLC_V19=0.0 +MOD10\LVLC_ORDER19=0 +MOD10\LVLC_V20=0.0 +MOD10\LVLC_ORDER20=0 +MOD10\LVLC_V21=0.0 +MOD10\LVLC_ORDER21=0 +MOD10\LVLC_V22=0.2 +MOD10\LVLC_ORDER22=6 +MOD10\LVLC_LABEL22=Video offset FCS +MOD10\LVLC_V23=0.5 +MOD10\LVLC_ORDER23=6 +MOD10\LVLC_LABEL23=Video offset SCI +MOD10\LVLC_V24=0.46 +MOD10\LVLC_ORDER24=6 +MOD10\LVLC_LABEL24=Video offset SCI2 +MOD10\LVHC_ENABLE1=1 +MOD10\LVHC_V1=2.0 +MOD10\LVHC_IL1=20.0 +MOD10\LVHC_ORDER1=5 +MOD10\LVHC_LABEL1=SCI Summing Well - Low +MOD10\LVHC_ENABLE2=1 +MOD10\LVHC_V2=11.0 +MOD10\LVHC_IL2=20.0 +MOD10\LVHC_ORDER2=5 +MOD10\LVHC_LABEL2=SCI Summing Well - High +MOD10\LVHC_ENABLE3=1 +MOD10\LVHC_V3=12.0 +MOD10\LVHC_IL3=20.0 +MOD10\LVHC_ORDER3=5 +MOD10\LVHC_LABEL3=SCI Reset Gate - High +MOD10\LVHC_ENABLE4=1 +MOD10\LVHC_V4=5.5 +MOD10\LVHC_IL4=20.0 +MOD10\LVHC_ORDER4=5 +MOD10\LVHC_LABEL4=SCI Reset Gate - Low +MOD10\LVHC_ENABLE5=0 +MOD10\LVHC_V5=0.0 +MOD10\LVHC_IL5=0.0 +MOD10\LVHC_ORDER5=0 +MOD10\LVHC_ENABLE6=0 +MOD10\LVHC_V6=0.0 +MOD10\LVHC_IL6=0.0 +MOD10\LVHC_ORDER6=0 +MOD12\LVDS_LABEL1=PD_OE_IN +MOD12\LVDS_LABEL2=NOP +MOD12\LVDS_LABEL5=RG_SCI3 +MOD12\LVDS_LABEL6=RG_SCI4 +MOD12\LVDS_LABEL7=RG_SCI1 +MOD12\LVDS_LABEL8=RG_SCI2 +MOD12\LVDS_LABEL11=AC_clamp_FCS +MOD12\LVDS_LABEL12=AC_clamp +MOD12\LVDS_LABEL13=SW_SCI4 +MOD12\LVDS_LABEL14=SW_SCI3 +MOD12\LVDS_LABEL15=RG_SCI1 +MOD12\LVDS_LABEL16=SW_SCI2 +MOD10\DIO_SOURCE1=0 +MOD10\DIO_DIR12=0 +MOD10\DIO_LABEL1=Driver Output Enable (unused) +MOD10\DIO_LABEL1=Driver Output Enable (unused) +MOD10\DIO_SOURCE2=0 +MOD10\DIO_LABEL2=Loopback 1 IN +MOD10\DIO_SOURCE3=2 +MOD10\DIO_DIR34=1 +MOD10\DIO_LABEL3=Loopback 1 OUT +MOD10\DIO_LABEL3=Loopback 1 OUT +MOD10\DIO_SOURCE4=2 +MOD10\DIO_LABEL4=Loopback 2 OUT +MOD10\DIO_SOURCE5=0 +MOD10\DIO_DIR56=0 +MOD10\DIO_LABEL5=Loopback 2 IN +MOD10\DIO_LABEL5=Loopback 2 IN +MOD10\DIO_SOURCE6=0 +MOD10\DIO_LABEL6=Loopback 3 IN +MOD10\DIO_SOURCE7=2 +MOD10\DIO_DIR78=1 +MOD10\DIO_LABEL7=Loopback 3 OUT +MOD10\DIO_LABEL7=Loopback 3 OUT +MOD10\DIO_SOURCE8=2 +MOD10\DIO_LABEL8=Trig out EXT +MOD10\DIO_POWER=1 +MOD12\DIO_SOURCE1=0 +MOD12\DIO_DIR1=0 +MOD12\DIO_LABEL1=Loopback 4 IN +MOD12\DIO_SOURCE2=2 +MOD12\DIO_DIR2=1 +MOD12\DIO_LABEL2=Loopback 4 OUT +MOD12\DIO_SOURCE3=0 +MOD12\DIO_DIR3=0 +MOD12\DIO_LABEL3=Loopback 5 IN +MOD12\DIO_SOURCE4=2 +MOD12\DIO_DIR4=1 +MOD12\DIO_LABEL4=Loopback 5 OUT +MOD12\DIO_POWER=1 +MOD4\XVP_V1=0 +MOD4\XVP_ORDER1=0 +MOD4\XVP_ENABLE1=0 +MOD4\XVP_V2=0 +MOD4\XVP_ORDER2=0 +MOD4\XVP_ENABLE2=0 +MOD4\XVP_V3=0 +MOD4\XVP_ORDER3=0 +MOD4\XVP_ENABLE3=0 +MOD4\XVP_V4=0 +MOD4\XVP_ORDER4=0 +MOD4\XVP_ENABLE4=0 +MOD4\XVN_V1=-0 +MOD4\XVN_ORDER1=0 +MOD4\XVN_ENABLE1=1 +MOD4\XVN_LABEL1=SCI Backside +MOD4\XVN_V2=-0 +MOD4\XVN_ORDER2=0 +MOD4\XVN_ENABLE2=0 +MOD4\XVN_V3=-0 +MOD4\XVN_ORDER3=0 +MOD4\XVN_ENABLE3=0 +MOD4\XVN_V4=-0 +MOD4\XVN_ORDER4=0 +MOD4\XVN_ENABLE4=0 +STATE0\NAME=STATE000 +STATE0\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE0\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE0\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE0\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE0\MOD4="0,1,0,0,1,0" +STATE0\CONTROL="0,3F" +STATE0\MOD9="0,1,0" +STATE0\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE1\NAME=STATE001 +STATE1\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE1\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE1\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE1\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE1\MOD4="0,1,0,0,1,0" +STATE1\CONTROL="0,3F" +STATE1\MOD9="0,1,0" +STATE1\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE2\NAME=STATE002 +STATE2\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE2\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE2\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE2\MOD12="1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE2\MOD4="0,1,0,0,1,0" +STATE2\CONTROL="0,3F" +STATE2\MOD9="0,1,0" +STATE2\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE3\NAME=STATE003 +STATE3\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE3\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE3\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE3\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE3\MOD4="0,1,0,0,1,0" +STATE3\CONTROL="2,3D" +STATE3\MOD9="0,1,0" +STATE3\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE4\NAME=STATE004 +STATE4\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE4\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE4\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE4\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE4\MOD4="0,1,0,0,1,0" +STATE4\CONTROL="4,3B" +STATE4\MOD9="0,1,0" +STATE4\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE5\NAME=STATE005 +STATE5\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE5\MOD2="5,1,0,1,1,0,,1,1,,1,1,,1,1,,1,1,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE5\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,5,1,0" +STATE5\MOD12="1,0,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1" +STATE5\MOD4="0,1,0,0,1,0" +STATE5\CONTROL="0,3F" +STATE5\MOD9="0,1,0" +STATE5\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE6\NAME=STATE006 +STATE6\MOD1="0,1,0,0,1,0,10,1,0,10,1,0,10,1,0,10,1,0,10,1,0,10,1,0,10,1,0,10,1,0,0,1,0,0,1,0" +STATE6\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE6\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE6\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE6\MOD4="0,1,0,0,1,0" +STATE6\CONTROL="0,3F" +STATE6\MOD9="0,1,0" +STATE6\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE7\NAME=STATE007 +STATE7\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE7\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,2,1,0,-2,1,0,,1,1,,1,1,,1,1" +STATE7\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE7\MOD12="1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE7\MOD4="0,1,0,0,1,0" +STATE7\CONTROL="0,3F" +STATE7\MOD9="0,1,0" +STATE7\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE8\NAME=STATE008 +STATE8\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE8\MOD2=",1,1,,1,1,-5,1,0,-5,1,0,-5,1,0,8,1,0,,1,1,,1,1,,1,1,-5,1,0,,1,1,,1,1" +STATE8\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-5,1,0,-5,1,0,-6,1,0,-6,1,0,,1,1,,1,1" +STATE8\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE8\MOD4="0,1,0,0,1,0" +STATE8\CONTROL="0,3F" +STATE8\MOD9="0,1,0" +STATE8\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE9\NAME=STATE009 +STATE9\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE9\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE9\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE9\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE9\MOD4="0,1,0,0,1,0" +STATE9\CONTROL="1,3E" +STATE9\MOD9="0,1,0" +STATE9\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE10\NAME=STATE010 +STATE10\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE10\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE10\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE10\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE10\MOD4="0,1,0,0,1,0" +STATE10\CONTROL="0,3E" +STATE10\MOD9="0,1,0" +STATE10\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE11\NAME=STATE011 +STATE11\MOD1=",1,1,,1,1,,1,1,,1,1,0,1,0,0,1,0,0,1,0,0,1,0,,1,1,,1,1,,1,1,,1,1" +STATE11\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE11\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE11\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE11\MOD4="0,1,0,0,1,0" +STATE11\CONTROL="6,39" +STATE11\MOD9="0,1,0" +STATE11\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE12\NAME=STATE012 +STATE12\MOD1=",1,1,,1,1,10,1,0,10,1,0,10,1,0,10,1,0,10,1,0,10,1,0,10,1,0,10,1,0,,1,1,,1,1" +STATE12\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE12\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE12\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE12\MOD4="0,1,0,0,1,0" +STATE12\CONTROL="0,3F" +STATE12\MOD9="0,1,0" +STATE12\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE13\NAME=STATE013 +STATE13\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE13\MOD2=",1,1,1,1,0,,1,1,,1,1,,1,1,,1,1,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE13\MOD3="10.5,1,0,1,1,0,11.5,1,0,11.5,1,0,11.5,1,0,11.5,1,0,,1,1,,1,1,,1,1,,1,1,10.5,1,0,,1,1" +STATE13\MOD12="1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1" +STATE13\MOD4="0,1,0,0,1,0" +STATE13\CONTROL="4,3B" +STATE13\MOD9="0,1,0" +STATE13\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE14\NAME=STATE014 +STATE14\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE14\MOD2="5,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE14\MOD3="0,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,0,1,0,5,1,0" +STATE14\MOD12="1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE14\MOD4="0,1,0,0,1,0" +STATE14\CONTROL="0,3F" +STATE14\MOD9="0,1,0" +STATE14\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE15\NAME=STATE015 +STATE15\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE15\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE15\MOD3=",1,1,1,1,0,11,1,0,1,1,0,11,1,0,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE15\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE15\MOD4="0,1,0,0,1,0" +STATE15\CONTROL="0,3F" +STATE15\MOD9="0,1,0" +STATE15\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE16\NAME=STATE016 +STATE16\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE16\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE16\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE16\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE16\MOD4="0,1,0,0,1,0" +STATE16\CONTROL="0,3F" +STATE16\MOD9="0,1,0" +STATE16\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE17\NAME=STATE017 +STATE17\MOD1="10,1,0,10,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,10,1,0,10,1,0" +STATE17\MOD2="12,1,0,1,1,0,,1,1,,1,1,,1,1,,1,1,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE17\MOD3="10.5,1,0,1,1,0,11.5,1,0,11.5,1,0,11.5,1,0,11.5,1,0,,1,1,,1,1,,1,1,,1,1,10.5,1,0,12,1,0" +STATE17\MOD12="1,1,1,0,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1" +STATE17\MOD4="0,1,0,0,1,0" +STATE17\CONTROL="4,3B" +STATE17\MOD9="0,1,0" +STATE17\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE18\NAME=STATE018 +STATE18\MOD1=",1,1,,1,1,0,1,0,0,1,0,,1,1,,1,1,,1,1,,1,1,0,1,0,0,1,0,,1,1,,1,1" +STATE18\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE18\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE18\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE18\MOD4="0,1,0,0,1,0" +STATE18\CONTROL="0,3F" +STATE18\MOD9="0,1,0" +STATE18\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE19\NAME=STATE019 +STATE19\MOD1=",1,1,,1,1,,1,1,,1,1,10,1,0,10,1,0,10,1,0,10,1,0,,1,1,,1,1,,1,1,,1,1" +STATE19\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE19\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE19\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE19\MOD4="0,1,0,0,1,0" +STATE19\CONTROL="0,3F" +STATE19\MOD9="0,1,0" +STATE19\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE20\NAME=STATE020 +STATE20\MOD1="0,1,0,0,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,0,1,0,0,1,0" +STATE20\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE20\MOD3="0,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,0,1,0,,1,1" +STATE20\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE20\MOD4="0,1,0,0,1,0" +STATE20\CONTROL="0,3F" +STATE20\MOD9="0,1,0" +STATE20\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE21\NAME=STATE021 +STATE21\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE21\MOD2="5,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE21\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,5,1,0" +STATE21\MOD12="1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1" +STATE21\MOD4="0,1,0,0,1,0" +STATE21\CONTROL="0,3F" +STATE21\MOD9="0,1,0" +STATE21\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE22\NAME=STATE022 +STATE22\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE22\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE22\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE22\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE22\MOD4="0,1,0,0,1,0" +STATE22\CONTROL="0,3F" +STATE22\MOD9="0,1,0" +STATE22\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE23\NAME=STATE023 +STATE23\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE23\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE23\MOD3=",1,1,1,1,0,1,1,0,11,1,0,1,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE23\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE23\MOD4="0,1,0,0,1,0" +STATE23\CONTROL="0,3F" +STATE23\MOD9="0,1,0" +STATE23\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE24\NAME=STATE024 +STATE24\MOD1=",1,1,,1,1,10,1,0,10,1,0,,1,1,,1,1,,1,1,,1,1,10,1,0,10,1,0,,1,1,,1,1" +STATE24\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE24\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE24\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE24\MOD4="0,1,0,0,1,0" +STATE24\CONTROL="0,3F" +STATE24\MOD9="0,1,0" +STATE24\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE25\NAME=STATE025 +STATE25\MOD1=",1,1,,1,1,,1,1,,1,1,0,1,0,0,1,0,0,1,0,0,1,0,,1,1,,1,1,,1,1,,1,1" +STATE25\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE25\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE25\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE25\MOD4="0,1,0,0,1,0" +STATE25\CONTROL="0,3F" +STATE25\MOD9="0,1,0" +STATE25\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE26\NAME=STATE026 +STATE26\MOD1="10,0,0,10,0,0,0,0,0,0,0,0,,1,1,,1,1,,1,1,,1,1,0,0,0,0,0,0,10,0,0,10,0,0" +STATE26\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE26\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE26\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE26\MOD4="0,1,0,0,1,0" +STATE26\CONTROL="0,3F" +STATE26\MOD9="0,1,0" +STATE26\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE27\NAME=STATE027 +STATE27\MOD1="0,0,0,0,0,0,,1,1,,1,1,10,0,0,10,0,0,10,0,0,10,0,0,,1,1,,1,1,0,0,0,0,0,0" +STATE27\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE27\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE27\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE27\MOD4="0,1,0,0,1,0" +STATE27\CONTROL="0,3F" +STATE27\MOD9="0,1,0" +STATE27\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE28\NAME=STATE028 +STATE28\MOD1=",1,1,,1,1,10,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,10,0,0,,1,1,,1,1" +STATE28\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE28\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE28\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE28\MOD4="0,1,0,0,1,0" +STATE28\CONTROL="0,3F" +STATE28\MOD9="0,1,0" +STATE28\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE29\NAME=STATE029 +STATE29\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE29\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,12,1,0,6,1,0,,1,1,,1,1,,1,1" +STATE29\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE29\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE29\MOD4="0,1,0,0,1,0" +STATE29\CONTROL="0,3F" +STATE29\MOD9="" +STATE29\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE30\NAME=STATE030 +STATE30\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE30\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE30\MOD3="10.5,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,10.5,1,0,,1,1" +STATE30\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE30\MOD4="0,1,0,0,1,0" +STATE30\CONTROL="0,3F" +STATE30\MOD9="0,1,0" +STATE30\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE31\NAME=STATE031 +STATE31\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE31\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE31\MOD3="0,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,0,1,0,,1,1" +STATE31\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE31\MOD4="0,1,0,0,1,0" +STATE31\CONTROL="0,3F" +STATE31\MOD9="0,1,0" +STATE31\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE32\NAME=STATE032 +STATE32\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE32\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE32\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE32\MOD12="1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE32\MOD4="0,1,0,0,1,0" +STATE32\CONTROL="0,3F" +STATE32\MOD9="0,1,0" +STATE32\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE33\NAME=STATE033 +STATE33\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE33\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE33\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE33\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE33\MOD4="0,1,0,0,1,0" +STATE33\CONTROL="0,3F" +STATE33\MOD9="1,8,12" +STATE33\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE34\NAME=STATE034 +STATE34\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE34\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE34\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE34\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE34\MOD4="0,1,0,0,1,0" +STATE34\CONTROL="0,3F" +STATE34\MOD9="0,1,0" +STATE34\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE35\NAME=STATE035 +STATE35\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE35\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,2,1,0,,1,1,,1,1,,1,1,,1,1" +STATE35\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE35\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE35\MOD4="0,1,0,0,1,0" +STATE35\CONTROL="0,3F" +STATE35\MOD9="0,1,0" +STATE35\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE36\NAME=STATE036 +STATE36\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE36\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE36\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE36\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE36\MOD4="0,1,0,0,1,0" +STATE36\CONTROL="0,3F" +STATE36\MOD9="1,8,12.5" +STATE36\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE37\NAME=STATE037 +STATE37\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE37\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE37\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE37\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE37\MOD4="0,1,0,0,1,0" +STATE37\CONTROL="0,3F" +STATE37\MOD9="1,9,12.5" +STATE37\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE38\NAME=STATE038 +STATE38\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE38\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE38\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE38\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE38\MOD4="0,1,0,0,1,0" +STATE38\CONTROL="0,3F" +STATE38\MOD9="1,10,12.5" +STATE38\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE39\NAME=STATE039 +STATE39\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE39\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE39\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE39\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE39\MOD4="0,1,0,0,1,0" +STATE39\CONTROL="0,3F" +STATE39\MOD9="1,11,12.5" +STATE39\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE40\NAME=STATE040 +STATE40\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE40\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE40\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE40\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE40\MOD4="0,1,0,0,1,0" +STATE40\CONTROL="0,3F" +STATE40\MOD9="1,8,13" +STATE40\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE41\NAME=STATE041 +STATE41\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE41\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE41\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE41\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE41\MOD4="0,1,0,0,1,0" +STATE41\CONTROL="0,3F" +STATE41\MOD9="1,9,13" +STATE41\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE42\NAME=STATE042 +STATE42\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE42\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE42\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE42\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE42\MOD4="0,1,0,0,1,0" +STATE42\CONTROL="0,3F" +STATE42\MOD9="1,10,13" +STATE42\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE43\NAME=STATE043 +STATE43\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE43\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE43\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE43\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE43\MOD4="0,1,0,0,1,0" +STATE43\CONTROL="0,3F" +STATE43\MOD9="1,11,13" +STATE43\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE44\NAME=STATE044 +STATE44\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE44\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE44\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE44\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE44\MOD4="0,1,0,0,1,0" +STATE44\CONTROL="0,3F" +STATE44\MOD9="1,8,13.5" +STATE44\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE45\NAME=STATE045 +STATE45\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE45\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE45\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE45\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE45\MOD4="0,1,0,0,1,0" +STATE45\CONTROL="0,3F" +STATE45\MOD9="1,9,13.5" +STATE45\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE46\NAME=STATE046 +STATE46\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE46\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE46\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE46\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE46\MOD4="0,1,0,0,1,0" +STATE46\CONTROL="0,3F" +STATE46\MOD9="1,10,13.5" +STATE46\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE47\NAME=STATE047 +STATE47\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE47\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE47\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE47\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE47\MOD4="0,1,0,0,1,0" +STATE47\CONTROL="0,3F" +STATE47\MOD9="1,11,13.5" +STATE47\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE48\NAME=STATE048 +STATE48\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE48\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE48\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE48\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE48\MOD4="0,1,0,0,1,0" +STATE48\CONTROL="0,3F" +STATE48\MOD9="1,8,14" +STATE48\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE49\NAME=STATE049 +STATE49\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE49\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE49\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE49\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE49\MOD4="0,1,0,0,1,0" +STATE49\CONTROL="0,3F" +STATE49\MOD9="1,9,14" +STATE49\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE50\NAME=STATE050 +STATE50\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE50\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE50\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE50\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE50\MOD4="0,1,0,0,1,0" +STATE50\CONTROL="0,3F" +STATE50\MOD9="1,10,14" +STATE50\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE51\NAME=STATE051 +STATE51\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE51\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE51\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE51\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE51\MOD4="0,1,0,0,1,0" +STATE51\CONTROL="0,3F" +STATE51\MOD9="1,11,14" +STATE51\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE52\NAME=STATE052 +STATE52\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE52\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE52\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE52\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE52\MOD4="0,1,0,0,1,0" +STATE52\CONTROL="0,3F" +STATE52\MOD9="1,8,14.5" +STATE52\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE53\NAME=STATE053 +STATE53\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE53\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE53\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE53\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE53\MOD4="0,1,0,0,1,0" +STATE53\CONTROL="0,3F" +STATE53\MOD9="1,9,14.5" +STATE53\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE54\NAME=STATE054 +STATE54\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE54\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE54\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE54\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE54\MOD4="0,1,0,0,1,0" +STATE54\CONTROL="0,3F" +STATE54\MOD9="1,10,14.5" +STATE54\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE55\NAME=STATE055 +STATE55\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE55\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE55\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE55\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE55\MOD4="0,1,0,0,1,0" +STATE55\CONTROL="0,3F" +STATE55\MOD9="1,11,14.5" +STATE55\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE56\NAME=STATE056 +STATE56\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE56\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE56\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE56\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE56\MOD4="0,1,0,0,1,0" +STATE56\CONTROL="0,3F" +STATE56\MOD9="1,8,15" +STATE56\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE57\NAME=STATE057 +STATE57\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE57\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE57\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE57\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE57\MOD4="0,1,0,0,1,0" +STATE57\CONTROL="0,3F" +STATE57\MOD9="1,9,15" +STATE57\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE58\NAME=STATE058 +STATE58\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE58\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE58\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE58\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE58\MOD4="0,1,0,0,1,0" +STATE58\CONTROL="0,3F" +STATE58\MOD9="1,10,15" +STATE58\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE59\NAME=STATE059 +STATE59\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE59\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE59\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE59\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE59\MOD4="0,1,0,0,1,0" +STATE59\CONTROL="0,3F" +STATE59\MOD9="1,11,15" +STATE59\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE60\NAME=STATE060 +STATE60\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE60\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE60\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE60\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE60\MOD4="0,1,0,0,1,0" +STATE60\CONTROL="0,3F" +STATE60\MOD9="1,8,15.5" +STATE60\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE61\NAME=STATE061 +STATE61\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE61\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE61\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE61\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE61\MOD4="0,1,0,0,1,0" +STATE61\CONTROL="0,3F" +STATE61\MOD9="1,9,15.5" +STATE61\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE62\NAME=STATE062 +STATE62\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE62\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE62\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE62\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE62\MOD4="0,1,0,0,1,0" +STATE62\CONTROL="0,3F" +STATE62\MOD9="1,10,15.5" +STATE62\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE63\NAME=STATE063 +STATE63\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE63\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE63\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE63\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE63\MOD4="0,1,0,0,1,0" +STATE63\CONTROL="0,3F" +STATE63\MOD9="1,11,15.5" +STATE63\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE64\NAME=STATE064 +STATE64\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE64\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE64\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE64\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE64\MOD4="0,1,0,0,1,0" +STATE64\CONTROL="0,3F" +STATE64\MOD9="1,8,16" +STATE64\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE65\NAME=STATE065 +STATE65\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE65\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE65\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE65\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE65\MOD4="0,1,0,0,1,0" +STATE65\CONTROL="0,3F" +STATE65\MOD9="1,9,16" +STATE65\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE66\NAME=STATE066 +STATE66\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE66\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE66\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE66\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE66\MOD4="0,1,0,0,1,0" +STATE66\CONTROL="0,3F" +STATE66\MOD9="1,10,16" +STATE66\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE67\NAME=STATE067 +STATE67\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE67\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE67\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE67\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE67\MOD4="0,1,0,0,1,0" +STATE67\CONTROL="0,3F" +STATE67\MOD9="1,11,16" +STATE67\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE68\NAME=STATE068 +STATE68\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE68\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE68\MOD3=",1,1,,1,1,1,1,0,11,1,0,1,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE68\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE68\MOD4="0,1,0,0,1,0" +STATE68\CONTROL="8,37" +STATE68\MOD9="0,1,0" +STATE68\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE69\NAME=STATE069 +STATE69\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE69\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE69\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE69\MOD12="1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE69\MOD4="0,1,0,0,1,0" +STATE69\CONTROL="0,31" +STATE69\MOD9="0,1,0" +STATE69\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE70\NAME=STATE070 +STATE70\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE70\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE70\MOD3=",1,1,11,1,0,,1,1,1,1,0,,1,1,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE70\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1" +STATE70\MOD4="0,1,0,0,1,0" +STATE70\CONTROL="0,3F" +STATE70\MOD9="0,1,0" +STATE70\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE71\NAME=STATE071 +STATE71\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE71\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE71\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE71\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1" +STATE71\MOD4="0,1,0,0,1,0" +STATE71\CONTROL="0,3F" +STATE71\MOD9="0,1,0" +STATE71\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE72\NAME=STATE072 +STATE72\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE72\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE72\MOD3=",1,1,1,1,0,11,1,0,,1,1,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE72\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE72\MOD4="0,1,0,0,1,0" +STATE72\CONTROL="0,3F" +STATE72\MOD9="0,1,0" +STATE72\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE73\NAME=STATE073 +STATE73\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE73\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE73\MOD3=",1,1,,1,1,,1,1,11,1,0,,1,1,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE73\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE73\MOD4="0,1,0,0,1,0" +STATE73\CONTROL="8,37" +STATE73\MOD9="0,1,0" +STATE73\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE74\NAME=STATE074 +STATE74\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE74\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE74\MOD3=",1,1,,1,1,1,1,0,,1,1,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE74\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE74\MOD4="0,1,0,0,1,0" +STATE74\CONTROL="0,3F" +STATE74\MOD9="0,1,0" +STATE74\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE75\NAME=STATE075 +STATE75\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE75\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE75\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE75\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1" +STATE75\MOD4="0,1,0,0,1,0" +STATE75\CONTROL="0,3F" +STATE75\MOD9="0,1,0" +STATE75\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE76\NAME=STATE076 +STATE76\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE76\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE76\MOD3=",1,1,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE76\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE76\MOD4="0,1,0,0,1,0" +STATE76\CONTROL="0,3F" +STATE76\MOD9="0,1,0" +STATE76\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE77\NAME=STATE077 +STATE77\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE77\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE77\MOD3=",1,1,,1,1,,1,1,1,1,0,,1,1,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE77\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE77\MOD4="0,1,0,0,1,0" +STATE77\CONTROL="0,3F" +STATE77\MOD9="0,1,0" +STATE77\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE78\NAME=STATE078 +STATE78\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE78\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE78\MOD3=",1,1,,1,1,11,1,0,,1,1,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE78\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE78\MOD4="0,1,0,0,1,0" +STATE78\CONTROL="0,3F" +STATE78\MOD9="0,1,0" +STATE78\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE79\NAME=STATE079 +STATE79\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE79\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE79\MOD3=",1,1,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE79\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE79\MOD4="0,1,0,0,1,0" +STATE79\CONTROL="0,3F" +STATE79\MOD9="0,1,0" +STATE79\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE80\NAME=STATE080 +STATE80\MOD1=",1,1,10,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,10,1,0,,1,1" +STATE80\MOD2="12,1,0,1,1,0,,1,1,,1,1,,1,1,,1,1,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE80\MOD3="10.5,1,0,1,1,0,11.5,1,0,11.5,1,0,11.5,1,0,11.5,1,0,,1,1,,1,1,,1,1,,1,1,10.5,1,0,12,1,0" +STATE80\MOD12="1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1" +STATE80\MOD4="0,1,0,0,1,0" +STATE80\CONTROL="4,3B" +STATE80\MOD9="0,1,0" +STATE80\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE81\NAME=STATE081 +STATE81\MOD1=",1,1,,1,1,,1,1,0,1,0,,1,1,,1,1,,1,1,,1,1,0,1,0,,1,1,,1,1,,1,1" +STATE81\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE81\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE81\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE81\MOD4="0,1,0,0,1,0" +STATE81\CONTROL="0,3F" +STATE81\MOD9="0,1,0" +STATE81\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE82\NAME=STATE082 +STATE82\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,10,1,0,10,1,0,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE82\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE82\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE82\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE82\MOD4="0,1,0,0,1,0" +STATE82\CONTROL="0,3F" +STATE82\MOD9="0,1,0" +STATE82\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE83\NAME=STATE083 +STATE83\MOD1=",1,1,0,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,0,1,0,,1,1" +STATE83\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE83\MOD3="0,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,0,1,0,,1,1" +STATE83\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE83\MOD4="0,1,0,0,1,0" +STATE83\CONTROL="0,3F" +STATE83\MOD9="0,1,0" +STATE83\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE84\NAME=STATE084 +STATE84\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE84\MOD2="5,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE84\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,5,1,0" +STATE84\MOD12="1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1" +STATE84\MOD4="0,1,0,0,1,0" +STATE84\CONTROL="0,3F" +STATE84\MOD9="0,1,0" +STATE84\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE85\NAME=STATE085 +STATE85\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE85\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE85\MOD3=",1,1,1,1,0,11,1,0,1,1,0,11,1,0,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE85\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE85\MOD4="0,1,0,0,1,0" +STATE85\CONTROL="0,3F" +STATE85\MOD9="0,1,0" +STATE85\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE86\NAME=STATE086 +STATE86\MOD1=",1,1,,1,1,,1,1,10,1,0,,1,1,,1,1,,1,1,,1,1,10,1,0,,1,1,,1,1,,1,1" +STATE86\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE86\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE86\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE86\MOD4="0,1,0,0,1,0" +STATE86\CONTROL="0,3F" +STATE86\MOD9="0,1,0" +STATE86\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE87\NAME=STATE087 +STATE87\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,0,1,0,0,1,0,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE87\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE87\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE87\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE87\MOD4="0,1,0,0,1,0" +STATE87\CONTROL="0,3F" +STATE87\MOD9="0,1,0" +STATE87\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE88\NAME=STATE088 +STATE88\MOD1="10,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,10,1,0" +STATE88\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE88\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE88\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE88\MOD4="0,1,0,0,1,0" +STATE88\CONTROL="0,3F" +STATE88\MOD9="0,1,0" +STATE88\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE89\NAME=STATE089 +STATE89\MOD1=",1,1,,1,1,0,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,0,1,0,,1,1,,1,1" +STATE89\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE89\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE89\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE89\MOD4="0,1,0,0,1,0" +STATE89\CONTROL="0,3F" +STATE89\MOD9="0,1,0" +STATE89\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE90\NAME=STATE090 +STATE90\MOD1=",1,1,,1,1,,1,1,,1,1,10,1,0,,1,1,,1,1,10,1,0,,1,1,,1,1,,1,1,,1,1" +STATE90\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE90\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE90\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE90\MOD4="0,1,0,0,1,0" +STATE90\CONTROL="0,3F" +STATE90\MOD9="0,1,0" +STATE90\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE91\NAME=STATE091 +STATE91\MOD1="0,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,0,1,0" +STATE91\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE91\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE91\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE91\MOD4="0,1,0,0,1,0" +STATE91\CONTROL="0,3F" +STATE91\MOD9="0,1,0" +STATE91\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE92\NAME=STATE092 +STATE92\MOD1=",1,1,,1,1,10,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,10,1,0,,1,1,,1,1" +STATE92\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE92\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE92\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE92\MOD4="0,1,0,0,1,0" +STATE92\CONTROL="0,3F" +STATE92\MOD9="0,1,0" +STATE92\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE93\NAME=STATE093 +STATE93\MOD1=",1,1,,1,1,,1,1,,1,1,0,1,0,,1,1,,1,1,0,1,0,,1,1,,1,1,,1,1,,1,1" +STATE93\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE93\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE93\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE93\MOD4="0,1,0,0,1,0" +STATE93\CONTROL="0,3F" +STATE93\MOD9="0,1,0" +STATE93\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE94\NAME=STATE094 +STATE94\MOD1=",1,1,0,0,0,,1,1,,1,1,,1,1,10,0,0,10,0,0,,1,1,,1,1,,1,1,0,0,0,,1,1" +STATE94\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE94\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE94\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE94\MOD4="0,1,0,0,1,0" +STATE94\CONTROL="0,3F" +STATE94\MOD9="0,1,0" +STATE94\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE95\NAME=STATE095 +STATE95\MOD1=",1,1,,1,1,,1,1,10,0,0,,1,1,0,0,0,0,0,0,,1,1,10,0,0,,1,1,,1,1,,1,1" +STATE95\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE95\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE95\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE95\MOD4="0,1,0,0,1,0" +STATE95\CONTROL="0,3F" +STATE95\MOD9="0,1,0" +STATE95\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE96\NAME=STATE096 +STATE96\MOD1=",1,1,10,0,0,,1,1,0,0,0,,1,1,,1,1,,1,1,,1,1,0,0,0,,1,1,10,0,0,,1,1" +STATE96\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE96\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE96\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE96\MOD4="0,1,0,0,1,0" +STATE96\CONTROL="0,3F" +STATE96\MOD9="0,1,0" +STATE96\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE97\NAME=STATE097 +STATE97\MOD1="0,0,0,,1,1,,1,1,,1,1,10,0,0,,1,1,,1,1,10,0,0,,1,1,,1,1,,1,1,0,0,0" +STATE97\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE97\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE97\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE97\MOD4="0,1,0,0,1,0" +STATE97\CONTROL="0,3F" +STATE97\MOD9="0,1,0" +STATE97\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE98\NAME=STATE098 +STATE98\MOD1=",1,1,,1,1,10,0,0,,1,1,0,0,0,,1,1,,1,1,0,0,0,,1,1,10,0,0,,1,1,,1,1" +STATE98\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE98\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE98\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE98\MOD4="0,1,0,0,1,0" +STATE98\CONTROL="0,3F" +STATE98\MOD9="0,1,0" +STATE98\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE99\NAME=STATE099 +STATE99\MOD1="10,0,0,,1,1,0,0,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,0,0,0,,1,1,10,0,0" +STATE99\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE99\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE99\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE99\MOD4="0,1,0,0,1,0" +STATE99\CONTROL="0,3F" +STATE99\MOD9="0,1,0" +STATE99\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE100\NAME=STATE100 +STATE100\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE100\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE100\MOD3=",1,1,,1,1,1,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE100\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE100\MOD4="0,1,0,0,1,0" +STATE100\CONTROL="8,37" +STATE100\MOD9="0,1,0" +STATE100\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE101\NAME=STATE101 +STATE101\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE101\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE101\MOD3=",1,1,11,1,0,,1,1,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE101\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1" +STATE101\MOD4="0,1,0,0,1,0" +STATE101\CONTROL="0,3F" +STATE101\MOD9="0,1,0" +STATE101\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE102\NAME=STATE102 +STATE102\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE102\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE102\MOD3=",1,1,1,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE102\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE102\MOD4="0,1,0,0,1,0" +STATE102\CONTROL="0,3F" +STATE102\MOD9="0,1,0" +STATE102\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE103\NAME=STATE103 +STATE103\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE103\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE103\MOD3=",1,1,,1,1,,1,1,,1,1,1,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE103\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE103\MOD4="0,1,0,0,1,0" +STATE103\CONTROL="8,37" +STATE103\MOD9="0,1,0" +STATE103\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE104\NAME=STATE104 +STATE104\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE104\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE104\MOD3=",1,1,11,1,0,,1,1,,1,1,,1,1,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE104\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1" +STATE104\MOD4="0,1,0,0,1,0" +STATE104\CONTROL="0,3F" +STATE104\MOD9="0,1,0" +STATE104\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE105\NAME=STATE105 +STATE105\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE105\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE105\MOD3=",1,1,1,1,0,,1,1,,1,1,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE105\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE105\MOD4="0,1,0,0,1,0" +STATE105\CONTROL="0,3F" +STATE105\MOD9="0,1,0" +STATE105\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE106\NAME=STATE106 +STATE106\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE106\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE106\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE106\MOD12="1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE106\MOD4="0,1,0,0,1,0" +STATE106\CONTROL="0,3F" +STATE106\MOD9="0,1,0" +STATE106\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE107\NAME=STATE107 +STATE107\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE107\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE107\MOD3=",1,1,,1,1,1,1,0,11,1,0,1,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE107\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE107\MOD4="0,1,0,0,1,0" +STATE107\CONTROL="0,3F" +STATE107\MOD9="0,1,0" +STATE107\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE108\NAME=STATE108 +STATE108\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE108\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE108\MOD3=",1,1,11,1,0,,1,1,1,1,0,,1,1,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE108\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE108\MOD4="0,1,0,0,1,0" +STATE108\CONTROL="0,3F" +STATE108\MOD9="0,1,0" +STATE108\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE109\NAME=STATE109 +STATE109\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE109\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE109\MOD3=",1,1,,1,1,1,1,0,11,1,0,1,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE109\MOD12="1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE109\MOD4="0,1,0,0,1,0" +STATE109\CONTROL="0,3F" +STATE109\MOD9="0,1,0" +STATE109\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE110\NAME=STATE110 +STATE110\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE110\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE110\MOD3=",1,1,1,1,0,11,1,0,,1,1,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE110\MOD12="1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE110\MOD4="0,1,0,0,1,0" +STATE110\CONTROL="0,3F" +STATE110\MOD9="0,1,0" +STATE110\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE111\NAME=STATE111 +STATE111\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE111\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE111\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE111\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE111\MOD4="0,1,0,0,1,0" +STATE111\CONTROL="8,37" +STATE111\MOD9="0,1,0" +STATE111\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE112\NAME=STATE112 +STATE112\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE112\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE112\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE112\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE112\MOD4="0,1,0,0,1,0" +STATE112\CONTROL="0,31" +STATE112\MOD9="0,1,0" +STATE112\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE113\NAME=STATE113 +STATE113\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE113\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE113\MOD3=",1,1,,1,1,1,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE113\MOD12="1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE113\MOD4="0,1,0,0,1,0" +STATE113\CONTROL="0,3F" +STATE113\MOD9="0,1,0" +STATE113\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE114\NAME=STATE114 +STATE114\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE114\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE114\MOD3=",1,1,1,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE114\MOD12="1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE114\MOD4="0,1,0,0,1,0" +STATE114\CONTROL="0,3F" +STATE114\MOD9="0,1,0" +STATE114\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE115\NAME=STATE115 +STATE115\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE115\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE115\MOD3=",1,1,,1,1,,1,1,,1,1,1,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE115\MOD12="1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE115\MOD4="0,1,0,0,1,0" +STATE115\CONTROL="0,3F" +STATE115\MOD9="0,1,0" +STATE115\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE116\NAME=STATE116 +STATE116\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE116\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE116\MOD3=",1,1,1,1,0,,1,1,,1,1,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE116\MOD12="1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE116\MOD4="0,1,0,0,1,0" +STATE116\CONTROL="0,3F" +STATE116\MOD9="0,1,0" +STATE116\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE117\NAME=STATE117 +STATE117\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE117\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE117\MOD3=",1,1,,1,1,1,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE117\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE117\MOD4="0,1,0,0,1,0" +STATE117\CONTROL="0,3F" +STATE117\MOD9="0,1,0" +STATE117\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE118\NAME=STATE118 +STATE118\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE118\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE118\MOD3=",1,1,11.5,1,0,,1,1,,1,1,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE118\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE118\MOD4="0,1,0,0,1,0" +STATE118\CONTROL="0,3F" +STATE118\MOD9="0,1,0" +STATE118\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE119\NAME=STATE119 +STATE119\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE119\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE119\MOD3=",1,1,1,1,0,,1,1,,1,1,,1,1,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE119\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE119\MOD4="0,1,0,0,1,0" +STATE119\CONTROL="0,3F" +STATE119\MOD9="0,1,0" +STATE119\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE120\NAME=STATE120 +STATE120\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE120\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE120\MOD3=",1,1,,1,1,,1,1,,1,1,11,1,0,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE120\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE120\MOD4="0,1,0,0,1,0" +STATE120\CONTROL="0,3F" +STATE120\MOD9="0,1,0" +STATE120\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE121\NAME=STATE121 +STATE121\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE121\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE121\MOD3=",1,1,,1,1,11,1,0,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE121\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE121\MOD4="0,1,0,0,1,0" +STATE121\CONTROL="0,3F" +STATE121\MOD9="0,1,0" +STATE121\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE122\NAME=STATE122 +STATE122\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE122\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE122\MOD3=",1,1,,1,1,,1,1,,1,1,1,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE122\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE122\MOD4="0,1,0,0,1,0" +STATE122\CONTROL="0,3F" +STATE122\MOD9="0,1,0" +STATE122\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE123\NAME=STATE123 +STATE123\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE123\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE123\MOD3=",1,1,11.5,1,0,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE123\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE123\MOD4="0,1,0,0,1,0" +STATE123\CONTROL="0,3F" +STATE123\MOD9="0,1,0" +STATE123\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE124\NAME=STATE124 +STATE124\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE124\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE124\MOD3=",1,1,1,1,0,,1,1,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE124\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE124\MOD4="0,1,0,0,1,0" +STATE124\CONTROL="0,3F" +STATE124\MOD9="0,1,0" +STATE124\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE125\NAME=STATE125 +STATE125\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE125\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE125\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE125\MOD12="1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1" +STATE125\MOD4="0,1,0,0,1,0" +STATE125\CONTROL="0,3F" +STATE125\MOD9="0,1,0" +STATE125\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE126\NAME=STATE126 +STATE126\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE126\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE126\MOD3=",1,1,1,1,0,,1,1,,1,1,11,1,0,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE126\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE126\MOD4="0,1,0,0,1,0" +STATE126\CONTROL="0,3F" +STATE126\MOD9="0,1,0" +STATE126\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE127\NAME=STATE127 +STATE127\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE127\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE127\MOD3=",1,1,11,1,0,,1,1,,1,1,11,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE127\MOD12="1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1" +STATE127\MOD4="0,1,0,0,1,0" +STATE127\CONTROL="0,3F" +STATE127\MOD9="0,1,0" +STATE127\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE128\NAME=STATE128 +STATE128\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE128\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE128\MOD3=",1,1,1,1,0,11,1,0,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE128\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE128\MOD4="0,1,0,0,1,0" +STATE128\CONTROL="0,3F" +STATE128\MOD9="0,1,0" +STATE128\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE129\NAME=STATE129 +STATE129\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE129\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE129\MOD3=",1,1,11,1,0,11,1,0,11,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE129\MOD12="1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1" +STATE129\MOD4="0,1,0,0,1,0" +STATE129\CONTROL="0,3F" +STATE129\MOD9="0,1,0" +STATE129\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE130\NAME=STATE130 +STATE130\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE130\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE130\MOD3="10.5,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,10.5,1,0,,1,1" +STATE130\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE130\MOD4="0,1,0,0,1,0" +STATE130\CONTROL="8,37" +STATE130\MOD9="0,1,0" +STATE130\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE131\NAME=STATE131 +STATE131\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE131\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE131\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE131\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE131\MOD4="0,1,0,0,1,0" +STATE131\CONTROL="0,3F" +STATE131\MOD9="0,1,0" +STATE131\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE132\NAME=STATE132 +STATE132\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE132\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE132\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE132\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE132\MOD4="0,1,0,0,1,0" +STATE132\CONTROL="0,3F" +STATE132\MOD9="0,1,0" +STATE132\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE133\NAME=STATE133 +STATE133\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE133\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE133\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE133\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE133\MOD4="0,1,0,0,1,0" +STATE133\CONTROL="4,3B" +STATE133\MOD9="0,1,0" +STATE133\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE134\NAME=STATE134 +STATE134\MOD1="0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0" +STATE134\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE134\MOD3=",1,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE134\MOD12="1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1" +STATE134\MOD4="0,1,0,0,1,0" +STATE134\CONTROL="2,3D" +STATE134\MOD9="0,1,0" +STATE134\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE135\NAME=STATE135 +STATE135\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE135\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,8,1,0,,1,1,12,1,0,-2,1,0,,1,1,,1,1,,1,1" +STATE135\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-6,1,0,,1,1,,1,1" +STATE135\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE135\MOD4="0,1,0,0,1,0" +STATE135\CONTROL="4,3B" +STATE135\MOD9="0,1,0" +STATE135\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE136\NAME=STATE136 +STATE136\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE136\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE136\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,7.5,1,0,7.5,1,0,,1,1,,1,1,,1,1,,1,1" +STATE136\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE136\MOD4="0,1,0,0,1,0" +STATE136\CONTROL="0,3F" +STATE136\MOD9="0,1,0" +STATE136\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE137\NAME=STATE137 +STATE137\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE137\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE137\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-6,1,0,,1,1,,1,1,,1,1" +STATE137\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE137\MOD4="0,1,0,0,1,0" +STATE137\CONTROL="0,3F" +STATE137\MOD9="0,1,0" +STATE137\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE138\NAME=STATE138 +STATE138\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE138\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE138\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,7,1,0,,1,1,,1,1" +STATE138\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE138\MOD4="0,1,0,0,1,0" +STATE138\CONTROL="0,3F" +STATE138\MOD9="0,1,0" +STATE138\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE139\NAME=STATE139 +STATE139\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE139\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE139\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-5,1,0,-5,1,0,,1,1,,1,1,,1,1,,1,1" +STATE139\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE139\MOD4="0,1,0,0,1,0" +STATE139\CONTROL="0,3F" +STATE139\MOD9="0,1,0" +STATE139\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE140\NAME=STATE140 +STATE140\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE140\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,2,1,0,,1,1,,1,1,,1,1,,1,1" +STATE140\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,7,1,0,,1,1,,1,1,,1,1" +STATE140\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE140\MOD4="0,1,0,0,1,0" +STATE140\CONTROL="0,3F" +STATE140\MOD9="0,1,0" +STATE140\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE141\NAME=STATE141 +STATE141\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE141\MOD2=",1,1,,1,1,,1,1,,1,1,8,1,0,,1,1,,1,1,12,1,0,,1,1,8,1,0,,1,1,,1,1" +STATE141\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE141\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE141\MOD4="0,1,0,0,1,0" +STATE141\CONTROL="0,31" +STATE141\MOD9="0,1,0" +STATE141\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE142\NAME=STATE142 +STATE142\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE142\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,-5,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE142\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE142\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE142\MOD4="0,1,0,0,1,0" +STATE142\CONTROL="0,3F" +STATE142\MOD9="0,1,0" +STATE142\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE143\NAME=STATE143 +STATE143\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE143\MOD2=",1,1,,1,1,8,1,0,8,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE143\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE143\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE143\MOD4="0,1,0,0,1,0" +STATE143\CONTROL="0,3F" +STATE143\MOD9="0,1,0" +STATE143\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE144\NAME=STATE144 +STATE144\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE144\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,2,1,0,6,1,0,,1,1,,1,1,,1,1" +STATE144\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE144\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE144\MOD4="0,1,0,0,1,0" +STATE144\CONTROL="0,3F" +STATE144\MOD9="0,1,0" +STATE144\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE145\NAME=STATE145 +STATE145\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE145\MOD2=",1,1,,1,1,,1,1,,1,1,-5,1,0,,1,1,,1,1,,1,1,,1,1,-5,1,0,,1,1,,1,1" +STATE145\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE145\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE145\MOD4="0,1,0,0,1,0" +STATE145\CONTROL="0,3F" +STATE145\MOD9="0,1,0" +STATE145\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE146\NAME=STATE146 +STATE146\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE146\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,8,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE146\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE146\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE146\MOD4="0,1,0,0,1,0" +STATE146\CONTROL="0,3F" +STATE146\MOD9="0,1,0" +STATE146\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE147\NAME=STATE147 +STATE147\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE147\MOD2=",1,1,,1,1,-5,1,0,-5,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE147\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE147\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE147\MOD4="0,1,0,0,1,0" +STATE147\CONTROL="0,3F" +STATE147\MOD9="0,1,0" +STATE147\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE148\NAME=STATE148 +STATE148\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE148\MOD2=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-2,1,0,,1,1,,1,1,,1,1" +STATE148\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE148\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE148\MOD4="0,1,0,0,1,0" +STATE148\CONTROL="0,3F" +STATE148\MOD9="0,1,0" +STATE148\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE149\NAME=STATE149 +STATE149\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE149\MOD2=",1,1,,1,1,,1,1,,1,1,8,1,0,,1,1,,1,1,12,1,0,,1,1,8,1,0,,1,1,,1,1" +STATE149\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE149\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE149\MOD4="0,1,0,0,1,0" +STATE149\CONTROL="0,3F" +STATE149\MOD9="0,1,0" +STATE149\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE150\NAME=STATE150 +STATE150\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE150\MOD2=",1,1,,1,1,,1,1,,1,1,8,1,0,,1,1,,1,1,,1,1,6,1,0,8,1,0,,1,1,,1,1" +STATE150\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE150\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE150\MOD4="0,1,0,0,1,0" +STATE150\CONTROL="0,3F" +STATE150\MOD9="0,1,0" +STATE150\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE151\NAME=STATE151 +STATE151\MOD1=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE151\MOD2=",1,1,,1,1,-5,1,0,-5,1,0,,1,1,,1,1,,1,1,2,1,0,-2,1,0,,1,1,,1,1,,1,1" +STATE151\MOD3=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE151\MOD12="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" +STATE151\MOD4="0,1,0,0,1,0" +STATE151\CONTROL="0,3F" +STATE151\MOD9="0,1,0" +STATE151\MOD10="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATES=152 +[SYSTEM] +BACKPLANE_ID=0000000000000000 +BACKPLANE_REV=0 +BACKPLANE_TYPE=1 +BACKPLANE_VERSION=0.0.0 +MOD1_ID=0000000000000000 +MOD1_REV=0 +MOD1_VERSION=0.0.0 +MOD1_TYPE=16 +MOD2_ID=0000000000000000 +MOD2_REV=0 +MOD2_VERSION=0.0.0 +MOD2_TYPE=16 +MOD3_ID=0000000000000000 +MOD3_REV=0 +MOD3_VERSION=0.0.0 +MOD3_TYPE=16 +MOD4_ID=0000000000000000 +MOD4_REV=0 +MOD4_VERSION=0.0.0 +MOD4_TYPE=12 +MOD9_ID=0000000000000000 +MOD9_REV=0 +MOD9_VERSION=0.0.0 +MOD9_TYPE=8 +MOD10_ID=0000000000000000 +MOD10_REV=0 +MOD10_VERSION=0.0.0 +MOD10_TYPE=9 +MOD12_ID=0000000000000000 +MOD12_REV=0 +MOD12_VERSION=0.0.0 +MOD12_TYPE=10 +[MODE_DEFAULT] +ACF:FRAMEMODE=2 +ACF:LINECOUNT=4125 +ACF:PIXELCOUNT=1094 +ACF:TAPLINE0="AM37L,1,100" +ACF:TAPLINE1="AM38R,1,100" +ACF:TAPLINES=16 +ARCH:HORI_AMPS=2 +ARCH:NUM_DETECT=8 +ARCH:VERT_AMPS=1 +[MODE_FCS] +ACF:FRAMEMODE=0 +ACF:LINECOUNT=4116 +ACF:PIXELCOUNT=1069 +ACF:TAPLINE0="AM45L,1,100" +ACF:TAPLINE1="AM46R,1,100" +ACF:TAPLINES=2 +ARCH:HORI_AMPS=1 +ARCH:NUM_DETECT=2 +ARCH:VERT_AMPS=1 +[MODE_SCI] +ACF:FRAMEMODE=2 +ACF:LINECOUNT=4124 +ACF:PIXELCOUNT=1094 +ACF:TAPLINE0="AM37L,1,100" +ACF:TAPLINE1="AM38R,1,100" +ACF:TAPLINES=16 +ARCH:HORI_AMPS=2 +ARCH:NUM_DETECT=8 +ARCH:VERT_AMPS=1 diff --git a/src/deimos/deimos.cds b/src/deimos/deimos.cds new file mode 100644 index 0000000..5167474 --- /dev/null +++ b/src/deimos/deimos.cds @@ -0,0 +1,146 @@ +/* -*- C -*- */ +/** --------------------------------------------------------------------------- + * @file wasp.cds + * @brief CDS/Deinterlace parameters for WaSP instrument + */ + +#include "voltage_timing_parameters.h" + + +//attempt pixel timing coincident with the nearest ADM samples. That means multiples of 8 +//by eye, try 80 to start +// then it looks like 13 ADM samples, 80 + 13 *8 = 184 + + //signal is 13 ADM samples, starting from time 232 + //232 + 13 * 8 = 338 + + // last sample number must fit the series 8*n-1 + // first sample number must be in the series 8*n +BIGBUF = _ARCHON_FRAMEBUFS +RAWSTARTLINE = 0 + //to view the last prescan and start of the line + //RAWSTARTPIXEL = 48 + //to view the end of the line +RAWSTARTPIXEL = 1061 +SAMPLEMODE = 1 +RAWENABLE = _RAW_ENABLE +RAWENDLINE = 800 +RAWSAMPLES = 20000 + + + //ADM module installed in slot 7 + + + // NOTE tghere is a re-mapping due to the cameralink cable, + // that is not accounted for by the current DEIMOS VIB. + // currently, SCI 2E channel is connected to FCS L1 (which will be channel 9 in the ADM card, tap channel 45) + // raw channel selection 49 + // SCI 2F channel is connected to SCI 4f (which will be channel 8 in the ADM card, tap channel 44) + // note this should also be inverted in principle, not sure if that's actually ahppenbing TBD + // raw channel selection 48 + + + //NOTE due to a small mistake in the VIB schematic, ALL signals come out inverted. Due to a mistake in the mapping of the cameralink cable, the channels are mixed up and some are inverted. This inversion cancels out the other inversion. Hence SCI2F is NOT inverted, but SCI 2E IS + + + +#if 0 + //detector currently installed in slot 2 +TAPLINE0="AM39L,1,100" +TAPLINE1="AM40R,1,100" +TAPLINES=2 +FRAMEMODE=0 + +BIGBUF=_ARCHON_FRAMEBUFS +LINECOUNT=_LINENUM +PIXELCOUNT=_AMPREADCOLS + //RAWSEL = _RAW_SELECT + //NOTE RAWSEL of 11 should be E channel of slot 2 +RAWSEL=11 +RAWSTARTLINE=0 + //to view the last prescan and start of the line + //RAWSTARTPIXEL = 48 + //to view the end of the line + +SHP1=120 +SHP2=303 +SHD1=448 +SHD2=575 + +#elif 0 +TAPLINES=2 +FRAMEMODE=0 +TAPLINE0="AM45L,1,100" +TAPLINE1="AM46R,1,100" + +RAWSEL=48 +LINECOUNT = _FCS_LINENUM +PIXELCOUNT = _FCS_TOTAL_COLS + +SHP1 = 350 +SHP2 = 500 +SHD1 = 600 +SHD2 = 750 + +RAWSTARTPIXEL=23 + + +#else + //FRAMEMODE=0 +/* TAPLINE0="AM37L,1,100" */ +/* TAPLINE1="AM38R,1,100" */ +/* TAPLINE2="AM39L,1,100" */ +/* TAPLINE3="AM40R,1,100" */ +/* TAPLINE4="AM41L,1,100" */ +/* TAPLINE5="AM42R,1,100" */ +/* TAPLINE6="AM43L,1,100" */ +/* TAPLINE7="AM44R,1,100" */ +/* TAPLINE8="AM47L,1,100" */ +/* TAPLINE9="AM48R,1,100" */ +/* TAPLINE10="AM49L,1,100" */ +/* TAPLINE11="AM50R,1,100" */ +/* TAPLINE12="AM51L,1,100" */ +/* TAPLINE13="AM52R,1,100" */ +/* TAPLINE14="AM53L,1,100" */ + //TAPLINE15="AM54R,1,100" + //TAPLINES=16 + +FRAMEMODE=2 +TAPLINE0="AM37L,1,100" +TAPLINE1="AM38R,1,100" +TAPLINE2="AM39L,1,100" +TAPLINE3="AM40R,1,100" +TAPLINE4="AM41L,1,100" +TAPLINE5="AM42R,1,100" +TAPLINE6="AM43L,1,100" +TAPLINE7="AM44R,1,100" +TAPLINE8="AM54L,1,100" +TAPLINE9="AM53R,1,100" +TAPLINE10="AM52L,1,100" +TAPLINE11="AM51R,1,100" +TAPLINE12="AM50L,1,100" +TAPLINE13="AM49R,1,100" +TAPLINE14="AM48L,1,100" +TAPLINE15="AM47R,1,100" +TAPLINES=16 + + +LINECOUNT=_LINENUM +PIXELCOUNT=_AMPREADCOLS +RAWSEL = _RAW_SELECT + //NOTE RAWSEL of 11 should be E channel of slot 2 +RAWSEL = 11 + +SHP1 = 120 +SHP2 = 303 +SHD1 = 448 +SHD2 = 575 + + + +#endif + +TRIGOUTFORCE=0 +TRIGOUTINVERT=0 +TRIGOUTLEVEL=0 +TRIGOUTPOWER=1 diff --git a/src/deimos/deimos.conf b/src/deimos/deimos.conf new file mode 100644 index 0000000..d165b19 --- /dev/null +++ b/src/deimos/deimos.conf @@ -0,0 +1,22 @@ +/** --------------------------------------------------------------------------- + * @file deimos.conf + * @brief WDL configuration file for deimos project + * @author Joseph Bichel + * @date 2024-12-10 + * @modified + * + * This file needs to identify the following four files: + * WAVEFORM_FILE = + * SYSTEM_FILE = + * SIGNAL_FILE = + * SEQUENCE_FILE = + * + */ + +INCLUDE_FILE = "deimos.def" /* #defines and usage are self contained */ +CDS_FILE = "deimos.cds" /* uses #defines from .def file */ +SIGNAL_FILE = "deimos.signals" /* #defines and usage are self contained */ +WAVEFORM_FILE = "deimos.waveform" /* uses #defines from .def and .signals */ +SEQUENCE_FILE = "deimos.seq" /* uses #defines from .def and .waveform */ +MODULE_FILE = "deimos.mod" /* #defines and usage are self contained */ +MODE_FILE = "deimos.modes" diff --git a/src/deimos/deimos.def b/src/deimos/deimos.def new file mode 100644 index 0000000..cd48c54 --- /dev/null +++ b/src/deimos/deimos.def @@ -0,0 +1,133 @@ +/* -*- C -*- */ +/** --------------------------------------------------------------------------- + * @file deimos.def + * @brief DEIMOS definition file; user macros to be used within Archon files + * i.e. within the .script, .states, .cds, or .modules files + * + * Use #define to define macros; syntax is case sensitive. + * By convention macros will be capitalized and will start with an underscore + * ex. _SW_SLEW_SLOW for setting slow slew rate of the summing well + */ + + /** -------------------------------------------------------------------------- + * Configuration modes + */ + +#include "voltage_timing_parameters.h" + + + + /** -------------------------------------------------------------------------- + * Archon Configuration Details + */ + +#define _ARCHON_SAMPLE_MODE 1 /* 0=16bit, 1=32bit */ +#define _ARCHON_FRAMEMODE 2 /* 0=top, 1=bottom, 2=split */ +#define _ARCHON_FRAMEBUFS 0 /* 0=3x512MB, 1=2x768MB, I.E. "BIGBUF" */ + +#define _RAW_ENABLE 1 /* 0=no, 1=yes */ +#define _RAW_STARTLINE 0 /* first line of raw data, 0-65535 */ +#define _RAW_ENDLINE 10 /* last line of raw data, 0-65535 */ +#define _RAW_STARTPIXEL 50 +#define _RAW_SAMPLES 2000 +#define _RAW_SELECT 11 /* AD channel for raw data capture, 0-15 */ + +//NOTE correspondence from Greg Bredthauer to Dan W: +// +//Raw Channel Select 1-4 => ADM channels 1-4 +/* Raw Channel Select 5-8 => ADM channels 19-22 */ +/* Raw Channel Select 9-12 => ADM channels 37-40 */ +/* Raw Channel Select 13-16 => ADM channels 55-58 */ +/* Raw Channel Select 17-30 => ADM channels 5-18 */ +/* Raw Channel Select 31-44 => ADM channels 23-36 */ +/* Raw Channel Select 45-58 => ADM channels 41-54 */ +/* Raw Channel Select 59-72 => ADM channels 59-72 */ +// does not seem that obvious to guess tbh + + + /** --------------------------------------------------------------------------- +* Detector Array Parameters + */ + +#define _SECTION_A_ROWS 2056 +#define _SECTION_B_ROWS 2048 + +#define _IMAGECOLS 2048 + +//NOTE: read out all through one amp test +//#define _AMPCOLS _IMAGECOLS + +#define _AMPCOLS #eval _IMAGECOLS / 2 +#define _IMAGEROWS #eval _SECTION_A_ROWS + _SECTION_B_ROWS + + +/* #define _CDS_WIDTH 10 /* width of each CDS integration component in clocks */ +#define _SERIALPRESCAN 50 +#define _SERIALOVERSCAN 20 +#define _PARALLELOVERSCAN 20 + +#define _AMPREADCOLS #eval (_AMPCOLS + _SERIALPRESCAN + _SERIALOVERSCAN) +#define _LINENUM #eval (_IMAGEROWS + _PARALLELOVERSCAN) + + + + + /** --------------------------------------------------------------------------- + * CDS-Deinterlace options + */ + + + +/* TODO CLARIFY VLAYES FOR RG AND SW settling time */ +#define RG_settleT 20 // TODO: reduce when get better damping +#define SW_settleT 20 // TODO: reduce when get better damping + + +#define CDS_RESET_LENGTH 35 +#define CDS_SIGNAL_LENGTH 35 +#define COINC_SW_DELAY 2 + + + +//attempt pixel timing coincident with the nearest ADM samples + + + + +#define AC_CLAMP_ON_TIME 1000 +#define AC_CLAMP_EXTRA_RECOVER 1000 + + +// constants for use with parallel total deferred charge measurements +#define LLEL_TDC_LINE_SPACING 10 +#define LLEL_TDC_BINS 1 + +//could in principle calculate - based on line spacing and how many total lines are availablei +#define LLEL_TDC_LOOPS 100 + + +#define SER_TDC_LLEL_BINS 1 +#define SER_TDC_SER_BINS 1 +#define SER_TDC_ROW_SPACING 10 + + + + +/** basic constants to assist in somewhat automating slew rate for triangle clocking. + For now we are just entering a slew time manually, then calculating the rate to make + sure we hit the intended voltage at the top of the triangle waveform **/ + + + +// FCS array parameters +#define _FCS_A_ROWS 2048 +#define _FCS_B_ROWS 2048 +#define _FCS_ROWS #eval _FCS_A_ROWS + _FCS_B_ROWS +#define _FCS_PRESCAN 25 +#define _FCS_AMPCOLS 1024 +#define _FCS_OVERSCAN 20 +#define _FCS_LLEL_OVERSCAN 20 + +#define _FCS_TOTAL_COLS #eval _FCS_PRESCAN + _FCS_AMPCOLS + _FCS_OVERSCAN + +#define _FCS_LINENUM #eval _FCS_ROWS + _FCS_LLEL_OVERSCAN diff --git a/src/deimos/deimos.mod b/src/deimos/deimos.mod new file mode 100644 index 0000000..1412c3d --- /dev/null +++ b/src/deimos/deimos.mod @@ -0,0 +1,194 @@ +deimos_TMP +#include voltage_timing_parameters.h + +/* Fast and Slow slew rates are defined here */ +/* A boolean is set during a SET..TO command */ +/* to select between fast and slow slew rate */ + + + + +SLOT 1 driverx { + + DRVX 1 [PCLK_fast,PCLK_slow,1] "PCLK_B3_2"; + DRVX 2 [PCLK_fast,PCLK_slow,1] "PCLK_A3_2"; + DRVX 3 [PCLK_fast,PCLK_slow,1] "PCLK_B2_2"; + DRVX 4 [PCLK_fast,PCLK_slow,1] "PCLK_A2_2"; + DRVX 5 [PCLK_fast,PCLK_slow,1] "PCLK_B1_2"; + DRVX 6 [PCLK_fast,PCLK_slow,1] "PCLK_A1_2"; + DRVX 7 [PCLK_fast,PCLK_slow,1] "PCLK_A1_1"; + DRVX 8 [PCLK_fast,PCLK_slow,1] "PCLK_B1_1"; + DRVX 9 [PCLK_fast,PCLK_slow,1] "PCLK_A2_1"; + DRVX 10 [PCLK_fast,PCLK_slow,1] "PCLK_B2_1"; + DRVX 11 [PCLK_fast,PCLK_slow,1] "PCLK_A3_1"; + DRVX 12 [PCLK_fast,PCLK_slow,1] "PCLK_B3_1"; +} + +SLOT 2 driverx { + DRVX 1 [SCLK_fast,SCLK_slow,1] "SCI_RGBACKUP2"; + DRVX 2 [SCLK_fast,SCLK_slow,1] "SCI_SWBACKUP1"; + DRVX 3 [SCLK_fast_FCS,SCLK_slow_FCS,1] "FCS2_S2L"; + DRVX 4 [SCLK_fast_FCS,SCLK_slow_FCS,1] "FCS1_S2L"; + DRVX 5 [SCLK_fast_FCS,SCLK_slow_FCS,1] "FCS2_S3L"; + DRVX 6 [SCLK_fast_FCS,SCLK_slow_FCS,1] "FCS_S1"; + DRVX 7 [SCLK_fast,SCLK_slow,1] "SCI_SWBACKUP2"; + DRVX 8 [SCLK_fast_FCS,SCLK_slow_FCS,1] "FCS_RG"; + DRVX 9 [SCLK_fast_FCS,SCLK_slow_FCS,1] "FCS_SW"; + DRVX 10 [SCLK_fast_FCS,SCLK_slow_FCS,1] "FCS1_S3L"; + DRVX 11 [1,1,0] "Spare1"; + DRVX 12 [1,1,0] "Spare2"; +} + +SLOT 3 driverx { + DRVX 1 [TG_fast,TG_slow,1] "TGA1"; + DRVX 2 [SCLK_fast,SCLK_slow,1] "Serial EF"; + DRVX 3 [SCLK_fast,SCLK_slow,1] "Serial E2"; + DRVX 4 [SCLK_fast,SCLK_slow,1] "Serial E1"; + DRVX 5 [SCLK_fast,SCLK_slow,1] "Serial F2"; + DRVX 6 [SCLK_fast,SCLK_slow,1] "Serial F1"; + DRVX 7 [PCLK_fast_FCS,PCLK_slow_FCS,1] "FCS PPhase3U"; + DRVX 8 [PCLK_fast_FCS,PCLK_slow_FCS,1] "FCS PPhase3L"; + DRVX 9 [PCLK_fast_FCS,PCLK_slow_FCS,1] "FCS PPhase2"; + DRVX 10 [PCLK_fast_FCS,PCLK_slow_FCS,1] "FCS PPhase1"; + DRVX 11 [TG_fast,TG_slow,1] "TGA2"; + DRVX 12 [1,1,0] "SCI_RGBACKUP1"; +} + + +SLOT 4 xvbias { + PBIAS 1 0 [0,0]; + PBIAS 2 0 [0,0]; + PBIAS 3 0 [0,0]; + PBIAS 4 0 [0,0]; + NBIAS 1 1 [0, -0] "SCI Backside"; + NBIAS 2 0 [0,-0]; + NBIAS 3 0 [0,-0]; + NBIAS 4 0 [0,-0]; +} + + + +/* SLOT 7 ADM */ + +/****** Bias Power Up Order ******/ +/* 1 : Front Substrate */ +/* 1 : Back Substrate to 0V */ +/* 2 : Guard Drain */ +/* 2 : Reset Drain */ +/* 2 : Ouput Drain */ +/* 3 : Output Gate */ +/* 4 : Image Clock High */ +/* 4 : Image Clock Low */ +/* 4 : Register Clock High */ +/* 4 : Register Clock Low */ +/* 4 : Reset Gate High */ +/* 4 : Reset Gate Low */ +/* 5 : Back Substrate to -100V */ + +SLOT 9 hvxbias { + HVLC 1 [0.00,0]; + HVLC 2 [24.0,1] "SCI1 Guard Drain"; + HVLC 3 [24.0,1] "SCI2 Guard drain"; + HVLC 4 [0.00,0]; + HVLC 5 [17.5,1] "SCI1 E Reset Drain"; + HVLC 6 [17.5,1] "SCI1 F Reset Drain"; + HVLC 7 [0.00,0]; + HVLC 8 [14.00,2] "FCS1 Reset Drain A"; + HVLC 9 [14.00,2] "FCS1 Reset Drain B"; +//FCS2 selected needs a spicier reset drain too +//to avoid smearing + HVLC 10 [14.50,2] "FCS2 Reset Drain A"; + HVLC 11 [14.50,2] "FCS2 Reset Drain B"; + HVLC 12 [14.90,2] "FCS Overflow Drain"; + HVLC 13 [24.3,2] "FCS1 Output Drain A"; + HVLC 14 [24.3,2] "FCS1 Output Drain B"; + HVLC 15 [24.3,2] "FCS2 Output Drain A"; + HVLC 16 [24.3,2] "FCS2 Output Drain B"; + HVLC 17 [0.00,0]; + HVLC 18 [0.00,0]; + HVLC 19 [0.00,0]; + HVLC 20 [0.00,0]; + HVLC 21 [17.00,1] "SCI2 E Reset Drain"; + HVLC 22 [17.00,1] "SCI2 F Reset Drain"; + HVLC 23 [0.0,0]; + HVLC 24 [0.0,0]; //TODO: needs re-assignment! + HVHC 1 [29.0,27.0,1,1] "SCI E Output Drain"; + HVHC 2 [29.0,27.0,1,1] "SCI F Output Drain"; + HVHC 3 [29.0,27.0,1,1] "SCI2 E Output Drain"; + HVHC 4 [29.0,27.0,1,1] "SCI2 F Output Drain"; + HVHC 5 [0.0,0.0,0,0]; + HVHC 6 [0.0,0.0,0,0]; +} + +SLOT 10 lvxbias { + LVLC 1 [3.3,6] "LVDS Receiver Output Enable"; + LVLC 2 [00.0,0]; + LVLC 3 [3.0,4] "SCI E Output Gate"; + LVLC 4 [3.0,4] "SCI F Output Gate"; + LVLC 5 [0.0,0] ; // NB goes through a line driver + LVLC 6 [0.0,0]; // NB goes through a line driver + LVLC 7 [0.0,0]; + LVLC 8 [0.0,0]; + LVLC 9 [00.0,0]; + LVLC 10 [-4.0,4] "LastGateA FCS 1"; + LVLC 11 [-4.0,4] "LastGateB FCS 1"; +// NOTE: it seems last gate on FCS2 detector needs a bit more oomph + LVLC 12 [-1.0,4] "LastGateA FCS 2"; + LVLC 13 [-1.0,4] "LastGateB FCS 2"; + LVLC 14 [3.0,4] "SCI E Output Gate 2" ; + LVLC 15 [3.0,4] "SCI F Output Gate 2"; + LVLC 16 [0.0,0] ; + LVLC 17 [00.0,0]; + LVLC 18 [0.0,0] ; + LVLC 19 [0.0,0] ; + LVLC 20 [00.0,0]; + LVLC 21 [00.0,0]; + LVLC 22 [0.2,6] "Video offset FCS"; + LVLC 23 [0.50,6] "Video offset SCI"; + LVLC 24 [0.46,6] "Video offset SCI2"; + LVHC 1 [2.00,20.0,5,1] "SCI Summing Well - Low"; + LVHC 2 [11.00,20.0,5,1] "SCI Summing Well - High"; + LVHC 3 [12.0,20.0,5,1] "SCI Reset Gate - High"; + LVHC 4 [5.5,20.0,5,1] "SCI Reset Gate - Low"; + LVHC 5 [0.00,0.0,0,0]; + LVHC 6 [0.00,0.0,0,0]; + DIO 1 [0,0] "Driver Output Enable (unused)"; + DIO 2 [0,0] "Loopback 1 IN"; + DIO 3 [2,1] "Loopback 1 OUT"; + DIO 4 [2, 1] "Loopback 2 OUT"; + DIO 5 [0,0] "Loopback 2 IN"; + DIO 6 [0, 0] "Loopback 3 IN"; + DIO 7 [2,1] "Loopback 3 OUT"; + DIO 8 [2,1] "Trig out EXT"; + DIOPOWER = 1; +} + +SLOT 12 lvds { + LVDSL 1 "PD_OE_IN"; + LVDSL 2 "NOP"; + LVDSL 5 "RG_SCI3"; + LVDSL 6 "RG_SCI4"; + LVDSL 7 "RG_SCI1"; + LVDSL 8 "RG_SCI2"; + LVDSL 11 "AC_clamp_FCS"; + LVDSL 12 "AC_clamp"; + LVDSL 13 "SW_SCI4"; + LVDSL 14 "SW_SCI3"; + LVDSL 15 "RG_SCI1"; + LVDSL 16 "SW_SCI2"; + DIO 1 [0,0] "Loopback 4 IN"; + DIO 2 [2,1] "Loopback 4 OUT"; + DIO 3 [0,0] "Loopback 5 IN"; + DIO 4 [2,1] "Loopback 5 OUT"; + DIOPOWER = 1; + +} + + + + + + + + + diff --git a/src/deimos/deimos.modes b/src/deimos/deimos.modes new file mode 100644 index 0000000..c42b6a6 --- /dev/null +++ b/src/deimos/deimos.modes @@ -0,0 +1,27 @@ +[MODE_DEFAULT] +ARCH:NUM_DETECT=8 +ARCH:HORI_AMPS=2 +ARCH:VERT_AMPS=1 +ACF:FRAMEMODE=2 +ACF:PIXELCOUNT=1094 +ACF:LINECOUNT=4125 + + +[MODE_FCS] +ARCH:NUM_DETECT=2 +ARCH:HORI_AMPS=1 +ARCH:VERT_AMPS=1 +ACF:TAPLINE0="AM45L,1,100" +ACF:TAPLINE1="AM46R,1,100" +ACF:TAPLINES=2 +ACF:LINECOUNT=4116 +ACF:PIXELCOUNT=1069 +ACF:FRAMEMODE=0 + +[MODE_SCI] +ARCH:NUM_DETECT=8 +ARCH:HORI_AMPS=2 +ARCH:VERT_AMPS=1 +ACF:LINECOUNT=4124 +ACF:PIXELCOUNT=1094 +ACF:FRAMEMODE=0 diff --git a/src/deimos/deimos.seq b/src/deimos/deimos.seq new file mode 100644 index 0000000..6f7b03a --- /dev/null +++ b/src/deimos/deimos.seq @@ -0,0 +1,740 @@ + +/* -*- C -*- */ +/** --------------------------------------------------------------------------- + * @file deimos.seq + * @brief sequence file for DEIMOS science detectors + * @author Joseph Bichel + * @date 2024-12-02 + * @modified + * + */ + +/** --------------------------------------------------------------------------- + +/** --------------------------------------------------------------------------- + * parameter definitions + * syntax: param paramname=value +*/ + + +/** testing constant values **/ + + +/** parameters interfaced with camerad in summit mode **/ +param FcsExpTimeSec = 0 //FCS exposure time (seconds) + +param FcsExpTimeMSec = 0 // FCS exposure time (milliseconds) + +param SciStart = 0 // trigger to start a science exposure + +param FcsStart = 0 // trigger to start an FCS exposure + +param SciStop = 0 //trigger to end a science exposure and start readout + +/** System Control Triggers **/ + +param engmode = 0 //run in the engineering mode +param engmode_fcs = 0 //run in the FCS engineering mode + +param integrate_ms = 0 // amount of time to integrate in the dark (ms component) +param integrate_s = 0 // amount of time to integrate in the dark (s component) + +param framecount = 0 // how many frames to read (set to 1 to trigger a readout on next sequence +param abortintegrate = 0 // set to 1 to bail out if in the middle of an integration + +param illum = 0 //should the light be turned on for integrations +param integrate_illum_ms = 50 //amount of time to integrate with light on (ms component) +param integrate_illum_s = 0 //amount of time to integrate with light on (s component) +param rg_mod_test_mode = 0 //go into special output V_RD modulation mode - EXPERTS ONLY +param tdi_wait_us = 0 // add a TDI wait period to each llel readout in llel_seq mode (for "quickPTC") + + + //internal summit mode state parameters +param summit_sci_is_integrating = 0 + +param line_clamp_delay_us = 10 + + //=====READOUT MODES -- all are MUTUALLY EXCLUSIVE ---- +param llel_coincident = 0 //use coincident llel clocks +param llel_seq = 1 //use sequential (normal) llel clocks +param slow_pix = 0 // use "slow pixel" serials +param linbin = 0 //Kaye/Smith/Greffe "linearity via binning" sequence +param dch_llel = 0 // total deferred charge measurement (llel CTI) +param dch_ser = 0 // total deferred charge measurement (serial CTI) + + +//----- END OF READOUT MODES --- +param llel_bin = 1 +param ser_bin = 1 +param enable_ser_bin = 0 + + + + //serial CTI measurement configuration modes + //direction 0 means read out towards E, dump + //backwards from F. direction 1 means read + //out towards F, dump backwards from E + param dsch_ser_direction = 0 + //serial CTI should we dump the bright columns? + param dsch_ser_dump_bcs = 0 + + + // const llel_high_level = _PAR_CLOCK_HIGH + //const llel_low_level = _PAR_CLOCK_LOW + //const llel_tri_slew = P_TRI_SLEW_RATE + + + //defined voltage constants + + //science clocks + const sci_llel_high = _PAR_CLOCK_HIGH + const sci_llel_low = _PAR_CLOCK_LOW + const sci_ser_high = _SER_CLOCK_HIGH + const sci_ser_low = _SER_CLOCK_LOW + const sci_ser_rcv = _SER_CLOCK_RCV + const sci_tg_high = _TG_CLOCK_HIGH + const sci_tg_low = _TG_CLOCK_LOW + + //fcs clocks + const fcs_llel_high = _PAR_CLOCK_HIGH_FCS + // const fcs_llel_low = _PAR_CLOCK_LOW_FCS + //const fcs_mpp_low = _MPP_CLOCK_LOW_FCS + const fcs_mpp_high = _MPP_CLOCK_HIGH_FCS + //const fcs_ser_low = _SER_CLOCK_LOW_FCS + const fcs_ser_high = _SER_CLOCK_HIGH_FCS + + const fcs_rg_low = _RG_LOW_FCS + const fcs_rg_high = _RG_HIGH_FCS + const fcs_sw_low = _SW_LOW_FCS + const fcs_sw_high = _SW_HIGH_FCS + + //TODO: wide gate integration mode + + //calculations for linbin... +//number of linbin valuable measurements you'll get +#define LINBIN_MEAS #exec echo " (sqrt(1 + 8 * _IMAGEROWS) -1)/2 " | bc + + //number of non measured linbin rows to read out to maintain total same image size +#define LINBIN_NOBIN_ROWS #eval TOTAL_ROWS - LINBIN_MEAS + + + + +//segment calculations +//this does floor arithmetic, so might end up with wrong number +//if number cols changes +#define PIXELS_PER_SEG #eval _AMPREADCOLS / 3 + +#define REMAINDER_PIX #eval _AMPREADCOLS - (PIXELS_PER_SEG * 3) + + +#define TOTAL_ROWS #eval _IMAGEROWS + _PARALLELOVERSCAN + + //calculations for total deferred charge measurements + + //number of lines in the TDC segment (including + //one bright line and the rest dark) +#define LLEL_TDC_LINES 60 + +#define LLEL_TDC_BININCR 1 + +#define LLEL_TDC_LOOPS #eval TOTAL_ROWS / LLEL_TDC_LINES + +#define LLEL_TDC_REMAINDER #eval TOTAL_ROWS % LLEL_TDC_LINES + +#define SER_TDC_COLS 21 + +#define SER_TDC_COLSm1 #eval SER_TDC_COLS -1 + +#define SER_TDC_BININCR 1 + +#define SER_TDC_LOOPS #eval (_AMPCOLS + _SERIALOVERSCAN) / SER_TDC_COLS + +#define SER_TDC_REMAINDER #eval (_AMPCOLS + _SERIALOVERSCAN) % SER_TDC_COLS + + + + +#if NOISETEST +SEQUENCE NoiseTest { + setupTGTest(); + BounceTGTestOuter(_IMAGEROWS); + BounceTGTestOuter(_PARALLELOVERSCAN); + GOTO NoiseTest(); +} + + + +SEQUENCE BounceTGTestOuter +{ + TGTestLineStart(); + BounceTGTest(_AMPREADCOLS); + RETURN; +} + +#endif + +#if CLAMPTEST + +#define CLAMP_TEST_ITERS #eval _AMPREADCOLS / 4 + +SEQUENCE ClampTestRun { + //note clamp test and TG setup are the same + setupTGTest(); + + ClampTestOuter(_IMAGEROWS); + ClampTestOuter(_PARALLELOVERSCAN); + GOTO ClampTestRun; +} + + +SEQUENCE ClampTestOuter +{ + ClampTestLineStart(); + ClampTest(CLAMP_TEST_ITERS); + RETURN; + +} + + +SEQUENCE ClampTest +{ + ClampOn(); + ClampTestInner(2); + ClampOff(); + ClampTestInner(2); + RETURN; +} + +#endif + +SEQUENCE StartSeqSummitMode { + InitialSetup(); + InitialSetupFCS(); + SummitModeLoop(); + RETURN; +} + +SEQUENCE SummitModeLoop { + if engmode StartSeqEngMode(); + if engmode_fcs StartSeqEngModeFCS(); + SummitModeFCSLineFlush(); + IF SciStart SummitModeSciIntegrate(); + IF FcsStart SummitModeFCSIntegrate(); + IF SciStop SummitModeSciReadout(); + GOTO SummitModeLoop(); +} + + +SEQUENCE SummitModeAllLineFlush { + ParallelForwardNoCoincident(); + SummitModeFCSLineFlush(); + RETURN; +} + +SEQUENCE SummitModeFCSLineFlush { + FCSParallelForward(); + DumpPixelsFCS(_FCS_TOTAL_COLS); + RETURN; +} + +SEQUENCE SummitModeSciIntegrate +{ + //IF SciStart SciStart-- - NOTE do not uncomment before wdl issue #36 fixed + //this will generate illegal statements otherwise + SciStart--; + //do a dump sequence before starting integration + OpenShutter(); + SummitModeSciDump(); + CloseShutter(); + //set parallels to appropriate static gates here + + //TODO: should we emit some kind of signal here? + summit_sci_is_integrating++; + RETURN; +} + + +SEQUENCE SummitModeFCSIntegrate +{ + //IF FcsStart FCSStart--; + FcsStart--; + KeepThisFrame(); + OpenShutter(); + Wait1ms(FcsExpTimeMSec); + Wait1s(FcsExpTimeSec); + CloseShutter(); + Wait1ms(2); + SummitModeFCSReadout(); + RETURN; +} + + +SEQUENCE SummitModeSciReadout { + //very similar to eng mode FrameReadout, except + //only two possible modes (sequential or coincident) + //also no trigger out operation, no TDI, no linbin. + //IF summit_sci_is_integrating summit_sci_is_integrating--; + summit_sci_is_integrating--; + //IF SciStop SciStop--; + SciStop--; + ReadoutBegin(); + + Wait1us(50); + + DumpPixels(_AMPREADCOLS); //make this a fast/ dump readout if need to speed up + if llel_seq LineReadout(TOTAL_ROWS); + if llel_coincident LineReadoutCoincident(TOTAL_ROWS); + + ReadoutEnd(); + RETURN; +} + +SEQUENCE SummitModeSciDump { + EvacuateEStart(); + EvacuateFStart(); + ParallelForwardNoCoincident(TOTAL_ROWS); + Wait1us(50); + DumpPixels(_AMPREADCOLS); + RETURN; +} + + +SEQUENCE SummitModeFCSReadout { + //TODO: faster FCS readout with windowing + FCSLineReadout(_FCS_LINENUM); + RETURN; +} + +SEQUENCE FCSLineReadout { + FCSParallelForward(); + Wait1us(line_clamp_delay_us); + FCSSplitReadout(_FCS_TOTAL_COLS); + RETURN; +} + + + +SEQUENCE StartSeqEngModeFCS { + if framecount SummitModeFCSIntegrate(); + framecount--; + if !framecount SummitModeFCSLineFlush(_FCS_LINENUM); + GOTO StartSeqEngModeFCS(); +} + +SEQUENCE StartSeqEngMode { + if framecount IntegrateAndReadout(); + if !framecount LineReadoutFast(TOTAL_ROWS); + if rg_mod_test_mode TestBrokenReadout(); + GOTO StartSeqEngMode(); +} + + +SEQUENCE IntegrateAndReadout +{ + Integrate(); + ReadoutKeep(); + RETURN; +} + + +//re-purposed to do FCS output testing +SEQUENCE TestBrokenReadout +{ + OutputTestSetup(); + // PulseTGA(); + + VRDModulate(); + + RETURN; +} + + + + +SEQUENCE EvacuateE +{ + EvacuateEStart(); + Wait1ms(); + EvacuateEFinish(); + RETURN; +} + +SEQUENCE EvacuateF +{ + EvacuateFStart(); + Wait1ms(); + EvacuateFFinish(); + RETURN; +} + +SEQUENCE Integrate +{ + //KeepThisFrame(); + //NOTE: do ONE line of readout now, + //to get the buffer locked + //so we can see it's moving from outside + ReadPixels(_AMPREADCOLS); + + //NOTE: open shutter if either TDI wait or + //illumination requested... + if illum OpenShutter(); + Wait1ms(integrate_illum_ms); + Wait1s(integrate_illum_s); + //but only close it if illumination (if + // doing TDI we need to close it later on) + if illum CloseShutter(); + Wait1ms(integrate_ms); + Wait1s(integrate_s); + + RETURN; +} + +SEQUENCE ReadoutKeep +{ + //read one "dummy" line to get the frame + //into the buffers (i.e. visible) + ReadoutBegin(); + + //select the readout type + + //"normal" image readout modes + if llel_coincident FrameReadout(); + if llel_seq FrameReadout(); + if slow_pix FrameReadout(); + if linbin FrameReadout(); + if dch_llel FrameReadoutTDCllel(); + if dch_ser FrameReadoutTDCser(); + + framecount--; + RETURN; +} + + + +SEQUENCE FrameReadoutTDCllel +{ + + Wait1us(50); + DumpPixels(_AMPREADCOLS); + + //each inner loop call reads out LLEL_TDC_LINES + //lines. The total number of times we need to + //run the inner loop is therefore + // floor(TOTAL_ROWS / LLEL_TDC_LINES) + FrameReadoutTDCllel_Innerloop(LLEL_TDC_LOOPS); + + //and readout an extra TOTAL_ROWS % LLEL_TDC_LINES + //to get the same total number of lines in the + //resulting buffer + LineReadout(LLEL_TDC_REMAINDER); + + ReadoutEnd(); + + //reset linbin + linbindecr(llel_bin); + linbinincr(); + + RETURN; +} + +SEQUENCE FrameReadoutTDCllel_Innerloop +{ + //the first bunch of times this happens, + //all lines will be bright (from section A) + //but as we exhaust section A, we will end up + //with dark lines from section B coming through + LineReadoutAOnly(LLEL_TDC_LINES); + + //clock Section B forward a number of times, + //this will effectively "bin" into section A + ForwardParallelSectionBNoCoincident(llel_bin); + + //increment linbin by the predefined amount + linbinincr(LLEL_TDC_BININCR); + + RETURN; +} + +SEQUENCE FrameReadoutTDCser +{ + Wait1us(50); + DumpPixels(_AMPREADCOLS); + + //each inner loop returns one row, so + //just match total rows for other readout + //sequences + LineReadoutTDCser(TOTAL_ROWS); + + ReadoutEnd(); + RETURN; +} + +SEQUENCE LineReadoutTDCser +{ + //load a line + ParallelForwardNoCoincident(llel_bin); + + Wait1us(line_clamp_delay_us); + + //do the TDC measurement + TDCser_Innerloop(SER_TDC_LOOPS); + + //dump our half of the register in front of TDC lines + if !dsch_ser_direction DumpPixelsEOnly(SER_TDC_REMAINDER); + if dsch_ser_direction DumpPixelsFOnly(SER_TDC_REMAINDER); + + if !dsch_ser_dump_bcs TDCser_ReadoutLoop(); + if dsch_ser_dump_bcs TDCser_ReadoutLoopDumpBright(); + //ser_bin has been incremented a bunch, need to decrement it back to 1 + + //now evacuate the other side of the register + //evacuate our entire half of the register + if !dsch_ser_direction EvacuateF(); + if dsch_ser_direction EvacuateE(); + + + serbindecr(ser_bin); //now it's 0 + serbinincr(); //now it's 1 + + RETURN; +} + +SEQUENCE TDCser_ReadoutLoopDumpBright +{ + //need to know how many to read ahead of the first + //reading out the prescan puts the first bright line + //at the output + if !dsch_ser_direction ReadPixelsEOnly(_SERIALPRESCAN); + if dsch_ser_direction ReadPixelsFOnly(_SERIALPRESCAN); + + //run the inner loop the same number of times as you + //did to generate the lines + TDCser_ReadoutLoopDumpBright_Inner(SER_TDC_LOOPS); + + if !dsch_ser_direction ReadPixelsEOnly(SER_TDC_REMAINDER); + if dsch_ser_direction ReadPixelsFOnly(SER_TDC_REMAINDER); + + RETURN; +} + +SEQUENCE TDCser_ReadoutLoop +{ + + //read a whole row + if !dsch_ser_direction ReadPixelsEOnly(_AMPREADCOLS); + if dsch_ser_direction ReadPixelsFOnly(_AMPREADCOLS); + + + RETURN; +} + + + +SEQUENCE TDCser_ReadoutLoopDumpBright_Inner +{ + //at the point of this sequence being called, + //bright line is next to be read out. So, instead, + //we'll dump it + + //manually tag a pixel, it should end up just being reset + + trigpix(); + if !dsch_ser_direction DumpPixelsEOnly(); + if dsch_ser_direction DumpPixelsFOnly(); + + //now we need to do a real readout on SER_TDC_COLS-1 + if !dsch_ser_direction ReadPixelsEOnly(SER_TDC_COLSm1); + if dsch_ser_direction ReadPixelsFOnly(SER_TDC_COLSm1); + + RETURN; +} + + +SEQUENCE TDCser_Innerloop + { + //now readout a number of pixels + if !dsch_ser_direction DumpPixelsEOnly(SER_TDC_COLS); + if dsch_ser_direction DumpPixelsFOnly(SER_TDC_COLS); + + //clock the other output backwards into the opposite register half + if !dsch_ser_direction SerialFBackwards(ser_bin); + if dsch_ser_direction SerialEBackwards(ser_bin); + + serbinincr(SER_TDC_BININCR); + RETURN; +} + +SEQUENCE serbinincr +{ + ser_bin++; + RETURN; +} + +SEQUENCE serbindecr +{ + ser_bin--; + RETURN; +} + +SEQUENCE FrameReadout +{ + + //Readout begin does half a llel transfer, so wait while that settles doewn + Wait1us(50); + //single serial read to flush the register + DumpPixels(_AMPREADCOLS); + if tdi_wait_us OpenShutter(); + + //read all image rows and the desired overscan + //note these parameters are ALL mutually exclusive + IF llel_seq LineReadout(TOTAL_ROWS); + IF llel_coincident LineReadoutCoincident(TOTAL_ROWS); + IF slow_pix LineReadoutSlowPix(TOTAL_ROWS); + IF linbin LineReadout(LINBIN_MEAS); + IF linbin LineReadoutFast(LINBIN_NOBIN_ROWS); + + if tdi_wait_us CloseShutter(); + ReadoutEnd(); + + //reset llel_bin value + if linbin linbindecr(llel_bin); + if linbin linbinincr(); + + + RETURN; +} + + +//NOTE this has to be a sequence because can't call +//enough repeats in 1ms archon limit of repeats +SEQUENCE Wait1s { + if abortintegrate abortintegration(); + Wait1ms(1000); + RETURN; +} + +SEQUENCE abortintegration { + CloseShutter(); + GOTO StartSeqSummitMode(); +} + +SEQUENCE LineReadoutSlowPix +{ + ParallelForwardNoCoincident(); + Wait1us(50); + ReadPixelsSlow(_AMPREADCOLS); + Wait1us(10); + RETURN; +} + +SEQUENCE linbinincrcheck { + if framecount linbinincr(); + RETURN; +} + + +SEQUENCE linbinincr { + llel_bin++; + RETURN; +} + +SEQUENCE linbindecr { + llel_bin--; + RETURN; +} + + +SEQUENCE LineReadoutFast +{ + ParallelForwardNoCoincident(); + ReadPixels(_AMPREADCOLS); + RETURN; +} + + +SEQUENCE LineReadout +{ + ParallelForwardNoCoincident(llel_bin); + //if we're doing a "linbin", increment llel_bin + //by one for each line + if linbin linbinincr(); + + //wait here is for the clamp to die down. Put some of it in prescan, but not all + Wait1us(line_clamp_delay_us); + + if enable_ser_bin ReadPixels(_SERIALPRESCAN); + if enable_ser_bin SerBinReadPixels(_AMPCOLS); + if enable_ser_bin ReadPixels(_SERIALOVERSCAN); + if !enable_ser_bin ReadPixels(_AMPREADCOLS); + + if tdi_wait_us Wait1us(tdi_wait_us); + //if there are leftover pixels, do them here + RETURN; +} + +SEQUENCE SerBinReadPixels +{ + PrepSerBin(); + //decrement ser_bin by one that's how much extra forward serials we need + serbindecr(); + //extra serial forwards + SerialBinForwards(ser_bin); + //do a normal pixel read + ReadPixels(); + //reset serial bin variable to original value + serbinincr(); + + RETURN; + +} + + + +SEQUENCE LineReadoutCoincident +{ + if tdi_wait_us Wait1us(tdi_wait_us); + //charge assumed must be under I2 at this point, set up in preamble + ParallelForwardSegment1(); + TransferToSerialRegisterCoincident(); + ReadPixels(PIXELS_PER_SEG); + ParallelForwardSegment2(); + ReadPixels(PIXELS_PER_SEG); + ParallelForwardSegment3(); + ReadPixels(PIXELS_PER_SEG) + #if REMAINDER_PIX + ReadPixels(REMAINDER_PIX); + #endif + + RETURN; +} + + +SEQUENCE LineReadoutAOnly +{ + ForwardParallelSectionANoCoincident(); + + Wait1us(line_clamp_delay_us); + ReadPixels(_AMPREADCOLS); + + RETURN; +} + +SEQUENCE LineReadoutAOnlyCoincident +{ + TransferToSerialRegisterCoincident(); + ReadPixels(_SERIALPRESCAN); + ParallelForwardSectionASegment1(); + ReadPixels(PIXELS_PER_SEG); + ParallelForwardSectionASegment2(); + ReadPixels(PIXELS_PER_SEG); + ParallelForwardSectionASegment3(); + ReadPixels(PIXELS_PER_SEG); + + #if REMAINDER_PIX + ReadPixels(REMAINDER_PIX); + #endif + RETURN ; +} + + diff --git a/src/deimos/deimos.signals b/src/deimos/deimos.signals new file mode 100644 index 0000000..573f43a --- /dev/null +++ b/src/deimos/deimos.signals @@ -0,0 +1,194 @@ +/* -*- C -*- */ +/** --------------------------------------------------------------------------- + * @file deimos.signals + * @brief DEIMOS signal names and module/channel assignments + * + * syntax: + * + * #define signallabel slot : channel + * + * where signallabel is any ASCII text string to identify the signal name + * slot is the slot number containing the module, + * channel is the channel number on the module + * + * Combinations of signals can also be made by creating a comma-separatedv + * list enclosed in square brackets as follows: + * + * #define newlabel [ signallabel, signallabel [, signallabel] ] + * + * where newlabel is any ASCII text string to define a new signal + * signallabel is any signal already defined above + * + * any number can be combined in a comma-separated list between square brackets, + * or a single signal can be defined in square brackets to effectively asign + * a different name to the signal + * + * Update in progress for new Hardware + */ + + +#define SHUTTER 0 : 1 /* INT signal from the backplane */ +#define FRAME 0 : 2 /* FRAME signal from the backplane */ +#define LINE 0 : 3 /* LINE signal from the backplane */ +#define PIXEL 0 : 4 /* PIXEL signal from the backplane */ + +/**** Parallel Phase Signal Definitions ****/ +/* Each detector is made of two 2048x2048 + vertically stacked image areas. The top + detector is addressed by three B phase + signals and the bottom detector is + addresed by three A phase signals. The + focal plane is made of 8 detectors. The + detector signals are ganged together + into two sets of 4. +/* Note: _1 refers to detectors 1-4 */ +/* _2 refers to detectors 5-8 */ + +#define PCLK_B3_2 1 : 1 +#define PCLK_A3_2 1 : 2 +#define PCLK_B2_2 1 : 3 +#define PCLK_A2_2 1 : 4 +#define PCLK_B1_2 1 : 5 +#define PCLK_A1_2 1 : 6 +#define PCLK_A1_1 1 : 7 +#define PCLK_B1_1 1 : 8 +#define PCLK_A2_1 1 : 9 +#define PCLK_B2_1 1 : 10 +#define PCLK_A3_1 1 : 11 +#define PCLK_B3_1 1 : 12 +#define TGA1 3 : 1 //new VIB assignment + + +/**** Serial Phase Signal Definitions ****/ + +#define SCLK_EF 3 : 2 +#define SCLK_E2 3 : 3 +#define SCLK_E1 3 : 4 +#define SCLK_F2 3 : 5 +#define SCLK_F1 3 : 6 + +#define FCS_P3U 3 : 7 // new VIB assignment +#define FCS_P3L 3 : 8 // new VIB assignment +#define FCS_P2 3 : 9 // new VIB assignment +#define FCS_P1 3 : 10 // new VIB assignment + +#define TGA2 3 : 11 // new VIB assignment + +#define SCI_RGBACKUP1 3 : 12 //new VIB assignment + +//** FCS serials and more backups ** + +#define SCI_RGBACKUP2 2 : 1 //new VIB assignment +#define SCI_SWBACKUP1 2 : 2 //new VIB assignment + +#define FCS2_S2L 2 : 3 //new VIB assignment + +#define FCS1_S2L 2 : 4 //new VIB assignment + +#define FCS2_S3L 2 : 5 //new VIB assignmet + +#define FCS_S1 2 : 6 //new VIB assignment + +#define SCI_SWBACKUP2 2 : 7 //new VIB assignment + +#define FCS_RG 2 : 8 //new VIB assignment + +#define FCS_SW 2 : 9 //new VIB assignment + +#define FCS1_S3L 2 : 10 //new VIB assignment + +#define Spare1 2 : 11 //new VIB assignment +#define Spare2 2 : 12 //new VIB assignment + + +#define RG_CLOCKS [SCI_RGBACKUP1, SCI_RGBACKUP2] +#define SW_CLOCKS [SCI_SWBACKUP1, SCI_SWBACKUP2] + +#define TG [TGA1, TGA2] //new VIB assignment + + +/**** LVDS Driver Signal definitions ****/ + +#define AC_Clamp 12 : 12 +#define AC_Clamp_FCS 12 : 11 +/* NOP Definition - NEEDS TO BE UNUSED */ +#define NOP 12 : 2 //new VIB redefine +#define PD_OE_IN 12 : 1 //new VIB assignment + +#define RG_SCI3 12 : 5 //new VIB assignment +#define RG_SCI4 12 : 6 //new VIB assignment +#define RG_SCI1 12 : 7 //new VIB assignment +#define RG_SCI2 12 : 8 //new VIB assignment + +#define SW_SCI2 12 : 16 //new VIB redefine +#define SW_SCI1 12 : 15 //new VIB redefine + +#define SW_SCI3 12 : 14 //new VIB assignment + +#define SW_SCI4 12 : 13 //new VIB assignment + + +/**** Bias Voltage Definitions ****/ + + + +#define VRD_E 9 : 5 + + +//redefine VRD_F to modulate FCS RD channels +#define VRD_F 9 : 6 + +#define VRD [VRD_E, VRD_F] + +/**** Readout Method ****/ +/* Science Serials */ + +#define VRD_FCSA 9:8 +#define VRD_FCSB 9:9 +#define VRD_FCSA2 9:10 +#define VRD_FCSB2 9:11 + + + +#define SCI_SCLK1 [SCLK_E2, SCLK_F2] +#define SCI_SCLK2 [SCLK_E1, SCLK_F1] + +#define SCI_SCLK3 SCLK_EF +/* Reset Gate Combine */ +#define RG [ RG_SCI3 , RG_SCI4 , RG_SCI1 , RG_SCI2] + +/* Summing Well Combine */ +/*define SW [SW_SCI1, SW_SCI2, SW_SCI3, SW_SCI4] */ +#define SW [SW_SCI2 , SW_SCI3 , SW_SCI4, SW_SCI1] + +/* Science Parallels */ + #define SCI_PCLK1 [PCLK_A1_1, PCLK_A1_2, PCLK_B1_1, PCLK_B1_2] + #define SCI_PCLK2 [PCLK_A2_1, PCLK_A2_2, PCLK_B2_1, PCLK_B2_2] + #define SCI_PCLK3 [PCLK_A3_1, PCLK_A3_2, PCLK_B3_1, PCLK_B3_2] +// #define SCI_PCLK1 [PCLK_A1_1, PCLK_A1_2] +// #define SCI_PCLK2 [PCLK_A2_1, PCLK_A2_2] +// #define SCI_PCLK3 [PCLK_A3_1, PCLK_A3_2] + + + + +/* Science parallels section A */ +#define SCI_PCLK1_A [PCLK_A1_1, PCLK_A1_2] +#define SCI_PCLK2_A [PCLK_A2_1, PCLK_A2_2] +#define SCI_PCLK3_A [PCLK_A3_1, PCLK_A3_2] + +#define SCI_PCLK1_B [PCLK_B1_1, PCLK_B1_2] +#define SCI_PCLK2_B [PCLK_B2_1, PCLK_B2_2] +#define SCI_PCLK3_B [PCLK_B3_1, PCLK_B3_2] + +#define SCI_SCLK1_EONLY SCLK_E2 +#define SCI_SCLK1_FONLY SCLK_F2 + +#define SCI_SCLK2_EONLY SCLK_E1 +#define SCI_SCLK2_FONLY SCLK_F1 + +//FCS readout + +#defeval FCS_P3 [FCS_P3U, FCS_P3L] +#define FCS_S2 [FCS1_S2L, FCS2_S2L] +#define FCS_S3 [FCS1_S3L, FCS2_S3L] diff --git a/src/deimos/deimos.waveform b/src/deimos/deimos.waveform new file mode 100644 index 0000000..571770e --- /dev/null +++ b/src/deimos/deimos.waveform @@ -0,0 +1,993 @@ +/* -*- C -*- */ +/** --------------------------------------------------------------------------- + * @file deimos_science.wavform + * @brief DEIMOS timing file; rules for waveform generation and scripting + * + * syntax (is case sensitive): + * + * WAVEFORM waveformlabel { rules } + * + * where rules (enclosed in curly braces) are as follows: + * + * [time]: [=timelabel] SET signallabel TO level; + * + * time: at least one time label is required, followed by colon + * (if omitted then SET... lines are all at the same time as previous time) + * arithmetic operations are allowed for time + * units are allowed to follow numbers, E.G. ns, us, ms + * ".+" means to add to the previous time + * + * =timelabel is an optional label for this time, which can be used elsewhere + * + * SET signallabel TO level; + * is required and must end with a semi-colon + * signallabel and level can be defined anywhere + * + */ + +#include voltage_timing_parameters.h + + + +/*****************************************/ +/* LOGIC STATES */ +/*****************************************/ +#define OPEN 1 +#define CLOSE 0 +#define HIGH 1 +#define LOW 0 + +#define INV_HIGH 1 //Some signals are inverted. Use this sigil to indicate that +#define INV_LOW 0 + + + +/* +WAVEFORM SerialRecieving { + 0: SET SCI_SCLK1 TO _SER_CLOCK_RCV, FAST; + SET SCI_SCLK2 TO _SER_CLOCK_RCV, FAST; + .+SCLK_RCV_RESET: SET RG TO LOW; +} +*/ + +/*****************************************/ +/* ARCHON Timing Control */ +/*****************************************/ + +WAVEFORM testConst { + 0: SET RG_CLOCKS TO sci_llel_high, FAST; + .+1us: RETURN; + +} + + + +WAVEFORM Wait1us { + 0: SET NOP TO HIGH; + .+1us: RETURN; +} + +WAVEFORM Wait1ms { + 0: SET NOP TO HIGH; + .+1ms: RETURN; +} + +/* WAVEFORM Wait1s { */ +/* 0: SET NOP TO HIGH; */ +/* .+1s: RETURN; */ +/* } */ + +WAVEFORM KeepThisFrame { + 0: SET FRAME TO HIGH; + 1: SET LINE TO HIGH; +} + + +/*****************************************/ +/* Integration related waveforms */ +/*****************************************/ + +#define PAR_SLEW_TIME_TICKS #eval PAR_SLEW_TIME_US * 100 +#define SER_SLEW_TIME_TICKS #eval SER_SLEW_TIME_US * 100 + +#define _PAR_CLOCK_FLUSH_LOW -3.5 +#define _PAR_CLOCK_FLUSH_HIGH 7.5 +#define _PAR_CLOCK_FLUSH 10.0 + +#define _SER_CLOCK_FLUSH 10.0 + + +WAVEFORM InitialSetup +{0 : + SET RG TO INV_HIGH; + SET SW TO INV_HIGH; + SET RG_CLOCKS TO _RG_LOW,FAST; + SET SW_CLOCKS TO _SW_LOW, FAST; + + //disable the pin drivers + SET PD_OE_IN TO 1; + + SET AC_Clamp to HIGH; + + .+1000: + SET AC_Clamp to LOW; + + SET SCI_PCLK3 TO _PAR_CLOCK_LOW, FAST; + SET SCI_PCLK2 TO _PAR_CLOCK_HIGH, FAST; + SET SCI_PCLK1 TO _PAR_CLOCK_HIGH, FAST; + + .+10000: + SET NOP TO HIGH; + +} + +WAVEFORM InitialSetupFCS +{ +0 : + SET FCS_RG TO _RG_LOW_FCS, FAST; + SET FCS_SW TO _SW_LOW_FCS, FAST; + + + //disable the pin drivers + SET PD_OE_IN TO 1; + + SET AC_Clamp_FCS to HIGH; + + .+1000: + SET AC_Clamp_FCS to LOW; + + SET FCS_P3 TO _MPP_CLOCK_LOW_FCS, FAST; + SET FCS_P2 TO _PAR_CLOCK_LOW_FCS, FAST; + SET FCS_P1 TO _PAR_CLOCK_LOW_FCS, FAST; + + SET FCS_S2 TO _SER_CLOCK_LOW_FCS, FAST; + SET FCS_S1 TO _SER_CLOCK_HIGH_FCS, FAST; + SET FCS_S3 TO _SER_CLOCK_LOW_FCS, FAST; + + .+10000: + SET NOP TO HIGH; +} + + + +WAVEFORM OpenShutter +{ + 0: SET SHUTTER to 1; +} + +WAVEFORM CloseShutter +{ + 0: SET SHUTTER TO 0; +} + + +WAVEFORM ReadoutBegin +{ + 0:SET LINE TO HIGH; + SET FRAME TO HIGH; + SET SCI_PCLK1 TO _PAR_CLOCK_LOW, FAST; +} + +WAVEFORM ReadoutEnd +{ + 0: SET SCI_PCLK2 TO _PAR_CLOCK_HIGH, FAST; + SET SCI_PCLK1 TO _PAR_CLOCK_HIGH, FAST; +} + + +WAVEFORM TransferToSerialRegisterCoincident +{ + //set serials to receive charge + 0:=BEGIN SET SCI_SCLK1 TO _SER_CLOCK_RCV, FAST; + SET SCI_SCLK2 TO _SER_CLOCK_RCV, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + SET RG TO INV_HIGH; + SET TG TO _TG_CLOCK_HIGH, FAST; + SET LINE TO HIGH; + SET SW TO INV_LOW; + SET SW_CLOCKS TO _SW_LOW,FAST; + //NOTE: don't think we want to clamp with reset gate activated + .+1000: + SET RG TO INV_LOW; + SET RG_CLOCKS TO _RG_LOW,FAST; + SET TG TO _TG_CLOCK_LOW, FAST; + //simultaneously, operate the AC clamp + .+50: + SET AC_Clamp to HIGH; + SET SCI_SCLK1 TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK2 TO _SER_CLOCK_LOW, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + .+50: + SET AC_Clamp to LOW; +} + + + +WAVEFORM ParallelForwardNoCoincident +{ + 0: SET NOP TO HIGH; + + SET SCI_PCLK3 TO _PAR_CLOCK_HIGH, FAST; + SET TG TO _TG_CLOCK_HIGH, FAST; + + SET SW TO INV_LOW; + SET SW_CLOCKS TO _SW_LOW, FAST; + SET LINE TO HIGH; + + SET SCI_SCLK1 TO _SER_CLOCK_RCV, FAST; + SET SCI_SCLK2 TO _SER_CLOCK_RCV, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + SET RG to INV_HIGH; + SET RG_CLOCKS TO _RG_HIGH, FAST; + + + + .+1200:=PHASE3_HIGH SET SCI_PCLK2 TO _PAR_CLOCK_LOW, FAST; + .+1200: SET SCI_PCLK1 TO _PAR_CLOCK_HIGH, FAST; + .+1200:=TG_GOES_LOW SET SCI_PCLK3 TO _PAR_CLOCK_LOW, FAST; + SET TG TO _TG_CLOCK_LOW, FAST; + + .+1200: SET SCI_PCLK2 TO _PAR_CLOCK_HIGH, FAST; + .+1200: SET SCI_PCLK1 TO _PAR_CLOCK_LOW, FAST; + + //delay before starting SCLKs + .+1200: SET NOP TO HIGH; + + + //serial receive side + + TG_GOES_LOW+200:=RG_GOES_LOW + SET RG TO INV_LOW; + SET RG_CLOCKS TO _RG_LOW, FAST; + SET SW TO INV_LOW; + SET SW_CLOCKS TO _SW_HIGH, FAST; + .+50: SET AC_Clamp to HIGH; + .+300: + SET SCI_SCLK1 TO _SER_CLOCK_LOW, FAST; + SET SCI_SCLK2 TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + + .+50: SET AC_Clamp TO LOW; +} + + + +//waveforms for coincident (triangular) parallel clocking +WAVEFORM ParallelForwardSegment1 +{ + //NOTE: after integration, if done properly + //all charge should be under SCI_PCLK2 + // the transfer to serial reg is done after this happens + 0: SET SCI_PCLK2 to _PAR_CLOCK_LOW, SLOW; + SET SCI_PCLK3 to _PAR_CLOCK_HIGH, SLOW; +} + +WAVEFORM ParallelForwardSegment2 +{ + 0: SET SCI_PCLK3 TO _PAR_CLOCK_LOW, SLOW; + SET SCI_PCLK1 TO _PAR_CLOCK_HIGH, SLOW; +} + +WAVEFORM ParallelForwardSegment3 +{ + 0: SET SCI_PCLK1 TO _PAR_CLOCK_LOW, SLOW; + SET SCI_PCLK2 TO _PAR_CLOCK_HIGH, SLOW; +} + +WAVEFORM OutputTestSetup +{ + 0: SET FCS_RG TO _RG_HIGH_FCS, FAST; + // SET RG_CLOCKS TO _RG_HIGH, FAST; + SET VRD_FCSA TO 14.0; + SET VRD_FCSB to 14.0; + SET FCS_SW TO _SW_HIGH_FCS, FAST; + // SET SW_CLOCKS TO _SW_HIGH, FAST; + .+10ms: SET NOP TO HIGH; + //SET TG TO _TG_CLOCK_LOW, FAST; + //.+10ms: SET NOP TO HIGH; + + /* SET SCI_SCLK1 TO _SER_CLOCK_LOW,FAST; */ + /* SET SCI_SCLK2 TO _SER_CLOCK_LOW, FAST; */ + /* SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; */ + + /* SET SCI_PCLK1 TO _PAR_CLOCK_HIGH, FAST; */ + /* SET SCI_PCLK2 TO _PAR_CLOCK_HIGH, FAST; */ + /* SET SCI_PCLK3 TO _PAR_CLOCK_HIGH, FAST; */ +} + +WAVEFORM PulseTGA +{ + 0: SET TG TO _TG_CLOCK_HIGH,FAST; + .+25us: SET TG TO _TG_CLOCK_LOW,FAST; + .+25us: SET RG TO INV_LOW; +} + + + +WAVEFORM VRDModulate +{ + 0: SET VRD_FCSA TO 12.0; + .+10ms: SET FCS_RG TO _RG_HIGH_FCS; + .+1us: SET FCS_RG TO _RG_LOW_FCS, FAST; + .+1us: SET VRD_FCSA TO 12.5; + .+1us: SET VRD_FCSB TO 12.5; + .+1us: SET VRD_FCSA2 TO 12.5; + .+1us: SET VRD_FCSB2 TO 12.5; + + .+10ms: SET FCS_RG TO _RG_HIGH_FCS; + .+1us: SET FCS_RG TO _RG_LOW_FCS, FAST; + .+1us: SET VRD_FCSA TO 13.0; + .+1us: SET VRD_FCSB TO 13.0; + .+1us: SET VRD_FCSA2 TO 13.0; + .+1us: SET VRD_FCSB2 TO 13.0; + + + .+10ms: SET FCS_RG TO _RG_HIGH_FCS; + .+1us: SET FCS_RG TO _RG_LOW_FCS, FAST; + .+1us: SET VRD_FCSA TO 13.5; + .+1us: SET VRD_FCSB TO 13.5; + .+1us: SET VRD_FCSA2 TO 13.5; + .+1us: SET VRD_FCSB2 TO 13.5; + + + .+10ms: SET FCS_RG TO _RG_HIGH_FCS; + .+1us: SET FCS_RG TO _RG_LOW_FCS, FAST; + .+1us: SET VRD_FCSA TO 14.0; + .+1us: SET VRD_FCSB TO 14.0; + .+1us: SET VRD_FCSA2 TO 14.0; + .+1us: SET VRD_FCSB2 TO 14.0; + + + .+10ms: SET FCS_RG TO _RG_HIGH_FCS; + .+1us: SET FCS_RG TO _RG_LOW_FCS, FAST; + .+1us: SET VRD_FCSA TO 14.5; + .+1us: SET VRD_FCSB TO 14.5; + .+1us: SET VRD_FCSA2 TO 14.5; + .+1us: SET VRD_FCSB2 TO 14.5; + + .+10ms: SET FCS_RG TO _RG_HIGH_FCS; + .+1us: SET FCS_RG TO _RG_LOW_FCS, FAST; + .+1us: SET VRD_FCSA TO 15.0; + .+1us: SET VRD_FCSB TO 15.0; + .+1us: SET VRD_FCSA2 TO 15.0; + .+1us: SET VRD_FCSB2 TO 15.0; + + .+10ms: SET FCS_RG TO _RG_HIGH_FCS; + .+1us: SET FCS_RG TO _RG_LOW_FCS, FAST; + .+1us: SET VRD_FCSA TO 15.5; + .+1us: SET VRD_FCSB TO 15.5; + .+1us: SET VRD_FCSA2 TO 15.5; + .+1us: SET VRD_FCSB2 TO 15.5; + + .+10ms: SET FCS_RG TO _RG_HIGH_FCS; + .+1us: SET FCS_RG TO _RG_LOW_FCS, FAST; + .+1us: SET VRD_FCSA TO 16.0; + .+1us: SET VRD_FCSB TO 16.0; + .+1us: SET VRD_FCSA2 TO 16.0; + .+1us: SET VRD_FCSB2 TO 16.0; + + + +} + + + +WAVEFORM ReadPixels +{ + //NB using slow slew rate for triangular serial clockingdef + 0:=PIX_BEGIN + SET PIXEL TO HIGH; + .+1: SET PIXEL TO LOW; + SET LINE TO LOW; + SET FRAME TO LOW; + //reset pulse at the start of the pixel + SET RG TO INV_HIGH; //NOTE reset gate is inverted + .+60: SET RG TO INV_LOW; + //charge STARTS UNDER SCI_SCLK2 NOW + + //conventional serial clock + //this is redundant on the first pixel + 0: SET SCI_SCLK2 TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK1 TO _SER_CLOCK_LOW, FAST; + .+60: + SET SW TO INV_HIGH; + SET SCI_SCLK3 TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK2 TO _SER_CLOCK_LOW, FAST; + .+300: SET SW TO INV_LOW; + + .+200: SET SCI_SCLK1 TO _SER_CLOCK_HIGH, FAST; //was +150 + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + + .+60: SET NOP TO HIGH; +} + + + +WAVEFORM ReadPixelsSlow +{ + 0 := PIX_BEGIN + SET PIXEL TO HIGH; + .+1: SET PIXEL TO LOW; + SET LINE TO LOW; + SET FRAME TO LOW; + + SET RG TO INV_HIGH; + .+60: SET RG TO INV_LOW; + + 0: SET SCI_SCLK2 TO _SER_CLOCK_HIGH, FAST; + .+15: SET SCI_SCLK1 TO _SER_CLOCK_LOW, FAST; + 30: + SET SW TO INV_HIGH; + .+5 : + SET SCI_SCLK3 TO _SER_CLOCK_HIGH, FAST; + .+10: SET SCI_SCLK2 TO _SER_CLOCK_LOW, FAST; + + 180: SET SCI_SCLK1 TO _SER_CLOCK_HIGH, FAST; + .+15: SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + .+15: SET SW TO INV_LOW; + + 180+147: SET NOP TO HIGH; + + +} + +WAVEFORM ForwardParallelSectionANoCoincident +{ + 0: SET NOP TO HIGH; + .+1000:=PHASE3_HIGH + + SET SCI_PCLK3_A TO _PAR_CLOCK_HIGH, FAST; + SET TG TO _TG_CLOCK_HIGH, FAST; + + SET SW TO INV_LOW; + SET SW_CLOCKS TO _SW_LOW, FAST; + SET LINE TO HIGH; + + .+1000: SET SCI_PCLK2_A TO _PAR_CLOCK_LOW, FAST; + .+1000: SET SCI_PCLK1_A TO _PAR_CLOCK_HIGH, FAST; + .+1000:=TG_GOES_LOW SET SCI_PCLK3_A TO _PAR_CLOCK_LOW, FAST; + SET TG TO _TG_CLOCK_LOW, FAST; + + .+1000: SET SCI_PCLK2_A TO _PAR_CLOCK_HIGH, FAST; + .+1000: SET SCI_PCLK1_A TO _PAR_CLOCK_LOW, FAST; + + //delay before starting SCLKs + .+1000: SET NOP TO HIGH; + + + //serial receive side + PHASE3_HIGH: SET SCI_SCLK1 TO _SER_CLOCK_RCV, FAST; + SET SCI_SCLK2 TO _SER_CLOCK_RCV, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + SET RG to INV_HIGH; + SET RG_CLOCKS TO _RG_HIGH, FAST; + + TG_GOES_LOW+200:=RG_GOES_LOW + SET RG TO INV_LOW; + SET RG_CLOCKS TO _RG_LOW, FAST; + SET SW TO INV_HIGH; + SET SW_CLOCKS TO _SW_HIGH, FAST; + .+50: SET AC_Clamp to HIGH; + .+300: + SET SCI_SCLK1 TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK2 TO _SER_CLOCK_LOW, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + + .+50: SET AC_Clamp TO LOW; + +} + +WAVEFORM ForwardParallelSectionBNoCoincident +{ + 0: SET NOP TO HIGH; + .+1000:=PHASE3_HIGH + + SET SCI_PCLK3_B TO _PAR_CLOCK_HIGH, FAST; + + .+1000: SET SCI_PCLK2_B TO _PAR_CLOCK_LOW, FAST; + .+1000: SET SCI_PCLK1_B TO _PAR_CLOCK_HIGH, FAST; + .+1000:=TG_GOES_LOW SET SCI_PCLK3_B TO _PAR_CLOCK_LOW, FAST; + + .+1000: SET SCI_PCLK2_B TO _PAR_CLOCK_HIGH, FAST; + .+1000: SET SCI_PCLK1_B TO _PAR_CLOCK_LOW, FAST; + + //delay before starting SCLKs + .+1000: SET NOP TO HIGH; + + //no serial receive or TGA, this is purely on the B segment to move into A segment + + +} + + + +#define PCLK_NOREAD_DELAY + +//definitions for llel total deferred charge measurement +WAVEFORM ForwardParallelSectionA +{ + 0: SET SCI_PCLK3_A to _PAR_CLOCK_LOW, SLOW; + SET SCI_PCLK1_A to _PAR_CLOCK_HIGH, SLOW; + PAR_SLEW_TIME_US*100: SET SCI_PCLK1_A to _PAR_CLOCK_LOW, SLOW; + SET SCI_PCLK2_A TO _PAR_CLOCK_HIGH, SLOW; + 2*PAR_SLEW_TIME_US*100: SET SCI_PCLK2_A TO _PAR_CLOCK_LOW, SLOW; + SET SCI_PCLK3_A TO _PAR_CLOCK_HIGH, SLOW; +} + +WAVEFORM ForwardParallelSectionB +{ + 0: SET SCI_PCLK3_B TO _PAR_CLOCK_LOW, SLOW; + SET SCI_PCLK1_B TO _PAR_CLOCK_HIGH, SLOW; + PAR_SLEW_TIME_US*100: SET SCI_PCLK1_B TO _PAR_CLOCK_LOW, SLOW; + SET SCI_PCLK2_B TO _PAR_CLOCK_HIGH, SLOW; + 2*PAR_SLEW_TIME_US*100: SET SCI_PCLK2_B TO _PAR_CLOCK_LOW, SLOW; + SET SCI_PCLK3_B TO _PAR_CLOCK_HIGH, SLOW; +} + +WAVEFORM ForwardParallelAll +{ + 0: SET SCI_PCLK3 TO _PAR_CLOCK_LOW, SLOW; + SET SCI_PCLK1 TO _PAR_CLOCK_HIGH, SLOW; + PAR_SLEW_TIME_US*100: SET SCI_PCLK1 TO _PAR_CLOCK_LOW, SLOW; + SET SCI_PCLK2 TO _PAR_CLOCK_HIGH, SLOW; + 2*PAR_SLEW_TIME_US*100: SET SCI_PCLK2 TO _PAR_CLOCK_LOW, SLOW; + SET SCI_PCLK3 TO _PAR_CLOCK_HIGH, SLOW; +} + + +WAVEFORM ParallelForwardSectionASegment1 +{ + 0: SET SCI_PCLK3_A to _PAR_CLOCK_LOW, SLOW; + SET SCI_PCLK1_A to _PAR_CLOCK_HIGH, SLOW; +} + +WAVEFORM ParallelForwardSectionASegment2 +{ + 0: SET SCI_PCLK1_A to _PAR_CLOCK_LOW, SLOW; + SET SCI_PCLK2_A TO _PAR_CLOCK_HIGH, SLOW; +} + +WAVEFORM ParallelForwardSectionASegment3 +{ + 0: SET SCI_PCLK2_A TO _PAR_CLOCK_LOW, SLOW; + SET SCI_PCLK3_A TO _PAR_CLOCK_HIGH, SLOW; +} + + +//definitions for serial total deferred charge measurement +WAVEFORM Wait10us +{ + 1000: SET NOP TO HIGH; +} + +//readout only clocking the E register (we have stored bright edge in the F for this one) +WAVEFORM ReadPixelsEOnly +{ + //NB using slow slew rate for triangular serial clockingdef + 0:=PIX_BEGIN + SET PIXEL TO HIGH; + .+1: SET PIXEL TO LOW; + SET LINE TO LOW; + SET FRAME TO LOW; + //reset pulse at the start of the pixel + SET RG TO INV_HIGH; //NOTE reset gate is inverted + .+60: SET RG TO INV_LOW; + //charge STARTS UNDER RPhi2 + + //conventional serial clock + 0: SET SCI_SCLK2_EONLY TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK1_EONLY TO _SER_CLOCK_LOW, FAST; + .+60: + SET SW TO INV_HIGH; + SET SCI_SCLK3 TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK2_EONLY TO _SER_CLOCK_LOW, FAST; + .+300: SET SW TO INV_LOW; + + //NOTE: set this up so it's a multiple of ADM ssample times that way they ALL + //stay as groups of 8. + .+200: SET SCI_SCLK1_EONLY TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + .+60: SET NOP TO HIGH; +} + +WAVEFORM ReadPixelsFOnly +{ + //NB using slow slew rate for triangular serial clockingdef + 0:=PIX_BEGIN + SET PIXEL TO HIGH; + .+1: SET PIXEL TO LOW; + SET LINE TO LOW; + SET FRAME TO LOW; + //reset pulse at the start of the pixel + SET RG TO INV_HIGH; //NOTE reset gate is inverted + .+60: SET RG TO INV_LOW; + //charge STARTS UNDER RPhi2 + + //conventional serial clock + 0: SET SCI_SCLK2_FONLY TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK1_FONLY TO _SER_CLOCK_LOW, FAST; + .+60: + SET SW TO INV_HIGH; + SET SCI_SCLK3 TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK2_FONLY TO _SER_CLOCK_LOW, FAST; + .+300: SET SW TO INV_LOW; + + //NOTE: set this up so it's a multiple of ADM ssample times that way they ALL + //stay as groups of 8. + .+130: SET SCI_SCLK1_FONLY TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + .+80: SET NOP TO HIGH; +} + + +WAVEFORM PrepSerBin +{ + + 0: SET RG TO INV_HIGH; + .+40: SET SW TO INV_HIGH; + .+20: SET RG TO INV_LOW; + +} + +WAVEFORM SerialBinForwards +{ + + 0: SET SCI_SCLK2 TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK1 TO _SER_CLOCK_LOW, FAST; + .+40: + SET SCI_SCLK3 TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK2 TO _SER_CLOCK_LOW, FAST; + + .+40: + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + SET SCI_SCLK1 TO _SER_CLOCK_HIGH, FAST; + + .+40: + SET SCI_SCLK1 TO _SER_CLOCK_LOW, FAST; + SET SCI_SCLK2 TO _SER_CLOCK_HIGH, FAST; + + .+40: + SET NOP TO HIGH; + +} + + + + +WAVEFORM DumpPixels +{ + //NB using slow slew rate for triangular serial clockingdef + 0:=PIX_BEGIN + //reset pulse at the start of the pixel + SET RG TO INV_HIGH; //NOTE reset gate is inverted + .+60: SET RG TO INV_LOW; + //charge STARTS UNDER SCI_SCLK2 NOW + + //conventional serial clock + //this is redundant on the first pixel + 0: SET SCI_SCLK2 TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK1 TO _SER_CLOCK_LOW, FAST; + .+40: + SET SW TO INV_HIGH; + SET SCI_SCLK3 TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK2 TO _SER_CLOCK_LOW, FAST; + .+300: SET SW TO INV_LOW; + + .+200: SET SCI_SCLK1 TO _SER_CLOCK_HIGH, FAST; //was +150 + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + SET RG TO INV_LOW; + + .+60: SET NOP TO HIGH; +} + + +WAVEFORM trigpix +{ + 0: SET PIXEL TO HIGH; + .+1: SET PIXEL TO LOW; + SET LINE TO LOW; + SET FRAME TO LOW; +} + + + +//readout only clocking the E register (we have stored bright edge in the F for this one) +WAVEFORM DumpPixelsEOnly +{ + //NB using slow slew rate for triangular serial clockingdef + 0:=PIX_BEGIN + //reset pulse at the start of the pixel + SET RG TO INV_HIGH; //NOTE reset gate is inverted + //charge STARTS UNDER RPhi2 + + //conventional serial clock + 0: SET SCI_SCLK2_EONLY TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK1_EONLY TO _SER_CLOCK_LOW, FAST; + .+40: + SET SW TO INV_HIGH; + SET SCI_SCLK3 TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK2_EONLY TO _SER_CLOCK_LOW, FAST; + .+300: SET SW TO INV_LOW; + + //NOTE: set this up so it's a multiple of ADM ssample times that way they ALL + //stay as groups of 8. + .+200: SET SCI_SCLK1_EONLY TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + SET RG TO INV_LOW; + .+60: SET NOP TO HIGH; + + +} + + +WAVEFORM DumpPixelsFOnly +{ + //NB using slow slew rate for triangular serial clockingdef + 0:=PIX_BEGIN + //reset pulse at the start of the pixel + SET RG TO INV_HIGH; //NOTE reset gate is inverted + //charge STARTS UNDER RPhi2 + + //conventional serial clock + 0: SET SCI_SCLK2_FONLY TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK1_FONLY TO _SER_CLOCK_LOW, FAST; + .+40: + SET SW TO INV_HIGH; + SET SCI_SCLK3 TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK2_FONLY TO _SER_CLOCK_LOW, FAST; + .+300: SET SW TO INV_LOW; + + //NOTE: set this up so it's a multiple of ADM ssample times that way they ALL + //stay as groups of 8. + .+130: SET SCI_SCLK1_FONLY TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + SET RG TO INV_LOW; + .+80: SET NOP TO HIGH; +} + + + +//use this to move charge from F register back into E register +WAVEFORM SerialFBackwards +{ + //first, set the E side to receive + //in the beggining, everything is under SCI_SCLK1_EONLY + //so we move everything to be under number 2 + 0: SET SCI_SCLK2_EONLY TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK1_EONLY TO _SER_CLOCK_LOW, FAST; + + .+30: SET SCI_SCLK1_FONLY TO _SER_CLOCK_LOW, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_RCV, FAST; + + .+30: SET SCI_SCLK3 to _SER_CLOCK_LOW, FAST; + SET SCI_SCLK2_FONLY to _SER_CLOCK_HIGH, FAST; + + .+30: SET SCI_SCLK1_FONLY to _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK2_FONLY TO _SER_CLOCK_LOW, FAST; + + //and now move the charge under E back again + .+30: SET SCI_SCLK2_EONLY to _SER_CLOCK_LOW, FAST; + SET SCI_SCLK1_EONLY to _SER_CLOCK_HIGH, FAST; +} + +//use this to move charge from E register back into F register +WAVEFORM SerialEBackwards +{ + //first, set the F side to receive + //in the beggining, everything is under SCI_SCLK1_EONLY + //so we move everything to be under number 2 + 0: SET SCI_SCLK2_FONLY TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK1_FONLY TO _SER_CLOCK_LOW, FAST; + + .+30: SET SCI_SCLK1_EONLY TO _SER_CLOCK_LOW, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_RCV, FAST; + + .+30: SET SCI_SCLK3 to _SER_CLOCK_LOW, FAST; + SET SCI_SCLK2_EONLY to _SER_CLOCK_HIGH, FAST; + + .+30: SET SCI_SCLK1_EONLY to _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK2_EONLY TO _SER_CLOCK_LOW, FAST; + + //and now move the charge under E back again + .+30: SET SCI_SCLK2_FONLY to _SER_CLOCK_LOW, FAST; + SET SCI_SCLK1_FONLY to _SER_CLOCK_HIGH, FAST; + +} + + +WAVEFORM EvacuateFFinish +{ + 0: + SET SW TO INV_LOW; + SET RG TO INV_LOW; + .+2000: + SET SCI_SCLK1_FONLY TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + SET SCI_SCLK2_FONLY TO _SER_CLOCK_LOW, FAST; + .+500: SET NOP TO HIGH; +} + +WAVEFORM EvacuateFStart +{ + 0: SET SCI_SCLK1_FONLY TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK2_FONLY TO _SER_CLOCK_HIGH, FAST; + SET SW TO INV_HIGH; + SET RG TO INV_HIGH; +} + + +WAVEFORM EvacuateEFinish +{ + 0: + SET SW TO INV_LOW; + SET RG TO INV_LOW; + .+2000: + SET SCI_SCLK1_EONLY TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + SET SCI_SCLK2_EONLY TO _SER_CLOCK_LOW, FAST; + .+500: SET NOP TO HIGH; +} + +WAVEFORM EvacuateEStart +{ + 0: SET SCI_SCLK1_EONLY TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_HIGH, FAST; + SET SCI_SCLK2_EONLY TO _SER_CLOCK_HIGH, FAST; + SET SW TO INV_HIGH; + SET RG TO INV_HIGH; +} + + +WAVEFORM BounceTGTest +{ + 0: SET TG to _TG_CLOCK_HIGH,FAST; + .+500: SET TG to _TG_CLOCK_LOW, FAST; + .+200: SET NOP to HIGH; + 0: SET PIXEL TO HIGH; + .+1: SET PIXEL TO LOW; + SET FRAME TO LOW; + SET LINE TO LOW; + +} + +WAVEFORM ClampTestInner +{ + 0: SET TG to _TG_CLOCK_HIGH,FAST; + .+100: SET TG to _TG_CLOCK_LOW, FAST; + .+100: SET NOP to HIGH; + 0: SET PIXEL TO HIGH; + .+1: SET PIXEL TO LOW; + SET FRAME TO LOW; + SET LINE TO LOW; + +} + +WAVEFORM ClampOn +{ + 0: SET AC_Clamp TO HIGH; +} + +WAVEFORM ClampOnFCS +{ + 0: SET AC_Clamp_FCS TO HIGH; +} + + +Waveform ClampOff +{ + 0: SET AC_Clamp to LOW; +} + +WAVEFORM ClampOffFCS +{ + 0: SET AC_Clamp_FCS TO LOW; +} + + + +WAVEFORM ClampTestLineStart +{ + 0: SET LINE TO HIGH; +} + + +WAVEFORM TGTestLineStart +{ + 0: SET LINE TO HIGH; + SET AC_Clamp TO HIGH; + .+100: SET AC_Clamp TO LOW; + + +} + + +WAVEFORM setupTGTest +{ + 0: SET FRAME TO HIGH; + SET RG TO INV_LOW; + SET SCI_SCLK1 TO _SER_CLOCK_LOW, FAST; + SET SCI_SCLK2 TO _SER_CLOCK_LOW, FAST; + SET SCI_SCLK3 TO _SER_CLOCK_LOW, FAST; + + SET SCI_PCLK1 TO _PAR_CLOCK_LOW,FAST; + SET SCI_PCLK2 TO _PAR_CLOCK_LOW,FAST; + SET SCI_PCLK3 TO _PAR_CLOCK_LOW,FAST; + SET SW TO INV_LOW; + +} + + +//Jake's working sequence did 1ms between llel clocks +#define FCS_PAR_STEP 20000 + +WAVEFORM FCSParallelForward +{ + 0: SET FCS_S1 TO _SER_CLOCK_HIGH_FCS, FAST; + //SET FCS_S3 TO _SER_CLOCK_HIGH_FCS, FAST; + //SET FCS_S2 TO _SER_CLOCK_HIGH_FCS, FAST; + SET FCS_SW TO _SW_LOW_FCS, FAST; + SET FCS_RG TO _RG_HIGH_FCS, FAST; + + SET LINE TO HIGH; + SET FCS_P1 to _PAR_CLOCK_LOW_FCS, FAST; + .+FCS_PAR_STEP: SET FCS_P3 to _MPP_CLOCK_HIGH_FCS, FAST; + .+FCS_PAR_STEP: SET FCS_P2 to _PAR_CLOCK_LOW_FCS, FAST; + .+FCS_PAR_STEP: SET FCS_P1 to _PAR_CLOCK_HIGH_FCS, FAST; + .+FCS_PAR_STEP: SET FCS_P3 to _MPP_CLOCK_LOW_FCS, FAST; + .+FCS_PAR_STEP: set FCS_P2 to _PAR_CLOCK_HIGH_FCS, FAST; + SET FCS_RG TO _RG_LOW_FCS, FAST; + .+1000: SET AC_Clamp_FCS TO HIGH; + .+1000: SET AC_Clamp_FCS TO LOW; + + .+200: SET NOP TO HIGH; + + +} + + +#define FCS_SER_STEP 40 +#define FCS_SIG_DELAY 300 +#define FCS_RST_DELAY 300 + +WAVEFORM FCSSplitReadout +{ + //readout strobes and reset gate + 0:=FCS_PIX_BEGIN + SET PIXEL TO HIGH; + .+1: SET PIXEL TO LOW; + SET LINE TO LOW; + SET FRAME TO LOW; + SET FCS_S3 TO _SER_CLOCK_HIGH_FCS, FAST; + SET FCS_RG TO _RG_HIGH_FCS, FAST; + //serial clocking + .+FCS_SER_STEP: SET FCS_S1 TO _SER_CLOCK_LOW_FCS, FAST; + .+FCS_SER_STEP: SET FCS_S2 TO _SER_CLOCK_HIGH_FCS, FAST; + .+FCS_SER_STEP: SET FCS_RG TO _RG_LOW_FCS, FAST; + SET FCS_SW TO _SW_HIGH_FCS, FAST; + + .+FCS_SER_STEP: SET FCS_S3 TO _SER_CLOCK_LOW_FCS,FAST; + .+FCS_SER_STEP: SET FCS_S1 TO _SER_CLOCK_HIGH_FCS, FAST; + .+FCS_SER_STEP: SET FCS_S2 TO _SER_CLOCK_LOW_FCS, FAST; + .+FCS_RST_DELAY: SET FCS_SW TO _SW_LOW_FCS, FAST; + .+FCS_SIG_DELAY: SET NOP TO HIGH; +} + +WAVEFORM DumpPixelsFCS +{ + 0:=FCS_DUMP_BEGIN + SET FCS_RG TO _RG_HIGH_FCS, FAST; + SET FCS_S3 TO _SER_CLOCK_HIGH_FCS, FAST; + .+FCS_SER_STEP: SET FCS_S3 TO _SER_CLOCK_HIGH_FCS, FAST; + SET FCS_SW TO _SW_HIGH_FCS, FAST; + .+FCS_SER_STEP: SET FCS_S1 TO _SER_CLOCK_LOW_FCS, FAST; + .+FCS_SER_STEP: SET FCS_S2 TO _SER_CLOCK_HIGH_FCS, FAST; + + .+FCS_SER_STEP: SET FCS_S3 TO _SER_CLOCK_LOW_FCS, FAST; + .+FCS_SER_STEP: SET FCS_S1 TO _SER_CLOCK_HIGH_FCS,FAST; + .+FCS_SER_STEP: SET FCS_S2 TO _SER_CLOCK_LOW_FCS, FAST; + SET FCS_SW TO _SW_LOW_FCS, FAST; + SET FCS_RG TO _RG_LOW_FCS, FAST; + +} + diff --git a/src/deimos/voltage_timing_parameters.h b/src/deimos/voltage_timing_parameters.h new file mode 100644 index 0000000..775c7cd --- /dev/null +++ b/src/deimos/voltage_timing_parameters.h @@ -0,0 +1,160 @@ +/** --------------------------------------------------------------------------- + * Define clock voltage levels here (units are in volts) + * All voltages are set relative to front substrate voltage (typ. 0V) + * evaluations relative to FSS should be implemented if variability is required +/*/ + +#define _PAR_CLOCK_HIGH 10.0 /* [ 8.00, 14.0] */ +#define _PAR_CLOCK_LOW 0.0 /* [-0.50, 0.50] */ + +#define _TG_CLOCK_HIGH 10.5 /* [ 8.00, 14.0] */ +#define _TG_CLOCK_LOW 0.0 /* [-0.50, 0.50] */ + +#define _SER_CLOCK_HIGH 11.0 /* [ 8.00, 14.0] */ +#define _SER_CLOCK_LOW 1.0 /* [-0.50, 1.50] */ +#define _SER_CLOCK_RCV 11.5 /* Higher than serial clock high */ + +#define _RESET_DRAIN 17 /* [ 15.0, 20.0] */ +#define _OUTPUT_DRAIN 29 /* [ 27.0, 32.0] */ + +#define _RG_LOW 5.0 /* [-0.5, 1.0] */ +#define _RG_HIGH 12.0 /* [8.0, 14.0] */ + +#define _SW_LOW _SER_CLOCK_LOW /* [-0.5, 1.0] */ +#define _SW_HIGH _SER_CLOCK_HIGH /* [8.0, 14.0] */ + + +/** --------------------------------------------------------------------------- + * Define timing parameters here (units are in ticks - 10ns) + * Evaluations are used for specific timing parameters and slew rates +/*/ + + +#define clockfreq 100000000 /* 100 MHz master clock frequency in Hz */ +#define sec *(clockfreq) /* clock cycles per second */ +#define ms *(clockfreq/1000) /* clock cycles per millisec */ +#define us *(clockfreq/1000000) /* clock cycles per microsec */ +#define ns *(clockfreq/10000000) /* clock cycles per nanosecond */ +#define clicks *(clockfreq/100000000) /* clock cycles per nanosecond */ + +/* Timing defines */ +/* Generic timing parameters */ +#define TICK #eval 1 clicks /* 10 nsec */ +#define 1ns #eval 1 ns +#define 1us #eval 1 us +#define 2us #eval 2 us +#define 10us #eval 10 us +#define 20us #eval 20 us +#define 25us #eval 25 us +#define 1ms #eval 100000 clicks /* 999 usec WHY */ +#define 10ms #eval 10 ms +#define 1s #eval 1000 ms + + +/* Line transfer timing definitions */ +#define TDRT 20us +#define TOI 20us +#define TDTR 20us + +#define TGDELAY 20us +#define SERTRANSDELAY 10us + + + +/* Serial transfer timing definitions */ + +#define SCLK_RCV_RESET #eval 60 TICK /* Serial clock recieving to reset */ +#define TWX #eval 8 TICK /* Reset Pulse Width */ +#define TOR #eval 56 TICK /* Serial Clock Overlap */ +#define TSW #eval Pixel_T/2 TICK +#define TSR #eval Pixel_T/3 TICK + +/** basic constants to assist in somewhat automating slew rate for triange clocking. + For now we are just entering a slew time manually, then calculating the rate to make + sure we hit the intended voltage at the top of the triangle waveform **/ + +/** basic slew rate logic: you are doing 1024 serial transfer cycles (for each amp), each lasing around 1us. In this time 3 parallel clock transfers happen, up and down once each. Therefore in 2048us we need to do 3 slews from top to bottom, hence the slew time is 1024 / 6 = 171 */ + +#define Pixel_T 1000 /* Full pixel time : 10s of ns */ +#define SER_SLEW_TIME_TICKS 333 + +#define SER_SLEW_TIME_US 3.33 + +#defeval PAR_SLEW_TIME_US ((2048)/2 + 50 + 20) * (Pixel_T / 100) / 3 +#define PAR_SLEW_TIME_TICKS PAR_SLEW_TIME_US * 100 + + + +//NOTE: OH DEAR, does GPP not do floating point calculations? +//UGLY HACK: for now we call a command line calculator to do it + +//NOTE archon slew rates are defined in Volts per microsecond, NOT in volts per Archon clock tick +//NOTE waveforms currently use parallel SLOW slew rate to mean triangular clock, +// and FAST to mean immediate clock + +//these exec constructs only work on bash shell, and therefore fail on ubuntu where /bin/sh +//is still INEXPLICABLY dash rather than bash. wah wah. +//#define P_TRI_SLEW_RATE #exec printf '%2.1f' $(bc <<< "scale=2; (_PAR_CLOCK_HIGH - _PAR_CLOCK_LOW) / PAR_SLEW_TIME_US") +//#define S_TRI_SLEW_RATE #exec printf '%2.1f' $(bc <<< "scale=2; (_SER_CLOCK_HIGH - _SER_CLOCK_LOW) / SER_SLEW_TIME_US") +#define P_TRI_SLEW_RATE #exec printf "%2.4f" $(echo "scale=4; (_PAR_CLOCK_HIGH - _PAR_CLOCK_LOW) / PAR_SLEW_TIME_US" | bc) +#define S_TRI_SLEW_RATE #exec printf "%2.4f" $(echo "scale=4; (_SER_CLOCK_HIGH - _SER_CLOCK_LOW) / SER_SLEW_TIME_US" | bc) + + + + +#define PCLK_slow P_TRI_SLEW_RATE + +#define PCLK_slow_FCS PCLK_slow + + +//e2v says need on average 1.us rise time, for "normal" clocking calculate PCLK_fast that way + +#define PCLK_fast #exec printf "%2.4f" $(echo "scale=4; (_PAR_CLOCK_HIGH - _PAR_CLOCK_LOW) / 1.5" | bc) + + + + +//e2v says need on average 90ns rise time for a serial clock +#define SCLK_fast #exec printf "%2.4f" $(echo "scale=4; (_SER_CLOCK_HIGH - _SER_CLOCK_LOW) / 0.2" | bc) + +#defeval SCLK_fast_FCS SCLK_fast + +//NOTE: waveforms currently use serial "slow" slew rate for triangular waveform +// serial "FAST" is for immediate changes (like e.g. resetting serial register) +#define SCLK_slow S_TRI_SLEW_RATE //nominal value for now + +#defeval SCLK_slow_FCS SCLK_slow + +//transfer gate uses only one slew rate + +#define TG_fast PCLK_fast +#define TG_slow 12 + + +#define NOISETEST 0 +#define CLAMPTEST 0 +#define RESETTEST 0 + + +//FCS related voltage definitions + +#define _PAR_CLOCK_HIGH_FCS 7.0 +#define _PAR_CLOCK_LOW_FCS -6.0 +#define _MPP_CLOCK_HIGH_FCS 7.5 +#define _MPP_CLOCK_LOW_FCS -5.0 +#define _SER_CLOCK_HIGH_FCS 8.0 +#define _SER_CLOCK_LOW_FCS -5.0 + +#define _RG_LOW_FCS 2.0 +#define _RG_HIGH_FCS 12.0 + +#define _SW_LOW_FCS -2.0 +#define _SW_HIGH_FCS 6.0 + +#define _RESET_DRAIN_FCS 14.0 +#define _OUTPUT_DRAIN_FCS 24.3 +#define _LASTGATE_FCS -4.0 +#define _DUMP_DRAIN_FCS 20.0 + + +#define PCLK_fast_FCS #exec printf "%2.4f" $(echo "scale=4; (_PAR_CLOCK_HIGH_FCS - _PAR_CLOCK_LOW_FCS) / 3.0" | bc)