Skip to content

Latest commit

 

History

History
318 lines (229 loc) · 10.6 KB

CHANGELOG.md

File metadata and controls

318 lines (229 loc) · 10.6 KB

Changelog

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.

[ next ] - [ TBD ]

Added

  • CC backend:
    • support for cQASM 1.2 features through new IR
      • limitations
        • integer values must be non-negative
    • support for resource constrained scheduler
    • creates .map file reporting measurement statements present in input, to allow retrieving measurements downstream

Changed

  • new-style decomposition rules: duration=0 now disables checking whether expansion fits, allowing automatic calculation of duration (and requiring scheduling after decomposition of such rules)
  • CC backend:
    • now uses new IR
    • no longer requires key "cc" to be present in instructions that define gate decompositions
    • key "readout_mode" no longer used
      • classification of gates as measurement - which is used for the resource constrained scheduler, and to output a map of measurements - now based on signal definition ("signal/type" equals "measure" and "signal/value" non-empty)
      • classification of gates as real-time measurement now based on signal definition ("signal/type" equals "measure" and "signal/value" empty)
    • absence of key "cc" now implies empty "signal", so "cc": { "signal": [] } is no longer necessary

Removed

  • CC backend:
    • support for JSON key "pragma/break" for instruction definitions
    • macro expansion for JSON key instruction/signal/value (unused anyway)

Fixed

  • pass dec.Instructions: corrected ordering of instruction decomposition (which reversed multi-statement decompositions)

[ 0.10.0 ] - [ 2021-07-15 ]

Added

  • scalability options for coping with large multi-core systems, including a progress bar for the mapping process
  • initial implementation of the Diamond architecture developed for Fujitsu (lead by Stephan Wong)
  • full cQASM 1.2 read and write support, with options for different version levels and various language quirks
  • new internal representation that encompasses the entire cQASM 1.2 language, and has many new generalized platform features
  • lossless conversion functions between the two IR representations until all passes have been converted to the new representation
  • new pass-based decomposition logic that supports arbitrary cQASM 1.2 code for the expansion and doesn't clobber scheduling information
  • new pass for converting structured cQASM 1.2 control flow to basic block form
  • new list scheduler based on the new IR

Changed

  • all written cQASM files are now in 1.2 format by default
  • the cQASM reader no longer has a JSON configuration file for mapping cQASM gates to OpenQL gates; this translation is now part of OpenQL's platform data
  • the old scheduler is replaced with a new implementation for most option variations, that outputs slightly different schedules
  • statistics report output is also formatted slightly different, though information content is the same
  • CC backend:
    • scheduling is now done using resource constraints by default

Fixed

  • excessive memory usage and slow platform construction for large multi-core systems

[ 0.9.0 ] - [ 2021-05-27 ]

Added

  • architecture system: platform and compilation strategy defaults are now built into OpenQL, preventing the need for users to copypaste configuration files from the tests directory
  • interface (C++ and Python) to compile cQASM 1.x
  • allow 'wait' and 'barrier' in JSON section 'gate_decomposition'
  • CC backend:
    • improved reporting on JSON semantic errors
    • added check for dimension of "instruments/qubits" against "instruments/ref_control_mode/control_bits"
    • added check for dimension of "instructions//cc/[signals,ref_signal]/value" against "instruments/ref_control_mode/control_bits"
    • added cross check of "instruments/ref_control_mode" against "instrument_definitions"
    • added support for "pragma/break" in JSON definition to define 'gate' that breaks out of loop
    • added support to distribute measurement results via DSM
    • added support for conditional gates
    • added compile option "--backend_cc_run_once"
    • added compile option "--backend_cc_verbose"

Changed

  • pass management: instead of a hardcoded compilation strategy, the strategy can be adjusted and fine-tuned manually
  • pass options: instead of doing everything with global options, global options were replaced with pass options as much as possible
  • most documentation is now generated from code and can be queried using API calls
  • scheduler resources are completely reworked to be made more generic
  • major internal refactoring and restructuring to facilitate the above two things
  • CC backend:
    • renamed JSON field "signal_ref" to "ref_signal"
    • renamed JSON field "ref_signals_type" to "signal_type"
    • changed JSON field "static_codeword_override" to be a vector with one element per qubit parameter. To edit a JSON file using Sublime, use Replace with Regular Expressions: find="static_codeword_override": ([0-9])+, replace="static_codeword_override": [\1]
    • adopted new module synchronization scheme ("seq_bar semantics", requires CC software >= v0.2.0, PycQED after commit 470df5b)
    • JSON field "instruction/type" no longer used by backend, use "instruction/cc/readout_mode" to flag measurement instructions
    • allow specification of 2 triggers in JSON field "control_modes/*/trigger_bits" to support dual-QWG
    • changed label in generated code from "mainLoop" to "mainLoop". Do not start kernel names with "" (this should be specified by the API)
    • removed initial 1 cycle (20 ns) delay at start of kernels (resulting from bundle start_cycle starting at 1)
    • correctly handle kernel names containing "_" in conjunction with looping (formerly duplicate labels could arise)
    • added "seq_out 0,1" to program start to allow tracing of actual program start

