new design, add Kasli, DIO and Urukul

master
Sebastien Bourdeauducq 2018-02-02 01:11:27 +08:00
parent 73f39e6c68
commit 6c628f7b4d
39 changed files with 876 additions and 928 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*.html

View File

@ -1,79 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>M-Labs &raquo; open tools for open physics</title>
<link rel="stylesheet" type="text/css" media="screen" href="style.css" />
<link rel="icon" type="image/png" href="favicon.png" />
</head>
<body>
<div id="header">
<div id="headerinside">
<div id="logo"><a href="index.html"><img src="logo.png"></a></div>
<ul id="menu">
<li><a href="artiq/index.html">artiq</a></li>
<li><a href="solvespace/index.html">solvespace</a></li>
<li><a href="gateware.html">gateware</a></li>
<li><a href="video.html">video</a></li>
<li><a class="selected" href="about.html">about</a></li>
</ul>
</div>
</div>
<div id="container">
<div class="full">
<p>Milkymist was founded in summer 2007 by Sébastien Bourdeauducq. The open source project tackled the development of a system-on-chip design capable of running MilkDrop. The name "Milkymist" was chosen to evoke a parallel MilkDrop. The development was no small task, as it required designing and/or integrating a powerful 32-bit microprocessor core, basic peripherals, many interfaces, a fast SDRAM controller, and graphics acceleration. The video synthesizer born out of those efforts, the <a href="m1.html">Milkymist One</a>, was launched in September 2011 with the help of open hardware company Sharism at Work.</p>
<p>Components of the Milkymist system-on-chip soon found many other uses, such as <a href="jpl_letter.jpg">software-defined radio</a> on board the International Space Station. The community grew and activities diversified, with the development of a <a href="http://www.ohwr.org/projects/tdc-core/wiki">TDC core</a> for CERN (using a variant of the Milkymist SoC for integration), the <a href="gateware.html">Migen</a> logic design system and its application to the Rhino software-defined radio platform, and the <a href="mixxeo.html">Mixxeo</a> digital video mixer. In 2013, Milkymist was renamed to M-Labs to mark the more varied activities, and formally incorporated in Hong Kong as M-Labs Limited.</p>
<p>The company's current main project is <a href="artiq/index.html">ARTIQ</a>, a leading-edge open source control system for quantum information experiments. In 2016, Robert Jördens joined the directorate of the company to further develop ARTIQ and other physics-related projects.</p>
<h2>Getting there</h2>
<p>Our address is:<br />
M-Labs Limited<br />
Workshop 15B 6/F Block B1<br />
Yau Tong Industrial City<br />
17 Ko Fai Rd<br />
Yau Tong, Hong Kong
</p>
<p>It is a short walk from the Yau Tong MTR station. Take exit A2. Viewed from the MTR exit, Yau Tong Industrial City is inside that building:<br />
<img src="yautongindus.jpg"><br />
When entering from Ko Fai Road, get inside the courtyard, the entrance to Block B1 is in front of you on your left. Take the elevator or the stairs to the 6th floor. Call +852 59362721 if you get lost.
</p>
<p>For the purpose of US government contracts (<u>only</u>), use the following address: 5/F Yat Chau Building, 262 Des Voeux Road Central, Hong Kong.</p>
<h2>Contact</h2>
<p>We'd love to hear from you! Here is how you can communicate with us.</p>
<p>For sales inquiries, email sales@m-***s.hk. You may also write to Sébastien or Robert respectively at sb@m-***s.hk and rj@m-***s.hk. For questions regarding SolveSpace, write to Peter Zotov at pz@m-***s.hk.</p>
<p>For technical inquiries, ask on the <a href="https://webchat.freenode.net/?channels=m-labs">IRC channel #m-labs</a> on Freenode, open a GitHub issue in the relevant project, or write to the mailing list <a href="https://ssl.serverraum.org/lists/listinfo/devel">devel</a> (for Migen/MiSoC) or <a href="https://ssl.serverraum.org/lists/listinfo/artiq">ARTIQ</a>.</p>
<p>Patches should be sent via a GitHub pull request, or to the mailing list preferably using git-format-patch.</p>
</div>
</div>
<div id="footer">
<div id="footerinside">
<table width="100%"><tr>
<td><p><img src="logo_small.png"><br /><br />Open tools for open physics</p></td>
<td><p><b>M-Labs Limited</b><br />Workshop 15B 6/F Block B1<br />17 Ko Fai Road, Yau Tong<br />Hong Kong<br />+852-59362721</p></td>
<td><a href="https://webchat.freenode.net/?channels=m-labs">Freenode #m-labs</a><br />
GitHub: <a href="https://github.com/m-labs">m-labs</a><br />
Twitter: @<a href="http://twitter.com/M_Labs_Ltd">M_Labs_Ltd</a><br />
</td>
</tr></table>
</div>
</div>
</body>
</html>

21
about.page Normal file
View File

@ -0,0 +1,21 @@
{{{ header("About", "about") }}}
<h1>About</h1>
<p>Milkymist was founded in summer 2007 by Sébastien Bourdeauducq. The open source project tackled the development of a system-on-chip design capable of running MilkDrop. The name "Milkymist" was chosen to evoke a parallel MilkDrop. The development was no small task, as it required designing and/or integrating a powerful 32-bit microprocessor core, basic peripherals, many interfaces, a fast SDRAM controller, and graphics acceleration. The video synthesizer born out of those efforts, the <a href="m1.html">Milkymist One</a>, was launched in September 2011 with the help of open hardware company Sharism at Work.</p>
<p>Components of the Milkymist system-on-chip soon found many other uses, such as <a href="jpl_letter.jpg">software-defined radio</a> on board the International Space Station. The community grew and activities diversified, with the development of a <a href="http://www.ohwr.org/projects/tdc-core/wiki">TDC core</a> for CERN (using a variant of the Milkymist SoC for integration), the <a href="migen/index.html">Migen</a> logic design system and its application to the Rhino software-defined radio platform, and the <a href="mixxeo.html">Mixxeo</a> digital video mixer. In 2013, Milkymist was renamed to M-Labs to mark the more varied activities, and formally incorporated in Hong Kong as M-Labs Limited.</p>
<p>The company's current main project is <a href="artiq/index.html">ARTIQ</a>, a leading-edge open source control system for quantum information experiments. In 2016, Robert Jördens joined the directorate of the company to further develop ARTIQ and other physics-related projects.</p>
<h2>Contact</h2>
<p>We'd love to hear from you! Here is how you can communicate with us.</p>
<p>For sales inquiries, email sales@m-***s.hk. You may also write to Sébastien or Robert respectively at sb@m-***s.hk and rj@m-***s.hk. For questions regarding SolveSpace, write to Peter Zotov at pz@m-***s.hk.</p>
<p>For technical inquiries, ask on the <a href="https://webchat.freenode.net/?channels=m-labs">IRC channel #m-labs</a> on Freenode, open a GitHub issue in the relevant project, or write to the mailing list <a href="https://ssl.serverraum.org/lists/listinfo/devel">devel</a> (for Migen/MiSoC) or <a href="https://ssl.serverraum.org/lists/listinfo/artiq">ARTIQ</a>.</p>
<p>Patches should be sent via a GitHub pull request, or to the mailing list preferably using git-format-patch.</p>
<p>For the purpose of US government contracts (<u>only</u>), use the following address: 5/F Yat Chau Building, 262 Des Voeux Road Central, Hong Kong.</p>
{{{ footer() }}}

BIN
artiq.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

BIN
artiq/dio_bnc.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
artiq/dio_bnc_big.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 KiB

BIN
artiq/dio_sma.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
artiq/dio_sma_big.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

View File

@ -1,127 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>ARTIQ: Advanced Real Time Infrastructure for Quantum physics &raquo; M-Labs</title>
<link rel="stylesheet" type="text/css" media="screen" href="../style.css" />
<link rel="icon" type="image/png" href="../favicon.png" />
</head>
<body>
<div id="header">
<div id="headerinside">
<div id="logo"><a href="../index.html"><img src="../logo.png"></a></div>
<ul id="menu">
<li><a class="selected" href="index.html">artiq</a></li>
<li><a href="../solvespace/index.html">solvespace</a></li>
<li><a href="../gateware.html">gateware</a></li>
<li><a href="../video.html">video</a></li>
<li><a href="../about.html">about</a></li>
</ul>
</div>
</div>
<div id="container">
<div class="full">
<div style="float: right;"><img src="lab_hardware.png"></div>
<p>ARTIQ (Advanced Real-Time Infrastructure for Quantum physics) is a leading-edge control system for quantum information experiments. It was initiated and developed in partnership with the <a href="https://www.nist.gov/pml/time-and-frequency-division/ion-storage">Ion Storage Group</a> at NIST, and is now used and supported by a growing number of research institutions worldwide. While ARTIQ is currently mostly used by atomic physics groups, its applicability reaches beyond ion trapping.</p>
<p>Modern research on quantum information systems poses particular challenges to the control system:
<ul>
<li>dozens of signals need to be received and generated with extremely precise timing, in particular to ensure phase coherence</li>
<li>quantum error correction schemes require very low reaction latency in response to a measurement</li>
<li>real-world implementations of quantum gates, and a fortiori quantum algorithms, involve structurally complex protocols</li>
<li>ever-improving experimental techniques drive the need for a flexible and programmable system</li>
<li>the diversity of equipment, device drivers and data analysis software involved in a single experiment results in a distributed and multi-platform environment</li>
</ul>
</p>
<p><center><img src="nist_crate1.jpg"> <img src="nist_crate2.jpg"></center></p>
<h2>Enter ARTIQ</h2>
<div style="float: right;"><a href="gui_screenshot.png"><img src="gui_screenshot_small.jpg"></a></div>
<p>ARTIQ features a high-level programming language, based on Python, that helps describing complex experiments. It is compiled and executed on dedicated FPGA hardware with nanosecond timing resolution and sub-microsecond latency.</p>
<p>The time-critical code (a <i>kernel</i>) running on the FPGA (the <i>core device</i>) is easily interfaced with Python code on the computer using a remote procedure call (RPC) mechanism.</p>
<p>The FPGA design is highly portable so that it can adapt to different laboratory setups and resist hardware obsolescence.</p>
<p>ARTIQ drivers for non-realtime devices can be run on remote machines with different operating systems.</p>
<p>The project also includes a graphical user interface, an experiment scheduling system, and databases for experiments, devices, parameters and results.</p>
<p>Technologies employed include <a href="http://python.org">Python</a>, <a href="../gateware.html">Migen</a>, <a href="../gateware.html">MiSoC</a>/<a href="https://github.com/openrisc/mor1kx">mor1kx</a>, <a href="http://llvm.org">LLVM</a> and <a href="https://github.com/numba/llvmlite">llvmlite</a>.</p>
<p><center><img src="comp.svg" width="60%"></center></p>
<h2>Open source</h2>
<div style="float: right;"><a href="gui_screenshot_allcock.jpg"><img src="gui_screenshot_allcock_small.jpg"></a></div>
<p>Another goal of ARTIQ is to streamline and simplify the design flow of quantum physics instrumentation by promoting design reuse through the development of platform-independent, open-source hardware and software.</p>
<p>Our aim is to provide a control system suitable for the challenges of modern quantum information research, which is based on modular, parameterized and open components that allow physicists to rapidly design and deploy new experiments.</p>
<h2>Sinara hardware</h2>
<p>The ARTIQ core device currently uses hardware built in-house by physicists (based on a Xilinx KC705 development board with custom FMC cards). To improve the quality, features and scalability of ARTIQ systems, we are developing the Sinara device family. It aims at providing turnkey control hardware that is reproducible, open, flexible, modular, well-tested, and well-supported by the ARTIQ control software.</p>
<p>One of the main devices in the Sinara family is the Sayma card, which includes 8 channels of 2.4GSPS 16-bit DACs and a Kintex Ultrascale FPGA. The FPGA synthesizes waveforms for the DACs and our gateware supports two-tone direct digital synthesis and shaping of the waveform parameters with splines. Multiple Sayma cards can be installed in a MicroTCA chassis and synchronized.</p>
<p><center><img src="sayma_amc.jpg"> <img src="sayma_rtm.jpg"></center></p>
<div style="float: right;"><a href="http://www.ise.pw.edu.pl/"><img src="logo_ise.png"></a></div>
<p>The Sinara hardware is still in development, and more information is available <a href="https://github.com/m-labs/sinara/wiki">on the wiki</a>. Most of the hardware engineering is done at the <a href="http://www.ise.pw.edu.pl/">Institute for Electronics Systems</a> at the Warsaw University of Technology.</p>
<h2>Resources</h2>
<p>
<ul>
<li><a href="manual/">Manual</a> (<a href="manual-release-3/">for ARTIQ-3 release</a>, <a href="manual-release-2/">for ARTIQ-2 release</a>, <a href="manual-master/">for development version</a>)</li>
<li><a href="artiq_overview.pdf">Slides: Overview</a></li>
<li><a href="slides_timing.pdf">Slides: Timing control in ARTIQ</a></li>
<li><a href="https://ssl.serverraum.org/lists/listinfo/artiq">Public mailing list</a> - use for community technical support, questions, discussions, announcements</li>
<li><a href="https://github.com/m-labs/artiq">Source code repository</a></li>
<li>Commercial support available (ports to your hardware, feature development, technical support, bugfixing) - contact sales at m-labs.hk. We welcome inquiries from research groups of all sizes. <a href="https://github.com/m-labs/artiq/issues?q=is%3Aissue+is%3Aopen+label%3Atype%3Afor-contract">Proposed extensions</a>.</li>
<li>NIST press release: <a href="https://www.nist.gov/news-events/news/2015/01/open-source-software-quantum-information">Open-Source Software for Quantum Information</a></li>
</ul></p>
<h2>Users and contributors</h2>
<p>ARTIQ was initiated by the Ion Storage Group at NIST, and several other institutions have later contributed to ARTIQ and/or Sinara.</p>
<p>
<center><table>
<tr><td><a href="https://www.nist.gov/pml/time-and-frequency-division/ion-storage"><img src="logo_nist.png"></a></td>
<td><a href="https://www2.physics.ox.ac.uk/"><img src="logo_oxford.png"></a></td>
<tr><td><a href="http://jqi.umd.edu/"><img src="logo_jqi.png"></a></td>
<td><img src="logo_arl.png"></td></tr>
<tr><td><a href="http://www.duke.edu"><img src="logo_duke.png"></a></td>
<td><a href="https://www.qsim.uni-freiburg.de/"><img src="logo_freiburg.png"></a></td></tr>
</table></center>
</p>
</div>
</div>
<div id="footer">
<div id="footerinside">
<table width="100%"><tr>
<td><p><img src="../logo_small.png"><br /><br />Open tools for open physics</p></td>
<td><p><b>M-Labs Limited</b><br />Workshop 15B 6/F Block B1<br />17 Ko Fai Road, Yau Tong<br />Hong Kong<br />+852-59362721</p></td>
<td><a href="https://webchat.freenode.net/?channels=m-labs">Freenode #m-labs</a><br />
GitHub: <a href="https://github.com/m-labs">m-labs</a><br />
Twitter: @<a href="http://twitter.com/M_Labs_Ltd">M_Labs_Ltd</a><br />
</td>
</tr></table>
</div>
</div>
</body>
</html>

