Re: [ARTIQ] precisions on GUI features

2015-11-20 Thread Britton, Joe
ecially if 
> writing the controller in another language than Python, for which a 
> ARTIQ logging library may not be available). That protocol should also 
> be human-readable so that controllers can be run stand-alone.

Something like (173b) looks human-readable to me. 

> >> 5) Support changes of inputs while an experiment is running: I'm 
> >> not sure how that would be used. One thing that we discussed with 
> >> Joe is to support resetting each argument widget individually from 
> >> its default value recomputed by running again the build() function 
> >> of the experiment. Are there use cases that are not well-covered by this?
> >
> > The most common use case is a periodically scheduled scan whose 
> > range depends on a time-varying dataset value. Example: scan range 
> > should be symmetric about a data-set value, re-compute range each 
> > each build(), update GUI ranges, run experiment.

> This is supported by the reset approach above, correct?

I proposed an implementation of this in #93 on github. Not sure how you were 
planning on implementing this.

> > 7) display-only GUI element in Explorer tab Context: Experiments may 
> > produce information that can be productively presented to user in an 
> > organized way. One way of presenting this information to the user is 
> > in an output to the Log. However, this quickly scrolls out of sight 
> > in the case of a single Log view. Implementation: It would be 
> > convenient if the user-defined section of the Explorer GUI supported 
> > "display-only" widgets. HTML and PNG seem like reasonable formats.
> > The display widgets could be updated by the same
> > set_dataset(broadcast=True) mechanism that causes Plots and 
> > Histograms to update real-time.
> 
> Why not replace plots and histograms with a more general mechanism 
> that allows defining your own display code with a Python plug-in? Then 
> images, complex plots, etc. become possible.

Agreed that replacing plots and histograms with user-defined code is superior. 

>Why integrate the output into the
> explorer, instead of it having its own dock like the current plots and  
>histograms?

I think we agree. To be explicit, an experiment selected in the Explorer 
determines the contents of two tabbed panes "Experiment Configuration" and 
"Experiment Results" which show a list of e.g. Scan widgets and a list of 
user-defined plots, respectively. The contents of these two windows are 
automatically re-drawn dependent on which experiment is selected in the 
Explorer.

To my view, the use case of several experiments displaying output to a single 
pop-out window is important but secondary to clearly linking Experiment choice 
with Configuration and plotted Results.  

Experiment Results widgets include display widgets for matplotlib output (e.g. 
png) and html.


> -Original Message-
> From: Sébastien Bourdeauducq [mailto:s...@m-labs.hk]
> Sent: Friday, November 20, 2015 10:18 AM
> To: Britton, Joe <joe.brit...@nist.gov>; artiq@lists.m-labs.hk
> Subject: Re: [ARTIQ] precisions on GUI features
> 
> On 11/20/2015 11:00 AM, Britton, Joe wrote:
> > The use scenario is juggling a long-running experiment (over, say,
> > hours). From a data analysis perspective it's annoying to try to glue
> > together several datasets that were generated due to restarting (eg to
> > reschedule or change priority).
> 
> This is an argument for supporting priority changes, but not due dates:
> before the due date is reached, no dataset is created.
> 
> >> d) experiment submitted/completed: I guess the master should log
> >> those.  It does not right now but it should be easy to add. We can
> >> have a keyword on those messages that the text filter can use.
> >
> > Not sure what level of nuisance is appropriate but submitted and
> > completed timestamps miss a lot of details about what the scheduler is
> > actually doing. A more complete log might also include timestamps for
> > scheduler events.
> 
> All log entries already include a timestamp.
> 
> > I'd advocate for the DEBUG level. * experiment submitted/resubmitted
> > to scheduler * "preparing" finished * "running" started * "paused"
> > started * "paused" finished * "running" ended * "analysis" finished
> 
> If this sort of message is at the DEBUG level (I would suggest INFO as DEBUG
> already prints a lot of other messages, but same problem): should we also
> support a way to change the log message production level of the master
> without restarting it? Right now this requires stopping it and restarting it 
> with
> the -v/-q options.
>

Re: [ARTIQ] ARTIQ hotkeys

2015-10-23 Thread Britton, Joe
It would be helpful to have the following keyboard shortcuts. 

* Submit Experiment :: Submit to scheduler new instance of whatever program is 
selected in Explorer.
* use case is obvious
* Say, CTRL-S

* Re-submit Experiment :: P is whichever program has focus in Explorer. Request 
graceful termination of any Scheduler instances of P. Submit to Scheduler new 
instance of P. 
* use case is tweaking an experiment parameter then re-running repeatedly 

