Change log

Contents

Change log#

0.43.0#

  • Removed the deprecated API of accessing the visualizer as a remote node, i.e. samna.open_remote_node(viz_id, “visualizer”). Instead use the event-based visualizer API (samna.ui.VisualizerConfiguration).

0.42.1#

  • Fix the configuration order of clock registers for XyloAudio 3.

0.42.0#

  • Internal improvements to the build infrastructure.

  • Fix the bug where MacOS wheels were only generated for version 15.0.

0.41.2#

  • Fixing the address out of range of Delta32 fixup bug when using JIT.

0.41.1#

  • Add option to automatically read XyloAudio 3 input registers in Real-Time mode with samna.xyloAudio3.DebugConfiguration.monitor_input_neurons_enable.

0.41.0#

  • This version drops support for very old platforms. * Update minimum glibc version to 2.28 for Linux wheels. * Update minimum MacOS version to 13.0 for MacOS wheels.

0.40.0#

  • Upgrade compiler to clang-19. This compiler is also used for JIT compiled filters, so JIT filters can use all C++20 language features supported by the new version.

0.39.14#

  • Fixed a bug where the timestep counter was not reset for XyloAudio 3.

  • Move RAM access control to samna.xyloAudio3.XyloConfiguration instead of the model and use sane defaults.

  • Use clock dividers relative to main clock instead of absolute frequencies in samna.xyloAudio3.XyloAudio3TestBoardDefaultConfig.

0.39.13#

  • Fixed a bug where the OUT0 pin was driving by XyloAudio 3 and FPGA at the same time leading to high IO power consumption. Requires firmware version 1.5.1 for the XyloAudio 3 Test Board.

0.39.12#

  • Avoid aliasing of power measurement results for XyloAudio 3 to improve accuracy when downsampling.

0.39.11#

  • Optimized samna.graph.source_to and samna.graph.sink_from functions by for cases where the target node is a device node, resulting in significantly faster script startup times.

0.39.10#

  • Made <iostream> header available in JIT filter. It is now possible to use std::cout debugging when developing a JIT filter.

0.39.9#

  • Fixed a bug where XyloAudio 3 ignored the configured clock frequencies.

0.39.8#

  • Support Direct Output mode of XyloAudio 3.

0.39.7#

  • Fix bug where get_stop_watch().stop would call start() instead of stop().

0.39.6#

  • Add 2nd synapse current for XyloAudio 3.

  • Disable unused memories for XyloAudio 3 to save power.

  • Simplify input source selection for XyloAudio 3.

0.39.5#

  • Add support for python 3.12 on Linux and MacOS.

0.39.4#

  • Improve XyloAudio 3 documentation.

0.39.3#

  • Add function to obtain I2c byte streams for XyloAudio 3 configuration.

  • Add functions to obtain SPI byte streams for Xylo-A2 core and AFE configurations.

0.39.2#

0.39.1#

  • Optimize default configuration for XyloAudio 3 analog frontend for better performance.

0.39.0#

  • Official support for XyloAudio 3 with finalised configuration.

0.38.11#

  • Improve robustness of XyloAudio 3 startup.

0.38.10#

  • Fix configuration of analog registers

0.38.9#

  • Add check to verify communication with XyloAudio 3 board when initializing the board

0.38.8#

  • Allow receive wave status packet on Speck2fCharQiuciBoard.

0.38.7#

  • Fix code coverage build

0.38.6#

  • Add initial support for XyloAudio 3

0.38.5#

  • Update Samna compilation instructions

0.38.4#

0.38.3#

  • Expose missing low-level functions for Speck2fQiuciBoard

0.38.2#

  • Fixed crash when Speck2e receives wrongly encoded data.

0.38.1#

  • Improve Speck2f DVS performance

0.38.0#

  • Drop support for python 3.6 and 3.7 on Linux and Intel MacOS

  • Add support for python 3.l1 on MacOS

0.37.11#

0.37.10#

  • Support 4 * 4 noc for Speck2fCharQiuciBoard

  • Add waveform generator to Speck2fCharQiuciBoard

0.37.9#

  • Fix index url to install real samna.

0.37.8#

  • Add waveform generator.

0.37.7#

  • Fixed a bug that stopped uploading the package to pypi.

0.37.6#

  • Internal improvement.

0.37.5#

  • Do not make unneeded symlinks inside the python package directory

0.37.4#

  • Fixed a bug with local wheels introduced in version 0.37.3

0.37.3#

  • Fixed a bug with local wheels introduced in version 0.37.1

0.37.2#

  • Release memory when clear event on sinks

0.37.1#

  • Support local versions of wheels as defined by PEP440, marked by version numbers X.Y.Z+xyz

0.37.0#

  • Support Speck2fCharQiuciBoard for internal testing.

0.36.7#

  • Support setting base address of test binary and executing all tests at once in FPGA test runner

0.36.6#

  • Add Specksim types to Jit Headers.

0.36.5#

  • Fix the import samna fail problem

0.36.4#

  • Revert the changes in 0.36.3

0.36.3#

  • Do not throw exception if Speck2f apply configuration timeout. (BUG)

0.36.2#

0.36.1#

0.36.0#

  • Bring up XyloAudio3.

0.35.4#

  • No changes except fixing the tag mishandling from 0.35.3

0.35.3#

NOTE: this version was never deployed due to mishandling of tags * add optional to skip chip ready check in speck2f loulan board. * do not convert bootFromFlash to bootFromPc down the call stack in speck2f loulan board

0.35.2#

  • Remove edge detection control module in speck2f loulan board.

0.35.1#

  • Adapt testing module timestamp result structure to latest changes in unifirm

