mirror of
https://github.com/m-labs/artiq.git
synced 2024-12-05 09:46:36 +08:00
213 lines
7.0 KiB
TeX
213 lines
7.0 KiB
TeX
[
|
|
thin/.style={line width=1.2pt}, % default line thickness
|
|
thick/.style={line width=1.8pt},
|
|
% ampersand replacement apparently necessary for sphinx latexpdf output (but not for html!)
|
|
ampersand replacement=\&
|
|
]
|
|
|
|
% artiq colors
|
|
\definecolor{brand}{HTML}{715ec7} % 'brand colour' violet
|
|
\definecolor{brand-light}{HTML}{a88cfd} % lighter brand colour
|
|
\definecolor{primary}{HTML}{0d3547}
|
|
\definecolor{secondary}{HTML}{1a6d93}
|
|
\definecolor{dingle}{HTML}{76c5d2}
|
|
\definecolor{rtm}{HTML}{3084bc} % RTM blue
|
|
% other colors used are tikz standard issue
|
|
|
|
% tikzstyle settings
|
|
\tikzstyle{every node} = [anchor = center, thin, minimum size = 1cm]
|
|
% the every matrix style is odd and can't be overriden (??) so its usefulness is limited
|
|
\tikzstyle{every matrix} = [anchor = north west, rounded corners]
|
|
\tikzstyle{matrices} = [thick, row sep = 0.3cm, column sep=0.3cm]
|
|
\tikzstyle{legend} = [draw = primary, thin, row sep=0.1cm, minimum width = 5cm, column sep = 0.2cm]
|
|
|
|
% particular node styles
|
|
\tikzstyle{label} = [minimum size = 0.5cm]
|
|
\tikzstyle{single} = [draw = brand, minimum width = 2 cm]
|
|
\tikzstyle{splits} = [draw = brand, rectangle split, solid]
|
|
\tikzstyle{linelabel} = [anchor = west, font=\sc\footnotesize]
|
|
\tikzstyle{colorbox} = [rectangle, very thin, draw=gray, sharp corners, minimum height = 0.4 cm, minimum width = 1.8 cm]
|
|
|
|
% color coding
|
|
\tikzstyle{line} = [thick]
|
|
\tikzstyle{network} = [line, draw = magenta]
|
|
\tikzstyle{git} = [line, draw = violet]
|
|
\tikzstyle{rtio} = [line, draw = brand-light]
|
|
\tikzstyle{drtio} = [line, draw = blue]
|
|
\tikzstyle{slow} = [line, draw = dingle]
|
|
\tikzstyle{jtag} = [line, draw = gray]
|
|
\tikzstyle{direct} = [line, draw = primary, thin]
|
|
|
|
\tikzstyle{master} = [draw = purple]
|
|
|
|
\tikzstyle{host} = [row sep = 0.5 cm, column sep = 0.7 cm]
|
|
\tikzstyle{pc} = [matrices, thin, inner sep = 0.2cm, draw = gray, dashed]
|
|
\tikzstyle{peripheral} = [matrices, draw = secondary]
|
|
\tikzstyle{core} = [matrices, draw = purple]
|
|
|
|
% PERIPHERALS (SLOW)
|
|
|
|
\matrix[peripheral](peri-slow) at (0, 15.75)
|
|
{
|
|
\node[label] (label){Peripherals (slow)};\\
|
|
\node [splits, rectangle split parts = 4](slow-list){
|
|
\nodepart{one} Optical translation stages
|
|
\nodepart{two} Optical rotation stages
|
|
\nodepart{three} Temperature controllers
|
|
\nodepart{four} etc...
|
|
};\\
|
|
};
|
|
|
|
% OTHER MACHINES
|
|
|
|
\matrix[pc](comtools) at (6.38, 15.75)
|
|
{
|
|
\node [splits, rectangle split parts = 3](remote-ctlrs){
|
|
\nodepart{one} Controller
|
|
\nodepart{two} Controller
|
|
\nodepart{three} etc...
|
|
}; \\
|
|
\node[single, minimum height = 0.5cm, font=\tt](remote-ctlmgr){
|
|
artiq\_ctlmgr\textsuperscript{2}
|
|
}; \\
|
|
};
|
|
|
|
\node[anchor = north west] (label) at (11, 16) {Client machines, NB: see footnote 1.};
|
|
|
|
\matrix[pc](clients) at (10.75, 15)
|
|
{
|
|
\node[single, draw=rtm, solid](remote-repo) {Cloned repository};
|
|
\&
|
|
\node [splits, master, rectangle split parts = 2, minimum width = 3 cm](remote-client){
|
|
\nodepart[font=\tt]{one} artiq\_client
|
|
\nodepart[font=\tt]{two} artiq\_dashboard
|
|
};
|
|
\\
|
|
};
|
|
|
|
% HOST MACHINE
|
|
|
|
\matrix[host](host-machine) at (0, 11)
|
|
{
|
|
\node[font=\tt, single](browser) {artiq\_browser};
|
|
\&
|
|
\node[single, master](results){Results};
|
|
\&
|
|
\node[splits, rectangle split parts = 2, master](master) {
|
|
\nodepart[font=\bf]{one} ARTIQ master
|
|
\nodepart{two} Datasets
|
|
};
|
|
\&
|
|
\node [single, master](repo){Repository};
|
|
\&
|
|
\node[font=\tt, single, master](ctlmgr) {artiq\_ctlmgr};
|
|
\\
|
|
|
|
\node[font=\tt, single](flash) {artiq\_flash};
|
|
\&
|
|
\node[font=\tt, single](run) {artiq\_run};
|
|
\&
|
|
\node[single, master](ddb) {Device database};
|
|
\&
|
|
\node[font=\tt, single](coremgmt) {artiq\_coremgmt\textsuperscript{3}};
|
|
\&
|
|
\node[single, master](builtin) {Built-in controllers\textsuperscript{4}};
|
|
\\
|
|
};
|
|
|
|
% BORDER LINE
|
|
\node[linelabel] (label1) at (-0.25, 6.3) {PCs AND REMOTE DEVICES};
|
|
\draw[primary, thick, dotted] (-0.5, 6) -- (19, 6);
|
|
\node[linelabel] (label2) at (0, 5.7) {REAL TIME HARDWARE};
|
|
|
|
% PERIPHERALS (FAST)
|
|
|
|
\matrix[peripheral](peri-fast) at (0, 5)
|
|
{
|
|
\node[label] (label){Peripherals (fast)};\\
|
|
\node [splits, rectangle split parts = 5](fast-list){
|
|
\nodepart{one} TTL in/out
|
|
\nodepart{two} DDS/Urukul
|
|
\nodepart{three} AWG/Phaser
|
|
\nodepart{four} DAC/Zotino
|
|
\nodepart{five} etc...
|
|
};\\
|
|
};
|
|
|
|
% CORE DEVICES
|
|
\matrix[core](core) at (6.75, 5)
|
|
{
|
|
\node[label] (label){Core device};\\
|
|
\node [splits, rectangle split parts = 2](core-list){
|
|
\nodepart{one} CPU
|
|
\nodepart{two} RTIO gateware
|
|
};\\
|
|
};
|
|
|
|
% SATELLITE
|
|
|
|
\matrix[core](satellite) at (6.25, 2)
|
|
{
|
|
\node[label] (label){Satellite core devices};\\
|
|
};
|
|
|
|
% legend
|
|
\matrix[legend] (legend) at (12, 5.5) {
|
|
\node [colorbox, fill=magenta] (network) {}; \& \node[label] (network-label) {Network}; \\
|
|
\node [colorbox, fill=brand-light] (rtio) {}; \& \node[label] (rtio-label) {RTIO}; \\
|
|
\node [colorbox, fill=dingle] (slow) {}; \& \node[label] (slow-label) {Slow IO}; \\
|
|
\node [colorbox, fill=blue] (drtio) {}; \& \node[label] (drtio-label) {DRTIO}; \\
|
|
\node [colorbox, fill=gray] (jtag) {}; \& \node[label] (jtag-label) {JTAG}; \\
|
|
\node [colorbox, fill=primary] (direct) {}; \& \node[label] (direct-label) {Local}; \\
|
|
\node [colorbox, fill=violet] (git) {}; \& \node[label] (git-label) {Git}; \\
|
|
};
|
|
|
|
%controllers
|
|
\draw[direct, dashed] (remote-ctlmgr.north) -- (remote-ctlrs);
|
|
\draw[slow] (slow-list.one east) -| +(0.5,0) |- (remote-ctlrs.one west);
|
|
\draw[slow] (slow-list.two east) -| +(0.8,0) |- (remote-ctlrs.two west);
|
|
\draw[slow] (slow-list.three east) -| +(1.1,0) |- (remote-ctlrs.three west);
|
|
\draw[direct] (remote-ctlrs.east) -| + (1, -2.25) -|(ctlmgr.70);
|
|
%ctlmgr
|
|
\draw[network, dashed] (remote-ctlmgr.west) -| +(-0.5, -1) -| (master.120);
|
|
|
|
% client
|
|
\draw[git] (remote-repo.south) -- +(0, -1) -| (repo.110);
|
|
\draw[network] (remote-client.south) -- +(0, -1.5) -| (master.90);
|
|
\draw[network] (remote-client.two east) -- +(0.7, 0) |- (builtin.east);
|
|
|
|
%host
|
|
\draw[direct] (browser) -- (results);
|
|
|
|
%master
|
|
\draw[direct] (results) -- (master);
|
|
\draw[direct] (master) -- (ddb);
|
|
\draw[direct] (master) -- (repo);
|
|
|
|
\draw[direct] (run) -- (ddb);
|
|
\draw[direct] (coremgmt) -- (ddb);
|
|
|
|
% ctlmgr
|
|
\draw[network] (master.60) -- +(0, 0.25) -| (ctlmgr.110);
|
|
\draw[network] (ctlmgr) -- (builtin);
|
|
|
|
% core connections
|
|
\draw[jtag] (flash.south) |- +(1, -1) -| (core.125);
|
|
\draw[network] (run.south) |- +(1, -0.75) -| (core.110);
|
|
\draw[network] (master.230) |- +(-1.25, -0.25) |- +(0, -2) -| (core.north);
|
|
\draw[network] (coremgmt.south) |- +(-0.75, -0.75) -| (core.70);
|
|
\draw[network] (builtin.south) |- +(-2, -1.1) -| (core.55);
|
|
%rtio
|
|
\node (branch) at (5, 2.5){};
|
|
\draw[rtio] (core-list.two west) |- +(-1, 0) |- (branch.center);
|
|
\draw[rtio] (branch.center) |- (fast-list.one east);
|
|
\draw[rtio] (branch.center) |- (fast-list.two east);
|
|
\draw[rtio] (branch.center) |- (fast-list.three east);
|
|
\draw[rtio] (branch.center) |- (fast-list.four east);
|
|
\draw[rtio] (branch.center) |- (fast-list.five east);
|
|
|
|
%drtio
|
|
\draw[drtio] (core-list.one east) |- +(1, 0) |- (satellite.east);
|
|
\draw[rtio] (satellite.west) -| +(-0.5, 0) |- (5, 2);
|
|
|