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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
### 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!
- 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
- 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