0.35.0#

  • Support Speck2f lcc84 Loulan Board.

0.34.0#

  • Support Xylo Audio3 testboard initially.

0.33.6#

  • Add timeout option for apply_configuration of speck2f.

0.33.5#

  • Internal improvement to CI environment

0.33.4#

  • It is not allowed to set CNN layer’s pooling to 8 on Speck 2f and Speck 2e

0.33.3#

  • Remove problematic Xylo-IMU example: Xylo-Imu Convert Acceleration to Spike.

0.33.2#

0.33.1#

Xylo-IMU update:

0.33.0#

  • Add Specksim submodule (high performance speck simulator implemented), for more details, please refer to Sinabs.

0.32.3#

  • Fix samna version in Xylo-IMU examples.

0.32.2#

  • Add missing registered filter names to documentation.

0.32.1#

Xylo-IMU update:

  • Reset board automatically when openning the board.

  • Change bpf_a1_values and bpf_a2_values attribute of samna.xyloImu.configuration.InputInterfaceConfig from unsigned int to signed int.

  • Modify values of the above two attributes from unsigned to signed in online examples of Xylo-IMU.

0.32.0#

  • The SplittingNode, deprecated since 0.30.0, has been removed. The EventTypeFilter and MemberSelectFilter can be used instead.

0.31.9#

0.31.8#

  • Improved stretching behaviour of FramePlot and ActivityPlot. The plots maintain the height-width proportion when stretched.

0.31.7#

  • Rename ReservoirSpike to samna.xyloImu.event.HiddenSpike and rename ReadReservoirSpike to samna.xyloImu.event.ReadHiddenSpike in Xylo-IMU.

0.31.6#

0.31.5#

  • Internal improvement.

0.31.4#

  • Internal improvement.

0.31.3#

  • Internal improvement.

0.31.2#

Xylo-IMU update:

0.31.1#

  • Give a warning when graph is destroyed while running or without any start.

0.31.00#

  • bump libviz version to 0.4.0

  • Remove dependency of samna to openGL: image validation beyond filesystem checks is moved to samnagui, where an error window now pops up in case of invalid image.

0.30.27#

  • Extend PacketSniffer to a general purpose UnifirmHook.

0.30.26#

0.30.25#

  • Fix online demos of Dynap-CNN series.

0.30.24#

0.30.23#

  • BasicSinkNode supports key word argument and default argument.

0.30.22#

  • Internal improvement.

0.30.21#

0.30.20#

Please refer to Xylo-Imu Readout for demos.

0.30.19#

  • Internal improvement.

0.30.18#

0.30.17#

  • Xylo-IMU only reports fifo empty error when fifo empties instead of being empty.

0.30.16#

0.30.15#

  • Increase the VIH voltage range from 1.2V to 3.7V on Speck2f characterization Board v1.3.

0.30.14#

  • Fixed a bug where python package is not removed properly by pip.

    Note that the fix does not solve the problem in an environment if it has been caused by previous samna versions.

0.30.13#

  • Various improvements in ImageReconstructFilter filter.

    • set_limits() changed to set_limit_potentials() requiring an extra parameter neutral_potential.

    • Renamed set_decay_contribution() to set_decay_factor().

0.30.12#

  • Internal improvement of Xylo-IMU.

0.30.11#

  • Fix a bug on old visualizer api caused by tcp connection delay.

0.30.10#

0.30.9#

  • Fix bug about old visualizer api.

0.30.8#

  • Expose samna.xyloImuBoards.MeasurementChannels to python.

0.30.7#

0.30.6#

0.30.5#

  • Allow configuration on opening MooreaTestBoard with MooreaTestBoardDefaultConfig Default behaviour initializes the board for regular use with Speck3.

0.30.4#

  • Fix the failure of setting voltages in some cases on Speck2e, Speck 2f, Speck3, Xylo-IMU and Xylo-A v2 boards.

0.30.3#

  • Add power measurement to Xylo-IMU.

0.30.2#

  • Fix reset failure in some cases for Speck 2e/2f/3 boards.

0.30.1#

  • Internal improvement.

0.30.0#

  • Upgrade samnagui to use event-based interfaces. The old remote-node use of samnagui has been deprecated. For more information about the event-based interface look in the documentation for Visualizer.

0.29.7#

  • Visualizer now support a frame based plot

0.29.6#

  • Revert the changes in 0.29.4.

0.29.5#

0.29.4#

  • Compensate the voltage drop on the input signals on the Speck2f characterization board v1.3

0.29.3#

  • Support Speck2f characterization Board v1.3.

0.29.2#

  • Allow get board serial number through flasher.

0.29.1#

  • Internal improvement.

0.29.0#

  • Support Xylo-IMU which integrates a Xylo-Core and a MC3632 sensor to detect acceleration.

0.28.4#

  • Update proximity deteciton demo of speck2f boards.

0.28.3#

  • Internal improvement.

0.28.2#

  • Internal improvement.

0.28.1#

  • Support Speck2f characterization board v1.2

0.28.0#

  • Added filter for image reconstruction for Speck series devices based on an accumulator algorithm. More details and usage can be found in the documentation of ImageReconstructFilter.

0.27.22#

  • Internal improvement.

0.27.21#

  • Internal improvement.

0.27.20#

  • Add some speck2f examples to documentation.

0.27.19#

  • Internal improvement.

0.27.18#

  • Internal improvement.

0.27.17#

  • Internal improvement.

0.27.16#

  • Invert order between stop packet dump and chip reset in testing module reset -> now the chip is reset after sending stop packet dump action code

0.27.15#

  • Allow open speck2f serial boards with default configurations.

0.27.14#

  • Fix the bug that apply configuration fails even if GPIO 7-10 is remapped to SPI_S

