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¶
pass dec.Instructions: duration=0 in new-style decomposition rules 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
passes and architectures self-register statically to their respective factories
Removed¶
CC backend:
support for JSON key “pragma/break” for instruction definitions
macro expansion for JSON key instruction/signal/value (unused anyway)
support for sweep points in API and the WriteSweepPointsPass
Fixed¶
pass dec.Instructions
corrected ordering of instruction decomposition (which reversed multi-statement decompositions)
decomposed instructions were silently made unconditional, we now copy instruction condition to decomposed instructions
[ 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 ] - [ 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