130 likes | 274 Views
DCC Configuration and Conditions DB ECAL OD Electronics Workshop Nuno Almeida. Generic Configurator Requirements. Configure different hardware modules without changing the software Update/retrieve easily the configuration data Check device configuration
E N D
DCC Configuration and Conditions DB ECAL OD Electronics Workshop Nuno Almeida
Generic Configurator Requirements • Configure different hardware modules without changing the software • Update/retrieve easily the configuration data • Check device configuration • Configure devices from DB or XML files • For portability the configuration should be specified in a way… : • Flexible enough to be adapted to different DB • Self describing and understandable by everyone
Generic Configurator Software Layers Software Layers Inputs • Configuration Table • Defines the configuration of the device based on the item definition. • Used to load the configuration parameters into the device. Generic Configurator • Item Builder Table • Needed to create item objects. • Associates a structure (defined in a memory region) • to a register. Item Builder • HAL Table • Needed to create a VME/PCI device object. • Contains the definition of the hardware access registers • (AM code, address, accessibility (w/r), mask). HAL
Single Configurable Configuration Table <TTCHARDRESET _userInfo="SingleConfig">0</TTCHARDRESET> … <TTCLASERL1A _userInfo="SingleConfig">6</TTCLASERL1A> <TTCTESTPULSE _userInfo="SingleConfig">7</TTCTESTPULSE> <TTCSTOP _userInfo="SingleConfig">10</TTCSTOP> Single Configurables • Associated with single items • Name must match with Item name and with Register name Single Items • No structure (the same as a HAL register) • Priority (default is priority = “0”) DCC Single Items • DCCTTC Codes • DCC op. attributes(ZS levels, Data timeouts,…) Item Builder Table <SingleItem name= "TTCHARDRESET" /> … <SingleItem name="TTCLASERL1A" /> <SingleItem name="TTCTESTPULSE" /> <SingleItem name="TTCSTOP“ /> HAL Table <VME64X_ADDRESS _type="Module" ITEM_NAME="TTCHARDRESET"> <ADDRESS _type="number">0x00000014</ADDRESS> <SPACE _type="string">memory</SPACE> <MAP _type="number">0</MAP> <READ_OR_WRITE _type="string">rw</READ_OR_WRITE> <MASK _type="number">0x0000003f</MASK> </VME64X_ADDRESS> …
Segment Configurables Segment Configurables : • Associated with BitsSegment of a Composite Item • Name must match with name of the BitsSegment Composite Items : • Have structure and a length (number of words) Segmented Block (words with different BitsSegments)Continuous Block ( words with the same BitsSegment) … … Ex : DCC Operation Modes and Crystal Weights Ex: DCC Active Channels • Address incrementing mode AddrIncrement =“HAL_NO_INCREMENT” (Default) or AddrIncrement =“HAL_DO_INCREMENT” (FIFO) • Access type BlockTransfer =“off”(Default) or BlockTransfer=“on” DCC Composite Items • TTC Configuration • DCC op. attributes(ZS levels, Data timeouts,…) SEGC_0 SEGB_0 SEGA_0 SEG_3 SEG_2 SEG_1 SEG_0 SEGC_1 SEGB_1 SEGA_1 SEG_6 SEG_5 SEG_5 SEG_4
Segment Configurables Configuration Table <SREADOUT_0 _userInfo="SegmentConfig">0</SREADOUT_0> <ZSUPPRESSION_0 _userInfo="SegmentConfig">0</ZSUPPRESSION_0> <DAQMODE_0 _userInfo="SegmentConfig">0</DAQMODE_0> <WEIGHTSMODE_0 _userInfo="SegmentConfig">0</WEIGHTSMODE_0> <TTSINTERFACE_0 _userInfo="SegmentConfig">0</TTSINTERFACE_0> <TEST_0 _userInfo="SegmentConfig">1</TEST_0> Item Builder Table <CompositeItem name="OPERATIONMODE" > <SegmentedBlock length="1"> <BitsSegment name="SREADOUT" width="1" position="0" /> <BitsSegment name="ZSUPPRESSION" width="1" position="1" /> <BitsSegment name="DAQMODE" width="1" position="2" /> <BitsSegment name="WEIGHTSMODE" width="1" position="3" /> <BitsSegment name="TTSINTERFACE" width="1" position="4" /> <BitsSegment name="TEST" width="1" position="5" /> … </SegmentedBlock> </CompositeItem> DCC Operation Mode 1 0 0 0 0 0 HAL Table <VME64X_ADDRESS _type="Module" ITEM_NAME="OPERATIONMODE"> <ADDRESS _type="number">0x00000004</ADDRESS> <SPACE _type="string">memory</SPACE> <MAP _type="number">0</MAP> <READ_OR_WRITE _type="string">rw</READ_OR_WRITE> <MASK _type="number">0x0000007f</MASK> </VME64X_ADDRESS>
How to Group Configurables ? • Modules • Associated to an address region and having an address offset. • Configuration parameters can be located at identical functional hardware blocks. Ex in the DCC : 25 x 6 Weights for each FE channel (68) • Structures • A configurable container • Ex in the DCC : Active channels, operation attributes, operation modes, TTC codes • Modules and Structures are identified as DB Tables • <MODULENAME _userInfo=“MODULE” MODULENAME_ID=“0”> …</MODULENAME> • <STRUCTURENAME _userInfo=“STRUCTURE” STRUCTURENAME_ID=“0”> …</STRUCTURENAME>
Documentation http://ecal-od-software.web.cern.ch/ecal-od-software/ http://cmsdoc.cern.ch/~nalmeida/start/gconfig.htm (to get the code ,examples and APIs) “A Software Package for the Configuration of Hardware Devices Following a Generic Model. ” CMS NOTE-2004/014, Computer Physics Communications 163 (2004) 41-52.
DCC Configuration Structure Module • Full configuration requires • loading of more than 11000 • parameters: • Active Channels • DCC TTC codes • Operation Attributes • Operation Modes • Xtals Weights for ZS Module Structure Structure Structure Structure
DCC Configuration • Common DCC configuration parameters (operation mode and attr.) need to be loaded into 9 FPGAs • Define 9 different Modules => waste of space in DB (all modules share the same configuration !) • Possible solutions : • Hard coded (what is implemented now) Possible Extension to the GConfigurator void DCCConfigurator::loadConfiguration(DOMElement * mainElement){ DeviceConfigurator::loadConfiguration(mainElement); addClonedItems(); } void DCCConfigurator::addClonedItems(){ … for(ulong circuit = 1; circuit <= 9; circuit++ ){ offset = (circuit+0x60)<<12; // Deal With Operation mode //////////////////////////////////// cItem = itemBuilder_->buildCompositeItem("OPERATIONMODE",offset); itemSet_->insert(cItem); // Deal With Data timeout //////////////////////////////////////// sItem = itemBuilder_->buildSingleItem("DATATIMEOUT",offset); itemSet_->insert(sItem); … } fillClones(); } MODULE ADDRCLONE ADDRCLONE … ADDRCLONE …
DCC Conditions DB Data stored for detector monitoring : • Operation Status • TTS Flags • Error Flags • Error Counters per channel (8 bits) : • Channel Error ( fatal Error) , Data Timeout , Header Error, • Channel L1A Error, Channel Bx Error, Card Id Error, • Even Parity Error, ODD Parity Error, Link Error, • Data Transfer Error, Almost Full, FIFO Full.
Status • GConfigurator is implemented and being used : DCC, DCC-T, SLB, SLB-T, TCC • It would be nice to have a tool to generate DB input scripts based on the XML configuration file (the opposite is already possible) . • DCC Configuration stored in the DV ORACLE DB. • DCC Configuration Tables need to be renamed ex : OperationModes DCCOperationModes