0.27.13#

  • Add method to get the board serial number from the board object for Speck 2e, Speck 2f, Speck 3.

0.27.12#

  • Fix the bug where, for MooreaTestBoard, reset_model now properly exposes the skip_is_ready_check boolean as an optional argument.

0.27.11#

  • Add clear_events function to BasicSinkNode.

0.27.10#

  • Fix the bug that get incorrect ReadoutPinValue on Speck2fModuleDevKit in some cases.

0.27.9#

  • Make EventCropNode supports cropping to only one pixel.

0.27.8#

  • Internal improvement.

0.27.7#

  • Automatically handles GPIO remap for Speck2fModuleDevKit

0.27.6#

  • Remove useless items from Speck 2f configuration

  • Improve the power consumption of IO power traces of Speck 2f

  • Fix the bug that the Speck2fDevKit can’t be accessed in Python

0.27.5#

  • Internal improvement.

0.27.4#

  • Fix bug about rgb frame encoding for Speck 2e.

0.27.3#

  • Internal JTAG improvement for Speck 2e.

0.27.2#

  • Internal improvement.

0.27.1#

  • Improve DVS performance on Speck 2f.

0.27.0#

  • Support Speck2fModuleDevKit, which is the dev kit with a Speck 2f optical module.

  • Support Speck2fDevKit, which is the dev kit with a CQFP80 packaged Speck 2f.

0.26.11#

  • Internal improvement.

0.26.10#

  • Internal improvement for Speck 2e/2f

0.26.9#

  • Implicitly reset chip every time an ExecuteTest event is sent to the testing module

0.26.8#

  • Implemented DvsEventToViz for Speck* series and DynapCNN-B, except for Speck.

  • This can be used through JIT interface as JitDvsEventToViz.

0.26.7#

  • Added get_firmware_versions function to test boards and devkits to get Fxtree and Unifirm versions of the device.

0.26.6#

  • Add function configuration_to_flash_binary to speck2f.

0.26.5#

  • Support write/read board id.

0.26.4#

  • Update Speck 2e/2f sram timing default values

0.26.3#

  • Internal improvement.

0.26.2#

  • Fix bug that complie error when using JitSpikeCount and JitMajorityReadout.

0.26.1#

  • Internal improvement.

0.26.0#

  • Support Speck 3 TestBoard