59
artiq/index.page Normal file
View File

@ -0,0 +1,59 @@
{{{ header("ARTIQ", "artiq") }}}
<h1>ARTIQ</h1>
<div style="float: right;"><img src="lab_hardware.png"></div>
<p>ARTIQ (Advanced Real-Time Infrastructure for Quantum physics) is a leading-edge control system for quantum information experiments. It was initiated and developed in partnership with the <a href="https://www.nist.gov/pml/time-and-frequency-division/ion-storage">Ion Storage Group</a> at NIST, and is now used and supported by a growing number of research institutions worldwide. While ARTIQ is currently mostly used by atomic physics groups, its applicability reaches beyond ion trapping.</p>
<p>Modern research on quantum information systems poses particular challenges to the control system:
<ul>
<li>dozens of signals need to be received and generated with extremely precise timing, in particular to ensure phase coherence</li>
<li>quantum error correction schemes require very low reaction latency in response to a measurement</li>
<li>real-world implementations of quantum gates, and a fortiori quantum algorithms, involve structurally complex protocols</li>
<li>ever-improving experimental techniques drive the need for a flexible and programmable system</li>
<li>the diversity of equipment, device drivers and data analysis software involved in a single experiment results in a distributed and multi-platform environment</li>
</ul>
</p>
<p><center><img src="nist_crate1.jpg"> <img src="nist_crate2.jpg"></center></p>
<h2>Enter ARTIQ</h2>
<div style="float: right;"><a href="gui_screenshot.png"><img src="gui_screenshot_small.jpg"></a></div>
<p>ARTIQ features a high-level programming language, based on Python, that helps describing complex experiments. It is compiled and executed on dedicated FPGA hardware with nanosecond timing resolution and sub-microsecond latency.</p>
<p>The time-critical code (a <i>kernel</i>) running on the FPGA (the <i>core device</i>) is easily interfaced with Python code on the computer using a remote procedure call (RPC) mechanism.</p>
<p>The FPGA design is highly portable so that it can adapt to different laboratory setups and resist hardware obsolescence.</p>
<p>ARTIQ drivers for non-realtime devices can be run on remote machines with different operating systems.</p>
<p>The project also includes a graphical user interface, an experiment scheduling system, and databases for experiments, devices, parameters and results.</p>
<p>Technologies employed include <a href="http://python.org">Python</a>, <a href="../gateware.html">Migen</a>, <a href="../gateware.html">MiSoC</a>/<a href="https://github.com/openrisc/mor1kx">mor1kx</a>, <a href="http://llvm.org">LLVM</a> and <a href="https://github.com/numba/llvmlite">llvmlite</a>.</p>
<p><center><img src="comp.svg" width="60%"></center></p>
<h2>Open source</h2>
<div style="float: right;"><a href="gui_screenshot_allcock.jpg"><img src="gui_screenshot_allcock_small.jpg"></a></div>
<p>Another goal of ARTIQ is to streamline and simplify the design flow of quantum physics instrumentation by promoting design reuse through the development of platform-independent, open-source hardware and software.</p>
<p>Our aim is to provide a control system suitable for the challenges of modern quantum information research, which is based on modular, parameterized and open components that allow physicists to rapidly design and deploy new experiments.</p>
<h2>Users and contributors</h2>
<p>ARTIQ was initiated by the Ion Storage Group at NIST, and several other institutions have later contributed to ARTIQ and/or Sinara.</p>
<p>
<center><table>
<tr><td><a href="https://www.nist.gov/pml/time-and-frequency-division/ion-storage"><img src="logo_nist.png"></a></td>
<td><a href="https://www2.physics.ox.ac.uk/"><img src="logo_oxford.png"></a></td>
<tr><td><a href="http://jqi.umd.edu/"><img src="logo_jqi.png"></a></td>
<td><img src="logo_arl.png"></td></tr>
<tr><td><a href="http://www.duke.edu"><img src="logo_duke.png"></a></td>
<td><a href="https://www.qsim.uni-freiburg.de/"><img src="logo_freiburg.png"></a></td></tr>
</table></center>
</p>
{{{ footer() }}}

BIN
artiq/kasli.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

15
artiq/resources.page Normal file
View File

@ -0,0 +1,15 @@
{{{ header("ARTIQ resources", "artiq") }}}
<h1>ARTIQ resources</h1>
<p>
<ul>
<li><a href="manual/">Manual</a> (<a href="manual-release-3/">for ARTIQ-3 release</a>, <a href="manual-release-2/">for ARTIQ-2 release</a>, <a href="manual-master/">for development version</a>)</li>
<li><a href="artiq_overview.pdf">Slides: Overview</a></li>
<li><a href="slides_timing.pdf">Slides: Timing control in ARTIQ</a></li>
<li><a href="https://ssl.serverraum.org/lists/listinfo/artiq">Public mailing list</a> - use for community technical support, questions, discussions, announcements</li>
<li><a href="https://github.com/m-labs/artiq">Source code repository</a></li>
<li>Commercial support available (Sinara hardware purchases, ports to your hardware, feature development, technical support, bugfixing) - contact sales@m-***s.hk. We welcome inquiries from research groups of all sizes. <a href="https://github.com/m-labs/artiq/issues?q=is%3Aissue+is%3Aopen+label%3Atype%3Afor-contract">Proposed extensions</a>.</li>
<li>NIST press release: <a href="https://www.nist.gov/news-events/news/2015/01/open-source-software-quantum-information">Open-Source Software for Quantum Information</a></li>
</ul></p>
{{{ footer() }}}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

31
artiq/sinara.page Normal file
View File

@ -0,0 +1,31 @@
{{{ header("ARTIQ Sinara hardware", "artiq") }}}
<h1>Sinara hardware</h1>
<div style="float: right;"><img src="sinara_logo.svg" height="80px"></div>
<p>The first ARTIQ core devices used hardware built in-house by physicists (based on a Xilinx KC705 development board with custom FMC cards). To improve the quality, features and scalability of ARTIQ systems, we have been developing the Sinara device family. It aims at providing turnkey control hardware that is reproducible, open, flexible, modular, well-tested, and well-supported by the ARTIQ control software.</p>
<p>The Sinara hardware is in active development, and the latest information is available <a href="https://github.com/m-labs/sinara/wiki">on the wiki</a>. Most of the hardware engineering is done at the <a href="http://www.ise.pw.edu.pl/">Institute for Electronics Systems</a> at the Warsaw University of Technology.</p>
<h2>Kasli</h2>
<p>One of the main devices in the Sinara family is the Kasli core device. It contains an Artix-7 100T FPGA, DDR3 SDRAM, three SFP connectors, and can control up to 8 daughtercards (Eurocard Extension Module, EEM). The Kasli and its EEMs are installed in one Eurocard 3U chassis. One SFP connector is used for a Gigabit Ethernet connection to your computer network.</p>
<p><center><img src="kasli.jpg"></center></p>
<h2>TTL I/O EEMs</h2>
<p>For simple TTL signals, we offer I/O cards with 8 channels over BNC or SMA connectors in the EEM form factor. The IOs are divided into two banks of 4, with per-bank ground isolation. The direction (input/output) and termination (high-Z/50R) is selectable on a per-channel basis via I2C or on-board switches. Outputs can supply 5V into 25Ohm, and can tolerate an indefinite short-circuit to ground.</p>
<p><center><img src="dio_bnc.jpg"> <img src="dio_sma.jpg"></center></p>
<h2>Urukul DDS card</h2>
<p>Urukul is a 4 channel DDS-based frequency synthesizer for the EEM form factor. It provides sub-Hz frequency resolution, controlled phase steps, and accurate output amplitude control. We offer it in two variants, with either the AD9910 or the AD9912 chip.</p>
<p><center><img src="urukul.jpg"></center></p>
<h2>Purchasing Sinara hardware</h2>
<p>Kasli and most EEMs can be ordered now. We can deliver a rack-mountable crate that contains all the cards, is fully tested, and is ready to be connected to your experiment and computer network. Contact sales@m-***s.hk with your requirements and we will establish a quote.</p>
<h2>Metlino and Sayma</h2>
For more demanding experiments, we have been developing the Metlino and Sayma system. One Sayma card includes 8 channels of 2.4GSPS 16-bit DACs and a Kintex Ultrascale FPGA. The FPGA synthesizes waveforms for the DACs and our gateware supports two-tone direct digital synthesis and shaping of the waveform parameters with splines. Multiple Sayma cards can be installed in a MicroTCA chassis together with one Metlino master. Clock synchronization will be supported.</p>
{{{ footer() }}}

185
artiq/sinara_logo.svg Normal file
View File