* Experiment Hot Keys :: New hotkey entry in device_db.pyon. 
{  "hotkey": 
{
"key": "F1", 
"modifier": "SHIFT", 
 "program_class": "SaveIon", 
"scheduler": {"priority": 0, "pipeline": "main", "debug": "INFO", 
"flush": False}
  }
}




Joe Britton
NIST - Div 688
325 Broadway
Boulder, CO 80305
303.497.7295
brit...@nist.gov


-Original Message-
From: ARTIQ [mailto:artiq-boun...@lists.m-labs.hk] On Behalf Of Robert Jördens
Sent: Friday, October 23, 2015 11:17 AM
To: Sébastien Bourdeauducq 
Cc: artiq@lists.m-labs.hk; Tan, Ting Rei 
Subject: Re: [ARTIQ] ARTIQ hotkeys

On Fri, Oct 23, 2015 at 6:56 PM, Sébastien Bourdeauducq  wrote:
> What exactly should the hotkeys do in ARTIQ, and what are their use cases?
>
> As I understand, the idea is to assign hotkeys to experiments in the 
> explorer, and pressing one will run the associated experiment with the 
> arguments currently set for it in the right panel of the explorer.

Yes. If it is a useful simplification, a limitation to the function keys would 
be fine.
Maybe this can be done programmatically: just another persistent dataset? Then 
the editing and updating interfaces are already implemented...

> Are there other hotkey feature requests/use cases?

IMHO the UI should also have a sensible adaptation the usual desktop
keybindings:

When the explorer is in focus:
enter: enqueue

When the scheduler pane is active:
delete: (graceful) termination
enter: open in explorer?

When an experiment is in focus:
ctrl-enter: enqueue

On top of what I suspect is already exposed by the various widgets already as 
key bindings.

--
Robert Jordens.
___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq
___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq


Re: [ARTIQ] Distributed Real-Time I/O (DRTIO) upgrade to ARTIQ, clock stability