0.25.6#

  • Improve performance of apply_configuration` of speck2e, speck2f and speck3.

0.25.5#

  • Improve constructor performance of events.

0.25.4#

  • Pickle support for Speck 2f/3’s events

  • Keyword arguments support for Speck 2f/3’s events

0.25.3#

  • Do not throw if Speck 2f characterization board receive incorrect data but log an error message

0.25.2#

  • Internal improvement

0.25.1#

  • Add builtin two instances of EventCrop:

    • Speck2eSpikeEventCrop

    • Speck2fSpikeEventCrop

0.25.0#

  • Support Speck 2f characterization board

0.24.1#

  • Internal improvement.

0.24.0#

  • Support Speck3 moorea test board.

0.23.4#

  • Add product id and vendor id for all supported devices in documentation.

0.23.3#

  • Add IoControlModule to write IO configurations to chip directly. This is only for internal debugging purposes.

0.23.2#

Internal improvement

0.23.1#

  • Revert the change 0.22.5, the event from DVS pre-processor layer of Speck 2e is the Spike event with layer 13. Only DVS event from the sensor is represented by DvsEvent.

0.23.0#

  • TestingModule of MooreaTestBoard now has a source node that can be used to query the results of a test suite run.

0.22.7#

Internal improvement

0.22.6#

  • Remove DvsFilterFactoryConfig::filterClkEnable on Speck2e and Speck2f, users do not need to set this.

  • Update documentation for Speck2e DvsFilterConfig enable and Speck2f DvsFilterConfig enable

0.22.5#

Add source in Speck2e DvsEvent to tell where this event comes from.

If a Speck2e DvsEvent object is constructed by users, the source is default set to External. If it comes from the chip, it is either PreProcessorLayer which means from the DVS pre-processor layer, or Sensor which means from the DVS raw event.

0.22.4#

Internal improvement

0.22.3#

Add functionality to speck2f:

  • Add option low_pass_mode_enable.

  • Add function to generate the flash configuration.

  • Apply special memory address mapping to speck2f.

0.22.2#

0.22.1#

Bind complete types for all instances constructed via string in ~samna.graph.EventFilterGraph.sequential calls. Fixed types are:

  • Speck2bInputEventTypeFilter

  • Speck2bMiniInputEventTypeFilter

  • Speck2bMiniInputMemberSelect

  • Speck2bMiniOutputMemberSelect

  • Speck2cMiniInputMemberSelect

  • Speck2cMiniOutputMemberSelect

  • Speck2dMiniInputEventTypeFilter

  • Speck2dMiniInputMemberSelect

  • Speck2dMiniOutputMemberSelect

0.22.0#

  • Add board object for moorea test board. Supports uploading test suite from a little endian byte stream, and executing a single test.

0.21.8#

  • Adapt Speck2eDevKit to board modification that increases range of power measurements (each power trace with \(\pm\) 50uW offset).

0.21.7#

  • Fix neuron address mapping for layer 0 and layer 1 of speck2e/t.

0.21.6#

  • Add reset_board_soft on Speck2eDevKit to reset FPGA and peripherals.

  • Remove reset_board_hard on Speck2eDevKit.

  • Fix the Speck2cMiniTestBoard’s get_dac, Speck2dMiniTestBoard’s get_dac and Speck2eDevKit’s get_dac to return the correct object.

0.21.5#

  • Internal improvement.

0.21.4#

  • For Speck 2e only:
    • Change the default DVS direction for the Speck 2e DevKit

    • Add description about the spike decimator and congestion balancer

    • Specify the default values for configurations

    • Fix a typo in the name output_mode_sel

    • Update the CNN destination layer description, the support values are [0, 8] for other CNN layers and 12 for the readout layer

    • Fix a typo in the name of threshold

    • Update DVS merge, on_channel, off_channel settings’ description.

0.21.3#

  • Internal improvement.

0.21.2#

  • Fix a bug on speck2e flash configuration which causes dvs filter registers fail to write from flash.

0.21.1#

0.21.0#

BREAKING CHANGES

  • BufferSinkNode, already deprecated in version 0.10.5 in favor of BasicSinkNode, has been removed.

To migrate, simply swap BufferSinkNode_* with BasicSinkNode_*.

  • EventFilterGraph’s node instance methods add_destination, remove_destination and get_input_channel, deprecated since version 0.11.0, have been removed.

As further detailed below, the latter were used to connect the device model event sink or event source to an external node or a computational graph.

Getting events from a device

Previously, events from the model source node could be obtained as follows:

# create an external sink node of a known type, in this case a DynapCNN.
sink = samna.BasicSinkNode_dynapcnn_event_output_event()
# connect the model source to the sink with deprecated functions.
dev_kit.get_model_source_node().add_destination(sink.get_input_channel())
# read the events from the sink, an array of events will be returned.
events = sink.get_events()

In the new version, the preferred way of getting events from a device is to connect the corresponding device model source node to a BasicSinkNode whose type matches the events produced by the device. This can be done with the samna.graph.sink_from function.

For example, to collect all the events generated by a device:

# get source node of model.
source = dev_kit.get_model().get_source_node()
# create a sink node and connect it to the source node of the model.
sink = samna.graph.sink_from(source)
# read the events from the sink, an array of events will be returned.
events = sink.get_events()

As is apparent from the above snippet, the sink_from function automatically provides a sink instance of the correct type, thus reducing the burden placed on the user. On the other hand, if the type of BasicSinkNode is known, it is also possible to create an instance of the sink node directly before forwarding it to the EventFilterGraph.sequential(...) method along with the source node.

# Create an instance of the graph filter
graph = samna.graph.EventFilterGraph()

# Receive events from a DYNAP-CNN model source.
source, ..., sink = graph.sequential(dev_kit.get_model().get_source_node(), ..., samna.BasicSinkNode_dynapcnn_event_output_event())

# Start the computational graph
graph.start()

# read the events from the sink, an array of events will be returned.
events = sink.get_events()

Sending events to a device

Events can be sent to a device by using a BasicSourceNode to stream events to its model sink node. Previously, these two nodes could be connected as follows:

# initialize a BasicSourceNode of a known type, in this case a DynapCNN.
source = samna.BasicSourceNode_dynapcnn_event_input_event()
# get sink node of model.
sink = dev_kit.get_model().get_sink_node()
# connect source node to sink node via deprecated functions.
source.add_destination(sink.get_input_node())
# write events to the source node.
source.write([evt1, evt2, evt3, ...])

To migrate to the new version, the samna.graph.source_to function can create the appropriate source node for a given sink node, if a direct connection is needed:

# get sink node of model.
sink = dev_kit.get_model().get_sink_node()
# connect source node to sink node
source = samna.graph.source_to(sink)
# write events to the source node, it will stream events to the sink node automatically.
source.write([evt1, evt2, evt3, ...])

On the other hand, if the type of BasicSourceNode is known, it is also possible to create an instance of the source node directly before forwarding it to the EventFilterGraph.sequential(...) method together with the sink node. Other filter nodes can be added between the source and sink nodes.

# Create an instance of the graph filter
graph = samna.graph.EventFilterGraph()

# Send events to a DYNAP-CNN model sink - additional filter nodes can be added in between the two
source, ..., sink = graph.sequential(samna.BasicSourceNode_dynapcnn_event_input_event(), ..., dev_kit.get_model().get_sink_node())

# Start the computational graph
graph.start()

# write events to the source node, it will stream events to the sink node automatically.
source.write([evt1, evt2, evt3, ...])

Please note

The removal of add_destination, remove_destination, and get_input_channel methods does not concern any type used by the visualizer. More specifically, SplittingNode and the ZMQReceiverNode remain unaffected by this change.

0.20.10#

  • Internal improvement.

0.20.9#

  • Internal improvement - visualizer now communicates directly with PythonNode instead of the SamnaNode

0.20.8#

  • Add an example for displaying Speck 2e DVS events

  • Add Speck 2e brief specification in the documentation

0.20.7#

  • Fix import error.

0.20.6#

  • Internal improvement.

0.20.5#

  • Internal improvement.

0.20.4#

  • Internal improvement.

0.20.3#

  • Fix power measurement on Speck 2e devkit.

  • Change vendor id of Speck 2e devkit to 0x337d.

0.20.2#

  • Add speck3 model

0.20.1#

  • Add same FPGA test suite functions to speck2eTestBoard.fpgaTestSuite:

    • encode_events: convert events to raw packets;

    • get_pulse_slow_clk_packet: get a pulse slow clock packet.

0.20.0#

  • Support Speck2eDevKIt

0.19.23#

  • Internal improvement.

0.19.22#

  • Internal improvement.

0.19.21#

  • Fix the bug that PacketDataView access out of bounds.

0.19.20#

  • Internal improvement.

0.19.19#

  • Add function configuration_to_flash_binary to speck2e.

0.19.18#

  • Fix wrong default value of RGBConfig in speck2e.

0.19.17#

  • Internal improvement.

0.19.16#

  • Internal improvement.

0.19.15#

  • Do not move around TAP states between unifirm packets.

0.19.14#

  • Add Speck2f model.

0.19.13#

  • Internal improvement.

0.19.12#

  • Internal improvement.

0.19.11#

  • Internal improvement.

0.19.10#

  • support monitoring the 4 readout pins of Speck 2e. SpeckConfiguration.readout has a new member called readout_pin_monitor_enable which enables the monitoring of the 4 readout pins. Once enabled and if SpeckConfiguration.readout.enable is also true, the ReadoutPinValue will be outputted if an interrupt happens. Default is False.

  • Fix the bug that the dual output mode of Speck 2e can’t be enabled

0.19.9#

  • Support spi-bridge mode for Speck2e.

0.19.8#

  • Remove libusb and use usbee.

0.19.7#

  • Internal improvement.

0.19.6#

  • Fix start up failure of new visualizer.

0.19.5#

  • Internal improvement.

0.19.4#

  • Internal improvement.

0.19.3#

  • Internal improvement.

0.19.2#

  • Internal improvement.

0.19.1#

  • Internal improvement.

0.19.0#

  • Introduce persistent cache for JIT filters. Code compiled with the JIT will be cached as object files in a hidden folder placed in the user’s home directory (~/.samna/jit_cache/PYTHON_VERSION-SAMNA_VERSION).

The cache can be flushed programmatically with the samna.jit.clear_jit_cache function:

samna.jit.clear_jit_cache()

0.18.16#

  • Add a check to the validation that Isyn2 can’t be monitored if synapse 2 is disabled.

0.18.15#

  • Internal improvement.

0.18.14#

  • Internal improvement.

0.18.13#

  • Fixed undefined behaviour when shifting bits past their integer widths.

0.18.12#

  • Fix the wrong type of dynapcnn input event type filter.

0.18.11#

  • Add CameraToSpeck2bInput to filters.

0.18.10#

  • Fix dvs plot flicker on speck2b.

0.18.9#

  • Fix a bug that append an unwanted bit when encode JTAG stream.

0.18.8#

  • Implement rgb input interface registers of speck2e/-t.

0.18.7#

  • Fix some wrong document and constants in Speck2e.

0.18.6#

  • Support sending frame data to dvp interface for Speck2e.

0.18.5#

  • Initial work for experimental event-based visualizer.

0.18.4#

  • Add DynapCNN-B model

0.18.3#

  • Internal improvement

0.18.2#

  • Internal improvement

0.18.1#

  • move samna.device.get_empty_devices to samna.flasher.get_empty_devices.

  • add a new function get_programmable_devices to samna.flasher to get all devices can be programed by program functions of samna.flasher.

  • add a new type flasher.DeviceInfo for all functions in samna.flasher to replace device.DeviceInfo.

0.18.0#

  • Reworked device controller to be aware of devices opened in other processes.
  • The ID in the string overload of open_device() is now optional. Without ID the first available device of the given type is opened.

  • daughter_board_num has been removed from samna.device.DeviceInfo

  • For more information refer to the documentation

  • Note that FX3 firmware v0.5.6 or higher is required to work with the device controller. If the device is not recognised as the correct type, but just a generic MotherBoardV0, the firmware has to be upgraded.

0.17.25#

  • move samna.graph.nodes.Dynapse1NeuronSelect_dynapse1_dynapse1_event to samna.dynapse1.nodes.Dynapse1NeuronSelect_dynapse1_dynapse1_event

  • move samna.graph.nodes.Dynapse1NeuronSelect_dynapse1_dynapse1_event to samna.dynapse1.nodes.Dynapse1NeuronSelect_dynapse1_dynapse1_event

0.17.24#

0.17.23#

  • Add fast output mode for speck v2e
    • Set factory_config.fast_output of speck2e.Configuration to True to enable. If enabled, at most one of these fields can be set to True:
      1. dvs_layer.raw_monitor_enable

      2. dvs_layer.monitor_enable

      3. cnn_layers[0].monitor_enable

      4. cnn_layers[1].monitor_enable

      5. cnn_layers[2].monitor_enable

      6. cnn_layers[3].monitor_enable

      7. cnn_layers[4].monitor_enable

      8. cnn_layers[5].monitor_enable

      9. cnn_layers[6].monitor_enable

      10. cnn_layers[7].monitor_enable

      11. cnn_layers[8].monitor_enable

0.17.22#

  • Impove JIT filters compilation time.

0.17.21#

  • Internal improvement for Speck 2e/2e-t

0.17.20#

0.17.19#

  • Internal improvement

0.17.17#

  • Improve accuracy of BackgroundNoiseRater.

0.17.16#

  • Allow kill pixels on Speck 2e-t

0.17.15#

  • Internal improvement for Speck 2e/2e-t readout monitor

0.17.14#

0.17.13#

  • Fix memory leak of Dynapse1.

0.17.12#

  • Add ClusterTrackerFilter to assign DVS events to clusters.
    • Only the Circular clustering algorithm is supported.

0.17.11#

  • Support JitEventCrop filter on speck2e.

0.17.10#

  • Support writing and reading daughter board info on mother board v1.

0.17.9#

  • Improve DVS performance of speck2e

  • Update configuration of speck2e

  • Add speck2e filters and fix error on init model of speck2e

  • update addresses of sram and readout register of speck2e

0.17.8#

  • Support discover mother board v1.0

0.17.7#

  • Internal improvement

0.17.6#

  • Internal improvement

0.17.5#

  • Internal improvement

0.17.4#

  • Internal improvement

0.17.3#

  • Add method to read/write DaughterBoardInfo and request the number of daughter boards.

0.17.2#

  • Internal improvement

0.17.1#

  • Internal improvement

0.17.0#

  • Support Speck 2e TestBoard

0.16.11#

  • Update Speck 2b dvs layer configuration, dvs_layer.monitor_enable controls the monitor of dvs pre-processing layer and dvs_layer.monitor_sensor_enable controls the monitor of raw dvs events from the sensor.

0.16.10#

  • Add unifirm module for speck2eTestBoard.

0.16.9#

  • Internal improvement


0.16.8#

  • Internal improvement

0.16.7#

  • Internal improvement

0.16.6#

  • Internal improvement

0.16.5#

  • Add method to request number of daughter board and daughter board info

0.16.4#

  • Fixed bug that prevented upgrading of samna from a version below 0.14.36

0.16.3#

  • Add DvsEventClusterFilterNode and DvsEventEfficientClusterFilterNode.

0.16.2#

  • Internal improvement

0.16.1#

  • For Speck 2d-mini only:

    • support monitoring the 4 readout pins of Speck 2d-mini.

    • SpeckConfiguration.readout has a new member called readout_pin_monitor_enable which enables the monitoring of the 4 readout pins. Once enabled, the ReadoutPinValue will be outputted. Default is False.

0.16.0#

  • Official support for Apple M1 wheels.

0.15.6#

  • Internal improvement for Apple M1 deployment.

0.15.5#

  • Add support for Apple M1.

0.15.4#

  • Internal improvement

0.15.3#

  • Internal improvement

0.15.2#

  • Improve samna’s wheel size on linux.

0.15.1#

  • Internal improvement

0.15.0#

  • Internal improvement

0.14.37#

  • Internal improvement

0.14.36#

  • Internal improvement

0.14.35#

  • Internal improvement

0.14.34#

  • Internal improvement

0.14.33#

  • Support new fx3 API.

0.14.32#

  • Internal improvement

0.14.31#

  • Fix Readout event decoding error in xyloa v2.

0.14.30#

  • Correct description of set_rescaling_coefficients of DvsEventRescale in doc.

0.14.29#

  • Improve safety when writing from multiple threads.

0.14.28#

  • For Speck 2b-mini/2c-mini/2d-mini only:

    • Improve DVS performance

    • Optimize configuration

      • SpeckConfiguration.readout has a new member called enable (default False) which enables the readout block of the chip. An external slow clk must be provided on SLOW_CLK pin if SpeckConfiguration.readout.internal_slow_clk is False.

      • SpeckConfiguration.readout has a new member called internal_slow_clk (default False) which removes the need for external slow clk if SpeckConfiguration.readout.enable is True.

      • SpeckConfiguration.readout has a new member callled monitor_enable (default False) which lets the chip output ReadoutValue if True. However, if set to True, you can’t monitor DvsEvent and Spike anymore.

      • SpeckConfiguration.cnn_layers has a new member called leak_internal_slow_clk_enable (default False), which removes the need for external slow clk if leak_enable is True.

      • filter_bypass of SpeckConfiguration.dvs_filter is replaced by enable (default False) for easier understanding. If True then the filter is enabled, but an external slow clk must be provided on SLOW_CLK pin if internal_slow_clk is False.

      • SpeckConfiguration.dvs_filter has a new member called internal_slow_clk (default False) which removes the need for external slow clk if SpeckConfiguration.dvs_filter.enable is True.

      • The Spike and DvsEvent monitoring is enabled by default now.

0.14.27#

  • Internal improvement

0.14.26#

  • Fix the bug that the apply_configuration` of Speck 2b-mini/2c-mini/2d-mini would hang forever if the network is too large.