@ -0,0 +1,185 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
xml:space="preserve"
width="455.26877"
height="211.228"
viewBox="0 0 455.26877 211.228"
sodipodi:docname="sinara_logo.svg"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"><metadata
id="metadata8"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs6"><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath20"><path
d="M 0,0.285156 H 6118.32 V 7918.1952 H 0 Z"
id="path18"
inkscape:connector-curvature="0"
style="clip-rule:evenodd" /></clipPath></defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1124"
id="namedview4"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="0.22348485"
inkscape:cx="-428.87989"
inkscape:cy="34.960012"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="g10" /><g
id="g10"
inkscape:groupmode="layer"
inkscape:label="ink_ext_XXXXXX"
transform="matrix(1.3333333,0,0,-1.3333333,-11.320569,704.26798)"><g
id="g12"
transform="scale(0.1)"><g
id="g14"><g
id="g16"
clip-path="url(#clipPath20)"><path
d="m 1397.45,3760.15 c 25.22,0 45.62,20.12 45.62,44.49 -0.28,24.66 -20.97,44.78 -45.91,44.78 -24.94,0 -45.62,-20.4 -45.62,-45.06 0,-24.37 20.97,-44.49 45.91,-44.21"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path22"
inkscape:connector-curvature="0" /><path
d="m 324.211,4627.36 52.144,-47.33 c 1.418,0.85 2.266,1.7 3.403,2.55 101.457,87 217.082,162.38 344.328,224.17 162.105,79.07 300.404,120.44 435.584,130.36 12.19,1.14 23.53,1.42 34.58,1.42 45.06,0 83.32,-7.65 117.32,-23.52 37.41,-17.57 56.4,-46.76 56.12,-87.57 -0.28,-31.74 -9.64,-63.49 -28.62,-97.21 -13.32,-23.52 -28.06,-46.76 -42.8,-69.43 -5.95,-9.35 -12.18,-19.27 -18.14,-28.91 l 49.88,-46.48 c 39.68,49.31 82.76,109.96 102.88,183.36 1.98,8.5 3.97,17.29 5.95,25.79 0.85,3.97 1.7,7.94 2.83,11.62 v 42.79 c -0.28,0.85 -0.85,1.42 -0.85,2.27 -0.85,1.99 -1.41,3.69 -1.7,5.95 -9.92,58.95 -44.49,100.04 -104.57,126.11 -38.55,16.73 -80.49,20.98 -116.2,22.96 -11.05,0.85 -22.67,1.13 -34.01,1.13 -58.94,0 -120.16,-8.21 -187.039,-25.78 -230.403,-58.95 -448.34,-171.18 -647.571,-333.28 -5.382,-4.54 -10.769,-9.35 -16.437,-14.74 -2.266,-1.98 -4.531,-3.97 -7.082,-6.23"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path24"
inkscape:connector-curvature="0" /><path
d="m 467.609,4792.29 c 14.739,10.21 28.625,19.28 43.36,26.93 17.574,9.07 23.523,22.39 26.926,38.82 19.835,96.64 47.043,173.16 85.585,240.33 22.106,38.54 44.493,66.31 71.133,87.28 44.492,35.15 90.688,35.15 135.184,0.29 27.488,-21.82 50.16,-49.31 69.148,-83.6 10.77,-20.13 20.973,-40.53 31.172,-61.5 4.535,-8.5 8.504,-17.57 12.754,-26.64 l 70.849,18.14 c -5.67,11.61 -11.33,22.95 -17.001,34.29 -13.039,26.64 -25.223,52.14 -39.961,76.8 -48.461,81.9 -102.309,124.7 -174.008,138.58 h -41.375 c -59.516,-11.62 -108.824,-45.35 -149.918,-103.72 -17.57,-24.94 -33.727,-51.02 -46.762,-76.81 -36.558,-70.85 -62.632,-152.46 -82.754,-256.47 -2.832,-14.74 -5.101,-29.47 -7.652,-45.06 -0.848,-5.95 -1.984,-11.91 -2.832,-18.14 5.383,3.68 10.77,7.37 16.152,10.48"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path26"
inkscape:connector-curvature="0" /><path
d="m 404.129,4150.11 c -15.871,-1.42 -30.891,-3.12 -46.195,-3.68 -9.067,-0.57 -17.571,-0.57 -25.789,-0.57 -35.141,0 -65.75,3.97 -93.239,12.47 -3.968,1.42 -7.933,2.83 -11.902,3.97 -55.832,20.68 -79.352,62.34 -67.734,120.16 10.769,52.43 37.976,96.35 65.183,136.03 5.668,7.94 11.617,15.59 17.57,23.24 2.266,3.12 4.536,5.95 6.801,9.07 l -51.293,48.18 c -37.41,-44.78 -82.187,-105.71 -102.8747,-179.96 -15.586,-56.97 -11.0547,-108.83 13.8867,-149.36 24.937,-40.8 68.582,-69.43 126.961,-83.03 30.324,-7.09 62.066,-10.77 97.492,-10.77 18.703,0 37.973,1.13 59.512,2.83 12.187,1.14 24.375,2.84 36.844,4.54 5.101,0.56 9.918,1.41 14.453,1.98 l -18.989,66.88 c -7.086,-0.85 -13.886,-1.41 -20.687,-1.98"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path28"
inkscape:connector-curvature="0" /><path
d="m 331.863,4145.86 c 8.215,0 17.004,0 26.071,0.85 -9.067,-0.85 -17.856,-0.85 -26.071,-0.85"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path30"
inkscape:connector-curvature="0" /><path
d="m 238.621,4158.61 c 27.492,-8.78 58.098,-12.75 93.524,-12.75 -35.426,0 -66.032,3.97 -93.524,12.75"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path32"
inkscape:connector-curvature="0" /><path
d="m 332.996,4075.86 c -35.711,0 -67.449,3.68 -97.492,10.77 30.043,-7.09 61.781,-10.77 97.492,-10.77"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path34"
inkscape:connector-curvature="0" /><path
d="m 392.508,4078.98 c -21.82,-1.99 -41.094,-3.12 -59.512,-3.12 18.418,0 37.692,1.13 59.512,3.12"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path36"
inkscape:connector-curvature="0" /><path
d="m 950.809,4743.55 c -2.836,20.12 -5.954,39.68 -9.071,59.23 -1.984,9.63 -29.191,30.04 -40.527,30.04 -1.133,0 -1.699,0 -2.266,-0.57 -20.687,-6.8 -40.527,-14.73 -61.781,-22.95 -7.086,-2.84 -14.172,-5.67 -21.539,-8.22 l 138.301,-77.94 -3.117,20.41"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path38"
inkscape:connector-curvature="0" /><path
d="m 503.887,4623.67 c -1.703,-1.42 -3.117,-2.55 -4.821,-3.68 -2.55,-1.99 -4.535,-3.69 -7.086,-5.67 -14.167,-10.49 -27.203,-20.97 -41.375,-30.32 -13.601,-9.64 -18.703,-19.84 -16.437,-34.3 0.566,-3.11 0.566,-7.08 0.566,-10.48 0,-5.95 0,-11.9 2.27,-14.17 16.437,-14.74 34.289,-28.06 52.996,-42.51 2.832,-1.99 5.949,-4.54 9.066,-7.09 1.704,-1.13 3.118,-2.26 4.821,-3.68 0.847,-0.85 1.699,-1.42 2.832,-1.98 v 155.87 c -1.133,-0.57 -1.985,-1.42 -2.832,-1.99"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path40"
inkscape:connector-curvature="0" /><path
d="m 633.684,4889.79 0.566,0.28 c 17.004,8.5 33.723,16.72 51.578,25.79 l 19.84,9.63 -85.023,31.18 -19.555,-67.17 c 8.785,-3.97 13.039,-5.95 16.723,-5.95 2.832,0 5.949,1.41 10.203,3.4 1.699,1.13 3.964,1.7 5.668,2.84"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path42"
inkscape:connector-curvature="0" /><path
d="m 628.016,4886.95 c 1.699,1.13 3.964,1.7 5.949,3.12 h 0.285 -0.285 c -1.985,-1.42 -4.25,-1.99 -5.949,-3.12"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path44"
inkscape:connector-curvature="0" /><path
d="m 1200.2,4455.62 -50.73,47.04 c -4.53,-12.19 -10.49,-69.15 -7.37,-95.51 l 58.1,48.47"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path46"
inkscape:connector-curvature="0" /><path
d="m 606.191,4196.3 c -1.414,0 -2.832,-0.28 -3.117,-0.56 -0.566,-0.85 -0.847,-3.97 -0.281,-6.52 4.535,-15.59 8.785,-30.89 13.602,-47.61 l 3.968,-14.17 72.832,25.79 -14.734,7.93 c -23.809,11.91 -46.195,23.24 -68.867,34.58 -0.567,0.28 -1.985,0.56 -3.403,0.56"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path48"
inkscape:connector-curvature="0" /><path
d="m 762.348,4497.27 c 25.504,0 45.625,20.13 45.625,45.07 0,24.09 -20.973,44.49 -45.91,44.21 -24.938,0 -45.911,-20.41 -45.629,-44.78 0.285,-24.66 20.972,-44.78 45.914,-44.5"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path50"
inkscape:connector-curvature="0" /><path
d="m 765.465,4714.36 c 51.293,0 102.305,-21.54 137.449,-62.91 33.723,-39.97 46.191,-90.13 39.109,-137.45 3.399,-22.68 20.403,-65.75 82.467,-139.44 0,0 196.12,-244.85 333.85,-418.01 6.52,-7.37 32.3,-33.16 58.95,-41.94 24.37,-5.11 47.32,-17.57 64.33,-37.7 39.39,-46.48 32.87,-115.34 -14.46,-154.17 -20.97,-16.72 -46.76,-24.94 -71.7,-24.94 -32.02,0 -64.05,13.33 -86.15,39.4 -15.31,18.13 -23.81,39.96 -25.22,61.5 0,1.13 -0.29,5.1 -0.29,5.66 -2.55,25.23 -26.07,57.82 -35.14,69.72 l -364.734,386.56 c -62.914,73.97 -103.727,97.77 -126.113,105.14 -48.461,1.98 -96.075,23.52 -129.231,62.63 -63.199,74.25 -52.996,184.21 22.953,245.99 33.442,26.64 73.969,39.96 113.93,39.96 z m -41.379,-276.03 111.945,18.7 39.391,104.01 -72.266,85.87 -112.226,-18.7 -39.676,-104.3 z m 647.574,-700 71.98,12.47 24.94,66.88 -46.76,54.7 -71.7,-12.19 -25.23,-66.88 46.77,-54.98"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path52"
inkscape:connector-curvature="0" /><path
d="m 874.004,4212.46 v 0.28 c -120.441,44.21 -238.055,104.58 -350.281,179.39 -121.012,81.06 -210.567,160.41 -280.567,248.83 -43.359,54.41 -68.297,100.04 -81.051,148.5 -15.304,56.4 0.567,99.19 45.344,123 11.336,5.67 23.805,10.48 37.41,14.45 37.125,10.48 77.368,13.6 124.411,9.92 6.234,-0.57 12.468,-1.13 18.703,-1.7 7.086,-0.85 13.605,-1.13 20.972,-1.99 l 15.59,-1.13 18.985,67.17 c -4.532,0.56 -9.352,1.13 -14.168,1.7 -12.469,1.41 -24.09,3.12 -35.707,4.25 -23.243,1.98 -43.364,2.83 -62.352,2.83 -42.793,0 -80.484,-5.1 -114.207,-15.87 -72.27,-22.67 -113.93,-64.05 -128.0977,-126.68 -9.3516,-43.07 -2.836,-88.98 21.5387,-144.25 30.039,-68.86 77.082,-133.48 147.934,-203.76 156.437,-155.02 344.898,-274.33 575.867,-364.74 15.871,-6.23 31.742,-11.62 48.465,-17.57 7.082,-2.55 14.168,-5.1 21.535,-7.65 l 11.902,40.52 -42.226,44.5"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path54"
inkscape:connector-curvature="0" /><path
d="m 1438.82,4278.49 c -0.57,1.14 -1.41,2.55 -1.41,4.25 -5.11,38.55 -18.99,77.65 -43.08,120.16 -39.4,68.58 -93.24,133.48 -168.91,202.92 -18.99,17.57 -38.54,33.72 -58.95,51.01 -7.93,7.08 -16.43,14.17 -25.22,21.54 0,-0.57 0,-0.57 0,-0.85 -0.28,-1.7 -0.28,-2.55 -0.28,-3.12 l 0.57,-18.42 c 1.13,-22.1 1.98,-44.78 3.4,-67.17 0.28,-3.4 3.11,-7.93 7.65,-12.18 10.48,-10.77 21.25,-20.69 31.74,-30.89 18.99,-17.58 38.54,-35.99 56.4,-55.27 56.96,-60.93 94.08,-117.04 115.62,-176.27 10.2,-27.49 13.61,-52.43 10.2,-75.1 -5.66,-38.26 -30.32,-64.05 -75.38,-78.79 -12.19,-3.97 -24.65,-7.36 -37.69,-9.63 l 48.18,-60.65 c 7.36,2.27 14.73,4.53 22.38,7.37 61.22,23.52 97.78,62.63 111.1,119.59 l 4.53,17.86 v 42.51 c -0.28,0.28 -0.28,0.56 -0.85,1.13"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path56"
inkscape:connector-curvature="0" /><path
d="m 988.781,4848.13 c 3.117,-23.81 6.235,-47.9 9.071,-71.42 7.368,-53.28 14.448,-108.26 18.418,-162.96 4.25,-52.71 4.54,-107.41 1.14,-164.37 l 64.33,-81.34 c 1.42,16.44 3.12,33.16 4.25,50.17 9.07,121.86 5.39,241.74 -11.62,356.51 -3.4,24.09 -7.65,47.62 -12.19,72.27 -1.41,10.49 -3.4,21.26 -5.66,31.74 l -69.438,-17 c 0,-1.14 0.285,-2.55 0.285,-3.4 0.567,-3.69 1.133,-7.09 1.414,-10.2"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path58"
inkscape:connector-curvature="0" /><path
d="m 960.16,4121.49 c -11.621,-35.71 -24.656,-68.59 -39.676,-100.04 -19.554,-40.53 -45.629,-86.72 -88.421,-121.58 -45.911,-37.13 -94.372,-37.13 -140,0.28 -29.192,24.09 -53.844,56.12 -77.368,101.17 -32.875,62.07 -56.965,131.79 -77.367,224.74 l -0.285,1.99 c -1.133,3.96 -2.266,9.35 -4.535,11.05 -20.688,13.32 -41.094,26.07 -63.481,39.67 -4.816,3.69 -10.484,6.52 -15.586,9.92 0.848,-4.53 1.7,-9.06 2.266,-13.6 2.266,-12.47 3.969,-24.09 6.52,-35.99 22.953,-119.03 52.711,-206.6 96.07,-282.55 37.125,-65.47 87.855,-135.47 183.644,-154.74 h 40.809 c 88.707,17.57 137.734,79.64 174.293,138.58 9.633,15.59 18.137,31.46 25.789,46.77 11.617,24.37 22.388,49.88 32.308,75.66 l -54.98,58.67"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path60"
inkscape:connector-curvature="0" /><path
d="m 1935.62,4631.32 h 101.74 v 15.02 l -183.92,397.33 h -44.78 l -183.08,-397.33 v -15.02 h 101.74 l 23.81,51.3 h 160.69 z m -57.53,140.29 h -93.24 l 45.92,106.84 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path62"
inkscape:connector-curvature="0" /><path
d="m 2363.84,4775.57 c 102.87,69.72 73.97,262.15 -85.87,262.72 -59.51,0 -119.88,0 -178.54,0 0,-136.04 0,-271.5 0,-406.97 33.72,0 69.15,0 104,0 v 119.88 h 54.14 l 69.71,-119.88 h 116.2 v 15.02 z m -85.87,68.02 h -74.54 c 0,32.59 0,68.58 0,101.74 24.38,0 49.88,0.57 74.54,0 59.23,-0.56 56.4,-101.74 0,-101.74"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path64"
inkscape:connector-curvature="0" /><path
d="m 2576.11,4945.33 v -314.01 c 34.29,0 68.58,0 102.87,0 v 314.01 h 99.47 c 0,31.46 0,62.35 0,92.96 h -302.38 c 0,-30.61 0,-61.5 0,-92.96 h 100.04"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path66"
inkscape:connector-curvature="0" /><path
d="m 2971.73,4722.58 v 225.02 h 47.9 v 90.69 h -198.38 v -90.69 h 47.61 v -225.02 h -51.58 v -91.26 h 206.31 v 91.26 h -51.86"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path68"
inkscape:connector-curvature="0" /><path
d="m 3499.42,4631.32 v 13.32 l -41.94,69.15 c 20.41,32.03 32.59,72.27 32.59,120.45 0,281.41 -417.73,281.41 -417.73,0 0,-187.9 187.89,-249.96 311.17,-184.21 l 9.92,-18.71 z m -319.96,202.92 c 0,146.51 203.49,146.51 203.49,0 0,-147.65 -203.49,-147.65 -203.49,0"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path70"
inkscape:connector-curvature="0" /><path
d="m 1643.72,4206.22 c 13.89,-71.98 81.33,-87.85 135.46,-87.85 73.12,0 125.55,29.19 125.55,96.64 0,75.67 -65.75,91.25 -107.69,99.47 -51.58,9.92 -84.17,16.72 -84.17,50.45 0,28.62 23.24,43.64 62.63,43.64 41.95,0 64.62,-17.28 72.27,-45.91 l 54.13,14.17 c -14.74,52.71 -60.65,80.2 -129.8,80.2 -75.67,0 -121.58,-32.02 -121.58,-94.94 0,-63.76 49.03,-80.2 90.12,-89.55 56.97,-12.19 101.74,-15.02 101.74,-58.66 0,-32.59 -24.93,-47.61 -63.2,-47.61 -49.02,0 -75.66,24.37 -79.63,54.69 l -55.83,-14.74"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path72"
inkscape:connector-curvature="0" /><path
d="m 1971.33,4124.89 h 60.93 v 325.63 h -60.93 v -325.63"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path74"
inkscape:connector-curvature="0" /><path
d="m 2406.92,4124.89 v 325.63 h -61.22 v -160.41 c 0,-34.29 0.57,-66.32 0.57,-66.88 h -1.13 l -165.79,227.29 h -62.64 v -325.63 h 60.93 v 158.13 c 0,38.55 -1.13,73.41 -1.13,73.97 h 1.7 L 2344,4124.89 h 62.92"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path76"
inkscape:connector-curvature="0" /><path
d="m 2705.05,4201.69 28.63,-76.8 h 63.2 l -127.25,325.63 h -73.97 l -127.25,-325.63 h 62.35 l 28.34,76.8 z m -19.27,52.99 h -107.4 l 21.53,58.67 31.46,86.15 h 1.7 c 0.57,-0.85 8.79,-26.92 29.47,-82.75 l 23.24,-62.07"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path78"
inkscape:connector-curvature="0" /><path
d="m 3052.79,4124.89 h 65.75 l -80.21,132.06 c 38.26,11.05 66.88,40.53 66.88,90.69 0,64.61 -48.17,102.88 -131.5,102.88 h -116.75 v -325.63 h 60.93 v 119.88 h 28.62 c 6.24,0 23.24,0 33.72,0.56 z m -134.9,167.49 v 102.87 h 58.66 c 42.51,0 66.32,-16.15 66.32,-51.01 0,-34.29 -22.67,-51.86 -66.32,-51.86 h -58.66"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path80"
inkscape:connector-curvature="0" /><path
d="m 3395.13,4201.69 28.62,-76.8 h 63.2 l -127.24,325.63 h -73.97 l -127.25,-325.63 h 62.35 l 28.34,76.8 z m -19.27,52.99 h -107.41 l 21.54,58.67 31.46,86.15 h 1.7 c 0.56,-0.85 8.78,-26.92 29.47,-82.75 l 23.24,-62.07"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path82"
inkscape:connector-curvature="0" /></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 18 KiB

