Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
### Changelog:
- 09/07/14 : Added threading for stack writing registers
- 12/08/14 : Working agnostic version of the new structure on Master
- 15/08/14 : System Controller Class working
- 19/08/14 : Project wrapped, called ACF for Acquisition & ContFramework
- 09/10/14 : added Visitor class and the corresponding accept methodsthe HWDescription objects
- 15/10/14 : re-wrote the GlibFWInterface::ReadData() method, completere-wrote the parsing of the raw buffer and the offsets, modified the Dand Event classes to be more lightweight and less complex
- 17/10/14 : renamed the project to Ph2_ACF & re-structured the folarchitecture and added command line parsing to the executables (v1-00)
- 17/12/14 : major update (v1-01) including:
- performance improvements (use of C++11 features)
- general bugfixes
- a new, faster calibration routine
- a common-mode-noise tester tool
- compatability with DIO5 FW for external triggering / clocking
- updated address table for 2 & 8 CBC setups
- new FW files for DIO5 FW for 2 & 8 CBC setups
- a macro directory with a macro to visualize calibration results
- 11/02/15 : new update (v1-02) with the following changes:
- removed all dependences on ROOT from the HWDescription/ HWInterface / System / Utils Library
- added a new Tool base-class that inherits from SystemController and handles the creation of Root files for the Tools (the Tools library is the onely one that requires ROOT)
- all Tools (cmd-line applications) now inherit from Tool instead of SystemController
- added a loop to the Destructors of HWDescription Objects that explicityl delete the child-objects in the HWDescription ownership strucuter to avoid memory leaks
- added a parameter to some methods of the SystemController class that allow to pass an ostream - this allows to redirect the output from std::cout as desired
- new Methods:
- RegManager::GetHWInterface and RegManager::getUhalNode methods
- BeBoardInterface::ReadBlockBoardReg and a BeBoardInterface::WriteBlockBoardReg
- BeBoard::getReg & BeBoard::setReg use uint32_t instead of uint16_t
- BeBoardFWInterface::ReadBlockRegValue pure virtual method and GlibFWInterface::ReadBlockRegValue that implements the uHAL bug workaround
- 24/02/15 : new update (v1-03) with the following changes:
- CbcInterface::WriteReg() now return the written Register value
- writing to the Glib now also takes care of avoiding the 256th word uHAL bug
- some modifications to HybridTester tool to make it compatible with the GUI
- added a CMD line option: g for GUI, should only be used by the latter
- SystemController class can now parse .json files in addition to .xml
- 04/03/15: added GUI (v1-10)
- 05/03/15 : New FpgaConfig object in HWInterface to manage firmware uploading.
- added WriteBlockAtAddress and ReadAtAddress functions in RegManager used by the upload dialog.
- BeBoardInterface::FlashProm(...) uploads an MCS file into the FPGA
- 15/04/15 : Acquisition in a separate thread (v1-11)
- Start() should be called when acquisition begins, Stop() when it ends and ReadData(...) at each iteration.
- New functions BeBoardInterface::StartThread, StopThread, getNumAcqThread, isRunningThread. Abstract class HwInterfaceVisitor.
- datatest -p option to perform an acquisition in a separate thread
- datatest -i option to ignore CBC configuration. Can be run on a bare GLIB board without CBC
- 07/05/15: merged Commissioning branch (v1-12)
- contains class for Commissioning: latency scan, threshold scan, stub latency scan
- some additions to the Utils/CommonVisitors
- added a stub bit method to the Event class
- restructured the ostream operator of the Event class
- 05/06/2015: minor modifications
- BeBoardFWInterface::ReadData() now returns the number of packets read during the acquisition for faster event counter checks.
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
- 11/06/2015: merging a new design for Data and Event classes (v1-20)
- Data class now holds a vector of Events and the events are directly decoded after acquisition - the char* databuffer does not exist any longer
- added methods: std::vector<Event*> GetEvents(); Event* GetEvent()
- updated all scripts
- 17/07/2015: including a new executable fpgaconfig to upload .mcs files to the EPROM, updated tool base-class, included DQM code from the Beamtest
- fpgaconfig binary allows to upload FW images to EPROM (2 separate images)
- tool base class now contains containers for histograms along with bookHisto(), getHisto(), saveHisto() methods
- modified all other tools accordingly
- merged the DQM code from the June '15 beamtest into miniDQM binary
- updated Makefiles to build RootWeb & miniDQM
- 04/08/2015: adding a faster & more precise algorithm to extract the parameters from SCurves via differentiating it - implemented in FastCalibration
- 11/08/2015: adding threaded File IO features (v1-21)
- added FileHandler class for threaded saving of binary data as it comes from the GLIB to file (without speed penalty)
- FileHandler can also read binary files for playback (see miniDAQ/datatestFromfile.cc)
- adding miniDAQ executable that saves to file and handles runnumber in a hidden Data/.run_number.txt file
- miniDQM code based on BT DQM still available for playing back the binary data
- datatest now has a -s option to specify a filename where binary data should be saved (optionally)
- 06/10/2015: adding several new features:
- bugfix w.r.t. 8CBC data format
- bugfixed 8CBC_DIO5 firmware
- a mechanism that throws an exception if a non-existing CBC register is to be written
- a binary to measure the pulseshape of the CBC on all channels of a test-group
- added support for THttp Server support (web access to histograms & root objects)
- a webgui
- re-worked Fpga configuration options
- CTA FW interface
- revised Root-web DQM structure
- 18/11/2015: new features added (v1-30):
- BeBoard configuration option that specifies the # of CBCs that are in the data coming from the FW
- compatability with 16 CBC firmware
- handling of 16 CBC modules as one FE in SW (2 FEs in FW)
- new SCurve BaseClass for Calibraton & noise scans
- iterative readback-error correction (SW tries to write every register agin that produced an error for 5 times)
- simplified FastCalibration
- removed old Calibration algorithm
- introduced new, bitwise and super-fast calibration algorithm
- 11/12/2015: new uHAL connection configuration:
- added new Constructors to RegManager, BeBoardFWInterface, GlibFWInterface, CtaFWInterface that take uhal connection: id, uri, address_table
- modified system controller accordingly so these strings are passed to the constructor
- adapted config files
- 15/12/2015: simplified Glib/CtaFWInterfaces (v1-31):
- adapted and simplifeid FWInterfaces
- removed #define statements for FW registers - are now called directly as string from code
- simplified Definitions.h
- added an Encode Reg method that can be passed the FE ID instead of decoding it from the CBC id
- merged DQM code from Nov15 beamtest
- 03.03.2016: some updates & additions (v1-32)
- added support for CMS Tk Ph2 Data format (.daq) files generation
- added the option for CMS Tk Ph2 Antenna driver as plugin
- removed the Shelf objects from the code for simplicity
- 18.04.2016: adding support for IC Firmware
- added an Interface for Imperial College GlibFW (K. Uchida)
- simplified Data class to allow for compatability with above FW
- added Inherit() & Destroy() methods to SystemController & tool to facilitate creating other tool classes with an already existing hw structure
- updated makefiles
- added ReadNEvents() method to BeBoardInterface that allows to read a given number of events from FW as 1 packet
- changed signatures of ReadData / Stop and remove the NthAcquisition parameter for simplicity
- simplified the iterative error correction features in both FW Interfaces
- implemented broadcast I2C write operations in both FW Interfaces
- added Support for AMC13
- included TDC aware Trigger latency scan in Commissioning
- adapted FW aware commissioning procedures & tools to check the beBoardFWVersion (GLIB vs ICGLIB)
- simplified byte swapping / bit reversal in Data & Event classes
- added ICFc7FWInterface
- updated CtaFWInterface (Strasbourg FW)
- much cleaner CbcInterface
- calibration can now automatically perform a noise scan and a noise strip mask procedure!
- 09.06.2016:
- added a threshold scan to commissioning procedures
- split commissioning in two classes for Signal and (Stub)Latency
- updated FileHandler to read files in chunks, or just the end
- added a FileHeader class that can optionally be set on the FileHandler
and then it is written to the file (fixed lenght 12x32 bit)
- added a -r flag to configure executable to read the FE i2c parameters
without writing anything
- fixed the PC_CONFIG_OK in Strasbourg FW
- cleaned up commissioning and PulseShape related code to get the correct
FW register names from a private method
- updated and debugged IC data format
- Noise Scan available from calibration binary
Georg Auzinger
committed
- 01.07.2016:
- Data::set() has an additonal Flag that allows playback of GlibStreamer Data
- FileHeader Updated
- FileHandler Updated
- FileHandler can now be instantiated for reading of a single File in SystemController
- for writing 1 FileHandler Instance per BeBoard is created
- file Headers are now included in all raw files and are marked with the BeId
- moved all HW Parsing features from System Controller to System/FileParser class for easier extension
- updated Event Class with more streamlined and efficient code that uses less accesses when dealing with Events - should make for better performance
- updated DQM histogramer to work with new Event implementation
- revised mapping of Events vs CBC and FE
- merged most recent AMC13 code from Pixel Phase 1 developments
- 24.10.2016: added easylogging++ class for convenient log file creation and different logging levels
Georg Auzinger
committed
- 28.10.2016: merged recent changes for HybridTesting (integratedtester)
- new binary: integratedtester
- support for exernal USB instruments (HMP4040, Ke2110, TCP sockets via ZEROMQ)
- 31.10.2016: v1-40
- changed makefiles to use environment variables exported in setup.sh
Georg Auzinger
committed
- 15.11.2016: adding modifications for CBC3 usage:
- new Cbc3Fc7FWInterface and address tabel
- FileParser in System/ can now handle nested BeBoardRegisters like in uHAL address tables in HWDescription.xml config files
- new Cbc3 FW (K.Uchida) HWDescription file
- re-structured Data handling in the guts: Data object is now member of the SystemController and all methods like getting events etc are wrapped in system controller
- ReadData() and ReadNEvents() are now wrapped in SystemController and should thus only be used from there!
- FWInterfaces: ReadData() and ReadNEvents() now take a reference to std::vector<uint32_t>& to pass the data upwards to the Data object in SystemController
- re-structured the Data object internals: Data::Set() now decides the manipulation algorithm based on BoardType Enum class in Definition.h - no more set of boolean flags
Georg Auzinger
committed
- introduced an Event class Polymorphism: normal Event class is now the almost virtual base class and Cbc2/3Event inherit from it.
- Updated the Cbc class to handle comments in CbcConigFiles better and re-produce them in eventual output files
- harmonized the use of BoardType: now FWInterfaces and BeBoard classes use the same enum BoardType defined in Definition.h
- implemented GetNHits() and GetHits() methods in both Cbc2/3Event::print() which is used by the Event friend operator <<
- 25.11.2016:
- introduced a ChipType enum to identify CBC version. Each CBC and Module object has this identifier set and this can be used to adapt commissioning procedures accordingly
- introduces 2 new Visitors (ThresholdVisitor, LatencyVisitor) that take the different behavior of CBC2/3 into account (8 vs 10 bit Vcth register, 8 vs 9 bit Trg Latency)
- updated commissioning procedures accordingly to use the new Visitors
Georg Auzinger
committed
- 11.01.2017:
- added a new Settings node in the HWDescription.xml file to set up the CBC test pulse and most common settings without having to manually set bits in individual registers
- Cbc Registers nodes take precedence over Cbc Setting nodes, Global settings take precedence over individual CBC settins and Global CBC Registers take precedence over everything else - this is supposed to be the expert mode
- 17.01.2017:
- added and Debugged BiasSweep Tool class that should work with both versions of the CBC - in addition to TGraphs, a TTree with the bias sweep data is stored (biasname, FeId, CbcId, Timestamp, vectors of x and y data)
- implemented full functionality to sweep biases with external instruments: HMP4040, Ke2110, ArduinoNano
- Calibration et al work
- added StubSweep tool to check Stub addresses
- 07.02.2017:
- cleaned up root file handling
- cleaned up histogram binning in Calibration, PedeNoise and Channel classes
- added cbc3irrad binary to run the complete radiation test cycle
- added UsbUtilities helper functions to launch and query Ke2110 and HMP4040 servers running in Tmux
- renamed Vth to VCth for CBC3 too
Georg Auzinger
committed
- 22.06.2017:
Georg Auzinger
committed
- new D19C FW Interface and D19C CBC3 Event classes to handle D19C
- new implementation of SLink 64 bit event data format for downstream DAQ chain - see example in datatest and miniDAQ
- with this comes new GenericPayload container that stores data internally as 64 bits but can return them in vectors of any wordsize < 64 - the data is always padded to 64 bits
- ability to parse a SLink node with all the condition data and debug level from the config file (Cbc3HWDescription.xml) - this ConditionDataSet object belongs to BeBoard pointers as this makes it easier to update I2C values for every event
- added "eventType" attribute to BeBoard node to indicate either ZeroSupressed or VirginRaw mode - even if the attribute is missing this will always be assumed VR unless ZS is explicitly specified - this is now also a member of BeBoard including setters and getters
- removed NCbcDataSize and corresponding nodes in HWDescription.xml files. only for GLIB and CTA, if the number of CBCs is smaller than 4, 4 is assumed, if the number is between 4 and 8, 8 is assumed and if the number is greater than 8, 16 is assumed
- 21.07.2017
- merged changes required for OTSDAQ
- migrated project to CMAKE: instructions: cd build/ cmake .. make
Georg Auzinger
committed
- 17.11.2017 major cleanup of project repository and many added features related to CBC3
- dropped normal makefiles - project builds only with cmake
- signal scans added
- some minor bug fixes
- new DQM code based on SLink Data format to avoid having to read HWDescription files
- 13.02.2018 Latest Release (v1-50): merging the latest D19CFwInterface class to go along with the latest D19C FW compatible with CBC3