const shop_data = { currency: 'USD', crateModes: { rack: { id: 'rack', name: 'Rack mountable crate', price: 550, hp: 84 }, desktop: { id: 'desktop', name: 'Desktop crate', price: 500, hp: 42 }, no_crate: { id: 'no_crate', name: 'Spare cards', price: 0, hp: -1, warnings_disabled: true } }, crateModeOrder: [ "rack", "desktop" ], crateOptions: { options: [ {"if": [ {"==": [{"var": "ext_data.crate_mode"}, "rack",]}, {type: "Switch", args: { title: "Add fan tray", outvar: "fan_tray", tip: "Add 1U 84hp fan tray (to be mounted under the crate) to improve cooling. " + "Fans need 220VAC 50/60Hz power. 3 fans, 167m³/h air flow.", fallback: false }} ]}, ], prices: [{"if": [ {"and": [{"var": "fan_tray"}, {"==": [{"var": "ext_data.crate_mode"}, "rack",]}]}, {title: "Add fan tray", price: 470, disable_patch: {"fan_tray": false}, id: "fan_tray"}]}] }, orderOptions: { options: [ {"type": "Group", items:[ {type: "Switch", args: { title: "Optional pre-installed NUC mini-computer", outvar: "nuc", tip: "Pre-installed NixOS desktop with ARTIQ and other scientific software. " + "Hardware: Intel® NUC 13 Pro Kit NUC13ANKi7, i7-1360P CPU, " + "32GB RAM, 1TB NVMe. Other options contact us.", fallback: true, }}, { "if": [ {"var": "nuc"}, [ { type: "Radio", args: { title: "Desktop Environment:", outvar: "nuc_desktop", variants: ["Gnome", "KDE"], fallback: 0, classes: "form-check-inline ms-4" } }, {type: "Line", args: {title: "Additional software to be pre-installed", outvar: "software", fallback: "", tip: "Most software from nixpkgs can be pre-installed."}}, {"if": [ {"var": "ext_data.has_crate"}, {type: "Switch", args: { title: "Promotional USB stick", outvar: "include_usb_stick_nuc", tip: "Branded USB stick with device database and other relevant files. Files can also be emailed to you.", fallback: false, }} ]}, ], {"if": [ {"var": "ext_data.has_crate"}, {type: "Switch", args: { title: "Include promotional USB stick", outvar: "include_usb_stick", tip: "Choose if you need a USB stick with device database and other relevant files. Alternative is to to receive them via other electronic means (e.g. email or cloud).", fallback: true, }} ]}, ] }, ]}, {"type": "Group", items: [ { type: "Radio", args: { title: "Shipping options:", outvar: "shipping", variants: [ "Incoterms 2020 FCA", "Incoterms 2020 DAP", "Prepay and add shipping (only available to credit customers)" ], fallback: 0 } }, {"if": [ {"==": [{"var": "shipping"}, "Incoterms 2020 FCA"]}, {type: "Line", args: {title: "Please provide your carrier account information and/or other shipping instructions", outvar: "shipping_instructions", fallback: ""}} ]}, {"if": [ {"==": [{"var": "shipping"}, "Incoterms 2020 DAP"]}, {type: "Line", args: {title: "Please provide delivery address", outvar: "shipping_instructions", fallback: "", tip: "Additional customs fees may be charged to you by the carrier at the time of delivery."}} ]}, {"if": [ {"==": [{"var": "shipping"}, "Prepay and add shipping (only available to credit customers)"]}, [{type: "Radio", args: {title: "In case of additional customs fees:", outvar: "prepay_fees_handling", fallback: 0, variants: [ "Add to your final invoice", "Carrier bills you directly" ]}}, {type: "Line", args: {title: "Please provide delivery address", outvar: "shipping_instructions", fallback: "",}}], ]}, ]} ], prices: [{ "if": [{"var": "nuc"}, {title: "Pre-installed NUC mini-computer", price: 1300, disable_patch: {"nuc": false}, id: "nuc"}], }], shippingSummary: [ {type: "Label", args: { content: ["Shipping method: ", {"var": "shipping"}] }}, {"if": [ {"var": "shipping_instructions"}, {type: "Label", args: { content: [ {"if": [ {"==": [{"var": "shipping"}, "Incoterms 2020 FCA"]}, "carrier account information and/or other shipping instructions: ", "delivery address: " ]}, {"var": "shipping_instructions"} ] }}]}, {type: "Label", args: { content: [ {"if": [ {"==": [{"var": "shipping"}, "Prepay and add shipping (only available to credit customers)"]}, ["In case of additional customs fees: ", {"lower": {"var": "prepay_fees_handling"}}], ]} ] }}, ] }, items: { /* keys are also ids, avoid changing them */ 'kasli': { id: 'kasli', name: 'Carrier', name_number: '1124', name_codename: 'Kasli 2.0', price: 3600, image: '/images/shop/graphic-03_kasli.svg', specs: [ 'FPGA core device, runs ARTIQ kernels, controls the EEMs.', '4 SFP 6Gb/s slots for Ethernet or DRTIO.', '12 EEM connectors.', '4 MMCX clock outputs.', 'Price includes bitstream generation, flashing, testing, and firmware updates for 1 year (USD 1,400.00).', ], size: 'big', type: 'kasli', options: [ {type: "Radio", args: {title: "DRTIO role", outvar: "drtio_role", variants: ["standalone", "master", "satellite"], tip: "Distributed Real Time Input/Output allows ARTIQ RTIO channels to be distributed among several satellite devices synchronized and controlled by a central core(master) device. Standalone option disables this feature."}}, { "if": [ { "in": [ {"var": "drtio_role"}, [ "master", "standalone" ] ] }, [ {type: "Line", args: {title: "IPv4", outvar: "ipv4", fallback: "192.168.1.75/24", tip: "Set up IPv4 address and mask used by core device", validator: {name: "ipv4"}}}, {type: "SwitchLine", args: {title: "IPv6", outvar: "ipv6", tip: "Set up IPv6 address and prefix used by core device", validator: {name: "ipv6"}}}, {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", fallback: {text: "125 MHz", checked: false}, validator: {name: "frequency", params: {min: 10e6, max: 1e9}}, tip: "Use external clock reference: 10, 80 (beta), 100 or 125 MHz. Other options may be provided if needed."}} ], [ {type: "Switch", args: {title: "Optical fiber", outvar: "optics", tip: "Use optical fiber instead of direct attach copper cable"}}, {"if": [ {"var": "optics"}, {type: "Radio", args: {title: "Fiber cable length", outvar: "fiber_cable_len", variants: ["1 M", "3 M", "5 M"], tip: "The desired length of the optical fiber cable", fallback: 1}}, {type: "Radio", args: {title: "Copper cable length", outvar: "copper_cable_len", variants: ["0.5 M", "1 M", "2 M"], tip: "The desired length of the direct attach copper cable", fallback: 0}}, ]} ] ] } ], resources: [ {name: "eem", max: 12}, {name: "clk", max: 4}, ], warnings: [ "eem_resource", "clk_resource", "eem_wiring_constraint" ], consumes: { hp: 8 } }, 'kaslisoc': { id: 'kaslisoc', name: 'Carrier', name_number: '1125', name_codename: 'Kasli-SoC', price: 5100, image: '/images/shop/graphic-03_kaslisoc.svg', specs: [ 'Core device based on Zynq-7000 CPU+FPGA system-on-chip.', 'Runs ARTIQ kernels on 1GHz Cortex-A9 CPU with hardware FPU.', 'Enables high-speed matrix math on the core device.', 'Lower RTIO latency.', 'Higher network transfer speeds.', 'Dedicated RJ45 port for Gigabit Ethernet.', '4 SFP 12Gb/s slots for DRTIO.', '12 EEM connectors.', '4 MMCX clock outputs.', ], size: 'big', type: 'kasli', hp: 8, nbrSlotMin: 0, nbrSlotMax: 12, nbrCurrentSlot: 0, nbrClockMax: 4, nbrCurrentClock: 0, slotOccupied: 1, clockOccupied: 0, options: [ {type: "Radio", args: {title: "DRTIO role", outvar: "drtio_role", variants: ["standalone", "master", "satellite"], tip: "Distributed Real Time Input/Output allows ARTIQ RTIO channels to be distributed among several satellite devices synchronized and controlled by a central core(master) device. Standalone option disables this feature."}}, { "if": [ { "in": [ {"var": "drtio_role"}, [ "master", "standalone" ] ] }, [ {type: "Line", args: {title: "IPv4", outvar: "ipv4", validator: {name: "ipv4"}, fallback: "192.168.1.75/24", tip: "Set up IPv4 address used by core device"}}, {type: "SwitchLine", args: {title: "IPv6", outvar: "ipv6", tip: "Set up IPv6 address and prefix used by core device", validator: {name: "ipv6"}}}, {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", validator: {name: "frequency", params: {min: 10e6, max: 1e9}}, fallback: {text: "125 MHz", checked: false}, tip: "Use external clock reference: 10, 80 (beta), 100 or 125 MHz. Other options may be provided if needed."}}, {type: "Switch", args: {title: "WRPLL", outvar: "wrpll", tip: "Enable WRPLL instead of Si5324"}}, ], [ {type: "Switch", args: {title: "Optical fiber", outvar: "optics", tip: "Use optical fiber instead of direct attach copper cable"}}, {"if": [ {"var": "optics"}, {type: "Radio", args: {title: "Fiber cable length", outvar: "fiber_cable_len", variants: ["1 M", "3 M", "5 M"], tip: "The desired length of the optical fiber cable", fallback: 1}}, {type: "Radio", args: {title: "Copper cable length", outvar: "copper_cable_len", variants: ["0.5 M", "1 M", "2 M"], tip: "The desired length of the direct attach copper cable", fallback: 0}}, ]} ] ] } ], resources: [ {name: "eem", max: 12}, {name: "clk", max: 4}, ], warnings: [ "eem_resource", "clk_resource", "eem_wiring_constraint" ], consumes: { hp: 8 } }, 'vhdcicarrier': { id: 'vhdcicarrier', name: 'VHDCI Carrier', name_number: '1008', name_codename: '', price: 400, image: '/images/shop/graphic-03_VHDCI_carrier.svg', specs: [ 'Passive adapter between VHDCI and EEMs.', 'VHDCI (SCSI-3) cables can carry EEM signals over short distances between crates.', 'Bidirectional: can be driven by Kasli (contact us), or can drive other cards.', 'A pair of VHDCI carriers is a simple, low-latency and low-cost alternative to DRTIO for some applications.', ], size: 'big', type: 'vhdcicarrier', resources: [ {name: "eem", max: 8}, ], warnings: [ "eem_resource", "eem_wiring_constraint" ], consumes: { hp: 8 } }, 'bnc-dio': { id: 'bnc-dio', name: 'BNC-TTL', name_number: '2118', name_codename: '', price: 450, image: '/images/shop/graphic-03_BNC-TTL.svg', specs: [ 'Two banks of four digital channels each, with BNC connectors.', 'Each bank with individual ground isolation.', 'Per-bank switchable direction.', 'Per-channel switchable 50 Ohm termination with LED indicators.', 'Short circuit tolerance: infinite.', 'Minimum pulse width: 3ns.', 'Max 150 MHz toggle rate with 50% duty cycle.' ], datasheet_file: '/docs/sinara-datasheets/2118-2128.pdf', datasheet_name: '2118/2128 BNC/SMA-TTL datasheet', size: 'big', type: null, options: [ { "if": [ {"var": "ext_data.has_other_dio"}, [ {type: "Switch", args: {title: "Output first bank", fallback: true, outvar: "out_first_bank", tip: "Switch connectors 0-3 to output"}} ], [ {type: "Switch", args: {title: "Output first bank", outvar: "out_first_bank", tip: "Switch connectors 0-3 to output"}} ] ] }, { "if": [ {"!": {"var": "out_first_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #0", outvar: "term_0", tip: "Enable termination on channel #0"}}, {type: "Switch", args: {title: "Termination #1", outvar: "term_1", tip: "Enable termination on channel #1"}}, {type: "Switch", args: {title: "Termination #2", outvar: "term_2", tip: "Enable termination on channel #2"}}, {type: "Switch", args: {title: "Termination #3", outvar: "term_3", tip: "Enable termination on channel #3"}}, ]}, null ] }, {type: "Switch", args: {title: "Output second bank", outvar: "out_second_bank", fallback: true, tip: "Switch connectors 4-7 to output"}}, { "if": [ {"!": {"var": "out_second_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #4", outvar: "term_4", tip: "Enable termination on channel #4"}}, {type: "Switch", args: {title: "Termination #5", outvar: "term_5", tip: "Enable termination on channel #5"}}, {type: "Switch", args: {title: "Termination #6", outvar: "term_6", tip: "Enable termination on channel #6"}}, {type: "Switch", args: {title: "Termination #7", outvar: "term_7", tip: "Enable termination on channel #7"}}, ]}, null ] }, { "if": [ {"!": {"and": [{"var": "out_first_bank"}, {"var": "out_second_bank"}]}}, {type: "Switch", args: {title: "Edge counter", outvar: "edge_counter", tip: "Enable edge counter for inputs"}} ] } ], warnings: [ "no_eem_source" ], consumes: { hp: 8, eem: 1 } }, 'sma-dio': { id: 'sma-dio', name: 'SMA-TTL', name_number: '2128', name_codename: '', price: 400, image: '/images/shop/graphic-03_SMA-TTL.svg', specs: [ 'Same as above, but with SMA connectors.' ], datasheet_file: '/docs/sinara-datasheets/2118-2128.pdf', datasheet_name: '2118/2128 BNC/SMA-TTL datasheet', options: [ { "if": [ {"var": "ext_data.has_other_dio"}, [ {type: "Switch", args: {title: "Output first bank", fallback: true, outvar: "out_first_bank", tip: "Switch connectors 0-3 to output"}} ], [ {type: "Switch", args: {title: "Output first bank", outvar: "out_first_bank", tip: "Switch connectors 0-3 to output"}} ] ] }, { "if": [ {"!": {"var": "out_first_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #0", outvar: "term_0", tip: "Enable termination on channel #0"}}, {type: "Switch", args: {title: "Termination #1", outvar: "term_1", tip: "Enable termination on channel #1"}}, {type: "Switch", args: {title: "Termination #2", outvar: "term_2", tip: "Enable termination on channel #2"}}, {type: "Switch", args: {title: "Termination #3", outvar: "term_3", tip: "Enable termination on channel #3"}}, ]}, null ] }, {type: "Switch", args: {title: "Output second bank", outvar: "out_second_bank", fallback: true, tip: "Switch connectors 4-7 to output"}}, { "if": [ {"!": {"var": "out_second_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #4", outvar: "term_4", tip: "Enable termination on channel #4"}}, {type: "Switch", args: {title: "Termination #5", outvar: "term_5", tip: "Enable termination on channel #5"}}, {type: "Switch", args: {title: "Termination #6", outvar: "term_6", tip: "Enable termination on channel #6"}}, {type: "Switch", args: {title: "Termination #7", outvar: "term_7", tip: "Enable termination on channel #7"}}, ]}, null ] }, { "if": [ {"!": {"and": [{"var": "out_first_bank"}, {"var": "out_second_bank"}]}}, {type: "Switch", args: {title: "Edge counter", outvar: "edge_counter", tip: "Enable edge counter for inputs"}} ] } ], size: 'small', type: null, warnings: [ "no_eem_source" ], consumes: { hp: 4, eem: 1 } }, 'mcx-dio': { id: 'mcx-dio', name: 'MCX-TTL', name_number: '2238', name_codename: '', price: 600, image: '/images/shop/graphic-03_MCX-TTL.svg', specs: [ '16 single-ended digital signals on MCX connectors.', 'Direction selectable in banks of four signals.', 'Termination individually selectable for each signal.', 'No galvanic isolation.', 'Higher speed and lower jitter than the isolated SMA and BNC DIO cards.' ], datasheet_file: '/docs/sinara-datasheets/2238.pdf', datasheet_name: '2238 MCX-TTL datasheet', options: [ { "if": [ {"var": "ext_data.has_other_dio"}, [ {type: "Switch", args: {title: "Output first bank", fallback: true, outvar: "out_first_bank", tip: "Switch connectors 0-3 to output"}} ], [ {type: "Switch", args: {title: "Output first bank", outvar: "out_first_bank", tip: "Switch connectors 0-3 to output"}} ] ] }, { "if": [ {"!": {"var": "out_first_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #0", outvar: "term_0", tip: "Enable termination on channel #0"}}, {type: "Switch", args: {title: "Termination #1", outvar: "term_1", tip: "Enable termination on channel #1"}}, {type: "Switch", args: {title: "Termination #2", outvar: "term_2", tip: "Enable termination on channel #2"}}, {type: "Switch", args: {title: "Termination #3", outvar: "term_3", tip: "Enable termination on channel #3"}}, ]} ] }, {type: "Switch", args: {title: "Output second bank", outvar: "out_second_bank", fallback: true, tip: "Switch connectors 4-7 to output"}}, { "if": [ {"!": {"var": "out_second_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #4", outvar: "term_4", tip: "Enable termination on channel #4"}}, {type: "Switch", args: {title: "Termination #5", outvar: "term_5", tip: "Enable termination on channel #5"}}, {type: "Switch", args: {title: "Termination #6", outvar: "term_6", tip: "Enable termination on channel #6"}}, {type: "Switch", args: {title: "Termination #7", outvar: "term_7", tip: "Enable termination on channel #7"}}, ]} ] }, {type: "Switch", args: {title: "Output third bank", outvar: "out_third_bank", fallback: true, tip: "Switch connectors 8-11 to output"}}, { "if": [ {"!": {"var": "out_third_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #8", outvar: "term_8", tip: "Enable termination on channel #8"}}, {type: "Switch", args: {title: "Termination #9", outvar: "term_9", tip: "Enable termination on channel #9"}}, {type: "Switch", args: {title: "Termination #10", outvar: "term_10", tip: "Enable termination on channel #10"}}, {type: "Switch", args: {title: "Termination #11", outvar: "term_11", tip: "Enable termination on channel #11"}}, ]} ] }, {type: "Switch", args: {title: "Output fourth bank", outvar: "out_fourth_bank", fallback: true, tip: "Switch connectors 12-15 to output"}}, { "if": [ {"!": {"var": "out_fourth_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #12", outvar: "term_12", tip: "Enable termination on channel #12"}}, {type: "Switch", args: {title: "Termination #13", outvar: "term_13", tip: "Enable termination on channel #13"}}, {type: "Switch", args: {title: "Termination #14", outvar: "term_14", tip: "Enable termination on channel #14"}}, {type: "Switch", args: {title: "Termination #15", outvar: "term_15", tip: "Enable termination on channel #15"}}, ]} ] }, { "if": [ {"!": {"and": [{"var": "out_first_bank"}, {"var": "out_second_bank"}, {"var": "out_third_bank"}, {"var": "out_fourth_bank"}]}}, {type: "Switch", args: {title: "Edge counter", outvar: "edge_counter", tip: "Enable edge counter for inputs"}} ] } ], size: 'small', type: null, warnings: [ "no_eem_source" ], consumes: { hp: 4, eem: 2 } }, 'rj45-dio': { id: 'rj45-dio', name: 'LVDS-TTL', name_number: '2245', name_codename: '', price: 390, image: '/images/shop/graphic-03_LVDS.svg', specs: [ 'Supplies 16 LVDS pairs via 4 front-panel RJ45 connectors.', 'Each RJ45 supplies 4 LVDS DIOs.', 'Direction individually selectable for each signal.', 'No galvanic isolation.', 'Higher speed and lower jitter than the isolated SMA and BNC DIO cards.' ], datasheet_file: '/docs/sinara-datasheets/2245.pdf', datasheet_name: '2245 LVDS-TTL datasheet', options: [ {type: "Switch", args: {title: "Configure first RJ45", fallback: false, outvar: "conf_first_rj45", tip: "Configure channels 0-3"}}, { "if": [ {"var": "conf_first_rj45"}, {type: "Group", items: [ {type: "Switch", args: {title: "Output channel #0", fallback: true, outvar: "output_0", tip: "Set channel #0 to output"}}, {type: "Switch", args: {title: "Output channel #1", fallback: true, outvar: "output_1", tip: "Set channel #1 to output"}}, {type: "Switch", args: {title: "Output channel #2", fallback: true, outvar: "output_2", tip: "Set channel #2 to output"}}, {type: "Switch", args: {title: "Output channel #3", fallback: true, outvar: "output_3", tip: "Set channel #3 to output"}}, ]} ] }, {type: "Switch", args: {title: "Configure second RJ45", fallback: false, outvar: "conf_second_rj45", tip: "Configure channels 4-7"}}, { "if": [ {"var": "conf_second_rj45"}, {type: "Group", items: [ {type: "Switch", args: {title: "Output channel #4", fallback: true, outvar: "output_4", tip: "Set channel #4 to output"}}, {type: "Switch", args: {title: "Output channel #5", fallback: true, outvar: "output_5", tip: "Set channel #5 to output"}}, {type: "Switch", args: {title: "Output channel #6", fallback: true, outvar: "output_6", tip: "Set channel #6 to output"}}, {type: "Switch", args: {title: "Output channel #7", fallback: true, outvar: "output_7", tip: "Set channel #7 to output"}}, ]} ] }, {type: "Switch", args: {title: "Configure third RJ45", fallback: false, outvar: "conf_third_rj45", tip: "Configure channels 8-11"}}, { "if": [ {"var": "conf_third_rj45"}, {type: "Group", items: [ {type: "Switch", args: {title: "Output channel #8", fallback: true, outvar: "output_8", tip: "Set channel #8 to output"}}, {type: "Switch", args: {title: "Output channel #9", fallback: true, outvar: "output_9", tip: "Set channel #9 to output"}}, {type: "Switch", args: {title: "Output channel #10", fallback: true, outvar: "output_10", tip: "Set channel #10 to output"}}, {type: "Switch", args: {title: "Output channel #11", fallback: true, outvar: "output_11", tip: "Set channel #11 to output"}}, ]} ] }, {type: "Switch", args: {title: "Configure fourth RJ45", fallback: false, outvar: "conf_fourth_rj45", tip: "Configure channels 12-15"}}, { "if": [ {"var": "conf_fourth_rj45"}, {type: "Group", items: [ {type: "Switch", args: {title: "Output channel #12", fallback: true, outvar: "output_12", tip: "Set channel #12 to output"}}, {type: "Switch", args: {title: "Output channel #13", fallback: true, outvar: "output_13", tip: "Set channel #13 to output"}}, {type: "Switch", args: {title: "Output channel #14", fallback: true, outvar: "output_14", tip: "Set channel #14 to output"}}, {type: "Switch", args: {title: "Output channel #15", fallback: true, outvar: "output_15", tip: "Set channel #15 to output"}}, ]} ] }, { "if": [ {"or": [ {"and": [{"var": "conf_first_rj45"}, {"!": {"missing": ["output_0", "output_1", "output_2", "output_3"]}}, {"!": {"and": [{"var": "output_0"}, {"var": "output_1"}, {"var": "output_2"},{"var": "output_3"}]}}]}, {"and": [{"var": "conf_second_rj45"}, {"!": {"missing": ["output_4", "output_5", "output_6", "output_7"]}}, {"!": {"and": [{"var": "output_4"}, {"var": "output_5"}, {"var": "output_6"},{"var": "output_7"}]}}]}, {"and": [{"var": "conf_third_rj45"}, {"!": {"missing": ["output_8", "output_9", "output_10", "output_11"]}}, {"!": {"and": [{"var": "output_8"}, {"var": "output_9"}, {"var": "output_10"},{"var": "output_11"}]}}]}, {"and": [{"var": "conf_fourth_rj45"}, {"!": {"missing": ["output_12", "output_13", "output_14", "output_15"]}}, {"!": {"and": [{"var": "output_12"}, {"var": "output_13"}, {"var": "output_14"},{"var": "output_15"}]}}]} ]}, {type: "Switch", args: {title: "Edge counter", outvar: "edge_counter", tip: "Enable edge counter for inputs"}} ] } ], size: 'small', type: null, warnings: [ "no_eem_source" ], consumes: { hp: 4, eem: 2 } }, 'urukul': { id: 'urukul', name: 'DDS', name_number: '4410', name_codename: 'Urukul', price: 2350, image: '/images/shop/graphic-03_Urukul.svg', specs: [ '4 channel 1GS/s DDS.', 'Output frequency (-3 dB): <1 to >400 MHz.', 'Frequency resolution ~0.25 Hz (32 bit)', 'Nominal max output power 10 dBm.', 'Digital step attenuator 0 to -31.5dB.', 'RF switch (1ns temporal resolution), 70dB isolation.', 'AD9910 and AD9912 cards can be used at the same time in the same crate.', 'Power amplifier (e.g. AOM driver) options available, contact us for details.', 'Can be integrated and shipped with single- or double-pass fiber-coupled AOM at most wavelengths 400nm-1650nm, AOM driver, low-noise monitor PD and SU-Servo to reduce laser, AOM and fiber noise. Contact us for details.' ], datasheet_file: '/docs/sinara-datasheets/4410-4412.pdf', datasheet_name: '4410/4412 Urukul datasheet', options: [ {type: "Switch", args: {title: "Use 1 EEM", outvar: "mono_eem", tip: "Use one EEM port setup. RF switch and synchronization will be unavailable."}}, { "if": [ {"var": "mono_eem"}, [ {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", validator: {name: "frequency", params: {min: 10e6, max: 1e9}}, fallback: {text: "125 MHz", checked: false}}}, ], [ {type: "Switch", args: {title: "Synchronization", outvar: "sync", tip: "Synchronize phases across Urukuls"}}, { "if": [ {"var": "sync"}, null, [ {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", validator: {name: "frequency", params: {min: 10e6, max: 1e9}}, fallback: {text: "125 MHz", checked: false}}}, { "if": [ {"var": "ext_data.has_sampler"}, {type: "Switch", args: {title: "SUServo mode", outvar: "suservo"}}, null ] } ] ] } ] ] } ], size: 'small', type: 'urukul', warnings: [ "no_eem_source", "no_clk_source" ], consumes: { hp: 4, eem: 2, clk: 1 } }, 'urukul_4412': { id: 'urukul_4412', name: 'DDS', name_number: '4412', name_codename: 'Urukul', price: 2350, image: '/images/shop/graphic-03_Urukul-4412.svg', specs: [ '4 channel 1GS/s DDS.', 'Higher frequency resolution ~8 µHz (47 bit)', 'Output frequency (-3 dB): <1 to >400 MHz.', 'Nominal max output power 10 dBm.', 'Digital step attenuator 0 to -31.5dB.', 'RF switch (1ns temporal resolution), 70dB isolation.', 'AD9912 chip.', 'AD9910 and AD9912 cards can be used at the same time in the same crate.', 'Power amplifier (e.g. AOM driver) options available, contact us for details.', 'Can be integrated and shipped with single- or double-pass fiber-coupled AOM at most wavelengths 400nm-1650nm, and AOM driver. Contact us for details.' ], datasheet_file: '/docs/sinara-datasheets/4410-4412.pdf', datasheet_name: '4410/4412 Urukul datasheet', options: [ {type: "Switch", args: {title: "Use 1 EEM", outvar: "mono_eem", tip: "Use one EEM port setup. RF switch and synchronization will be unavailable."}}, {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", validator: {name: "frequency", params: {min: 10e6, max: 1e9}}, fallback: {text: "125 MHz", checked: false}}} ], size: 'small', type: 'urukul', warnings: [ "no_eem_source", "no_clk_source" ], consumes: { hp: 4, eem: 2, clk: 1 } }, 'phaser': { id: 'phaser', name: 'AWG', name_number: '4624', name_codename: 'Phaser', price: 4260, image: '/images/shop/graphic-03_Phaser.svg', specs: [ '2x 1.25 GS/s IQ upconverters.', 'dual IQ mixer + 0.3 GHz to 4.8 GHz VCO + PLL.', '31.5 dB range digital step attenuator (similar to Urukul).', '2 channels of 5 MS/s ADC (similar to Sampler).', 'Artix-7 FPGA.', 'Internal MMCX clock from Kasli/Clocker and external SMA.', 'The upconverter is optional, if you would like the baseband version please leave us a note.' ], options: [ {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", validator: {name: "frequency", params: {min: 10e6, max: 1e9}}, fallback: {text: "125 MHz", checked: false}}}, {type: "Radio", args: {title: "Variant", outvar: "variant", variants: ["Baseband", "Upconverter"], fallback: 1}}, ], size: 'small', type: 'urukul', warnings: [ "no_eem_source", "no_clk_source" ], consumes: { hp: 4, eem: 1, clk: 1 } }, 'zotino': { id: 'zotino', name: 'DAC', name_number: '5432', name_codename: 'Zotino', price: 1600, image: '/images/shop/graphic-03_Zotino.svg', specs: [ '32-channel DAC.', '16-bit resolution.', '1 MSPS shared between all channels.', 'Output voltage +-10V.', 'HD68 connector with all channels.', 'Channels can also be broken out to BNC or SMA using IDC-BNC, IDC-SMA or IDC-MCX cards.', 'DAC temperature can be stabilized using the Sinara 8451 Thermostat (sold separately).' ], options: [ { "if": [ {"var": "ext_data.has_thermostat"}, [ {type: "Switch", args: {title: "TEC", outvar: "tec", fallback: true, tip: "Used for stabilizing temperature with Sinara 8451 Thermostat"}} ], [ {type: "Switch", args: {title: "TEC", outvar: "tec", tip: "Used for stabilizing temperature with Sinara 8451 Thermostat"}} ] ] } ], datasheet_file: '/docs/sinara-datasheets/5432.pdf', datasheet_name: '5432 Zotino datasheet', size: 'small', type: 'zotino', warnings: [ "no_eem_source", "idc_resource" ], consumes: { hp: 4, eem: 1, tec: 1 }, resources: [ {name: "idc", max: 4} ] }, 'fastino': { id: 'fastino', name: 'DAC', name_number: '5632', name_codename: 'Fastino', price: 3390, image: '/images/shop/graphic-03_Fastino.svg', specs: [ '32-channel DAC.', '16-bit resolution.', '2 MSPS simultaneously on all channels (requires gateware acceleration).', 'Output voltage +-10V.', 'HD68 connector with all channels.', 'Channels can also be broken out to BNC or SMA using IDC-BNC, IDC-SMA or IDC-MCX cards.' ], size: 'small', type: 'zotino', warnings: [ "no_eem_source", "idc_resource", ], consumes: { hp: 4, eem: 1 }, resources: [ {name: "idc", max: 4} ] }, 'idc-bnc-adapter': { id: 'idc-bnc-adapter', name: 'BNC-IDC', name_number: '5518', name_codename: '', price: 160, image: '/images/shop/graphic-03_IDC-BNC-adapter.svg', specs: [ 'Breaks out analog signals from Zotino or HD68-IDC to BNC connectors.', 'Each card provides 8 channels.', 'Breaking out all 32 channels from a Zotino requires 4 IDC-BNC cards.' ], size: 'big', type: 'idc-bnc', warnings: [ "no_idc_source" ], consumes: { hp: 8, idc: 1 } }, 'hvamp32': { id: 'hvamp32', name: 'HV Amplifier', name_number: '5633', name_codename: '', price: 1500, image: '/images/shop/graphic-03_HVAMP32.svg', specs: [ 'Amplifier: LTC6090 or OPA462, 32 channels.', 'Amplification range up to ±25V and ±55V available.', 'Over-temperature protection.', 'External 12V power supply.', 'Slew rate 21V/us typical.', 'Bandwidth: 12MHz/gain, for ±25V range BW is 4.8MHz typical.', 'The same connector as in Zotino and Fastino.' ], options: [ {type: "Radio", args: { title: "Amplification range", outvar: "hvamp", variants: ["±25V", "±55V"], fallback: 0 }}, ], size: 'small', warnings: [ "no_idc_source" ], resources: [ {name: "idc", max: 4} ], consumes: { hp: 4, idc: 4 } }, 'idc-sma-adapter': { id: 'idc-sma-adapter', name: 'SMA-IDC', name_number: '5528', name_codename: '', price: 160, image: '/images/shop/graphic-03_SMA-IDC.svg', specs: [ 'Breaks out analog signals from Zotino or HD68-IDC to SMA connectors.', 'Each card provides 8 channels.', 'Breaking out all 32 channels from a Zotino requires 4 SMA-IDC cards.' ], size: 'small', type: 'idc-bnc', warnings: [ "no_idc_source" ], consumes: { hp: 4, idc: 1 } }, 'hd68-idc-adapter': { id:'hd68-idc-adapter', name: 'HD68-IDC', name_number: '5568', name_codename: '', price: 150, image: '/images/shop/graphic-03_HD68.svg', specs: [ 'Connects an external HD68 cable to IDC-BNC, IDC-SMA or IDC-MCX cards.', ], size: 'small', type: 'hd68', options: [ {type: "Radio", args: {title: "Cable length", outvar: "hd68_cable_len", variants: ["1 M", "2 M", "3 M"], tip: "The desired length of the HD68 cable", fallback: 1}}, ], options_class: "hd68-idc", warnings: [ "idc_resource" ], consumes: { hp: 4 }, resources: [ {name: "idc", max: 4} ] }, 'novo': { id: 'novo', name: 'Sampler', name_number: '5108', name_codename: '', price: 1600, image: '/images/shop/graphic-03_Sampler.svg', specs: [ '8-channel ADC.', '16-bit resolution.', '1.5 MSPS simultaneously on all channels.', 'When used with ARTIQ-Python driver, effective sample rate is lower.', 'Digitally programmable input gain.', 'Full-scale input ranges between +-10mV and +-10V.', 'Supports SU-Servo laser intensity stabilization servo in conjunction with Urukul.' ], options: [ {type: "Switch", args: {title: "1 EEM mode", outvar: "mono_eem"}}, { "if": [ {"and": [{"var": "ext_data.has_dds"}, {"!": {"var": "mono_eem"}}]}, {type: "Switch", args: {title: "SUServo mode", outvar: "suservo"}}, null ] }, {type: "Switch", args: {title: "Configure termination", outvar: "config_term"}}, { "if": [ {"var": "config_term"}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #0", outvar: "term_0", tip: "Enable termination on channel #0"}}, {type: "Switch", args: {title: "Termination #1", outvar: "term_1", tip: "Enable termination on channel #1"}}, {type: "Switch", args: {title: "Termination #2", outvar: "term_2", tip: "Enable termination on channel #2"}}, {type: "Switch", args: {title: "Termination #3", outvar: "term_3", tip: "Enable termination on channel #3"}}, {type: "Switch", args: {title: "Termination #4", outvar: "term_4", tip: "Enable termination on channel #4"}}, {type: "Switch", args: {title: "Termination #5", outvar: "term_5", tip: "Enable termination on channel #5"}}, {type: "Switch", args: {title: "Termination #6", outvar: "term_6", tip: "Enable termination on channel #6"}}, {type: "Switch", args: {title: "Termination #7", outvar: "term_7", tip: "Enable termination on channel #7"}}, ]}] } ], size: 'big', type: 'novo', warnings: [ "no_eem_source" ], consumes: { hp: 8, eem: 2 } }, 'koster': { id: 'koster', name: 'Grabber', name_number: '6302', name_codename: '', price: 550, image: '/images/shop/graphic-03_Grabber.svg', specs: [ 'Camera input interface card.', 'Supports some EMCCD cameras.', 'Allows image processing to occur in the FPGA with lower latency.', 'Existing stack supports summing over rectangular ROIs and reporting the result to ARTIQ kernels.', 'Camera signal is entirely processed in the Kasli FPGA.', ], options: [ {type: "Radio", args: {title: "Connectors", outvar: "n_eem", variants: ["1 EEM", "2 EEM", "3 EEM"], tip: "Number of EEM ports to use.", fallback: 1}}, ], size: 'small', type: 'koster', warnings: [ "no_eem_source" ], consumes: { hp: 4, eem: 2 } }, 'clocker': { id: 'clocker', name: 'Clocker', name_number: '7210', name_codename: '', price: 525, image: '/images/shop/graphic-03_Clocker.svg', specs: [ 'Distribute a low jitter clock signal among cards.', '2 inputs.', '10 outputs including 4 SMAs.', 'Frequency up to 1GHz.', 'Low jitter <100fs RMS.' ], options: [ {type: "Switch", args: {title: "Ext CLK", outvar: "ext_clk"}}, {type: "Switch", args: {title: "Ext power", outvar: "ext_pwr", "tip": "Use external power supply in order to reduce number of used EEM connectors"}} ], options_class: "clocker", size: 'small', type: 'clocker', warnings: [ "no_eem_source", "no_clk_source", "clk_resource" ], consumes: { hp: 4, eem: 1, clk: 1 }, resources: [ {name: "clk", max: 6} ] }, 'stabilizer': { id: 'stabilizer', name: 'DSP', name_number: '8452', name_codename: 'Stabilizer', price: 2000, image: '/images/shop/graphic-03_Stabilizer.svg', specs: [ 'CPU-based dual-channel fast servo.', '400MHz STM32H743ZIT6.', 'Dual 16bit ADC with x2, x5, x10 PGA (2MS/s).', '16bit AD5542A DAC (1us settling time).', '100Base-T Ethernet.', 'Can be controlled by Kasli or work stand-alone with PoE supply.' ], options: [ {type: "SwitchLine", args: {title: "IP", outvar: "ip", validator: {name: "ipv4or6"}, fallback: {text: "DHCP", checked: false}, tip: "Set up IP address used by the device"}}, {type: "Switch", args: {title: "Ext power", outvar: "ext_pwr", "tip": "Use external power supply in order to reduce number of used EEM connectors"}}, {type: "Switch", args: {title: "Term #0", outvar: "term_0", tip: "Enable termination on ADC channel #0"}}, {type: "Switch", args: {title: "Term #1", outvar: "term_1", tip: "Enable termination on ADC channel #1"}} ], options_class: "stabilizer", size: 'small', type: null, warnings: [ "no_eem_source" ], consumes: { hp: 4, eem: 1 }, }, 'fast_servo': { id: 'fast_servo', name: 'Fast DSP', name_number: '8462', name_codename: 'Fast Servo', price: 2900, image: '/images/shop/graphic-03_Fast-Servo.svg', specs: [ 'High-speed, low-latency servo (Stabilizer-compatible) module.', 'Trenz TE0715-04 SoC module (XC7Z015).', '2 channel 125MHz 16bit ADC (LTC2195).', '2 channel 125MHz 14bit DAC (AD9117).', '100Base-T Ethernet.', 'Can work stand-alone with PoE or DC supply.' ], options: [ {type: "SwitchLine", args: {title: "IP", outvar: "ip", validator: {name: "ipv4or6"}, fallback: {text: "DHCP", checked: false}, tip: "Set up IP address used by the device"}}, {type: "Switch", args: {title: "Ext power", outvar: "ext_pwr", "tip": "Use external power supply in order to reduce number of used EEM connectors"}}, {type: "Switch", args: {title: "Term #0", outvar: "term_0", tip: "Enable termination on ADC channel #0"}}, {type: "Switch", args: {title: "Term #1", outvar: "term_1", tip: "Enable termination on ADC channel #1"}} ], options_class: "stabilizer", size: 'small', type: null, warnings: [ "no_eem_source" ], consumes: { hp: 4, eem: 1 }, }, 'mirny': { id: 'mirny', name: 'Synthesizer', name_number: '4456', name_codename: 'Mirny', price: 2660, image: '/images/shop/graphic-03_Mirny.svg', specs: [ '4-channel Wide-band PLL/VCO-based microwave frequency synthesiser.', '53 MHz to >4 GHz.', 'Up to 13.6 GHz when using the mezzanine.', 'Much higher frequency resolution than Urukul.', 'Lower jitter and phase noise.', 'Large frequency changes take several milliseconds.', ], options: [ {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", validator: {name: "frequency", params: {min: 10e6, max: 600e6}}, fallback: {text: "125 MHz", checked: false}}} ], size: 'small', type: null, warnings: [ "no_eem_source", "no_clk_source" ], consumes: { hp: 4, eem: 1, clk: 1 }, }, 'almazny': { id: 'almazny', name: 'HF Synthesizer', name_number: '4457', name_codename: 'Mirny + Almazny', price: 3660, image: '/images/shop/graphic-03_Almazny.svg', specs: [ 'Mirny with high frequency mezzanine.', 'Additional 4 channels up to 12 GHz.', 'Each Almazny channel outputs twice the frequency of its corresponding Mirny channel.', ], options: [ {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", validator: {name: "frequency", params: {min: 10e6, max: 600e6}}, fallback: {text: "125 MHz", checked: false}}} ], size: 'big', type: null, warnings: [ "no_eem_source", "no_clk_source" ], consumes: { hp: 8, eem: 1, clk: 1 }, }, 'thermostat-eem': { id: 'thermostat-eem', name: 'Thermostat EEM', name_number: '8453', name_codename: '', price: 2600, image: '/images/shop/graphic-03_Thermostat-EEM.svg', specs: [ '4 TEC channels.', 'Sensor channel count: 8 differential, 16 single-ended.', 'Output HD44 DSUB connector.', 'Up to 8W (+/-2A with 4V compliance) heater/TEC drive from MAX1968 drivers.', 'Up to 16W (+4A 4V) from MAX1969 drivers.', '100Base-T Ethernet with PoE.' ], options: [ {type: "Switch", args: {title: "Ext power", outvar: "ext_pwr", "tip": "Use external power supply in order to reduce number of used EEM connectors"}} ], size: 'small', type: null, warnings: [ "no_eem_source" ], consumes: { hp: 4, eem: 1, } }, 'thermostat2ch': { id: 'thermostat2ch', name: 'Thermostat', name_number: '8451', name_codename: '', price: 900, image: '/images/shop/graphic-03_Thermostat2ch.svg', specs: [ '2 TEC channels.', 'Parallel output 10 pin IDC 2.54mm and 5 pin 3.81mm connectors per channel.', 'Up to 8W (+/-2A with 4V compliance) heater/TEC drive from MAX1968 drivers.', '100Base-T Ethernet with PoE.', 'Can stabilize temperature of Sinara 5432 DAC or external devices containing TEC and thermistor.' ], size: 'small', type: null, consumes: { hp: 4 }, resources: [ {name: "tec", max: 2} ] }, 'shuttler': { id: 'shuttler', name: 'DAC', name_number: '5716', name_codename: 'Shuttler', price: 8500, image: '/images/shop/graphic-03_Shuttler.svg', specs: [ '16-ch, 125 MSPS DAC EEM with remote analog front end board.', 'High DC resolution (up to ~18 bits with sigma-delta modulation) for trap electrode bias.', '~15MHz default analog bandwidth.', 'AD9117 DACs (14 bits @ 125 MSPS, <1 LSB DNL).', 'Differential analog output via mini-SAS HD with shielded impedance-matched pairs.', 'Included remote analog front-end (AFE) board converts differential signals to ±10V single-ended at the point of use, with additional gain and filtering.', ], size: 'big', type: null, warnings: [ "no_eem_source", "no_clk_source" ], consumes: { hp: 8, eem: 1, clk: 1 }, }, 'pounder': { id: 'pounder', name: 'PDH lock generator', name_number: '4459', name_codename: 'Stabilizer + Pounder', price: 4460, image: '/images/shop/graphic-03_Pounder.svg', specs: [ 'Stabilizer with Pounder daughter card.', '2-channel Pound Drever Hall (PDH) lock generator.', 'AD9959 DDS (500MSPS, 10-bit).' ], options: [ {type: "SwitchLine", args: {title: "IP", outvar: "ip", validator: {name: "ipv4or6"}, fallback: {text: "DHCP", checked: false}, tip: "Set up IP address used by the device"}}, {type: "Switch", args: {title: "Ext power", outvar: "ext_pwr", "tip": "Use external power supply in order to reduce number of used EEM connectors"}}, {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", fallback: {text: "125 MHz", checked: false}, validator: {name: "frequency", params: {min: 10e6, max: 1e9}}}}, {type: "Switch", args: {title: "Termination #0", outvar: "term_0", tip: "Enable termination on ADC channel #0"}}, {type: "Switch", args: {title: "Termination #1", outvar: "term_1", tip: "Enable termination on ADC channel #1"}} ], size: 'big', type: null, warnings: [ "no_eem_source", "no_clk_source" ], consumes: { hp: 4, eem: 1, clk: 1 } }, 'eem_pwr_mod': { id: 'eem_pwr_mod', name: 'EEM AC Power Module', name_number: '1106', name_codename: '', price: 750, image: '/images/shop/graphic-03_eem_pwr_mod.svg', specs: [ "EEM AC power module.", "400W with forced cooling (25CFM), 200W with free air convection.", "Universal input.", "IEC inlet on front panel.", "EMC filter.", "LED current indicator.", "6 rear side outputs.", "Mains circuit protected with steel cover.", "Optional - external power brick will be shipped free of charge if removed." ], size: 'big', type: null, warnings: [], consumes: { hp: 4, }, }, 'kirdy': { id: 'kirdy', name: 'Laser diode driver', name_number: '1550', name_codename: 'Kirdy', price: 1700, image: '/images/shop/graphic-03_Kirdy.svg', specs: [ "Precision LD driver: 300mA max output current, 20-bit resolution, 4V compliance voltage.", "RMS noise 10Hz-1MHz: <200nA, density <300pA/√Hz.", "Low-frequency modulation input, DC-18MHz 3dB bandwidth, suitable for laser locks and linewidth reduction.", "High-frequency Bias-T modulation input, suitable for PDH sideband generation.", "Monitor photodiode and LD protection.", "Temperature controller: ±1A max current, sub-mK stability.", "Full digital control and power over Ethernet.", "Can ship with single-frequency narrow-linewidth laser pre-installed (1270-1610nm from USD +200.00, 633-1064nm from USD +4,000.00), fiber output on front panel.", "Also suitable for commercial or homebuilt ECDL heads (with additional piezo driver), and injection-locked Fabry-Perot diodes." ], options: [ {type: "Line", args: {title: "IP", outvar: "ip", validator: {name: "ipv4"}, fallback: "192.168.1.128/24", tip: "Set up IP address used by the device."}}, ], size: 'big', type: null, warnings: [], consumes: { hp: 8, }, }, }, columns: { /*** * catalog is the column containing all items on left aside, * name should not change */ 'catalog': { id: 'catalog', title: 'Catalog', /* itemIds define items order - change order to suit your need */ categories: [ { name: 'Core', itemIds: [ 'kasli', 'kaslisoc']}, { name: 'TTL', itemIds: [ 'bnc-dio', 'sma-dio', 'mcx-dio', 'rj45-dio']}, { name: 'RF', itemIds: [ 'clocker', 'urukul', 'urukul_4412', 'phaser', 'mirny', 'almazny', 'pounder']}, { name: 'DAC/ADC', itemIds: [ 'zotino', 'fastino', 'hvamp32', 'novo', 'shuttler']}, { name: 'Adapters', itemIds: [ 'idc-bnc-adapter', 'idc-sma-adapter', 'hd68-idc-adapter', 'vhdcicarrier']}, { name: 'Servos', itemIds: [ 'stabilizer', 'fast_servo', 'pounder', 'thermostat2ch', 'thermostat-eem']}, { name: 'Misc', itemIds: [ 'koster', 'eem_pwr_mod', 'kirdy', ]} ], }, "crates": [{ id: "crate0", crate_mode: "rack", fan_tray: false, items: [], warnings: [], occupiedHP: 0, }, { id: "spare", name: "Spare cards", crate_mode: "no_crate", items: [], warnings: [], occupiedHP: 0, } ] }, }; window.shop_data = shop_data;