BIN
artiq/urukul.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

View File

@ -1,93 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>M-Labs &raquo; open tools for open physics</title>
<link rel="stylesheet" type="text/css" media="screen" href="style.css" />
<link rel="icon" type="image/png" href="favicon.png" />
</head>
<body>
<div id="header">
<div id="headerinside">
<div id="logo"><a href="index.html"><img src="logo.png"></a></div>
<ul id="menu">
<li><a href="artiq/index.html">artiq</a></li>
<li><a href="solvespace/index.html">solvespace</a></li>
<li><a class="selected" href="gateware.html">gateware</a></li>
<li><a href="video.html">video</a></li>
<li><a href="about.html">about</a></li>
</ul>
</div>
</div>
<div id="container">
<div class="full">
<h2>Migen</h2>
<div style="float: right;"><img src="migen.svg"></div>
<p>Migen is a Python-based tool that automates further the VLSI design process.</p>
<p>Despite being faster than schematics entry, hardware design with Verilog and VHDL remains tedious and inefficient for several reasons. The event-driven model introduces issues and manual coding that are unnecessary for synchronous circuits, which represent the lion's share of today's logic designs. Counter-intuitive arithmetic rules result in steeper learning curves and provide a fertile ground for subtle bugs in designs. Finally, support for procedural generation of logic (metaprogramming) through "generate" statements is very limited and restricts the ways code can be made generic, reused and organized.</p>
<p>To address those issues, we have developed the Migen FHDL library that replaces the event-driven paradigm with the notions of combinatorial and synchronous statements, has arithmetic rules that make integers always behave like mathematical integers, and most importantly allows the design's logic to be constructed by a Python program. This last point enables hardware designers to take advantage of the richness of the Python language - object oriented programming, function parameters, generators, operator overloading, libraries, etc. - to build well organized, reusable and elegant designs.</p>
<p>Other Migen libraries are built on FHDL and provide various tools such as a system-on-chip interconnect infrastructure, a dataflow programming system, a more traditional high-level synthesizer that compiles Python routines into state machines with datapaths, and a simulator that allows test benches to be written in Python.</p>
<p>Migen is the foundation for MiSoC, and is also used in the <a href="http://www.rhinoplatform.org">Rhino</a> software-defined radio platform.</p>
<p>You can find the Migen source <a href="http://github.com/m-labs/migen">here</a>, released under the permissive BSD license</a>.</p>
<p>
<b>Documentation</b>
<ul>
<li><a href="migen/manual">User guide</a></li>
<li><a href="migen/tutorial.pdf">Tutorial: An introduction to Migen</a></li>
<li><a href="migen/slides.pdf">Lecture slides</a></li>
</ul>
</p>
<h2>MiSoC</h2>
<p>Built on Migen, MiSoC provides a high performance, flexible and lightweight solution to build system-on-chips for various applications.</p>
<p><ul>
<li>CPU options:<ul>
<li>LatticeMico32, modified to include an optional MMU (experimental).</li>
<li><a href="https://github.com/openrisc/mor1kx">mor1kx</a>, a better OpenRISC implementation.</li>
</ul></li>
<li>Memory controller supports SDR, DDR, LPDDR, DDR2 and DDR3.</li>
<li>Provided peripherals: UART, GPIO, timer, GPIO, NOR flash controller, SPI flash controller, Ethernet MAC, and more.</li>
<li>High performance: on Spartan-6, 83MHz system clock frequencies, 10+Gbps DDR SDRAM bandwidth, 1080p 32bpp framebuffer, etc.</li>
<li>Low resource usage: basic implementation fits easily in Spartan-6 LX9.</li>
<li>Portable and easy to customize thanks to Python- and Migen-based architecture.</li>
<li>Design new peripherals using Migen and benefit from automatic CSR maps and logic, simplified DMAs, etc.</li>
<li>Possibility to encapsulate legacy Verilog/VHDL code.</li>
</ul></p>
<p>MiSoC source is <a href="http://github.com/m-labs/misoc">here</a>, mostly covered by the permissive BSD license</a>.
</div>
</div>
<div id="footer">
<div id="footerinside">
<table width="100%"><tr>
<td><p><img src="logo_small.png"><br /><br />Open tools for open physics</p></td>
<td><p><b>M-Labs Limited</b><br />Workshop 15B 6/F Block B1<br />17 Ko Fai Road, Yau Tong<br />Hong Kong<br />+852-59362721</p></td>
<td><a href="https://webchat.freenode.net/?channels=m-labs">Freenode #m-labs</a><br />
GitHub: <a href="https://github.com/m-labs">m-labs</a><br />
Twitter: @<a href="http://twitter.com/M_Labs_Ltd">M_Labs_Ltd</a><br />
</td>
</tr></table>
</div>
</div>
</body>
</html>