Removed

  • CC-light code generation, as the CC-light is being phased out in the lab, and its many passes were obstacles for pass management and refactoring
  • rotation optimization based on matrices; matrices in general were removed entirely because no one was using it
  • the commute variation pass, as it has been superseded by in-place commutations within the scheduler
  • the toffoli decomposition pass, as it wasn't really used; to decompose a toffoli gate, use generic platform-driven decomposition instead
  • the defunct fidelity estimation logic from metrics.cc; this may be added again later, but requires lots of cleanup and isn't currently in use
  • quantumsim and qsoverlay output; apparently this was no longer being used, and it was quite intertwined with the CC-light backend

Fixed

  • changed register used for FOR loop, so it doesn't clash with delay setting
  • fixed documentation for python setup and running tests
  • various miscellaneous bugs, dangling pointers, and memory leaks

[ 0.8.0 ] - [ 2019-10-31 ]

Added

  • support for CC backend

Changed

Removed

Fixed

  • fixed issue with duplicate kernel names
  • updated json library to fix osx builds

[ 0.7.1 ] - [ 2019-09-02 ]

Added

Changed

  • re-factored folders

Removed

Fixed

  • fixed issue with correct python library picking on tud win systems

[ 0.7.0 ] - [ 2019-06-03 ]

Added

  • support for single qubit flux options (auto/manual modes)
  • option to control generation of qasm files and dot graphs
  • NPROCS=n variable can now be set for faster compilation to use n threads
  • conda build recipe
  • conda binary releases for Linux, Windows platform (not yet available for OSX due to a conda distribution issue)

Changed

  • openql is now public
  • improved resource-constrained scheduling
  • sweep point array is now optional
  • support for barrier/wait on all qubits

Removed

  • set_sweep_points(sweep_points list, num of sweep points)

Fixed

  • resource-constrained qasm is generated by same scheduler for cc-light as is used to generate qisa
  • Illegal parameter in gate_decomposition

[ 0.6 ] - [ 2018-10-29 ]

Added

  • generated qasm code conforms to cQASM v1.0 specification
  • added libqasm to pytest to test conformance of generated qasm

Changed

  • ALAP scheduler is the default option (Issue #193)
  • compiling an empty program raises error (Issue #164)

Removed

Fixed

  • tests are added to test option setting/getting (Issue #190)

[ 0.5.5 ] - [ 2018-10-25 ]

Added

Changed

  • simplified interface of Program.set_sweep_points (Issue #184)

Removed

Fixed

  • instruction ordering to generate consistent qisa (Issue #190)
  • stateful behaviour in OpenQL (Issue #171)

[ 0.5.4 ] - [ 2018-10-17 ]

Added

Changed

Removed

Fixed

  • qubit ordering in SMIS and SMIT instructions

[ 0.5.3 ] - [ 2018-10-11 ]

Added

  • added detuning constraints for cclight

Changed

Removed

Fixed

  • alap scheduling for cclight

[ 0.5.2 ] - [ 2018-10-10 ]

Added

Changed

Removed

Fixed

  • wrong target qubits in the configuration files
  • Jenkins test build profile to test against assembler

[ 0.5.1 ] - [ 2018-09-12 ]

Added

  • API to obtain version number

Changed

Removed

Fixed

  • qisa format (removed comma)

[ 0.5 ] - [ 2018-06-26 ]

Added

  • support for classical instructions
  • support for flow control (selection and repetition)
  • classical register manager implementation

Changed

  • measure instruction updated to support classical target register
  • kernels are not any more fused to generate a single qisa program

Removed

  • kernel does not recieve iteration count, deprecated in favor of for-loop

Fixed

  • qisa format (pre-interval syntax updated)

[ 0.4.1 ] - [ 2018-05-31 ]

Added

Changed

Removed

Fixed

  • getting started example

[ 0.4 ] - [ 2018-05-19 ]

Added

  • kernel conjugation/un-compute feature
  • multi-qubit control decomposition
  • toffoli decomposition
  • QASM loader for QASM v1.0 syntax check
  • initial support for Quantumsim backend
  • vebosity levels

Changed

  • program options can be set/get with simple api calls
  • when adding gates, qubits should always be specified as list
  • updated qisa-as support for tests

Removed

  • qisa-as is not a part of openql
  • prog.compile() does not get optimiz/schedule/verbose options

Fixed

  • static iteration count for scheduled qasm
  • roation angle printing

[ 0.3 ] - [ 2017-10-24 ]

Added

  • CCLight eQASM compiler
  • unittests using qisa-as
  • simplified gate decompositions
  • wait/barrier instructions

Changed

Removed

Fixed

  • varying prepz duration
  • M_PI issue in windows install

[ 0.2 ] - [ 2017-08-18 ]

Added

  • CBox eQASM compiler
  • Python and C++ interface
  • Configuration file specifiction
  • trace support for qumis code
  • cmake based builds

Changed

Removed

Fixed