2015-08-13 Thread Britton, Joe
# Addendum
I gather that some additional words would help explain what this DRTIO 
architecture will look like. See attached Architecture figure (from 
m-labs.hk) or 
[image](https://ssl.serverraum.org/lists-archive/artiq/attachments/20150724/e0243576/attachment-0016.png)
 from [pervious 
post](https://ssl.serverraum.org/lists-archive/artiq/2015-July/000489.html).

## Core Device
* Contains all the brains
* Large-ish FPGA (e.g. KC705, XC7K325T)
* Network-on-chip architecture with multiple softcore (e.g. OR1K) CPUs
* NB: All the above is already implemented in ARTIQ. 
* Sends commands and clock to Satellite Devices over fiber
optics (32 per Master, 1 per Satellite)
* uses built-in Xilinx clock and data recovery unit (CDR) in FPGA GTX/GPX
* at least 1 Gb per second bandwidth
* telecom standard small form-factor pluggable (SFP) 
* single-mode optical fiber to 10-km
* SFP Rx/Tx transceivers (inc. detectors  lasers) : $70/ea 
* 1310nm FP laser, 1490 PIN/TIA receiver
* 1490nm DFB laser, 1310 PIN/TIA receiver
* Note: If more than 32 links are desired, use normal IO pins on FPGA (limits 
to ~1Gbps per link and no clock recovery)

## Satellite Devices
* Minimal resources required to interface with target ICs and circuits
* simple devices: no CPU, no DRAM, Small FPGA (eg XC7A50T) 
* more complex devices: resources as needed
* Takes low level commands from the fiber optics
* Identified by serial number - no need to label fibers
* Recovers clock from fiber optics using FPGA transceiver
* uses built-in Xilinx clock and data recovery unit (CDR)
* low phase noise crystal oscillator (VCX) and clean-up PLL 
* CDR modeled on White Rabbit 
* Recovered clock is used for devices external to FPGA as well as (DDS, 
DAC, etc.) possibly after multiplication/division
* to economize on bandwidth local FPGA will do data processing and storage 
* e.g. PDQ-style interpolation
* e.g. buffering of ksamples-sized ADC burst

Note: DRTIO is for devices requiring precision-timing with respect to the Core 
Devices. A different interface already implemented in ARTIQ is used for slow 
laboratory peripherals (e.g. waveplates, fixed-frequency DDSs, stand-alone PID 
servos) or perhiperals that requires a Windows/Linux host computer (e.g. 
National Instruments PCI/PXI boards). See more on Controller PCs and Slow 
Peripherals in this 
[slide](https://ssl.serverraum.org/lists-archive/artiq/attachments/20150724/e0243576/attachment-0011.png)
 and read about already supported  
[NDSP](http://m-labs.hk/artiq/manual/ndsp_reference.html) devices.



Joe Britton
NIST - Div 688
325 Broadway
Boulder, CO 80305
303.497.7295
brit...@nist.gov


___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq


Re: [ARTIQ] GUI Contract Specification

2015-06-11 Thread Britton, Joe
Some comments on Ting Rei's writeup of the GUI specification.

Thank you for the detailed writeup Ting Rei. See below for some comments. -Joe

$$$ FIRST CONTRACT $$$

### Experiment Explorer Panel ###

It would be good to have some hierarchy to the organization of experiments. A 
list folding/unfolding GUI widget could be used for this. Or folders. We have  
 100 experiments in Penning lab.


### Scheduler panel ###

Hilight an experiment in the list then click a EEP button. This would open 
the Experiment Explorer Panel for that experiment.

Hilight an experiment in the list then click a Edit button. This would open 
the experiment defintion file for editing.

For each experiment in list need a way to view git commit ID for the 
corresponding source files.

### Parameter database panel ###

Hierarchical organization of elements... I prefer splitting using python-like 
dot .
And, list folding/unfolding widget.

Easy access to Parameter database history (via python API or click to generate 
a time-series plot).

### General structure of GUI elements ###


### UI for results reporting and alert notification ###

+ a.   A window storing the text of the latest event, e.g. fit values of a 
scan result, hardware failure, etc. A scrolling list showing recent events 
would be better. There may be a steady stream of alerts.

+ Does anybody think it would be helpful to have a class of alerts that are 
sticky in that they stay at the top of the scrolling list until dismissed? 
I'm thinking a laser unlocked alert might fall into this class.
+ As an alternative to popup of multiple windows, one log reader tool I use 
(baretail.exe) has an option to specify text, background color for log entries 
that match a certain search string (regular expression). This makes certain log 
entries stand out in an easily identifiable way. Configuration via a text file 
would be fine. In general, it would be nice to avoid the huge proliferation of 
free-floating windows that plague the current HFgui.

### General structure of GUI widgets ###

+ In general, we assume that changing values on the GUI will not interrupt or 
affect a currently running kernel, but may cause kernel recompilation. Better 
to wait to recompile the kernel until just before the next run. Else it will 
recompile after each edit of a GUI element.

i.The precedent of setting a scan range in the scanning widget is 
the following:

It's is often the case that the scan range needs to be updated automatically by 
a script. For example, consider a program designed to automatically calibrate a 
slowly drifting experiment parameter (e.g. mode frequency). The script should 
be able to update the scan range to keep the scan centered on the spectral 
feature as it drifts. Therefore the following might make more sense.

All GUI parameters are derivable from values in the Parameter Database or hard 
coded into python script. This would reduce the number of distinct databases 
that need to be juggled. As a convenience, addition of a new experiment to the 
Artiq experiment list could auto-generate the required Parameter Database 
entries. This is a simplification since many the GUI-editable variables that 
modify experiment execution need to be part of the permanent experiment record 
anyway. Examples include,
* number of experiment reps per scan point
* number of scan points
* number of scans
* which parameter is being scanned
* over what range is the parameter being scanned

In this model, editing a GUI variable would automatically update the 
corresponding Parameter Database entry.

### Results Database ###

b. GUI widgets can also store things in the results database so that other GUI 
widgets can then access the database and retrieve them. (for example, a fitting 
widget that stores the fit, so that the plotting widget can display it).

By Results Database we mean the disk file system on the master machine that 
holds HDF5 files, right? My expectation of the Results Database is that it will 
be more or less write-only from the perspective of a running experiment. 
Reading from the Results Database would be for offline data analysis or 
experiment replay.

And, as a matter of clarity, are we in agreement that the Parameter Database is 
the only mechanism for passing data between different experiments? And, between 
one schedule run of an experiment and the next scheduled run.

Easy way to retrieve name/path to HDF5 file corresponding to displayed 
experiment.

### Fitting Widget ###
iii. G. Default value of fit parameter. Could be numerical value or Ion 
Property.
iii. H. If fit is successful save a fit parameter to an Ion Property. Need to 
choose goodness-of-fit metric (e.g. Chi-squared)


### Plotting Widget ###
* option to automatically fit at end of data acquisition or refit after each 
point is acquired
* plot fit on top of data
* widget is provided with x,y data by a) real-time RPC or sync_struct sent by 
master b) reading a HDF5 file
* support for 

[ARTIQ] external triggering; optical dipole force beatnote

2015-03-20 Thread Britton, Joe
Trying to setup an experiment in the Penning lab this week using the old FPGA 
system clarified several aspects of external triggering that would be desirable 
in Artiq. It would be good to know if there are other triggering scenarios that 
Ion Storage envisions not covered by the following.

(0)
By external trigger I mean the following. RTIO outputs and the core device 
are held until a trigger condition is satisfied. The trigger condition could be 
the falling edge of a RTIO input (or an interval trigger defined below).

(1a)
A trigger event is a rising or falling edge of a signal applied to a RTIO input.

(1b)
Logic lines in our labs are often TTL carried over BNC. On some occasions there 
is cross coupling between cables when they are tightly bundled. On our 
oscilloscope we handle this problem by using the interval trigger mode that 
only triggers on pulses of length tau or greater. Here's a pulse sequence.
 _
| |
   --
t0t1

If t1-t0 = tau then the pulse is valid. If t1-t0  tau, don't trigger. Choose 
between triggering on: rising-tau-falling or falling-tau-rising.

(2)
Some experiments may involve more than one trigger event. For example, we may 
want to block the start of an experiment sequence until the falling edge of a 
discriminated 60 Hz AC line presented on RTIO channel 1. The experiment 
sequence then commences with several RTIO pulses (e.g. laser cooling). Then the 
sequence blocks, waiting for the falling edge of the input to RTIO channel 2 
(e.g. discriminated beat note from optical dipole force ODF beams). The 
experiment sequence then resumes. In general it would be helpful if any of the 
RTIO channels could be used for triggering.

(3)
Very low latency is desired between satisfaction of a trigger condition and 
resumption of RTIO events. In general, the objective is to align the Artiq 
pulse sequence with some external stochastic event. The ODF beat note could be 
a 10 MHz signal when an ion has a 10 MHz secular frequency. We'd like to be 
able to synchronize subsequent events with the ion's motion (following 
application of an ODF laser pulse) with at most 1% error. That is, to 1 ns.

Example experiments:
(a) In the clock lab, one scheme for detecting the Al+ resonance is applying an 
ODF to Al+ in an Al+Mg+ ion crystal. Laser light blue-detuned from the Mg+ 
cycling transition is applied and a time-stamp for each scattered photon is 
recorded. Driving of the Al+ resonance is indicated by observation that the 
photon scatter rate is synchronous with the ODF. 10 ns time stamp resolution 
is required.
(b) In a Penning lab, one scheme for calibrating the Jz^2 strength is a loop in 
phase space using the pulse sequence: ODF (0 deg), classical force (90 deg), 
ODF (180 deg), classical force (270 deg). Achieving the requisite angle between 
the ODF (ODF phase is stochastic, but stable for milliseconds) and the 
classical force (from a DDS) requires  5 ns timing resolution of RIO pulses 
after initial triggering



Joe Britton
NIST - Div 688
325 Broadway
Boulder, CO 80305
303.497.7295
brit...@nist.govmailto:brit...@nist.gov



___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq


Re: [ARTIQ] duty cycle management

2015-03-16 Thread Britton, Joe
If the duty cycle information is specified in ddb.pyon and there are no 
conditional routines in the default experiment, the default experiment pulse 
sequence could be precomputed and loaded onto the FPGA. 

In general, any experiment that includes conditional routines would need the 
dutycycle management preformed on the core device. I don't think this would 
pose a computational problem since the dutycycle pulse sequence could be 
computed at the end of each experiment (OK if it takes many micro-seconds).  

-Joe 
 

Joe Britton
NIST - Div 688
325 Broadway
Boulder, CO 80305
303.497.7295
brit...@nist.gov

 -Original Message-
 From: ARTIQ [mailto:artiq-boun...@lists.m-labs.hk] On Behalf Of Sebastien
 Bourdeauducq
 Sent: Saturday, March 14, 2015 5:46 AM
 To: artiq@lists.m-labs.hk
 Subject: Re: [ARTIQ] duty cycle management
 
 Hi,
 
 An important question is whether the default experiment (that runs on the
 core device alone, without any computer intervention) will need duty cycle
 management. If it does, it means that the duty cycle tracking should happen
 on the device.
 
 Sebastien
 ___
 ARTIQ mailing list
 https://ssl.serverraum.org/lists/listinfo/artiq
___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq


Re: [ARTIQ] ARTIQ future details

2015-03-13 Thread Britton, Joe
   c) which file and line of code was responsible for underflow
 
 This is non-trivial to implement as it requires unwinding the stack, getting a
 machine instruction address/LLVM instruction mapping from LLVM, and
 adding a LLVM instruction mapping/Python AST node mapping to the
 compiler. We can do it but it is currently a next contract item (not so 
 well-
 named py2llvm debugging symbols). Shall we make it a higher priority one?