103
generate.py Executable file
View File

@ -0,0 +1,103 @@
#!/usr/bin/env python3
import os
import re
#
#'ssdf'
class PageMethods:
def __init__(self, path):
self.path = path
def resource(self, resource):
return os.path.relpath(resource, self.path)
def header(self, title, menu_hl=None, nodiv=False, black_bg=False):
bodystyle = " style=\"background: #000; color: #fff;\"" if black_bg else ""
r = """<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>""" + title + """ | M-Labs</title>
<link rel="stylesheet" type="text/css" media="screen" href=\"""" + self.resource("style.css") + """\" />
<link rel="icon" type="image/png" href=\"""" + self.resource("favicon.png") + """\" />
</head>
<body""" + bodystyle + """>
<div class="sidenav">
<img src=\"""" + self.resource("m_labs_logo_white.svg") + """\" width="200px">
"""
def item(target, title, highlight):
nonlocal r
if menu_hl is not None and menu_hl == highlight:
r += "<a href=\"" + self.resource(target) + "\" class=\"highlight\">&#8600; " + title + "</a>\n"
else:
r += "<a href=\"" + self.resource(target) + "\">&#8600; " + title + "</a>\n"
def subitem(target, title):
nonlocal r
r += "<a href=\"" + self.resource(target) + "\" class=\"sub\">" + title + "</a>\n"
item("artiq/index.html", "ARTIQ", "artiq")
subitem("artiq/index.html", "Overview")
subitem("artiq/sinara.html", "Sinara hardware")
subitem("artiq/resources.html", "Resources")
item("migen/index.html", "Migen", "migen")
item("solvespace/index.html", "SolveSpace", "solvespace")
item("about.html", "About", "about")
subitem("about.html", "Company")
subitem("office.html", "Office")
r += """</div>
"""
if not nodiv:
r += "<div class=\"main\">"
return r
def footer(self, nodiv=False):
d = "" if nodiv else "</div>\n"
return d + """</body>
</html>
"""
def get_globals(self):
return {
"header": self.header,
"footer": self.footer,
"resource": self.resource
}
def process(path, name_in, name_out):
fullname = os.path.join(path, name_in)
print("processing", fullname)
with open(fullname, "r") as infile:
indata = infile.read()
pm = PageMethods(path)
outdata = ""
# FIXME: this is just a buggy quick hack
splits = re.split("({{{[^}]+}}})", indata)
for split in splits:
if split and split[:3] == "{{{":
outdata += eval(split[3:-3], pm.get_globals())
else:
outdata += split
with open(os.path.join(path, name_out), "w") as outfile:
outfile.write(outdata)
def main():
for root, dirs, files in os.walk("."):
for file in files:
if file.endswith(".page"):
process(root, file, file[:-5] + ".html")
if __name__ == "__main__":
main()

BIN
inconsolata.woff2 Normal file

Binary file not shown.

View File

@ -1,71 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>M-Labs &raquo; open tools for open physics</title>
<link rel="stylesheet" type="text/css" media="screen" href="style.css" />
<link rel="icon" type="image/png" href="favicon.png" />
</head>
<body>
<div id="header">
<div id="headerinside">
<div id="logo"><a href="index.html"><img src="logo.png"></a></div>
<ul id="menu">
<li><a href="artiq/index.html">artiq</a></li>
<li><a href="solvespace/index.html">solvespace</a></li>
<li><a href="gateware.html">gateware</a></li>
<li><a href="video.html">video</a></li>
<li><a href="about.html">about</a></li>
</ul>
</div>
</div>
<div style="width: 100%; background: #fff;">
<div id="container">
<div class="pictures">
<div class="picture" style="width: 700px; margin-left: auto; margin-right: auto;">
<center><a href="artiq/index.html"><img src="artiq.jpg"></a></center>
<p>ARTIQ (Advanced Real-Time Infrastructure for Quantum physics) is a leading-edge control system for quantum information experiments, developed in partnership with a growing number of research institutions worldwide.</p>
<p>The system features a high-level programming language that helps describing complex experiments, which is compiled and executed on dedicated hardware with nanosecond timing resolution and sub-microsecond latency.</p>
<p><ul>
<li><a href="artiq/index.html">More...</a></li>
</ul></p>
</div>
<br />
<div class="picture" style="width: 700px; margin-left: auto; margin-right: auto;">
<a href="gateware.html"><img src="wafer.jpg" class="picimg" alt="Intel Sandy Bridge Wafer, CC-BY-SA Flickr intelfreepress"></a>
<h3>Gateware and system-on-chip design</h3>
<p>Traditional gateware design with Verilog and VHDL is well known to be tedious and inefficient. M-Labs have developed Migen, a Python-based HDL and toolbox that addresses many of their issues and makes gateware design more productive.</p>
<p>Built on Migen, MiSoC provides a high performance, flexible and lightweight solution to build system-on-chips for various applications.</p>
<p><ul><li><a href="gateware.html">More...</a></li></ul></p>
</div>
</div>
</div>
<div style="clear: both;"></div>
<div id="footer">
<div id="footerinside">
<table width="100%"><tr>
<td><p><img src="logo_small.png"><br /><br />Open tools for open physics</p></td>
<td><p><b>M-Labs Limited</b><br />Workshop 15B 6/F Block B1<br />17 Ko Fai Road, Yau Tong<br />Hong Kong<br />+852-59362721</p></td>
<td><a href="https://webchat.freenode.net/?channels=m-labs">Freenode #m-labs</a><br />
GitHub: <a href="https://github.com/m-labs">m-labs</a><br />
Twitter: @<a href="http://twitter.com/M_Labs_Ltd">M_Labs_Ltd</a><br />
</td>
</tr></table>
</div>
</div>
</body>
</html>

28
index.page Normal file
View File

@ -0,0 +1,28 @@
{{{ header("Home page", nodiv=True, black_bg=True) }}}
<div class="main">
<h1>Open tools for open physics.</h1>
</div>
<div class="fullpic" style="background-image: url(kaslicrate.jpg);">
<h4>ARTIQ</h4>
<p>ARTIQ (Advanced Real-Time Infrastructure for Quantum physics) is a leading-edge control system for quantum information experiments, developed in partnership with a growing number of research institutions worldwide.</p>
<p>The system features a high-level programming language that helps describe complex experiments, which is compiled and executed on dedicated hardware with nanosecond timing resolution and sub-microsecond latency.</p>
<p><a href="artiq/index.html">Read more...</a></p>
</div>
<div class="fullpic" style="background-image: url(wafer.jpg);">
<h4>Gateware and system-on-chip design</h4>
<p>
Traditional gateware design with Verilog and VHDL is well known to be tedious and inefficient. M-Labs have developed Migen, a Python-based HDL and toolbox that addresses many of their issues and makes gateware design more productive.
</p>
<p>
Built on Migen, MiSoC provides a high performance, flexible and lightweight solution to build system-on-chips for various applications.
</p>
<p><a href="migen/index.html">Read more...</a></p>
</div>
{{{ footer(nodiv=True) }}}

BIN
kaslicrate.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1,34 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
{ header("Milkymist One") }
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<h1>Milkymist One</h1>
<title>M-Labs &raquo; open tools for open physics</title>
<link rel="stylesheet" type="text/css" media="screen" href="style.css" />
<link rel="icon" type="image/png" href="favicon.png" />
</head>
<body>
<div id="header">
<div id="headerinside">
<div id="logo"><a href="index.html"><img src="logo.png"></a></div>
<ul id="menu">
<li><a href="artiq/index.html">artiq</a></li>
<li><a href="solvespace/index.html">solvespace</a></li>
<li><a href="gateware.html">gateware</a></li>
<li><a class="selected" href="video.html">video</a></li>
<li><a href="about.html">about</a></li>
</ul>
</div>
</div>
<div id="container">
<div class="full">
<a href="m1_large.jpg"><img src="m1.jpg" style="float: right;"></a>
<p>The Milkymist One is an experimental hardware appliance for live video effects.</p>
@ -159,7 +132,7 @@
<p>The SoC source distribution includes software libraries, the BIOS and the demonstration firmware, as well as test benches, LaTeX source for the documentation, build scripts, etc. The repository is hosted by GitHub and is available <a href="http://github.com/m-labs/milkymist">here</a>.</p>
<p>Milkymist SoC is phased out in favor of the more powerful <a href="gateware.html">MiSoC</a>.</p>
<p>Milkymist SoC is phased out in favor of the more powerful <a href=".../migen/index.html">MiSoC</a>.</p>
</p>
<h2>Flickernoise</h2>
@ -185,22 +158,4 @@
<p>Plus countless workers at dozens of suppliers and many more who created the free technology we were able to build upon.</p>
</div>
</div>
<div id="footer">
<div id="footerinside">
<table width="100%"><tr>
<td><p><img src="logo_small.png"><br /><br />Open tools for open physics</p></td>
<td><p><b>M-Labs Limited</b><br />Workshop 15B 6/F Block B1<br />17 Ko Fai Road, Yau Tong<br />Hong Kong<br />+852-59362721</p></td>
<td><a href="https://webchat.freenode.net/?channels=m-labs">Freenode #m-labs</a><br /><a href="https://ssl.serverraum.org/lists/listinfo/devel/">Developer mailing list</a><br />
GitHub: <a href="https://github.com/m-labs">m-labs</a><br />
Twitter: @<a href="http://twitter.com/M_Labs_Ltd">M_Labs_Ltd</a><br />
</td>
</tr></table>
</div>
</div>
</body>
</html>
{{{ footer() }}}