0.14.25#

  • Fix the neuron values memory mapping for layer 0 of Speck 2b

0.14.24#

  • Do not override the configuration by default if the Speck 2b-mini/2c-mini/2d-mini boots from an external flash.

0.14.23#

  • Allow open DYNAP-SE2 Stack and DYNAP-SE2 DevBoard by open_device.

0.14.22#

  • Add spi test board.

0.14.21#

  • Add reset function to device models.

0.14.20#

  • Add SpikeCountNode and SpikeCollectionNode to speck mini series.

0.14.19#

  • open_device function now returns the previously opened device on subsequent calls.

  • Removed get_open_device_by_info function. Use open_device instead.

0.14.18#

  • Add documentation of xyloa v2.

0.14.17#

  • Internal improvement

0.14.16#

  • Internal improvement

0.14.15#

  • Add source node to ATIS module.

  • Change ATIS event to contain the raw data.

0.14.14#

  • Internal improvement

0.14.13#

  • Add documentation for DYNAP-SE1

0.14.12#

  • Allow using the get_model_sink_node in graph sequential method.

0.14.11#

  • Update default configuration for AFE2. Note:

    • The configuration option for enabling individual channels of the Xylo-A v2 AFE has been removed. All AFE channels will be enabled when the AFE is configured.

0.14.10#

  • Fix the bug that fail to erase sectors on some flash