If getting this to work is nontrivial I'd say put it on the next contract. 
 
  4) functional parameter database
 
 What do you mean?

It would be helpful to have a history for the parameter database. We use this 
in the Penning experiment to feed forward on some aspects of the experiment 
that drift over time (e.g. accumulation of dark ions shifts our COM mode). If 
this is somewhat involved to implement in Artiq and you'd prefer to defer to 
the next contract that's OK. I'm sure I can come up with an ad hoc solution. 

  5) debug methods to find DDS bus errors
   a) systematic read and write to all available pins on bus
 
 I have merged most of the nist-dds-ttl-tester functions into the ARTIQ
 runtime. Press 't' while the runtime starts to enter the test mode (reset the
 board to leave it).
 
 https://github.com/nist-ionstorage/nist-dds-ttl-tester#result

Great! I'll give this a try as soon as I can get Artiq running on the KC705. 
-Joe 
___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq


[ARTIQ] minutes for today's demo discussion

2015-02-23 Thread Britton, Joe
12:30pm 2/23 - notes by JWB

Today SB led a tour of user interface and controller features of Artiq. Most 
members of Ion Storage were present.

Demo of glade and GUI.

Interprocess Communication and Networking 
(IPChttps://docs.python.org/3.4/library/ipc.html) is used by Artiq for 
communication between architecture elements: master-GUI, master-controllers.
*   artiq_rpctool.py can be used to list the targets for any RPC-aware 
element
*   TRID is time run ID
*   Demo of LDA controller
o   artiq_ctlmgr.py
o   artiq_run.py
o   artiq_rpctool.py


Experiment results are recorded using HDF5 file format.
*   use h5dump to inspect a HDF5 file contents
*   status of Artiq code including .py file responsible for the experiment 
are linked via github commit 
IDhttp://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History  (e.g.
ca82a6dff817ec66f44342007202690a93763949)
*   copy of latest Parameters from Parameter Database is included in HDF5 
file.
*   Kyle requests a facility for quickly navigating Experiment Results on 
disk and plotting experiment output just as it would have looked when collected 
in the lab.