90
m_labs_logo_white.svg Normal file
View File

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="68.949089mm"
height="11.853333mm"
viewBox="0 0 68.949089 11.853333"
version="1.1"
id="svg8"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="m_labs_logo_white.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="311.62925"
inkscape:cy="-119.31219"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1124"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-57.67714,-43.535019)">
<g
aria-label="M-LABS"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:25.39999962px;line-height:6.61458302px;font-family:'Intro Inline';-inkscape-font-specification:'Intro Inline, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
id="text3701">
<path
d="m 57.67714,43.535019 h 3.420534 l 3.166533,8.788399 3.183466,-8.788399 h 3.420533 V 55.388351 H 68.54834 v -8.314266 l -2.9972,8.314266 h -2.556933 l -2.9464,-8.314266 v 8.314266 H 57.67714 Z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;font-family:'SF Fourche SC';-inkscape-font-specification:'SF Fourche SC, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cccccc;stroke-width:0.26458332"
id="path3703" />
<path
d="m 72.890681,49.377018 h 6.773333 v 1.862667 h -6.773333 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;font-family:'SF Fourche SC';-inkscape-font-specification:'SF Fourche SC, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cccccc;stroke-width:0.26458332"
id="path3705" />
<path
d="m 81.518744,43.535019 h 2.370666 v 7.111999 q 0,0.778934 0.237067,1.303867 0.237067,0.508 0.643467,0.829733 0.423333,0.3048 0.982133,0.440267 0.5588,0.135467 1.185333,0.135467 h 3.048 v 2.031999 h -3.048 q -1.1176,0 -2.099733,-0.237066 -0.982133,-0.237067 -1.7272,-0.795867 -0.728133,-0.5588 -1.1684,-1.456266 -0.423333,-0.9144 -0.423333,-2.252134 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;font-family:'SF Fourche SC';-inkscape-font-specification:'SF Fourche SC, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cccccc;stroke-width:0.26458332"
id="path3707" />
<path
d="m 95.273902,43.535019 h 2.556933 l 5.283195,11.853332 h -2.6416 l -0.999062,-2.370666 h -5.842 l -0.999066,2.370666 h -2.6416 z m 3.335866,7.450666 -2.065866,-4.842933 -2.048934,4.842933 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;font-family:'SF Fourche SC';-inkscape-font-specification:'SF Fourche SC, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cccccc;stroke-width:0.26458332"
id="path3709" />
<path
d="m 103.78079,43.535019 h 6.858 q 0.77893,0 1.4732,0.169333 0.69426,0.1524 1.2192,0.541867 0.52493,0.372533 0.8128,0.982133 0.3048,0.6096 0.3048,1.524 0,0.982133 -0.33867,1.6256 -0.33867,0.626533 -0.93133,0.999066 0.72813,0.3556 1.1684,1.032934 0.44026,0.6604 0.44026,1.761066 0,0.9144 -0.3048,1.524 -0.28786,0.6096 -0.8128,0.999067 -0.52493,0.372533 -1.2192,0.541866 -0.69426,0.1524 -1.4732,0.1524 h -7.19666 z m 6.858,4.910666 q 0.59266,0 1.016,-0.3048 0.42333,-0.321733 0.42333,-1.134533 0,-0.795867 -0.42333,-1.1176 -0.42334,-0.321733 -1.016,-0.321733 h -4.48734 v 2.878666 z m 0.33866,4.910667 q 0.59267,0 1.016,-0.3048 0.42334,-0.321734 0.42334,-1.134534 0,-0.795866 -0.42334,-1.1176 -0.42333,-0.321733 -1.016,-0.321733 h -4.826 v 2.878667 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;font-family:'SF Fourche SC';-inkscape-font-specification:'SF Fourche SC, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cccccc;stroke-width:0.26458332"
id="path3711" />
<path
d="m 116.46623,53.356352 h 6.18067 q 0.6604,0 1.13453,-0.3048 0.47414,-0.321734 0.47414,-1.134534 0,-0.795866 -0.47414,-1.1176 -0.47413,-0.321733 -1.13453,-0.321733 h -2.87867 q -0.82973,0 -1.50706,-0.169333 -0.67734,-0.186267 -1.15147,-0.592667 -0.47413,-0.4064 -0.72813,-1.0668 -0.254,-0.677333 -0.254,-1.642533 0,-0.982133 0.254,-1.642533 0.254,-0.677334 0.72813,-1.083734 0.47413,-0.4064 1.15147,-0.575733 0.67733,-0.169333 1.50706,-0.169333 h 6.51934 v 2.032 h -6.18067 q -0.6604,0 -1.13453,0.321733 -0.47414,0.3048 -0.47414,1.1176 0,0.795867 0.47414,1.1176 0.47413,0.321733 1.13453,0.321733 h 2.87867 q 0.82973,0 1.50706,0.186267 0.67734,0.169333 1.15147,0.575733 0.47413,0.4064 0.72813,1.083733 0.254,0.6604 0.254,1.6256 0,0.999067 -0.254,1.659467 -0.254,0.6604 -0.72813,1.0668 -0.47413,0.4064 -1.15147,0.575733 -0.67733,0.169333 -1.50706,0.169333 h -6.51934 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;font-family:'SF Fourche SC';-inkscape-font-specification:'SF Fourche SC, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cccccc;stroke-width:0.26458332"
id="path3713" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.3 KiB

46
migen/index.page Normal file
View File

@ -0,0 +1,46 @@
{{{ header("Migen", "migen") }}}
<h1>Migen</h1>
<div style="float: right;"><img src="migen.svg"></div>
<p>Migen is a Python-based tool that automates further the VLSI design process.</p>
<p>Despite being faster than schematics entry, hardware design with Verilog and VHDL remains tedious and inefficient for several reasons. The event-driven model introduces issues and manual coding that are unnecessary for synchronous circuits, which represent the lion's share of today's logic designs. Counter-intuitive arithmetic rules result in steeper learning curves and provide a fertile ground for subtle bugs in designs. Finally, support for procedural generation of logic (metaprogramming) through "generate" statements is very limited and restricts the ways code can be made generic, reused and organized.</p>
<p>To address those issues, we have developed the Migen FHDL library that replaces the event-driven paradigm with the notions of combinatorial and synchronous statements, has arithmetic rules that make integers always behave like mathematical integers, and most importantly allows the design's logic to be constructed by a Python program. This last point enables hardware designers to take advantage of the richness of the Python language - object oriented programming, function parameters, generators, operator overloading, libraries, etc. - to build well organized, reusable and elegant designs.</p>
<p>Other Migen libraries are built on FHDL and provide various tools such as a system-on-chip interconnect infrastructure, a dataflow programming system, a more traditional high-level synthesizer that compiles Python routines into state machines with datapaths, and a simulator that allows test benches to be written in Python.</p>
<p>Migen is the foundation for MiSoC.</p>
<p>You can find the Migen source <a href="http://github.com/m-labs/migen">here</a>, released under the permissive BSD license</a>.</p>
<p>
Documentation (note: sometimes out of date - please help!)<br />
<ul>
<li><a href="manual">User guide</a></li>
<li><a href="tutorial.pdf">Tutorial: An introduction to Migen</a></li>
<li><a href="slides.pdf">Lecture slides</a></li>
</ul>
</p>
<h1>MiSoC</h1>
<p>Built on Migen, MiSoC provides a high performance, flexible and lightweight solution to build system-on-chips for various applications.</p>
<p><ul>
<li>CPU options:<ul>
<li>LatticeMico32, modified to include an optional MMU (experimental).</li>
<li><a href="https://github.com/openrisc/mor1kx">mor1kx</a>, a better OpenRISC implementation.</li>
</ul></li>
<li>Memory controller supports SDR, DDR, LPDDR, DDR2 and DDR3.</li>
<li>Provided peripherals: UART, GPIO, timer, GPIO, NOR flash controller, SPI flash controller, Ethernet MAC, and more.</li>
<li>High performance: on Spartan-6, 83MHz system clock frequencies, 10+Gbps DDR SDRAM bandwidth, 1080p 32bpp framebuffer, etc.</li>
<li>Low resource usage: basic implementation fits easily in Spartan-6 LX9.</li>
<li>Portable and easy to customize thanks to Python- and Migen-based architecture.</li>
<li>Design new peripherals using Migen and benefit from automatic CSR maps and logic, simplified DMAs, etc.</li>
<li>Possibility to encapsulate legacy Verilog/VHDL code.</li>
</ul></p>
<p>The MiSoC source is <a href="http://github.com/m-labs/misoc">here</a>, mostly covered by the permissive BSD license</a>.
{{{ footer() }}}

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,64 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>M-Labs &raquo; open tools for open physics</title>
<link rel="stylesheet" type="text/css" media="screen" href="style.css" />
<link rel="icon" type="image/png" href="favicon.png" />
</head>
<body>
<div id="header">
<div id="headerinside">
<div id="logo"><a href="index.html"><img src="logo.png"></a></div>
<ul id="menu">
<li><a href="artiq/index.html">artiq</a></li>
<li><a href="solvespace/index.html">solvespace</a></li>
<li><a href="gateware.html">gateware</a></li>
<li><a class="selected" href="video.html">video</a></li>
<li><a href="about.html">about</a></li>
</ul>
</div>
</div>
<div id="container">
<div class="full">
<center><img src="mixxeo_logo.png"></center>
<p>The Mixxeo is the first open source digital video mixer.</p>
<center><a href="mixxeo_render_large.png"><img src="mixxeo_render.jpg"></a><br />
<em>[picture is a rendering - actual product appearance may vary]</em>
</center>
<p>Built on the <a href="gateware.html">MiSoC and Migen</a> technologies that originated from the development experience of the Milkymist One and unlike other mixers, the Mixxeo itself does everything and processes every pixel with our own <a href="http://github.com/m-labs">open source hardware and software</a>. This gives us exceptional control and customization possibilities.</p>
<p>The Mixxeo will support mixing from two DVI or HDMI sources up to 720p60, with crossfade, fade to black and potentially other effects with a latency of less than two frames.</p>
<p><b>Status (Aug 2014)</b> - Main board and gateware have been <a href="mixxeo_result.jpg">mostly functional</a> for a while, mechanical design and manufacturing for the case/mechatronics are progressing slowly. If you have the skills and would like to help out, email sb at m-labs.hk or the mailing list.</p>
<p><center><img src="mixxeo_menu.png"><br /><br /><img src="mixxeo_board.jpg" class="picimg"></center></p>
</div>
</div>
<div id="footer">
<div id="footerinside">
<table width="100%"><tr>
<td><p><img src="logo_small.png"><br /><br />Open tools for open physics</p></td>
<td><p><b>M-Labs Limited</b><br />Workshop 15B 6/F Block B1<br />17 Ko Fai Road, Yau Tong<br />Hong Kong<br />+852-59362721</p></td>
<td><a href="https://webchat.freenode.net/?channels=m-labs">Freenode #m-labs</a><br /><a href="https://ssl.serverraum.org/lists/listinfo/devel/">Developer mailing list</a><br />
GitHub: <a href="https://github.com/m-labs">m-labs</a><br />
Twitter: @<a href="http://twitter.com/M_Labs_Ltd">M_Labs_Ltd</a><br />
</td>
</tr></table>
</div>
</div>
</body>
</html>

18
mixxeo.page Normal file
View File

@ -0,0 +1,18 @@
{{{ header("Mixxeo") }}}
<center><img src="mixxeo_logo.png"></center>
<p>The Mixxeo was the first open source digital video mixer.</p>
<center><a href="mixxeo_render_large.png"><img src="mixxeo_render.jpg"></a><br />
<em>[picture is a rendering - actual product appearance may vary]</em>
</center>
<p>Built on the <a href="gateware.html">MiSoC and Migen</a> technologies that originated from the development experience of the Milkymist One and unlike other mixers, the Mixxeo itself does everything and processes every pixel with our own <a href="http://github.com/m-labs">open source hardware and software</a>. This gives us exceptional control and customization possibilities.</p>
<p>The Mixxeo supported mixing from two DVI or HDMI sources up to 720p60, with crossfade, fade to black and potentially other effects with a latency of less than two frames.</p>
<p><b>Status (Aug 2014)</b> - Main board and gateware have been <a href="mixxeo_result.jpg">mostly functional</a> for a while, mechanical design and manufacturing for the case/mechatronics are progressing slowly. If you have the skills and would like to help out, email sb at m-labs.hk or the mailing list.</p>
<p><center><img src="mixxeo_menu.png"><br /><br /><img src="mixxeo_board.jpg" class="picimg"></center></p>
{{{ footer() }}}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

BIN
notosans.woff2 Normal file

Binary file not shown.

16
office.page Normal file
View File

@ -0,0 +1,16 @@
{{{ header("Office", "about") }}}
<h1>Office</h1>
<p>Our address is:<br />
M-Labs Limited<br />
Workshop 15B 6/F Block B1<br />
Yau Tong Industrial City<br />
17 Ko Fai Rd<br />
Yau Tong, Hong Kong
</p>
<p>It is a short walk from the Yau Tong MTR station. Take exit A2. Viewed from the MTR exit, Yau Tong Industrial City is inside that building:<br />
<img src="yautongindus.jpg"><br />
When entering from Ko Fai Road, get inside the courtyard, the entrance to Block B1 is in front of you on your left. Take the elevator or the stairs to the 6th floor. Call +852 59362721 if you get lost.
</p>
{{{ footer() }}}

View File

