Git Product home page Git Product logo

artiq's People

Contributors

airwoodix avatar astro avatar charlesbaynham avatar cjbe avatar deepskyhunter avatar dhslichter avatar dnadlinger avatar drewrisinger avatar enjoy-digital avatar fallen avatar fsagbuya avatar harrymakes avatar hartytp avatar jordens avatar kk1050 avatar linuswck avatar lriesebos avatar mbirtwell avatar mntng avatar nkrackow avatar occheung avatar pathfinder49 avatar pca006132 avatar sbourdeauducq avatar simonrenblad avatar spaqin avatar squiddev avatar stevefan1999 avatar thomasfire avatar whitequark avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

artiq's Issues

influxdb_bridge: filtering

master...fallen:influxdb_bridge

The full change rate of the parameter db will be more than we want to archive. We could simply use a few entries to control it. A list of regexps or globs history_filter to limit the logging by parameter name (probably something like the gitignore style precedence rules and syntax) and a history_rate rate limiter.

Also, the schema (ha!) should be changed a little looking at influxdb 0.9: series name should be "lab-name.parameter" (e.g. "rfjunction2.parameter") and then using tags for the parameter name and the only column should be "value". And afaict things like arrays might break the current implementation as json will not immediately be able to serialize them.

Finally, could the influxdb_bridge be just a concurrently running experiment in its own queue or does that break?

more_compiler_bugs.py

This was marked for compiler optimization.

from artiq import *


class LED(Experiment, AutoDB):
    class DBKeys:
        core = Device()

    @kernel
    def run(self):
        L = 10000
        buf = [int64(0) for _ in range(L)]
        count = 0
        for i in range(L):
            if buf[i] > 0:
                count += 1
        print(count)

Fix RPC race condition

There is some race condition that intermittently causes a complete freeze of the comms CPU when doing lots of RPC over TCP. The rpc_timing.py benchmark is good at causing the problem. Things work fine with serial.

Fix this bug properly and revert commit 37ac6c4.

Make Qt + asyncio + UDP work on Windows

The GUI needs UDP to talk to the core device in the TTL and DDS panels. On Windows, the quamash event loop is based on ProactorEventLoop which does not support UDP.

compiler optimization

from artiq import *

class PulseNotReceived(Exception):
    pass


class LED(Experiment, AutoDB):
    class DBKeys:
        core = Device()
        ttl0 = Device()
        pmt1 = Device() 

    @kernel
    def run1(self):
        # usual Artiq syntax
        # This takes 55 us to generate ttl0 rising edge 
        self.pmt1.gate_rising(3*ms)
        t0 = self.pmt1.timestamp()
        #if t0 < 0*s:
        #   raise PulseNotReceived
        at(t0)
        delay(55*us)
        self.ttl0.pulse(10*ms)
    @kernel
    def run2(self):
        # bypass compiler and optimize away all rational math 
        # This takes 2.1 us to generate ttl0 rising edge 
        self.pmt1.gate_rising(3*ms)
        syscall('ttl_set_o', syscall('ttl_get', 1, now) + time_to_cycles(2100*ns), 2, True)

    def run(self):
        self.run1()
        #self.run2()

develop generic pattern to compensate for delays/latencies

The reference plane for "time" is defined to be the rtio-clock side of the FIFOs, where the rtio counter lives. Latency compensation for delays happening from this plane to any other point in the downstream signal path (DDS DAC output, DDS amplifiers, TTL driver output, cable ends, shutter delays) should be done in software and be configurable in the ddb.

We need an example how to do configurable delay compensation for TTL (rising and falling edges independently), DDS, and DAC outputs. Latencies will be in the ns-µs range but the required compensation may be negative. The case of a TTL-shutter with several ms latency might be a bit tricky because of the required headroom of the rtio counter w.r.t. now but also educationally interesting in demonstating "how to alter the past".