Joe Britton
NIST - Div 688
325 Broadway
Boulder, CO 80305
303.497.7295
brit...@nist.govmailto:brit...@nist.gov



___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq


Re: [ARTIQ] GUI: controls

2015-01-30 Thread Britton, Joe
It might be possible to auto-generate a GUI client for a device with an ARTIQ 
driver based on the existing command line clients we are writing using 
argparse. This would entail processing the parser object constructed in a 
command line client and auto-generating corresponding GUI client interface. 
This could have a couple benefits.
1. Any device with a useful command line client interface would automatically 
get an equivalent GUI client interface. 
2. This would prevent code duplication. 
3. It would ensure that we develop strong support for command line clients. 

-Joe 

Joe Britton
NIST - Div 688
325 Broadway
Boulder, CO 80305
303.497.7295
brit...@nist.gov

 -Original Message-
 From: ARTIQ [mailto:artiq-boun...@lists.m-labs.hk] On Behalf Of Sébastien
 Bourdeauducq
 Sent: Friday, January 30, 2015 12:27 AM
 To: artiq@lists.m-labs.hk
 Subject: [ARTIQ] GUI: controls
 
 Hi,
 
 I'd like to start more discussions about the GUI before coming. I've been
 prototyping some of those ideas (the Glade controls loading and argument
 passing should work already), and I invite you to have a look at the code and
 try it out so that we have a solid base of discussion.
 
 Please let me know your thoughts and questions.
 
 Sébastien
 
 
 Experiment registry
 ===
 
 The experiment registry is a small database hosted by the master that
 contains the list of the experiments to show in the GUI. Each entry contains
 essentially its name, the top-level experiment file, and the optional GUI 
 file.
 
 The master does not use the registry in any way other than providing access
 to the GUI clients.
 
 GUI controls
 
 
 The explorer window in the GUI has a two-column layout. The left column
 shows the list of the experiments from the registry and the right column
 shows the controls associated with the selected experiment in the list.
 
 Most options (scan parameters, fit selection, etc.) are part of those 
 controls.
 All the values of those options are passed as Arguments
 (http://m-
 labs.hk/artiq/manual/core_language_reference.html#artiq.language.db.Arg
 ument)
 to the experiment. This means that the data analysis is part of each
 experiment, though some generic library code can be provided for the
 experiments to use.
 
 When the user selects an experiment in the explorer, the client retrieves the
 GUI file from the master and executes it to define the controls by creating
 the appropriate widgets. When the experiment is scheduled, the client
 executes another part of the GUI file code to retrieve the information from
 the widgets and turn it into a set of Arguments. The Arguments are then sent
 to the scheduler along with the rest of the information about the run
 (filename, timeout, etc.).
 
 Glade
 =
 
 Glade (https://glade.gnome.org/) may be used to build the layout of the
 controls.
 
 Glade saves the GUI description as a separate XML file, and since the ARTIQ
 GUI file is running on the client, it needs to contact the master (where the
 experiment code is stored) to retrieve that XML file. This is done by using 
 the
 get_data coroutine that is passed to the code in the GUI file.
 
 The following example shows the use of Glade:
 https://github.com/m-
 labs/artiq/blob/master/examples/flopping_f_simulation_gui.py
 (we can probably factor the build and get_top_widget methods into a
 GladeControls abstract class and make it part of the ARTIQ APIs)
 ___
 ARTIQ mailing list
 https://ssl.serverraum.org/lists/listinfo/artiq
___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq


Re: [ARTIQ] artiq dependencies

2015-01-29 Thread Britton, Joe

 What about pointing out to known good version numbers of dependencies in
 the ARTIQ documentation?
[:: ] Agreed that that's a better solution. I propose we build into setup.py a 
pull of specific version numbers for external dependencies. This makes it 
straightforward for end users. And, provides a straightforward deployment path 
for upgrades. That is, pull a new copy of setup.py from m-labs's github and run 
install. 


 
 Duplicating and maintaining all the code from the dependencies will be
 painful, and will conflict with the package managers of Linux or Python
 distributions. Having a version number associated with each dependency is
 necessary anyway to report bugs, update them, etc.
 
 Sébastien
 
 ___
 ARTIQ mailing list
 https://ssl.serverraum.org/lists/listinfo/artiq
___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq


Re: [ARTIQ] ARTIQ development system

2014-11-05 Thread Britton, Joe
 
tutorialhttps://github.com/m-labs/artiq/blob/master/doc/manual/getting_started.rst
ojoin the mailing list artiq@lists.m-labs.hk
oask questions on IRC
· on the virtual machine a nice IRC client is xchat
· choose a nickname; please don't use rabi
· choose Debian Servers as the Network
· click Connect
· join the channel #m-labs


Joe Britton
NIST - Div 688
325 Broadway
Boulder, CO 80305
303.497.7295
brit...@nist.govmailto:brit...@nist.gov

From: ARTIQ [mailto:artiq-boun...@lists.m-labs.hk] On Behalf Of Joe Britton
Sent: Wednesday, November 05, 2014 10:19 AM
To: Sherman, Jeffrey A.
Cc: artiq@lists.m-labs.hk
Subject: Re: [ARTIQ] ARTIQ development system

Thank you for trying out the VM Jeff. And a big thanks for pointing out to the 
list that building the development toolchain is nontrivial. It took me about 20 
hours to build the Linux-based VM over the past couple days with Robert's help. 
This is on top of a partly successful but abandoned foray into a 
docker-distributed VM setup two weeks ago; another 20+ hours.

My expectation is that by the end of our contract with Sebastein an Artiq 
development environment will be relatively easy to install on a new Linux box. 
At this juncture however there is not an automated build process. I'm learning 
that while the necessary packaging may be straightforward it's a nontrivial 
undertaking.

In light of my efforts of the last two weeks I'd like to reiterate my 
recommendation that everybody who is not an m-labs employee not invest any time 
trying to port Artiq to any other OS or FPGA platform. This is an astonishingly 
deep rabbit hole...Let's focus our joint efforts on Ubuntu 14.04 Linux, Papilio 
Pro and the KC705.  Recall the discussion in this thread.

https://ssl.serverraum.org/lists-archive/artiq/2014-October/000121.html

Also note that a focus on Linux as a host OS for Master and MIGEN development 
does not preclude use of hardware with Windows-native device drivers. In this 
case the hardware would installed in a separate Windows PC and integrated with 
the Artiq ecosystem using the Controller infrastructure and ethernet. This note 
is in followup to Daniel's comment on the same thread.

https://ssl.serverraum.org/lists-archive/artiq/2014-October/000128.html

-Joe

On Wed, Nov 5, 2014 at 9:04 AM, Sherman, Jeffrey A. 
jeff.sher...@nist.govmailto:jeff.sher...@nist.gov wrote:
Awesome, thanks!

I've spent the last two fails utterly failing to build the toolchain using 
native OS X ports/packages. The year is 2014 and there are, like, six distinct 
C compilers presently installed on my system.  I've obtained a Papilio Pro now 
and will try your VM on the Mac today.


Jeff Sherman


National Institute of Standards and Technology

Time  Frequency Division

325 Broadway (Div 688)
Boulder, CO 80305  //   Office: 303-497-3511tel:303-497-3511


From: Britton, Joe joe.brit...@nist.govmailto:joe.brit...@nist.gov
Date: Tuesday, November 4, 2014 11:41 PM
To: artiq@lists.m-labs.hkmailto:artiq@lists.m-labs.hk 
artiq@lists.m-labs.hkmailto:artiq@lists.m-labs.hk
Subject: [ARTIQ] ARTIQ development system

I've setup a Linux virtual machine that's configured with everything that's 
needed to develop for Artiq. It's stand-alone and should work fine on Windows 7 
or OS X. It would be good to get a NIST volunteer to give it a spin. With 
feedback I'll improve the instructions and fix up any missing elements. -Joe

· VirtualBox
· Install Oracle VirtualBoxhttps://www.virtualbox.org/ on your 
computer (OS X or Windows 7)
· Download and install the VirtualBox Extension Pack
· Copy the xubuntu_artiq virtual machine disk image to your local hard 
disk.
· 
\\jake\68_PML\688\Public\penning_britton\shared\artiq\20141104_xubuntu_artiq
· 64-bit Xubuntu is used as the base image 
(xubuntu-14.04.1-desktop-amd64.iso).
· Xubuntu's window manager is xfce. xfce is more light weight than 
Gnome. I find the xfce user interface is much snappier on Windows and OS X 
hosts than Gnome.
· The virtual machine is setup to use 2 GB of host memory and 4 CPU 
cores. Change this if appopriate for your host.
· Updates to the Artiq development platform will be released in the 
form of a new disk image. Don't save user data on the virtual machine's disk. 
Instead use a folder shared between the Virtual Machine and the host PC.
· The VM's username is rabi. The password is the identity from last 
week.
· Directory structure
· The source code files needed for writing artiq scripts, compiling 
.bit files and programming FPGA boards are located at
· /home/rabi/artiq-dev
· artiq-related python modules are installed at 
/home/rabi/.local/lib/python3.4.  This is the prefered location for python 
packages that are under development

Re: [ARTIQ] DDS/TTL breakout boards

2014-09-26 Thread Britton, Joe
Sounds like a great idea Daniel. 

I took an inventory yesterday of the Papilio FPGA boards [1] and SCSI 68-pin 
TTL-bus/DDS-bus boards [2] designed by Robert  Sebastien. We have two copies 
of [1] and three copies of [2] (one of the latter needs stuffing). I will order 
a third copy of [1]. Robert, do we have the parts needed to stuff [2]? -Joe 

Joe Britton
NIST - Div 688
325 Broadway
Boulder, CO 80305
303.497.7295
brit...@nist.gov

 -Original Message-
 From: ARTIQ [mailto:artiq-boun...@lists.m-labs.hk] On Behalf Of Slichter,
 Daniel H.
 Sent: Friday, September 26, 2014 9:24 AM
 To: artiq@lists.m-labs.hk
 Subject: Re: [ARTIQ] DDS/TTL breakout boards
 
  FYI, Till has designed a breakout board from FMC directly to the DDSs
  (i.e., no cable in between, so the DDSs are collocated with the FPGA).
  We're using it in our zynq system, and it may be an easy way to get an
  artiq test system up and running.
 
 I checked out these boards yesterday and I think they would work quite well
 as a solution for most people, without requiring recourse to a distributed
 RTIO system.  Each breakout board fits on an LPC FMC and holds 11 DDS
 daughterboards and provides 28 galvanically-isolated TTLs, 21 outputs and 7
 inputs (it is possible to trade inputs for more outputs when building by
 choosing a different, pin-compatible isolator/level shifter chip).  With the
 KC705 and its two FMC connectors, this would mean 22 DDS channels, 42 TTL
 outputs, and 14 TTL inputs.  The pinout of the FMC is identical between the
 Zynq board and the KC705 (since it complies with FMC spec), so it's plug and
 play in that respect (although obviously the pinout needs to be coded
 appropriately in the FPGA).  And since Till has already done the design work,
 very little effort is needed to implement.  The only requirement is that we
 would need to build a box to hold the FPGA, DDSs, and TTLs and break them
 out to connectors on the f  ront panel, which is not very onerous.
 
 For those interested, in principle more DDS slots or TTLs could be added to
 each board with some minor tweaking, and I will work on this once I get the
 files from Till.  The boards are designed to use either the new AD9914 DDS
 daughterboards Till has designed for the clock folks or the old AD9858 DDS
 daughterboards that Quantum I/Quantum II/Penning have been using.
 
 All of this is not to say that we cannot/should not pursue the distributed 
 RTIO
 idea, which in the end gives more scalability, but I think at least for the
 immediate needs of just about everyone in the group, one or two of these
 FMC breakout boards would suffice, and they have the advantage of already
 existing and having been tested.  I will try to get some made in time for
 Sebastien's visit, but we can plan on using the Papilio Pro if they aren't 
 ready
 yet.
 
 Daniel
 ___
 ARTIQ mailing list
 https://ssl.serverraum.org/lists/listinfo/artiq
___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq


Re: [ARTIQ] August 2014 progress report

2014-08-27 Thread Britton, Joe
Typically, 0.5-1.5 MHz. -Joe 

Joe Britton
NIST - Div 688
325 Broadway
Boulder, CO 80305
303.497.7295
brit...@nist.gov

 -Original Message-
 From: ARTIQ [mailto:artiq-boun...@lists.m-labs.hk] On Behalf Of Sébastien
 Bourdeauducq
 Sent: Tuesday, August 26, 2014 7:38 PM
 To: artiq@lists.m-labs.hk
 Subject: Re: [ARTIQ] August 2014 progress report
 
 On 08/27/2014 12:44 AM, Britton, Joe wrote:
  With the Penning trap we are work with many more ions than the other
  labs. Often N=300 or more ions. In this case we collect many more
  photons to beat the projection noise limit (std_proj = 1/sqrt(N)).
  Often, N*10 so 30,000 events.
 
 In how much time, one second? A 30kHz event rate is not too high for the
 CPU to transfer them to a SDRAM buffer, which can easily be made very
 large.
 
 Sébastien
 
 ___
 ARTIQ mailing list
 https://ssl.serverraum.org/lists/listinfo/artiq
___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq


Re: [ARTIQ] cost estimates : master, chassis, custom bus

2014-07-30 Thread Britton, Joe
 this information and the figure of merit we calculated on Friday of 
wanting a minimum of 200 user I/O, I think we will probably have to go with a 
BGA FPGA and not be able to do the QFP design like what the PDQ uses, which was 
the idea for the simple board option.  Once we're talking BGA, then we need 
to send out to get boards stuffed for us.

Price-wise, an Artix-7 or Kintex-7 FGPA in the 50k-160k logic cells size range 
(approx. 5-16x the size of the PDQ FPGA, and sufficient even at the smallest 
size to hold an OpenRISC mor1kx processor in addition to other gateware if 
desired) will be between $80 (smallest Artix, lowest speed grade) and $500 
(largest Kintext, highest speed grade), with basically all prices in between 
represented by choosing the speed grade, number of user I/O, and number of 
logic cells.  The Kintex-7 can be clocked ~1.5-2 times as fast as the Artix-7 
for the internal logic, but the I/O rates are less than a factor of 1.5 faster.

Xilinx FPGA overview: 
http://www.xilinx.com/support/documentation/data_sheets/ds180_7Series_Overview.pdf
Artix-7 specs: 
http://www.xilinx.com/support/documentation/data_sheets/ds181_Artix_7_Data_Sheet.pdf
Kintex-7 specs: 
http://www.xilinx.com/support/documentation/data_sheets/ds182_Kintex_7_Data_Sheet.pdf

It seems to me that a good compromise between performance, size, and price 
would be the smallest Kintex-7 processor in a medium Kintex speed grade (-2).  
It would be fast enough (200 MHz+ clock) and large enough (65,000 logic cells) 
to efficiently run OpenRISC if desired with some space left over.  A package 
with 285 user I/O would cost $145 each at the 10-unit price break.  One could 
also get the next size up Kintex-7 (162,000 logic cells) that would be more 
than enough to run a whole experiment as the master, costing $250 apiece at the 
10-unit price break for 285 user I/O, or $286 apiece for a package with 400 
user I/O.  To compare, an Artix-7 with 100,000 logic cells in the highest Artix 
speed grade (-3) would need to be clocked ~1.5-2 times slower than the 
Kintex-7, but would cost $208 apiece (285 user I/0) or $256 apiece (400 user 
I/O) at the 10-unit price break.  For reference, the speed grade numbers cannot 
be directly compared between Artix and Kintex (e.g. fastest Artix speed grade 
is generally worse than slowest Kintex speed grade), but they have meaning 
within each of these families.

Ball pitch on all these packages is 1.0 mm so layout should be doable per the 
response from the Digicom designer.

Best,

Daniel


From: ARTIQ [mailto:artiq-boun...@lists.m-labs.hk] On Behalf Of Britton, Joe
Sent: Monday, July 28, 2014 2:32 PM
To: artiq@lists.m-labs.hkmailto:artiq@lists.m-labs.hk
Subject: [ARTIQ] cost estimates : master, chassis, custom bus

See attached market research on cost of the following components:

* Motherboard layout with FMC connector

* 3U Euro chassis

* Custom backplane


Joe Britton
NIST - Div 688
325 Broadway
Boulder, CO 80305
303.497.7295
brit...@nist.govmailto:brit...@nist.gov

___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq
Migen/MiSoC: please use de...@lists.m-labs.hk instead.