@ -1,194 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Applications of SolveSpace CAD &raquo; M-Labs</title>
<link rel="stylesheet" type="text/css" media="screen" href="../style.css" />
<link rel="icon" type="image/png" href="../favicon.png" />
<script src="javascript/hammer-2.0.8.js"></script>
<script src="javascript/three-r76.js"></script>
<script src="javascript/SolveSpaceControls.js"></script>
</head>
<body>
<div id="header">
<div id="headerinside">
<div id="logo"><a href="../index.html"><img src="../logo.png"></a></div>
<ul id="menu">
<li><a href="../artiq/index.html">artiq</a></li>
<li><a class="selected" href="index.html">solvespace</a></li>
<li><a href="../gateware.html">gateware</a></li>
<li><a href="../video.html">video</a></li>
<li><a href="../about.html">about</a></li>
</ul>
</div>
</div>
<div id="container">
<div class="full">
<h2>What is SolveSpace?</h2>
<p><a href="http://solvespace.com">SolveSpace</a> is a libre and open-source parametric computer-aided design application that uses a NURBS geometric kernel, allowing it to represent curved surfaces exactly. It was originally released by <a href="http://cq.cx">Jonathan Westhues</a> under the GPLv3 license and is presently further developed at M-Labs.</p>
<h2>What can be done with SolveSpace?</h2>
<p>SolveSpace is primarily useful for mechanical design. At M-Labs, we use it to design vacuum chambers as well as custom fittings and fixtures. The models can then be exported as STEP or PDF with dimensions and sent to a machine shop for manufacturing.</p>
<h3>Fittings and adapters</h3>
<p>Of course, most vacuum chambers would have some standard flanges. These can be easily modelled using a single sketch and a lathe operation:</p>
<p>
<img src="images/kf25-section.png" style="width:400px;">
<script src="models/kf25.js"></script>
<script id="kf25" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("kf25"),
params = {width: 400, height: 300, scale: 10, offset: new THREE.Vector3(-8, 0, 0)};
node.parentNode.replaceChild(solvespace(solvespace_model_kf25, params), node);
});
</script>
</p>
<p>(The illustration on the right is "live"; it can be panned, rotated and scaled.)</p>
<p>In a similar way, an NW160 viewport and an adapter with an NW160 flange, a KF40, two KF25 and two KF16 ports were designed:</p>
<p>
<script src="models/viewport.js"></script>
<script id="viewport" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("viewport"),
params = {width: 400, height: 300, scale: 3};
node.parentNode.replaceChild(solvespace(solvespace_model_viewport, params), node);
});
</script>
<script src="models/multiport.js"></script>
<script id="multiport" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("multiport"),
params = {width: 400, height: 300, scale: 3};
node.parentNode.replaceChild(solvespace(solvespace_model_multiport, params), node);
});
</script>
</p>
<h3>A vacuum chamber</h3>
<p>The fittings above were designed to be used with a cylindrical vacuum chamber, 200mm long with two NW160 flanges, two KF40 and one KF25 ports:</p>
<p>
<script src="models/chamber.js"></script>
<script id="chamber" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("chamber"),
params = {width: 800, height: 600, scale: 3};
node.parentNode.replaceChild(solvespace(solvespace_model_chamber, params), node);
});
</script>
</p>
<h3>Cryocooler refilling fixture</h3>
<p>To repair a broken Ricor K526S crycooler, it was necessary to disassemble it, which of course meant it was depressurized. To evacuate it and eventually refill with helium, a special fixture was designed, as the cryocooler's filling port is just a hole in the case with a set screw. Further, an adapter that allows to insert the cold head into a vacuum system via a KF25 port was also designed.</p>
<p>First, the cryocooler and its cold head were modelled to verify fits:</p>
<p>
<script src="models/k526s-body.js"></script>
<script id="k526s-body" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("k526s-body"),
params = {width: 400, height: 300, scale: 6, offset: new THREE.Vector3(-10, -15, 0)};
node.parentNode.replaceChild(solvespace(solvespace_model_k526s_body, params), node);
});
</script>
<script src="models/k526s-head.js"></script>
<script id="k526s-head" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("k526s-head"),
params = {width: 400, height: 300, scale: 8, offset: new THREE.Vector3(25, 0, 0)};
node.parentNode.replaceChild(solvespace(solvespace_model_k526s_head, params), node);
});
</script>
</p>
<p>Then, a fixture was designed, shown below with a cutout (blue). It consists of a bracket, a piston case that screws into the bracket (the thread is not modelled), a piston with a retaining screw, a retaining washer, a Swagelok fitting attached to the orange port (not modelled), and a few compression gaskets (also not modelled). The bracket and the piston case hold the cryocooler The retaining washer prevents the piston from being ejected by high pressure helium and, conversely, together with another washer prevents the piston from being sucked in and blocking the gas flow during evacuation.</p>
<p>
<script src="models/k526s-fixture.js"></script>
<script id="k526s-fixture" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("k526s-fixture"),
params = {width: 800, height: 400, scale: 12};
node.parentNode.replaceChild(solvespace(solvespace_model_k526s_fixture, params), node);
});
</script>
</p>
<p>The KF25 adapter for the cold head is a much simpler device:</p>
<p>
<script src="models/k526s-adapter.js"></script>
<script id="k526s-adapter" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("k526s-adapter"),
params = {width: 400, height: 300, scale: 8, offset: new THREE.Vector3(-8, 0, 0)};
node.parentNode.replaceChild(solvespace(solvespace_model_k526s_adapter, params), node);
});
</script>
<script src="models/k526s-adapter-assy.js"></script>
<script id="k526s-adapter-assy" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("k526s-adapter-assy"),
params = {width: 400, height: 300, scale: 8};
node.parentNode.replaceChild(solvespace(solvespace_model_k526s_adapter_assy, params), node);
});
</script>
</p>
<h2>Ongoing development by M-Labs</h2>
<p>As originally released, SolveSpace was far ahead almost every other FLOSS CAD by virtue of its parametric nature, exact internal representation of curves and a codebase easy to work with. (The only other FLOSS parametric CAD that uses a NURBS representation, including NURBS booleans, is FreeCAD.) While it was already suitable for practical work, it had a much greater unrealized potential.</p>
<p>Thus, M-Labs has developed many additional features:</p>
<ul>
<li>Native Linux (GTK) and OS X ports;</li>
<li>stippling as well as <a href="images/hiddenline.gif">outline and hidden line</a> styling in preparation for export of shop drawings according to ISO or another standard;</li>
<li>WebGL export using Three.js, which is how the interactive models on this page work;</li>
<li>DXF export that preserves the ability to edit the drawing afterwards, by mapping parametric constraints to DXF dimensions and grouping the lines;</li>
<li>DXF import that automatically infers (some) constraints, such as horizontal/vertical, point-coincident, linear and angular dimensions from DXF geometry and dimensions;</li>
<li>internationalization;</li>
<li>and many other minor ones.</li>
</ul>
<p>Currently, the focus of development is to improve SolveSpace's handling of complex assemblies with many similar parts by allowing to load a hierarchy of sketches instead of a single sketch and propagate the changes as they are made, and to derive many variants of geometry from a single sketch. For example, these changes would allow to use a single basic sketch to model framework made from varying lengths of 80/20 profile, whereas currently that would require a separate sketch for every size of cut.</p>
</div>
</div>
<div id="footer">
<div id="footerinside">
<table width="100%"><tr>
<td><p><img src="../logo_small.png"><br /><br />Open tools for open physics</p></td>
<td><p><b>M-Labs Limited</b><br />Workshop 15B 6/F Block B1<br />17 Ko Fai Road, Yau Tong<br />Hong Kong<br />+852-59362721</p></td>
<td><a href="https://webchat.freenode.net/?channels=m-labs">Freenode #m-labs</a><br />
GitHub: <a href="https://github.com/m-labs">m-labs</a><br />
Twitter: @<a href="http://twitter.com/M_Labs_Ltd">M_Labs_Ltd</a><br />
</td>
</tr></table>
</div>
</div>
</body>
</html>

View File

@ -1 +0,0 @@
case-study.html

155
solvespace/index.page Normal file
View File

@ -0,0 +1,155 @@
{{{ header("SolveSpace", "solvespace") }}}
<h1>SolveSpace</h1>
<script src="javascript/hammer-2.0.8.js"></script>
<script src="javascript/three-r76.js"></script>
<script src="javascript/SolveSpaceControls.js"></script>
<h2>What is SolveSpace?</h2>
<p><a href="http://solvespace.com">SolveSpace</a> is a libre and open-source parametric computer-aided design application that uses a NURBS geometric kernel, allowing it to represent curved surfaces exactly. It was originally released by <a href="http://cq.cx">Jonathan Westhues</a> under the GPLv3 license and is now further developed at M-Labs.</p>
<h2>What can be done with SolveSpace?</h2>
<p>SolveSpace is primarily useful for mechanical design. At M-Labs, we use it to design vacuum chambers as well as custom fittings and fixtures. The models can then be exported as STEP or PDF with dimensions and sent to a machine shop for manufacturing.</p>
<h3>Fittings and adapters</h3>
<p>Of course, most vacuum chambers would have some standard flanges. These can be easily modelled using a single sketch and a lathe operation:</p>
<p>
<img src="images/kf25-section.png" style="width:400px;">
<script src="models/kf25.js"></script>
<script id="kf25" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("kf25"),
params = {width: 400, height: 300, scale: 10, offset: new THREE.Vector3(-8, 0, 0)};
node.parentNode.replaceChild(solvespace(solvespace_model_kf25, params), node);
});
</script>
</p>
<p>(The illustration on the right is "live"; it can be panned, rotated and scaled.)</p>
<p>In a similar way, an NW160 viewport and an adapter with an NW160 flange, a KF40, two KF25 and two KF16 ports were designed:</p>
<p>
<script src="models/viewport.js"></script>
<script id="viewport" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("viewport"),
params = {width: 400, height: 300, scale: 3};
node.parentNode.replaceChild(solvespace(solvespace_model_viewport, params), node);
});
</script>
<script src="models/multiport.js"></script>
<script id="multiport" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("multiport"),
params = {width: 400, height: 300, scale: 3};
node.parentNode.replaceChild(solvespace(solvespace_model_multiport, params), node);
});
</script>
</p>
<h3>A vacuum chamber</h3>
<p>The fittings above were designed to be used with a cylindrical vacuum chamber, 200mm long with two NW160 flanges, two KF40 and one KF25 ports:</p>
<p>
<script src="models/chamber.js"></script>
<script id="chamber" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("chamber"),
params = {width: 800, height: 600, scale: 3};
node.parentNode.replaceChild(solvespace(solvespace_model_chamber, params), node);
});
</script>
</p>
<h3>Cryocooler refilling fixture</h3>
<p>To repair a broken Ricor K526S crycooler, it was necessary to disassemble it, which of course meant it was depressurized. To evacuate it and eventually refill with helium, a special fixture was designed, as the cryocooler's filling port is just a hole in the case with a set screw. Further, an adapter that allows to insert the cold head into a vacuum system via a KF25 port was also designed.</p>
<p>First, the cryocooler and its cold head were modelled to verify fits:</p>
<p>
<script src="models/k526s-body.js"></script>
<script id="k526s-body" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("k526s-body"),
params = {width: 400, height: 300, scale: 6, offset: new THREE.Vector3(-10, -15, 0)};
node.parentNode.replaceChild(solvespace(solvespace_model_k526s_body, params), node);
});
</script>
<script src="models/k526s-head.js"></script>
<script id="k526s-head" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("k526s-head"),
params = {width: 400, height: 300, scale: 8, offset: new THREE.Vector3(25, 0, 0)};
node.parentNode.replaceChild(solvespace(solvespace_model_k526s_head, params), node);
});
</script>
</p>
<p>Then, a fixture was designed, shown below with a cutout (blue). It consists of a bracket, a piston case that screws into the bracket (the thread is not modelled), a piston with a retaining screw, a retaining washer, a Swagelok fitting attached to the orange port (not modelled), and a few compression gaskets (also not modelled). The bracket and the piston case hold the cryocooler The retaining washer prevents the piston from being ejected by high pressure helium and, conversely, together with another washer prevents the piston from being sucked in and blocking the gas flow during evacuation.</p>
<p>
<script src="models/k526s-fixture.js"></script>
<script id="k526s-fixture" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("k526s-fixture"),
params = {width: 800, height: 400, scale: 12};
node.parentNode.replaceChild(solvespace(solvespace_model_k526s_fixture, params), node);
});
</script>
</p>
<p>The KF25 adapter for the cold head is a much simpler device:</p>
<p>
<script src="models/k526s-adapter.js"></script>
<script id="k526s-adapter" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("k526s-adapter"),
params = {width: 400, height: 300, scale: 8, offset: new THREE.Vector3(-8, 0, 0)};
node.parentNode.replaceChild(solvespace(solvespace_model_k526s_adapter, params), node);
});
</script>
<script src="models/k526s-adapter-assy.js"></script>
<script id="k526s-adapter-assy" type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var node = document.getElementById("k526s-adapter-assy"),
params = {width: 400, height: 300, scale: 8};
node.parentNode.replaceChild(solvespace(solvespace_model_k526s_adapter_assy, params), node);
});
</script>
</p>
<h2>Ongoing development by M-Labs</h2>
<p>As originally released, SolveSpace was far ahead almost every other FLOSS CAD by virtue of its parametric nature, exact internal representation of curves and a codebase easy to work with. (The only other FLOSS parametric CAD that uses a NURBS representation, including NURBS booleans, is FreeCAD.) While it was already suitable for practical work, it had a much greater unrealized potential.</p>
<p>Thus, M-Labs has developed many additional features:</p>
<ul>
<li>Native Linux (GTK) and OS X ports;</li>
<li>stippling as well as <a href="images/hiddenline.gif">outline and hidden line</a> styling in preparation for export of shop drawings according to ISO or another standard;</li>
<li>WebGL export using Three.js, which is how the interactive models on this page work;</li>
<li>DXF export that preserves the ability to edit the drawing afterwards, by mapping parametric constraints to DXF dimensions and grouping the lines;</li>
<li>DXF import that automatically infers (some) constraints, such as horizontal/vertical, point-coincident, linear and angular dimensions from DXF geometry and dimensions;</li>
<li>internationalization;</li>
<li>and many other minor ones.</li>
</ul>
<p>Currently, the focus of development is to improve SolveSpace's handling of complex assemblies with many similar parts by allowing to load a hierarchy of sketches instead of a single sketch and propagate the changes as they are made, and to derive many variants of geometry from a single sketch. For example, these changes would allow to use a single basic sketch to model framework made from varying lengths of 80/20 profile, whereas currently that would require a separate sketch for every size of cut.</p>
<h2>Commercial support</h2>
For commercial support and licensing, please contact sales@m-l***s.hk.
{{{ footer() }}}