0.14.9#

  • Internal improvement

0.14.8#

  • Fix calculation of number of bits for scan chain of speck 2b-mini/2c-mini/2d-mini

0.14.7#

  • Internal improvement

0.14.6#

  • Sort out the startup code for xyloa2.

0.14.5#

  • Internal improvement

0.14.4#

  • Fix encoding of configuration event of the internal test chip

0.14.3#

  • Internal improvement

0.14.2#

  • Internal improvement

0.14.1#

  • Internal improvement

0.14.0#

  • Add support to an internal test chip

0.13.15#

  • Add background noise rater for Speck 2c-mini and Speck 2d-mini

0.13.14#

  • Add xylo a2 testboard.

0.13.13#

  • Internal improvement.

0.13.12#

  • Add support for Speck2bReadout module

0.13.11#

  • Add afe2 unifirm module.

0.13.10#

  • Internal improvement.

0.13.9#

  • Add afe2 model.

0.13.8#

  • Internal improvement.

0.13.7#

  • Internal improvement.

0.13.6#

  • Add demo script to documentation

0.13.5#

  • Rename xyloAudio2 to xyloA2.

0.13.4#

  • Adjust the examples in documentation to the newest samna.

0.13.3#

  • Allow assignment of CnnLayerConfig to cnn layers in speck2b configuration.

