Skip to content
Snippets Groups Projects
CHANGELOG 10.3 KiB
Newer Older
### 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. 
- 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!
Georg Auzinger's avatar
Georg Auzinger committed
- 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
- 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
Georg Auzinger's avatar
Georg Auzinger committed
- 31.08.2016:
    - 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
Georg Auzinger's avatar
Georg Auzinger committed
- 24.10.2016: added easylogging++ class for convenient log file creation and different logging levels
Georg Auzinger's avatar
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)
Georg Auzinger's avatar
Georg Auzinger committed
- 31.10.2016: v1.40
    - changed makefiles to use environment variables exported in setup.sh