286
style.css
View File

@ -1,222 +1,144 @@
@font-face {
font-family: 'Inconsolata';
font-style: normal;
font-weight: 400;
src: local('Inconsolata Regular'), local('Inconsolata-Regular'), url(inconsolata.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 400;
src: local('Noto Sans'), local('NotoSans'), url(notosans.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}
body {
margin: 0;
padding: 0;
font-size: 13px;
font-family: Arial, Helvetica, sans-serif;
background: #fff;
color: #000;
}
a:link, a:visited {
color: #0053A1;
}
a:hover, a:active {
color: #00050A;
}
img {
border: none;
}
h1, h2, h3, h4, p {
margin: 0;
padding: 0;
font-weight: normal;
}
h2 {
font-size: 20px;
border-bottom: 1px solid #27272a;
margin: 3px 0 3px;
padding: 5px 0 0px;
color: #0053A1;
clear: both;
}
h3 {
font-size: 18px;
margin: 10px 0 3px;
color: #0053A1;
clear: both;
text-align: center;
}
h4 {
font-size: 16px;
margin: 10px 0 3px;
color: #0053A1;
clear: both;
border-bottom: 1px solid #27272a;
padding-top: 0px;
margin-left: 0px;
margin-right: 0px;
background: #fff;
color: #000;
}
p {
padding: 4px 0;
line-height: 1.5;
}
table {
border-collapse: collapse;
}
td {
padding: 1em;
}
table.td {
border: 1px solid #777;
}
table.td td {
border: 1px solid #777;
}
div#header {
height: 91px;
background: rgb(0,0,0);
}
div#header p, div#header h1 {
margin: 0;
padding: 0;
}
div#headerinside, div#footerinside {
width: 820px;
margin: 0 auto;
}
div#logo {
height: 43px;
width: 396px;
float: left;
margin-top: 10px;
display: block;
margin-top: 0px;
margin-bottom: 3px;
}
ul {
list-style: none;
padding: 0 0 0 2em;
margin-top: 0;
margin-bottom: 0;
list-style: none;
padding: 0 0 0 2em;
margin-top: 0;
margin-bottom: 0;
}
ul li:before {
content: '\25BA';
margin: 0 0.5em 0 -0.5em;
content: '\25BA';
margin: 0 0.5em 0 -0.5em;
}
ul li {
text-indent: -1em;
line-height: 1.5em;
padding-bottom: 0.3em;
text-indent: -1em;
line-height: 1.5em;
padding-bottom: 0.3em;
}
ul#menu {
clear: both;
float: right;
list-style: none;
position: relative;
top: 0px;
margin-top: 1em;
.main {
font-family: "Noto Sans";
margin-left: 260px;
margin-right: 7px;
}
ul#menu li {
float: left;
margin-left: 3px;
line-height: 1.4;
.fullpic {
font-family: "Noto Sans";
margin-left: 250px;
margin-right: 0;
background-size: cover;
color: #fff;
padding: 50px 100px 100px 100px;
text-align: justify;
}
ul#menu li:before {
content: '';
margin: 0 0 0 0;
.fullpic a {
text-decoration: underline;
color: #fff;
}
ul#menu li a {
color: #fff;
text-indent: 0;
text-shadow: 2px 2px 1px #2a2a2f;
text-decoration: none;
font-weight: bold;
text-align: center;
width: 100px;
height: 15px;
padding: 5px 0;
display: block;
background: #0053A1; /* Old browsers */
background: -moz-linear-gradient(top, #0053A1 0%, #004280 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#0053A1), color-stop(100%,#004280)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #0053A1 0%,#004280 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #0053A1 0%,#004280 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #0053A1 0%,#004280 100%); /* IE10+ */
background: linear-gradient(to bottom, #0053A1 0%,#004280 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#0053A1', endColorstr='#004280',GradientType=0 ); /* IE6-9 */
.sidenav {
font-family: "Inconsolata", sans-serif;
height: 100%;
width: 250px;
position: fixed;
z-index: 1;
top: 0;
left: 0;
background-color: #111;
overflow-x: hidden;
transition: 0.5s;
padding-top: 60px;
font-size: 24px;
}
ul#menu li a:hover, ul#menu li a:active {
background: #007cf1; /* Old browsers */
background: -moz-linear-gradient(top, #007cf1 0%, #004280 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#007cf1), color-stop(100%,#004280)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #007cf1 0%,#004280 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #007cf1 0%,#004280 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #007cf1 0%,#004280 100%); /* IE10+ */
background: linear-gradient(to bottom, #007cf1 0%,#004280 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#007cf1', endColorstr='#004280',GradientType=0 ); /* IE6-9 */
.sidenav img {
padding: 8px 8px 28px 25px;
}
ul#menu li a.selected {
background: rgb(255,255,255);
color: #000;
text-shadow: none;
.sidenav a {
padding: 8px 8px 8px 32px;
text-decoration: none;
font-size: 25px;
color: #818181;
display: block;
transition: 0.3s;
}
div.pictures {
margin: 0;
padding: 0;
.sidenav a.sub {
font-size: 20px;
margin-left: 40px;
padding: 0px 8px 8px 32px;
}
div.picture {
background: #fff;
color: #000;
border: 1px solid #000;
.sidenav a:hover {
color: #f1f1f1;
}
.picimg {
border-bottom: 1px solid #000;
.sidenav a.highlight {
color: #f00;
}
#container {
position: relative;
width: 820px;
margin: 20px auto 10px;
@media screen and (max-height: 450px) {
.sidenav {padding-top: 15px;}
.sidenav a {font-size: 18px;}
}
div.full {
clear: both;
float: none;
h1 {
font-family: "Inconsolata", sans-serif;
text-align: center;
font-weight: normal;
margin-bottom: 40px;
font-size: 35px;
}
#container h2.section a, #container h2.options a {
display: block;
text-decoration: none;
color: #faec8f;
h2 {
font-family: "Inconsolata", sans-serif;
font-size: 24px;
font-weight: normal;
border-bottom: 1px dotted;
margin-bottom: 2px;
}
#container h2.section a:hover, #container h2.options a:hover {
color: #cac397;
h3 {
font-family: "Inconsolata", sans-serif;
font-weight: normal;
margin-top: 5px;
margin-bottom: 2px;
font-size: 20px;
}
#footer {
border-top: 1px solid #808080;
margin-top: 30px;
font-size: 9px;
color: #000;
line-height: 1.5em;
clear: both;
background: rgb(192,192,192); /* Old browsers */
background: -moz-linear-gradient(top, rgba(192,192,192,1) 0%, rgba(255,255,255,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(192,192,192,1)), color-stop(100%,rgba(255,255,255,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(192,192,192,1) 0%,rgba(255,255,255,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(192,192,192,1) 0%,rgba(255,255,255,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(192,192,192,1) 0%,rgba(255,255,255,1) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(192,192,192,1) 0%,rgba(255,255,255,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c0c0c0', endColorstr='#ffffff',GradientType=0 ); /* IE6-9 */
h4 {
font-family: "Inconsolata", sans-serif;
text-align: center;
font-weight: normal;
margin-bottom: 20px;
font-size: 30px;
}

View File

@ -1,68 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>M-Labs &raquo; open tools for open physics</title>
<link rel="stylesheet" type="text/css" media="screen" href="style.css" />
<link rel="icon" type="image/png" href="favicon.png" />
</head>
<body>
<div id="header">
<div id="headerinside">
<div id="logo"><a href="index.html"><img src="logo.png"></a></div>
<ul id="menu">
<li><a href="artiq/index.html">artiq</a></li>
<li><a href="solvespace/index.html">solvespace</a></li>
<li><a href="gateware.html">gateware</a></li>
<li><a class="selected" href="video.html">video</a></li>
<li><a href="about.html">about</a></li>
</ul>
</div>
</div>
<div id="container">
<div class="full">
<p>We used to work on two video platforms: the <a href="m1.html">Milkymist One</a> and the <a href="mixxeo.html">Mixxeo</a>. If you are interested in those devices, we recommend you check out <a href="https://hdmi2usb.tv/numato-opsis/">Numato Opsis</a> instead.</p>
</div>
<div class="pictures">
<div class="picture" style="width: 350px; float: left;">
<a href="mixxeo.html"><img src="mixxeo_render_small.jpg" class="picimg"></a>
<center><img src="mixxeo_logo_small.png"></center>
<p>The Mixxeo is the first open source digital video mixer. It will support mixing from two DVI or HDMI sources up to 720p60, with crossfade, fade to black and other effects with a latency of less than two frames.</p>
<p><ul>
<li><a href="mixxeo.html">More...</a></li>
</ul></p>
</div>
<div class="picture" style="width: 350px; float: right;">
<a href="m1.html"><img src="m1.jpg" class="picimg"></a>
<h3>Milkymist One</h3>
<p>Milkymist One is a digital video synthesizer released in 2011. It produces real-time visual effects similar to those of MilkDrop, with the extra possibility to use a camera or other video sources as inputs.</p>
<p>It is based on a custom open source Verilog system-on-chip design that contains the LM32 soft CPU with many custom peripherals such as a SDRAM controller that <a href="jpl_letter.jpg">went into space</a>, a VLIW floating-point coprocessor and a 2D texture mapping accelerator.</p>
<p><ul><li><a href="m1.html">More...</a></li></ul></p>
</div>
</div>
</div>
<div id="footer">
<div id="footerinside">
<table width="100%"><tr>
<td><p><img src="logo_small.png"><br /><br />Open tools for open physics</p></td>
<td><p><b>M-Labs Limited</b><br />Workshop 15B 6/F Block B1<br />17 Ko Fai Road, Yau Tong<br />Hong Kong<br />+852-59362721</p></td>
<td><a href="https://webchat.freenode.net/?channels=m-labs">Freenode #m-labs</a><br />
GitHub: <a href="https://github.com/m-labs">m-labs</a><br />
Twitter: @<a href="http://twitter.com/M_Labs_Ltd">M_Labs_Ltd</a><br />
</td>
</tr></table>
</div>
</div>
</body>
</html>

BIN
wafer.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 221 KiB