0.13.2#

  • Internal improvement.

0.13.1#

  • Improve internal test structure.

0.13.0#

  • Add speck 2d-mini test board

0.12.5#

  • Internal improvement.

0.12.4#

  • Improve internal testing structure.

0.12.3#

  • Add HotPixelFilter and BackgroundActivityFilter.

0.12.2#

  • Allow device controller to return opened device handle by its device information.

0.12.1#

  • Add documentation for jit filters.

0.12.0#

  • Add support for user defined C++ filters and classes to specialize samna’s builtin filters.

0.11.11#

  • Add xylo core2 unifirm module.

0.11.10#

  • Make filter input and output collections constant to prevent unintended modification.

0.11.9#

  • Extend support of jit classes to single template classes and normal classes.

0.11.8#

  • Mark model tests as flaky, so they are repeated until they pass.

0.11.7#

  • Add default input type for flasher api: print_firmware_header_from_file.

0.11.6#

  • Rename SourceWrapper to JitSource and SinkWrapper to JitSink.

0.11.5#

  • Export PSEE plugins inside the wheel.

0.11.4#

  • Add support for UartCtrl unifirm module

0.11.3#

  • Add xylo core2 model.

0.11.2#

  • Fix race condition in unit tests

0.11.1#

  • Move the UI related components into the ui namespace

0.11.0#

  • Changed the return type of the graph’s sequential method from the list of node ids to a list of node handles.

  • The graph’s low level construction functions now operate with node handles instead of node ids.

0.10.34#

  • Fix the binary data generation from the Speck 2c-mini configuration.

0.10.33#

  • Improve internal dependencies structure.

0.10.32#

  • Improve printing format.

0.10.31#

  • Let device controller stores devices locally instead of using the store.

0.10.30#

  • Update for Speck V2c Mini:

    • Support connecting a CNN layer to the readout blocking

    • Support the hot pixel filtering feature

    • Support convert configuration object to a binary file

    • Update documentation

0.10.29#

  • Add example script to test power measurement.

0.10.28#

  • Clean up speck2.

0.10.27#

  • Fix a bug to display dvs.

0.10.26#

  • Add asynchronous API for usb devices.

0.10.25#

  • Add documentation for Speck 2c mini.

0.10.24#

  • Update the documentation structure for Speck and Dynap-CNN series.

0.10.23#

  • Refactor the power measurement interface.

0.10.22#

  • Erase an internal test.

0.10.21#

  • Make new samna compatible with old firmware.

0.10.20#

  • init_samna can be called multiple times, subsequent calls will not overwrite the previous values.

0.10.19#

  • Discover devkits and test boards by device name.

0.10.18#

  • Add a blocking dequeue method for PacketQueue.

0.10.17#

  • Update for Speck V2c Mini:

    • Add events for readout settings

    • Rename decodeMonitorBusEvents to decodeOutputSerialInterfaceEvents, and add the third argument for enabling readout decoding.

    • Add setReadoutDecodingEnable to the ioModule, it should be used if we want to get readout events via async input interface.

    • Add resetBoardHard to the board class.

    • The resetBoardHard and resetModel can accept a boolean to set if boot from pc.

0.10.16#

  • MemberSelectNode member can accept snake_case name.

0.10.15#

  • Fix integration tests.

0.10.14#

  • Add support for runtime sources and sinks.

  • In graph sequential function with the source and sink wrappers.

  • Standalone with the source_to and sink_from functions.

0.10.13#

  • Refactor implementation of graph sequential function.

0.10.12#

  • List all basic packages that samna relies on.

  • Standardize the example code, make it run directly with a board.

  • Link samna documentation url in the pypi page.

  • Add note for USB-C cables must be USB 3.0 capable

  • Explain more details about device name.

  • Upgrade samna in examples.

0.10.11#

  • Improve stability of graph sequential function.

0.10.10#

  • Fix distribution versioning.

0.10.9#

  • Add support for native python samna components.

0.10.8#

  • Offer default value for autoYes input in flasher functions.

0.10.7#

  • Add support for Prophesee cameras.

  • Allow opening these devices through the DeviceController.

0.10.6#

  • Performance improvement

0.10.5#

  • Deprecate BufferSinkNode in favour of BasicSinkNode

0.10.4#

  • Add Change log to documentation

0.10.3#

  • Update filter documentation

    • Change some descriptions of filters

    • Add more filters into the documentation

0.10.2#

  • Performance improvement

0.10.1#

  • Fix a bug that the CustomReadout node may gets stuck

0.10.0#

  • Support Speck2c Mini TestBoard

0.9.39#

  • Improve timestamper API, now the timestamper is controllered by setTimestamperEnable() of the board object.

0.9.38#

  • Support XyloDevKit

0.9.37#

  • Allow set timeout to samna.init_samna()

0.9.36#

  • rename AfeModel::disableSaerInterface to AfeModel::setSaerInterfaceEnable

0.9.35#

  • Add documentation for flasher

