v2.1 releases ============= Version 2.1.0 ------------- New minor release. Milestone: :cactus-trac-milestone:`IPbus software: v2.1.0 release ` **Backward incompatible change** IPbus 2.0 communication now sent in native-endian by default (previously packets were sent in big-endian; :cactus-trac-ticket:`417`) * **If using** a revision of the **IPbus2.0 firmware** from **more recent than the end of June** (revisions >= 21147, or ``ipbus_2_0_v1`` tag), then ... * This will be a **transparant change** (i.e. no changes to end-user software are needed). * If your hardware is running a revision of the **IPbus firmware core from before the end of June** (revisions < 21147), then ... * Please update your IPbus firmware to the tagged version (instructions :ref:`here `) at your earliest convenience * Along with being endian agnostic, the tagged version also contains a number of bugfixes from the last few months. * Until you have time to upgrade your firmware, you can use the new ``ipbusudp-2.0-bigendian`` or ``chtcp-2.0-bigendian`` URIs (i.e. append ``-bigendian`` to the protocol part of the URI). * **N.B:** Since they are only needed with old firmware revisions, these ``-bigendian`` URIs are considered immediately deprecated, and will not be supported after 1st May 2014. **New feature** * uHAL GUI: First iteration of uHAL GUI for HW development (:cactus-trac-ticket:`152`) * See [wiki:uhalGuiInstructions this wiki] for instructions on usage and customisation **Main improvements** * uHAL & ControlHub: Substantially improved large block write/read performance (uHAL tickets: :cactus-trac-ticket:`#255 <255>`, :cactus-trac-ticket:`#259 <259>`, :cactus-trac-ticket:`#418 <418>`, :cactus-trac-ticket:`#419 <419>` & :cactus-trac-ticket:`#461 <461>`; ControlHub tickets: :cactus-trac-ticket:`#219 <219>`, :cactus-trac-ticket:`#333 <333>`, :cactus-trac-ticket:`#334 <334>` & :cactus-trac-ticket:`#346 <346>`) * E.g. In B904 CMS integration facility, for ``chtcp-2.0`` (i.e. IPbus firmware running on board, comminucation via ControlHub, with planned Pt5 PC layout): * Single word read/write latency: ~ 290us * Write/read bandwidth for 10k 32-bit words ~ 110 Mb/s * Write (read) bandwidth for 10M 32-bit words ~ 520 (420) Mb/s * uHAL: Added more useful information to string returned by ``exception::what()`` method (e.g. URI for timeout/connection-related exceptions), and this information is now automatically copied to uhal log ERROR messages (tickets :cactus-trac-ticket:`#124 <124>`, :cactus-trac-ticket:`#254 <254>`) * uHAL: Removed internal dependency on ``binutils`` library, and also removed corresponding backtrace information from ``exception::what()`` string (:cactus-trac-ticket:`413`) **Minor improvements** * uHAL: Updated ``PerfTester.exe`` hardware validation test (i.e. ``-t Validation`` mode) so that it is a more rigorous test of the firmware (:cactus-trac-ticket:`370`) * uHAL: Added "parameters" xml attribute to address file, and corresponding ``uhal::Node::getParameters()`` method (:cactus-trac-ticket:`452`) * uHAL: Moved ``Node`` address collision messages from ERROR logs into a dedicated collision report file under ``/tmp/uhal`` (tickets :cactus-trac-ticket:`#250 <250>`, :cactus-trac-ticket:`#290 <290>`, :cactus-trac-ticket:`#310 <310>`) * uHAL: Improved the "class" attribute derived node mechanism (tickets :cactus-trac-ticket:`#445 <445>`, :cactus-trac-ticket:`#452 <452>`) * uHAL, Python: Added native support for many integer-like operations with ``ValWord_uint32`` instances (:cactus-trac-ticket:`265`) * E.g. ``+``, ``-``, ``*``, ``/``, ``**``, bitwise operations, comparisons (``<``, ``>``, ``==``, ``!=``, ...) etc. Full list at :cactus-trac-ticket:`comment 4 of ticket 265 <265#comment:4>` * uHAL, Python: Added ``value()`` method to ``ValVector_uint32_t`` (:cactus-trac-ticket:`420`) * uHAL: Replaced ``std::hash_map`` usage within ``uhal::ConnectionManager`` with ``boost::unordered_map`` (tickets :cactus-trac-ticket:`#226 <226>`, :cactus-trac-ticket:`#244 <244>`) * uHAL: Removed unneccessary inheritance in ``uhal::ValVector`` class (:cactus-trac-ticket:`257`) * uHAL: Added ``uhal::Node::getModule()`` method for future development of xml address file ``-->`` VHDL decode logic auto-generator (:cactus-trac-ticket:`368`) * uHAL: Added IPbus 2.0 UDP status packet script ``ipbus2_udp_status.escript`` to ``/opt/cactus/bin/etc/tests/`` for debugging purposes (:cactus-trac-ticket:`453`) **Bugfixes** * uHAL: Corrected type of exception thrown in various error scenarios, particularly timeouts & network related errors (previously just ``std::exception`` was thrown in several error cases; :cactus-trac-ticket:`253`) * uHAL: Increased maximum IPbus 2.0 packet size to be same as that for IPbus 1.3 (:cactus-trac-ticket:`255`) * uHAL: Thread safety of ``ClientInterface``/``HwInterface``/``Node`` read/write/rmw/dispatch methods * Added internal locking within ``uhal::ClientInterface`` to cope safely with multiple (end-user) threads accessing the ``read``/``write``/``rmw``/``dispatch`` methods of the same ``ClientInterface``/``HwInterface``/``Node`` instance (:cactus-trac-ticket:`297`) * uHAL: Corrected accidental addition of square brackets to ``uhal::Node`` "description" attribute (:cactus-trac-ticket:`325`) * uHAL: Fixed segfault in attempting 0-word block reads & writes (:cactus-trac-ticket:`343`) * uHAL: Stopped ``ClientInterface::dispatch()`` from sending an IPbus control packet header with no payload when read/write queue is empty - it now just returns immediately when the queue is empty (:cactus-trac-ticket:`355`) * uHAL: Fixed recovery of ``chtcp`` communication after timeouts (previously ``ValidationError`` exception was incorrectly thrown 50% of the time after a timeout; :cactus-trac-ticket:`436`) * uHAL, unit-testing: Increased size of simulated register space in ``DummyHardware`` unit test executables in order to avoid "writing to one register modifies values of two" behaviour (:cactus-trac-ticket:`246`) * ControlHub: Fixed race condition in ``controlhub_start`` script, whereby it could occasionally exit before the ControlHub had actually started up; now it waits until the ControlHub has fully started before exiting (:cactus-trac-ticket:`421`) * Packaging: Added OS string (i.e. ``slc5``/``slc6``) to RPM "package release" string (:cactus-trac-ticket:`309`)