(c.f. #36 for a DDS latency contribution)

Add context info to RTIOUnderflow exceptions

To be able to debug and solve RTIOUnderflows, we should add a few easily reachable pieces of information to the exception:

  • rtio channel number
  • now()
  • the amount of the time violation.

Metadata in exceptions would be required for this. Full debugging information (AST nodes to ELF debugging symbols) is for later.

misoc: raise OSError("BIOS build failed")

I encounter an error running $ make.py -X ~/artiq-dev/artiq/soc -t artiq all following the instructions here
https://github.com/m-labs/artiq/blob/master/doc/manual/installing.rst

rabi@vboxartiq:~/artiq-dev/misoc$ sudo python3 make.py -X ~/artiq-dev/artiq/soc -t artiq all
[sudo] password for rabi: 
                __  ___  _   ____     _____
               /  |/  / (_) / __/__  / ___/
              / /|_/ / / / _\ \/ _ \/ /__
             /_/  /_/ /_/ /___/\___/\___/

a high performance and small footprint SoC based on Migen

====== Building for: ======
Platform:  papilio_pro
Target:    artiq
Subtarget: ARTIQMiniSoC
CPU type:  or1k
===========================
make: Entering directory `/home/rabi/artiq-dev/misoc/software/libcompiler-rt'
rm -f divsi3.o modsi3.o comparedf2.o negsf2.o negdf2.o addsf3.o subsf3.o mulsf3.o divsf3.o lshrdi3.o muldi3.o divdi3.o ashldi3.o ashrdi3.o udivmoddi4.o floatsisf.o floatunsisf.o fixsfsi.o fixunssfsi.o adddf3.o subdf3.o muldf3.o divdf3.o floatsidf.o floatunsidf.o floatdidf.o fixdfsi.o fixunsdfsi.o clzsi2.o ctzsi2.o udivdi3.o umoddi3.o moddi3.o divsi3.ts modsi3.ts comparedf2.ts negsf2.ts negdf2.ts addsf3.ts subsf3.ts mulsf3.ts divsf3.ts lshrdi3.ts muldi3.ts divdi3.ts ashldi3.ts ashrdi3.ts udivmoddi4.ts floatsisf.ts floatunsisf.ts fixsfsi.ts fixunssfsi.ts adddf3.ts subdf3.ts muldf3.ts divdf3.ts floatsidf.ts floatunsidf.ts floatdidf.ts fixdfsi.ts fixunsdfsi.ts clzsi2.ts ctzsi2.ts udivdi3.ts umoddi3.ts moddi3.ts divsi3.d modsi3.d comparedf2.d negsf2.d negdf2.d addsf3.d subsf3.d mulsf3.d divsf3.d lshrdi3.d muldi3.d divdi3.d ashldi3.d ashrdi3.d udivmoddi4.d floatsisf.d floatunsisf.d fixsfsi.d fixunssfsi.d adddf3.d subdf3.d muldf3.d divdf3.d floatsidf.d floatunsidf.d floatdidf.d fixdfsi.d fixunsdfsi.d clzsi2.d ctzsi2.d udivdi3.d umoddi3.d moddi3.d libcompiler-rt.a .*~ *~
make: Leaving directory `/home/rabi/artiq-dev/misoc/software/libcompiler-rt'
make: Entering directory `/home/rabi/artiq-dev/misoc/software/libbase'
rm -f exception.o libc.o errno.o crc16.o crc32.o console.o system.o id.o uart.o time.o qsort.o strtod.o exception.d libc.d errno.d crc16.d crc32.d console.d system.d id.d uart.d time.d qsort.d strtod.d crt0-or1k.o vsnprintf.o vsnprintf.d vsnprintf-nofloat.o vsnprintf-nofloat.d
rm -f libbase.a libbase-nofloat.a .*~ *~
make: Leaving directory `/home/rabi/artiq-dev/misoc/software/libbase'
make: Entering directory `/home/rabi/artiq-dev/misoc/software/libnet'
rm -f microudp.o tftp.o microudp.ts tftp.ts microudp.d tftp.d libnet.a .*~ *~
make: Leaving directory `/home/rabi/artiq-dev/misoc/software/libnet'
make: Entering directory `/home/rabi/artiq-dev/misoc/software/bios'
rm -f isr.o sdram.o main.o boot-helper-or1k.o boot.o dataflow.o isr.d sdram.d main.d boot-helper-or1k.d boot.d dataflow.d bios.elf bios.bin .*~ *~
make: Leaving directory `/home/rabi/artiq-dev/misoc/software/bios'
make: Entering directory `/home/rabi/artiq-dev/misoc/software/bios'
 CC  isr.o
 CC  sdram.o
 CC  main.o
 CC  boot-helper-or1k.o
 CC  boot.o
 CC  dataflow.o
make -C ../../software/libcompiler-rt
make[1]: Entering directory `/home/rabi/artiq-dev/misoc/software/libcompiler-rt'
make[1]: *** No rule to make target `divsi3.o', needed by `libcompiler-rt.a'.  Stop.
make[1]: Leaving directory `/home/rabi/artiq-dev/misoc/software/libcompiler-rt'
make: *** [libs] Error 2
make: Leaving directory `/home/rabi/artiq-dev/misoc/software/bios'
Traceback (most recent call last):
  File "make.py", line 169, in <module>
    raise OSError("BIOS build failed")
OSError: BIOS build failed

The layout of artiq-dev on my machine is the following.

rabi@vboxartiq:~/artiq-dev$ ls 
artiq       compiler-rt  migen  nist_secureconfigscript  xc3sprog
bitstreams  Drivers      misoc  openrisc

master/gui: logging messages

One dock within the GUI will be showing logging messages from the scheduler, the workers, the experiments, the controllers, the core device. Probably, the master will act as a hub rceiving aggregating messages and then save them to files and re-emit them to the GUI. The GUI can then filter on severity, source, or other metadata within the LogRecord (like experiment name). We need to decide whether python-logging fits the requirements (metadata with LogRecords, networking, interaction with asyncio, lazy formatting) or whether we need to roll our own.

rename llvmlite-or1k package name from llvmlite to llvmlite_or1k

14:42 < rjo> ysionneau: good that you added the -or1k suffix to the llvmlite package.
14:43 < rjo> ysionneau: but: it would be really great if we could also install that under that name
(llvmlite_or1k) in the package tree
14:43 < rjo> because then you can actually install your regular native llvmlite in parallel with the
one linked against the or1k-llvm
14:45 < rjo> afaict there would just be a bunch of s/llvmlite/llvmlite_or1k/ in the artiq source.
14:45 < rjo> the native llvmlite is used by numba, which i tend to use.
14:46 < ysionneau> ah ok
14:46 < rjo> ok if i file an issue for this to keep track?
14:46 < ysionneau> yes sure
14:46 < ysionneau> but I'm not sure I understand exactly how to do that
14:46 < ysionneau> in $HOME/miniconda3/pkgs the name of the package is already -or1k
14:47 < rjo> yes. but in the install tree.
14:47 < ysionneau> ah in pkgs/llvmlite-or1k-0.2.1-py34_0/lib/python3.4/site-packages
14:47 < ysionneau> ok
14:47 < ysionneau> I guess it's a setup.py option?
14:47 < ysionneau> to change the package name
14:47 < rjo> less an option. more a field.
14:47 < rjo> exactly.
14:48 < rjo> would need to patch that.

nosetests3 test/py2llvm.py

rabi@vboxartiq:~/artiq-dev/artiq$ nosetests3 test/py2llvm.py

Looks like this is a bug.

ERROR: py2llvm.test_base_types

Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/nose/case.py", line 198, in runTest
self.test(*self.arg)
TypeError: test_base_types() missing 1 required positional argument: 'choice'


Ran 23 tests in 81.667s

FAILED (errors=1)

Use PPP to connect to core device in serial mode

Compared to the current solution, PPP adds robustness, error detection/correction and support for multiplexing monitoring/injection data, with maximum code reuse.

PPP should already be supported by lwip.

(This is low priority)

AD9858 PHASE_MODE_CONTINUOUS broken

On 6/19 PHASE_MODE_CONTINUOUS was working but PHASE_MODE_TRACKING was broken.
On 6/20 PHASE_MODE_TRACKING was fixed but PHASE_MODE_CONTINUOUS was not retested.
On 6/21 PHASE_MODE_TRACKING works but PHASE_MODE_CONTINUOUS is broken.

ddd

class TestDDSPhase(Experiment, AutoDB):
    class DBKeys:
        core = Device()
        dds_bus = Device()
        dds0 = Device()
        dds1 = Device()
        ttl0 = Device()
        ttl1 = Device()

    @kernel
    def run(self):
        self.dds0.set_phase_mode(PHASE_MODE_CONTINUOUS)
        self.dds1.set_phase_mode(PHASE_MODE_CONTINUOUS)
        for i in range(10):
            # force DDSs to be phase synchronized at outset of experiment
            # this is a temporary override of the default phase mode
            with self.dds_bus.batch:
                self.dds0.set(3*MHz, phase_mode=PHASE_MODE_ABSOLUTE, phase_offset=0)
                self.dds1.set(3*MHz, phase_mode=PHASE_MODE_ABSOLUTE, phase_offset=0)

            # emit experiment start pulse on TTL0
            self.ttl0.pulse(1*us)

            # demonstrate simple spin-echo type pulse sequence
            self.dds0.set(3*MHz, phase_offset=0, phase_mode=PHASE_MODE_CONTINUOUS)
            self.ttl1.pulse(1*us) # first pi/2 pulse
            self.dds0.set(3*MHz, phase_offset=0.25, phase_mode=PHASE_MODE_CONTINUOUS)
            delay(2*us) # arm time
            self.ttl1.pulse(2*us) # middle pi pulse
            self.dds0.set(3*MHz, phase_offset=0, phase_mode=PHASE_MODE_CONTINUOUS)
            delay(2*us) # arm time
            self.ttl1.pulse(1*us) # final pi/2 pulse

            # delay to let Core_uP catch up
            delay(1*ms)

Build for KC705 in Travis

Uniprocessor systems and therefore the Papilio Pro are no longer supported. Build for KC705 instead as this it is the main board to be used with ARTIQ.

serial debug mode ddstest

Repeated pattern is not noise. Using Penning lab test setup.

test> clksrc 1
test> ddstest 5
readback fail on DDS 0, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 0, 0xffffffff != 0x55555555
readback fail on DDS 0, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 0, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 0, 0xffffffff != 0x00000000
readback fail on DDS 0, 0xffffffff != 0x12345678
readback fail on DDS 0, 0xffffffff != 0x87654321
readback fail on DDS 0, 0xffffffff != 0x0000ffff
readback fail on DDS 0, 0xffffffff != 0xffff0000
readback fail on DDS 0, 0xffffffff != 0x00ff00ff
readback fail on DDS 0, 0xffffffff != 0xff00ff00
readback fail on DDS 1, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 1, 0xffffffff != 0x55555555
readback fail on DDS 1, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 1, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 1, 0xffffffff != 0x00000000
readback fail on DDS 1, 0xffffffff != 0x12345678
readback fail on DDS 1, 0xffffffff != 0x87654321
readback fail on DDS 1, 0xffffffff != 0x0000ffff
readback fail on DDS 1, 0xffffffff != 0xffff0000
readback fail on DDS 1, 0xffffffff != 0x00ff00ff
readback fail on DDS 1, 0xffffffff != 0xff00ff00
readback fail on DDS 2, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 2, 0xffffffff != 0x55555555
readback fail on DDS 2, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 2, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 2, 0xffffffff != 0x00000000
readback fail on DDS 2, 0xffffffff != 0x12345678
readback fail on DDS 2, 0xffffffff != 0x87654321
readback fail on DDS 2, 0xffffffff != 0x0000ffff
readback fail on DDS 2, 0xffffffff != 0xffff0000
readback fail on DDS 2, 0xffffffff != 0x00ff00ff
readback fail on DDS 2, 0xffffffff != 0xff00ff00
readback fail on DDS 3, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 3, 0xffffffff != 0x55555555
readback fail on DDS 3, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 3, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 3, 0xffffffff != 0x00000000
readback fail on DDS 3, 0xffffffff != 0x12345678
readback fail on DDS 3, 0xffffffff != 0x87654321
readback fail on DDS 3, 0xffffffff != 0x0000ffff
readback fail on DDS 3, 0xffffffff != 0xffff0000
readback fail on DDS 3, 0xffffffff != 0x00ff00ff
readback fail on DDS 3, 0xffffffff != 0xff00ff00
readback fail on DDS 4, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 4, 0xffffffff != 0x55555555
readback fail on DDS 4, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 4, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 4, 0xffffffff != 0x00000000
readback fail on DDS 4, 0xffffffff != 0x12345678
readback fail on DDS 4, 0xffffffff != 0x87654321
readback fail on DDS 4, 0xffffffff != 0x0000ffff
readback fail on DDS 4, 0xffffffff != 0xffff0000
readback fail on DDS 4, 0xffffffff != 0x00ff00ff
readback fail on DDS 4, 0xffffffff != 0xff00ff00
readback fail on DDS 5, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 5, 0xffffffff != 0x55555555
readback fail on DDS 5, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 5, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 5, 0xffffffff != 0x00000000
readback fail on DDS 5, 0xffffffff != 0x12345678
readback fail on DDS 5, 0xffffffff != 0x87654321
readback fail on DDS 5, 0xffffffff != 0x0000ffff
readback fail on DDS 5, 0xffffffff != 0xffff0000
readback fail on DDS 5, 0xffffffff != 0x00ff00ff
readback fail on DDS 5, 0xffffffff != 0xff00ff00
readback fail on DDS 6, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 6, 0xffffffff != 0x55555555
readback fail on DDS 6, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 6, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 6, 0xffffffff != 0x00000000
readback fail on DDS 6, 0xffffffff != 0x12345678
readback fail on DDS 6, 0xffffffff != 0x87654321
readback fail on DDS 6, 0xffffffff != 0x0000ffff
readback fail on DDS 6, 0xffffffff != 0xffff0000
readback fail on DDS 6, 0xffffffff != 0x00ff00ff
readback fail on DDS 6, 0xffffffff != 0xff00ff00
readback fail on DDS 7, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 7, 0xffffffff != 0x55555555
readback fail on DDS 7, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 7, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 7, 0xffffffff != 0x00000000
readback fail on DDS 7, 0xffffffff != 0x12345678
readback fail on DDS 7, 0xffffffff != 0x87654321
readback fail on DDS 7, 0xffffffff != 0x0000ffff
readback fail on DDS 7, 0xffffffff != 0xffff0000
readback fail on DDS 7, 0xffffffff != 0x00ff00ff
readback fail on DDS 7, 0xffffffff != 0xff00ff00
readback fail on DDS 0, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 0, 0xffffffff != 0x55555555
readback fail on DDS 0, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 0, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 0, 0xffffffff != 0x00000000
readback fail on DDS 0, 0xffffffff != 0x12345678
readback fail on DDS 0, 0xffffffff != 0x87654321
readback fail on DDS 0, 0xffffffff != 0x0000ffff
readback fail on DDS 0, 0xffffffff != 0xffff0000
readback fail on DDS 0, 0xffffffff != 0x00ff00ff
readback fail on DDS 0, 0xffffffff != 0xff00ff00
readback fail on DDS 1, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 1, 0xffffffff != 0x55555555
readback fail on DDS 1, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 1, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 1, 0xffffffff != 0x00000000
readback fail on DDS 1, 0xffffffff != 0x12345678
readback fail on DDS 1, 0xffffffff != 0x87654321
readback fail on DDS 1, 0xffffffff != 0x0000ffff
readback fail on DDS 1, 0xffffffff != 0xffff0000
readback fail on DDS 1, 0xffffffff != 0x00ff00ff
readback fail on DDS 1, 0xffffffff != 0xff00ff00
readback fail on DDS 2, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 2, 0xffffffff != 0x55555555
readback fail on DDS 2, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 2, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 2, 0xffffffff != 0x00000000
readback fail on DDS 2, 0xffffffff != 0x12345678
readback fail on DDS 2, 0xffffffff != 0x87654321
readback fail on DDS 2, 0xffffffff != 0x0000ffff
readback fail on DDS 2, 0xffffffff != 0xffff0000
readback fail on DDS 2, 0xffffffff != 0x00ff00ff
readback fail on DDS 2, 0xffffffff != 0xff00ff00
readback fail on DDS 3, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 3, 0xffffffff != 0x55555555
readback fail on DDS 3, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 3, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 3, 0xffffffff != 0x00000000
readback fail on DDS 3, 0xffffffff != 0x12345678
readback fail on DDS 3, 0xffffffff != 0x87654321
readback fail on DDS 3, 0xffffffff != 0x0000ffff
readback fail on DDS 3, 0xffffffff != 0xffff0000
readback fail on DDS 3, 0xffffffff != 0x00ff00ff
readback fail on DDS 3, 0xffffffff != 0xff00ff00
readback fail on DDS 4, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 4, 0xffffffff != 0x55555555
readback fail on DDS 4, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 4, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 4, 0xffffffff != 0x00000000
readback fail on DDS 4, 0xffffffff != 0x12345678
readback fail on DDS 4, 0xffffffff != 0x87654321
readback fail on DDS 4, 0xffffffff != 0x0000ffff
readback fail on DDS 4, 0xffffffff != 0xffff0000
readback fail on DDS 4, 0xffffffff != 0x00ff00ff
readback fail on DDS 4, 0xffffffff != 0xff00ff00
readback fail on DDS 5, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 5, 0xffffffff != 0x55555555
readback fail on DDS 5, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 5, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 5, 0xffffffff != 0x00000000
readback fail on DDS 5, 0xffffffff != 0x12345678
readback fail on DDS 5, 0xffffffff != 0x87654321
readback fail on DDS 5, 0xffffffff != 0x0000ffff
readback fail on DDS 5, 0xffffffff != 0xffff0000
readback fail on DDS 5, 0xffffffff != 0x00ff00ff
readback fail on DDS 5, 0xffffffff != 0xff00ff00
readback fail on DDS 6, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 6, 0xffffffff != 0x55555555
readback fail on DDS 6, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 6, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 6, 0xffffffff != 0x00000000
readback fail on DDS 6, 0xffffffff != 0x12345678
readback fail on DDS 6, 0xffffffff != 0x87654321
readback fail on DDS 6, 0xffffffff != 0x0000ffff
readback fail on DDS 6, 0xffffffff != 0xffff0000
readback fail on DDS 6, 0xffffffff != 0x00ff00ff
readback fail on DDS 6, 0xffffffff != 0xff00ff00
readback fail on DDS 7, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 7, 0xffffffff != 0x55555555
readback fail on DDS 7, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 7, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 7, 0xffffffff != 0x00000000
readback fail on DDS 7, 0xffffffff != 0x12345678
readback fail on DDS 7, 0xffffffff != 0x87654321
readback fail on DDS 7, 0xffffffff != 0x0000ffff
readback fail on DDS 7, 0xffffffff != 0xffff0000
readback fail on DDS 7, 0xffffffff != 0x00ff00ff
readback fail on DDS 7, 0xffffffff != 0xff00ff00
readback fail on DDS 0, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 0, 0xffffffff != 0x55555555
readback fail on DDS 0, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 0, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 0, 0xffffffff != 0x00000000
readback fail on DDS 0, 0xffffffff != 0x12345678
readback fail on DDS 0, 0xffffffff != 0x87654321
readback fail on DDS 0, 0xffffffff != 0x0000ffff
readback fail on DDS 0, 0xffffffff != 0xffff0000
readback fail on DDS 0, 0xffffffff != 0x00ff00ff
readback fail on DDS 0, 0xffffffff != 0xff00ff00
readback fail on DDS 1, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 1, 0xffffffff != 0x55555555
readback fail on DDS 1, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 1, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 1, 0xffffffff != 0x00000000
readback fail on DDS 1, 0xffffffff != 0x12345678
readback fail on DDS 1, 0xffffffff != 0x87654321
readback fail on DDS 1, 0xffffffff != 0x0000ffff
readback fail on DDS 1, 0xffffffff != 0xffff0000
readback fail on DDS 1, 0xffffffff != 0x00ff00ff
readback fail on DDS 1, 0xffffffff != 0xff00ff00
readback fail on DDS 2, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 2, 0xffffffff != 0x55555555
readback fail on DDS 2, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 2, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 2, 0xffffffff != 0x00000000
readback fail on DDS 2, 0xffffffff != 0x12345678
readback fail on DDS 2, 0xffffffff != 0x87654321
readback fail on DDS 2, 0xffffffff != 0x0000ffff
readback fail on DDS 2, 0xffffffff != 0xffff0000
readback fail on DDS 2, 0xffffffff != 0x00ff00ff
readback fail on DDS 2, 0xffffffff != 0xff00ff00
readback fail on DDS 3, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 3, 0xffffffff != 0x55555555
readback fail on DDS 3, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 3, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 3, 0xffffffff != 0x00000000
readback fail on DDS 3, 0xffffffff != 0x12345678
readback fail on DDS 3, 0xffffffff != 0x87654321
readback fail on DDS 3, 0xffffffff != 0x0000ffff
readback fail on DDS 3, 0xffffffff != 0xffff0000
readback fail on DDS 3, 0xffffffff != 0x00ff00ff
readback fail on DDS 3, 0xffffffff != 0xff00ff00
readback fail on DDS 4, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 4, 0xffffffff != 0x55555555
readback fail on DDS 4, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 4, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 4, 0xffffffff != 0x00000000
readback fail on DDS 4, 0xffffffff != 0x12345678
readback fail on DDS 4, 0xffffffff != 0x87654321
readback fail on DDS 4, 0xffffffff != 0x0000ffff
readback fail on DDS 4, 0xffffffff != 0xffff0000
readback fail on DDS 4, 0xffffffff != 0x00ff00ff
readback fail on DDS 4, 0xffffffff != 0xff00ff00
readback fail on DDS 5, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 5, 0xffffffff != 0x55555555
readback fail on DDS 5, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 5, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 5, 0xffffffff != 0x00000000
readback fail on DDS 5, 0xffffffff != 0x12345678
readback fail on DDS 5, 0xffffffff != 0x87654321
readback fail on DDS 5, 0xffffffff != 0x0000ffff
readback fail on DDS 5, 0xffffffff != 0xffff0000
readback fail on DDS 5, 0xffffffff != 0x00ff00ff
readback fail on DDS 5, 0xffffffff != 0xff00ff00
readback fail on DDS 6, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 6, 0xffffffff != 0x55555555
readback fail on DDS 6, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 6, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 6, 0xffffffff != 0x00000000
readback fail on DDS 6, 0xffffffff != 0x12345678
readback fail on DDS 6, 0xffffffff != 0x87654321
readback fail on DDS 6, 0xffffffff != 0x0000ffff
readback fail on DDS 6, 0xffffffff != 0xffff0000
readback fail on DDS 6, 0xffffffff != 0x00ff00ff
readback fail on DDS 6, 0xffffffff != 0xff00ff00
readback fail on DDS 7, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 7, 0xffffffff != 0x55555555
readback fail on DDS 7, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 7, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 7, 0xffffffff != 0x00000000
readback fail on DDS 7, 0xffffffff != 0x12345678
readback fail on DDS 7, 0xffffffff != 0x87654321
readback fail on DDS 7, 0xffffffff != 0x0000ffff
readback fail on DDS 7, 0xffffffff != 0xffff0000
readback fail on DDS 7, 0xffffffff != 0x00ff00ff
readback fail on DDS 7, 0xffffffff != 0xff00ff00
readback fail on DDS 0, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 0, 0xffffffff != 0x55555555
readback fail on DDS 0, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 0, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 0, 0xffffffff != 0x00000000
readback fail on DDS 0, 0xffffffff != 0x12345678
readback fail on DDS 0, 0xffffffff != 0x87654321
readback fail on DDS 0, 0xffffffff != 0x0000ffff
readback fail on DDS 0, 0xffffffff != 0xffff0000
readback fail on DDS 0, 0xffffffff != 0x00ff00ff
readback fail on DDS 0, 0xffffffff != 0xff00ff00
readback fail on DDS 1, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 1, 0xffffffff != 0x55555555
readback fail on DDS 1, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 1, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 1, 0xffffffff != 0x00000000
readback fail on DDS 1, 0xffffffff != 0x12345678
readback fail on DDS 1, 0xffffffff != 0x87654321
readback fail on DDS 1, 0xffffffff != 0x0000ffff
readback fail on DDS 1, 0xffffffff != 0xffff0000
readback fail on DDS 1, 0xffffffff != 0x00ff00ff
readback fail on DDS 1, 0xffffffff != 0xff00ff00
readback fail on DDS 2, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 2, 0xffffffff != 0x55555555
readback fail on DDS 2, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 2, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 2, 0xffffffff != 0x00000000
readback fail on DDS 2, 0xffffffff != 0x12345678
readback fail on DDS 2, 0xffffffff != 0x87654321
readback fail on DDS 2, 0xffffffff != 0x0000ffff
readback fail on DDS 2, 0xffffffff != 0xffff0000
readback fail on DDS 2, 0xffffffff != 0x00ff00ff
readback fail on DDS 2, 0xffffffff != 0xff00ff00
readback fail on DDS 3, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 3, 0xffffffff != 0x55555555
readback fail on DDS 3, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 3, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 3, 0xffffffff != 0x00000000
readback fail on DDS 3, 0xffffffff != 0x12345678
readback fail on DDS 3, 0xffffffff != 0x87654321
readback fail on DDS 3, 0xffffffff != 0x0000ffff
readback fail on DDS 3, 0xffffffff != 0xffff0000
readback fail on DDS 3, 0xffffffff != 0x00ff00ff
readback fail on DDS 3, 0xffffffff != 0xff00ff00
readback fail on DDS 4, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 4, 0xffffffff != 0x55555555
readback fail on DDS 4, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 4, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 4, 0xffffffff != 0x00000000
readback fail on DDS 4, 0xffffffff != 0x12345678
readback fail on DDS 4, 0xffffffff != 0x87654321
readback fail on DDS 4, 0xffffffff != 0x0000ffff
readback fail on DDS 4, 0xffffffff != 0xffff0000
readback fail on DDS 4, 0xffffffff != 0x00ff00ff
readback fail on DDS 4, 0xffffffff != 0xff00ff00
readback fail on DDS 5, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 5, 0xffffffff != 0x55555555
readback fail on DDS 5, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 5, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 5, 0xffffffff != 0x00000000
readback fail on DDS 5, 0xffffffff != 0x12345678
readback fail on DDS 5, 0xffffffff != 0x87654321
readback fail on DDS 5, 0xffffffff != 0x0000ffff
readback fail on DDS 5, 0xffffffff != 0xffff0000
readback fail on DDS 5, 0xffffffff != 0x00ff00ff
readback fail on DDS 5, 0xffffffff != 0xff00ff00
readback fail on DDS 6, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 6, 0xffffffff != 0x55555555
readback fail on DDS 6, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 6, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 6, 0xffffffff != 0x00000000
readback fail on DDS 6, 0xffffffff != 0x12345678
readback fail on DDS 6, 0xffffffff != 0x87654321
readback fail on DDS 6, 0xffffffff != 0x0000ffff
readback fail on DDS 6, 0xffffffff != 0xffff0000
readback fail on DDS 6, 0xffffffff != 0x00ff00ff
readback fail on DDS 6, 0xffffffff != 0xff00ff00
readback fail on DDS 7, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 7, 0xffffffff != 0x55555555
readback fail on DDS 7, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 7, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 7, 0xffffffff != 0x00000000
readback fail on DDS 7, 0xffffffff != 0x12345678
readback fail on DDS 7, 0xffffffff != 0x87654321
readback fail on DDS 7, 0xffffffff != 0x0000ffff
readback fail on DDS 7, 0xffffffff != 0xffff0000
readback fail on DDS 7, 0xffffffff != 0x00ff00ff
readback fail on DDS 7, 0xffffffff != 0xff00ff00
readback fail on DDS 0, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 0, 0xffffffff != 0x55555555
readback fail on DDS 0, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 0, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 0, 0xffffffff != 0x00000000
readback fail on DDS 0, 0xffffffff != 0x12345678
readback fail on DDS 0, 0xffffffff != 0x87654321
readback fail on DDS 0, 0xffffffff != 0x0000ffff
readback fail on DDS 0, 0xffffffff != 0xffff0000
readback fail on DDS 0, 0xffffffff != 0x00ff00ff
readback fail on DDS 0, 0xffffffff != 0xff00ff00
readback fail on DDS 1, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 1, 0xffffffff != 0x55555555
readback fail on DDS 1, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 1, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 1, 0xffffffff != 0x00000000
readback fail on DDS 1, 0xffffffff != 0x12345678
readback fail on DDS 1, 0xffffffff != 0x87654321
readback fail on DDS 1, 0xffffffff != 0x0000ffff
readback fail on DDS 1, 0xffffffff != 0xffff0000
readback fail on DDS 1, 0xffffffff != 0x00ff00ff
readback fail on DDS 1, 0xffffffff != 0xff00ff00
readback fail on DDS 2, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 2, 0xffffffff != 0x55555555
readback fail on DDS 2, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 2, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 2, 0xffffffff != 0x00000000
readback fail on DDS 2, 0xffffffff != 0x12345678
readback fail on DDS 2, 0xffffffff != 0x87654321
readback fail on DDS 2, 0xffffffff != 0x0000ffff
readback fail on DDS 2, 0xffffffff != 0xffff0000
readback fail on DDS 2, 0xffffffff != 0x00ff00ff
readback fail on DDS 2, 0xffffffff != 0xff00ff00
readback fail on DDS 3, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 3, 0xffffffff != 0x55555555
readback fail on DDS 3, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 3, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 3, 0xffffffff != 0x00000000
readback fail on DDS 3, 0xffffffff != 0x12345678
readback fail on DDS 3, 0xffffffff != 0x87654321
readback fail on DDS 3, 0xffffffff != 0x0000ffff
readback fail on DDS 3, 0xffffffff != 0xffff0000
readback fail on DDS 3, 0xffffffff != 0x00ff00ff
readback fail on DDS 3, 0xffffffff != 0xff00ff00
readback fail on DDS 4, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 4, 0xffffffff != 0x55555555
readback fail on DDS 4, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 4, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 4, 0xffffffff != 0x00000000
readback fail on DDS 4, 0xffffffff != 0x12345678
readback fail on DDS 4, 0xffffffff != 0x87654321
readback fail on DDS 4, 0xffffffff != 0x0000ffff
readback fail on DDS 4, 0xffffffff != 0xffff0000
readback fail on DDS 4, 0xffffffff != 0x00ff00ff
readback fail on DDS 4, 0xffffffff != 0xff00ff00
readback fail on DDS 5, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 5, 0xffffffff != 0x55555555
readback fail on DDS 5, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 5, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 5, 0xffffffff != 0x00000000
readback fail on DDS 5, 0xffffffff != 0x12345678
readback fail on DDS 5, 0xffffffff != 0x87654321
readback fail on DDS 5, 0xffffffff != 0x0000ffff
readback fail on DDS 5, 0xffffffff != 0xffff0000
readback fail on DDS 5, 0xffffffff != 0x00ff00ff
readback fail on DDS 5, 0xffffffff != 0xff00ff00
readback fail on DDS 6, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 6, 0xffffffff != 0x55555555
readback fail on DDS 6, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 6, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 6, 0xffffffff != 0x00000000
readback fail on DDS 6, 0xffffffff != 0x12345678
readback fail on DDS 6, 0xffffffff != 0x87654321
readback fail on DDS 6, 0xffffffff != 0x0000ffff
readback fail on DDS 6, 0xffffffff != 0xffff0000
readback fail on DDS 6, 0xffffffff != 0x00ff00ff
readback fail on DDS 6, 0xffffffff != 0xff00ff00
readback fail on DDS 7, 0xffffffff != 0xaaaaaaaa
readback fail on DDS 7, 0xffffffff != 0x55555555
readback fail on DDS 7, 0xffffffff != 0xa5a5a5a5
readback fail on DDS 7, 0xffffffff != 0x5a5a5a5a
readback fail on DDS 7, 0xffffffff != 0x00000000
readback fail on DDS 7, 0xffffffff != 0x12345678
readback fail on DDS 7, 0xffffffff != 0x87654321
readback fail on DDS 7, 0xffffffff != 0x0000ffff
readback fail on DDS 7, 0xffffffff != 0xffff0000
readback fail on DDS 7, 0xffffffff != 0x00ff00ff
readback fail on DDS 7, 0xffffffff != 0xff00ff00

flash_storage issues

  • the method of access to data fields is inconsistent across functions (union seek, *(unsigned int *)addr == END_MARKER, etc.). I guess you can remove union seek.
  • write_at_offset may access buffers beyond their length due to the added alignment padding. Likely harmless, but not a clean programming practice.
  • fs_write will break if the data contains the FFFFFFFF pattern. Forgot to use goto_next_record?
  • you can probably remove some of the casts and clutter by trying to use int (instead of unsigned int) everywhere.
  • strlen may crash if a record is corrupted. Use strnlen. Generally make the code resistant to broken data.
  • variable names are inconsistent (e.g. buflen vs. key_len)
  • fs_write should return a status code indicating if the data was successfully written or not.

NB: All those bugs would have been prevented by using YAFFS.

needs compiler optimization

This experiment script was marked for bug reporting. SB, do you recall the problem? I'm applying a 1 MHz external pulse train to PMT1.

timestamps_compiler_opt_fail.py

from artiq import *


class LED(Experiment, AutoDB):
    class DBKeys:
        core = Device()
        ttl0 = Device()
        pmt1 = Device() 

    def process(self, x):
        print(x)
        print([t1-t0 for t0, t1 in zip(x, x[1:])])

    @kernel
    def run(self):
        L = 100
        buf = [int64(0) for _ in range(L)]
        self.pmt1.gate_rising(1000*ms)
        count = 0
        for i in range(L):
            t = time_to_cycles(self.pmt1.timestamp())
            if t > 0:
                count += 1
            buf[i] = t 
        print(count)
        self.process(buf)

Output is below.

rabi2@vboxartiq:~/artiq/examples/master$ artiq_run repository/timestamps_compiler_opt_fail.py 
100
[244726, 369726, 494726, 619726, 744726, 869726, 994726, 1119726, 1244726, 1369726, 1494726, 1619726, 1744726, 1869726, 1994726, 2119726, 2244726, 2369726, 2494726, 2619726, 2744726, 2869726, 2994726, 3119726, 3244726, 3369726, 3494726, 3619726, 3744726, 3869725, 3994725, 4119725, 4244725, 4369725, 4494725, 4619725, 4744725, 4869725, 4994725, 5119725, 5244725, 5369725, 5494725, 5619725, 5744725, 5869725, 5994725, 6119725, 6244725, 6369725, 6494725, 6619725, 6744725, 6869725, 6994725, 7119725, 7244725, 7369725, 7494725, 7619725, 7744725, 7869725, 7994725, 8119724, 8244724, 8369724, 8494724, 8619724, 8744724, 8869724, 8994724, 9119724, 9244724, 9369724, 9494724, 9619724, 9744724, 9869724, 9994724, 10119724, 10244724, 10369724, 10494724, 10619724, 10744724, 10869724, 10994724, 11119724, 11244724, 11369724, 11494724, 11619724, 11744724, 11869724, 11994724, 12119724, 12244723, 12369723, 12494723, 12619723]
[125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 124999, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 124999, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000, 124999, 125000, 125000, 125000]

DDS test mode... 1111

Using KC705 in Penning lab. Connected to legacy Penning hardware using FMC-LVDS adapter.

In test mode run DDS tests on AD9858. Generates all 1111's.

travis: do not build the bitstreams and do not upload for non-master or pull-reqs

Previously the bitstream was not build on pull-requests (no access to the secrets), using BUILD_SOC. With the conda builds, we still can not build bitstreams for pull-requests (yet we should still run the testsuite). We can keepl building the bitstreams for non-master builds. But more importantly we should not upload the packages to binstar if TRAVIS_BRANCH!=master.

logging formatting styles cleanup

The logging message formatting is a inconsistent. Let's do the following:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.