0.9.34#

  • Refactor XyloTestBoard and XyloAudioTestBoard

    • Rename XyloTestboard to XyloTestBoard

    • Rename XyloAudioTestboard to XyloAudioTestBoard

    • Add methods to configure clock rate

    • Add method to do hard reset of board

    • Add method to disable the saer interface of AFE model

0.9.33#

  • Upgrade svejs to 0.2.11

0.9.32#

  • Boot FPGA automatically after flash FPGA firmware to flash.

  • Allow set autoYes argument to suppress the confirmations when flash firmware.

  • Remove useless message when flash an empty board.

  • Include configuration ID when print header.

0.9.31#

  • Allow read/write a single SRAM address on Speck2b Mini test board.

  • Add method to decode Speck2b Mini test board async interface input event.

  • Add method to decode Speck2b Mini test board monitor bus output event.

  • Support power measurement on Speck2b Mini test board.

  • Add method to reset the Speck2b Mini chip on its test board chip.

  • Add method to configure the Speck2b Mini test board’s CLKs.

  • Set Speck2b Mini DVS default max originate to 63.

  • Add function to compute Speck2b Mini SRAM address from an event.

0.9.30#

  • Add method to reset the whole board for DynapcnnDevKit, Speck2bDevKit, Speck2bDevKitTiny, Speck2bTestboard.

0.9.29#

  • Add documentation for Speck2b series boards.

0.9.28#

  • Support set reject type in EventTypeFilter.

0.9.27#

  • Update documentation for visualizer: samnagui needs to be imported after samna.

0.9.26#

  • Support send raw input events to Speck2bTestboard

0.9.25#

  • Rename pollen to xylo

0.9.24#

  • Support pip install driectly from pypi. Now samna can be installed with pip install samna.

0.9.23#

  • Minor bug fix.

0.9.22#

  • Update documentation about visualizer. Open visualizer in another shell.

0.9.21#

  • Minor bug fix.

0.9.20#

  • Fix image error in documentation

0.9.19#

  • Add documentation for visualizer.

0.9.18#

  • Fix JIT on Python 3.10

0.9.17#

  • Accept JIT filter node in the sequential construction of event filter graph

0.9.16#

  • Minor bug fix.

0.9.15#

  • Add basic description to DynapcnnDevKit in documentation

  • Add an example about connect DVS to DynapcnnDevKit and display the DVS events

  • Add an example about gesture recognition demo on DynapcnnDevKit

  • Add an example about sending recorded data to DynapcnnDevKit

  • Update filters in documentation

  • Update Dynapcnn and DynapcnnDevKit API reference

0.9.14#

  • Minor bug fix

0.9.13#

  • Bug fix for Speck2b Mini test board

0.9.12#

  • Bug fix for CustomFilterNode

0.9.11#

  • Bug fix for afe model

0.9.10#

  • Minor bug fix

0.9.9#

  • Support JTAG interface on Speck2b Mini

0.9.8#

  • Fix a bug that the program stutters when logging too frequently

0.9.7#

  • Publish JIT node

0.9.6#

  • Fix a bug in logging

0.9.5#

  • Remove the output of unused message on xylo

0.9.4#

  • Minor bug fix

0.9.3#

  • Performance improvement

0.9.2#

  • Allow MemberSelect filter to copmare not only arithmatic types

0.9.1#

  • The first release of JIT filter

0.9.0#

  • Support Speck2b Mini test board

0.8.54#

  • Bug fix in add_filer_node

0.8.53#

  • Add sequential method to replace add_filer_node

0.8.52#

  • Fix Samna on Python 3.5 on Mac

0.8.51#

  • Add speck2b Mini model

0.8.50#

  • Performance improvement

0.8.49#

  • Performance improvement

0.8.48#

  • Performance improvement

0.8.47#

  • Performance improvement

0.8.46#

  • Fix a bug that the Samna raise an error when the program exit

0.8.45#

  • Fix a bug that the get_events() method of a buffer sink node hangs

0.8.44#

  • Minor bug fix

0.8.43#

  • Performance improvement

0.8.42#

  • Fix a bug that the Speck2b input interface stucks if sending too much events

0.8.41#

  • Performance improvement

0.8.40#

  • Performance improvement

0.8.39#

  • Add documentation for Device Controller

0.8.38#

  • Fix a bug that the open_device throws an exception

0.8.37#

  • Refactor Device Controller:

    • Remove OpenedDevice struct

    • get_opened_devices() return a list of pairs of the name of an opened device and its DeviceInfo

    • Allow invoke open_device() in the format of DeviceType:ID and returns the device name if success or None if fails

0.8.36#

  • Add support for Speck2b DevKit Tiny

0.8.35#

  • Add support for Speck2b DevKit

0.8.34#

  • Performance improvement

0.8.33#

  • Fix a bug that the program hangs if the board disconnect before closing its

0.8.32#

  • Fix a bug that on some machine there is no image in visualizer

0.8.31#

  • Add color in logging messages

0.8.30#

  • Remove verbose messages from DynapSE 2

0.8.29#

  • Add logging

0.8.28#

  • init_samna() return a reference to the internal samna node

0.8.27#

  • Make all filter name in camelCase

0.8.26#

  • Performance improvement

0.8.25#

  • Add get_configuration() to Afe, Dynapcnn, DVS128, Speck2b

0.8.24#

  • First release of documentation

0.8.23#

  • Support install Samna from pypi

0.8.22#

  • Add a filter node to calculate neuron traces for DynapSE 1

0.8.21#

  • Performance improvement

0.8.20#

  • Performance improvement

0.8.19#

  • Support writing waveform data to XyloAudioTestBoard

0.8.18#

  • Performance improvement

0.8.17#

  • Fix a bug in the dvs crop setting of Dynapcnn and Speck2b