Come work with us!

Open Positions

Applicants for all roles should send a resume and covering email, clearly stating your suitability for the role and the Job Reference, to jobs@myrtlesoftware.com. Please include any links to blog posts, repositories or any other relevant media which demonstrates your skill set. All roles will be based at our offices in central Cambridge, UK. Closing date for all current applications is 5pm, 3rd December 2017

An example of the work that all our open roles will be involved with is the semantic image segmentation network below. This allows cameras to understand what they’re seeing. Such algorithms are a typical requirement for autonomous vehicles and many exciting data-center applications.


Senior FPGA Engineer   (Job Ref: SNRFPGA)


We are looking for a Senior FPGA Engineer with significant floor planning experience to improve the operating frequencies for our large, generated, FPGA designs. This is a great role working on next-generation hardware. You will work with our compiler development team to improve FPGA resource usage, achieve timing closure, and automate the floor planning and constraint generation process. You will work with our machine learning experts and lead architect to develop novel circuit implementations for machine learning algorithms. Initially you will be tasked to solve the following specific problem: we have individual components running at fabric Fmax and several components composed in a pipelined fashion running at fabric Fmax. However, all components, when composed in a fully pipelined fashion, no longer run at fabric Fmax. You’ll have the expertise to be able to solve this using better constraints and floor planning and you will ensure that our complete, fully pipelined, circuits will run at FPGA fabric Fmax.

Responsibilities
• FPGA Floor planning for our generated designs
• Develop high-quality circuit design and architecture
• Achieve operating frequencies close to FPGA fabric Fmax for generated designs
• Minimize FPGA resource usage
• Identify, prioritize and execute tasks in the circuit development life cycle
• Automate tasks through appropriate tools and scripting
• Review and debug code
• Perform validation and verification testing
• Document development phases

Skills & Qualifications
• High level of experience in achieving timing closure in complex for high speed designs targeted at large FPGA devices, developing timing constraints (xdc, sdc), using manual floor planning (Logic Lock , Pblock, RPM) where appropriate
• Digital design including interfacing to hardware, peripherals and processors
• In-depth knowledge of Quartus and its respective scripting environments and command-line tools
• VHDL, particularly targeting Altera /Intel devices (including SoC devices)
• Experience of designing robust designs in multi-clock domain systems
• Experience designing for modern high-speed Altera /Intel devices: Arria/ Stratix V, Arria 10
• Some knowledge or interest in functional programming e.g. OCaml, Haskell, F#, etc.
• BSc /BA in Computer Science or a related degree
• Analytical mind with problem-solving aptitude
• Ability to work independently
• Excellent organizational and leadership skills
• Developing of element and system level tests, documentation and conduct of testing activities
• Development of element level requirements and their design with corresponding documentation

Additional Knowledge
• In-depth knowledge of: Xilinx ISE /Vivado, and their respective scripting environments and command-line tools
• Experience designing for modern high-speed Xilinx devices: Virtex 7/ Ultrascale/ Ultrascale+
• Familiarity with various OSs and standard development practises e.g. CI, Git etc.


VP of Engineering   (Job Ref: VPSNR)

We are looking for a VP of Engineering/ Senior Functional Programmer to lead a small team of Haskell programmers to improve the current iteration of our software, and also plan and develop its next iteration. You will work with our machine learning experts and circuit design experts to define requirements and take the lead on operational and technical projects.

Responsibilities
• Develop high-quality software design and architecture
• Run the daily scrum and perform project management tasks
• Identify, prioritize and execute tasks in the software development life cycle
• Develop tools and applications by producing clean, efficient code
• Automate tasks through appropriate tools and scripting
• Review and debug code
• Perform validation and verification testing
• Document development phases and monitor systems
• Line manager for junior software developers

Skills & Qualifications
• Proven experience as a Senior Software Engineer
• In-depth knowledge of statically typed functional programming languages e.g. Haskell, OCaml, F#
• BSc/BA in Computer Science or a related degree
• Excellent organizational and leadership skills
• Analytical mind with problem-solving aptitude
• Ability to work independently
• Extensive experience in software development, scripting and project management

Additional Knowledge
• Familiarity with the Nix package manager
• Knowledge of selected imperative programming languages e.g. Python, C++
• Machine Learning frameworks and libraries e.g. TensorFlow, Caffe, Torch
• Understanding of different types of AI/ML networks (e.g., CNN, LSTM, etc)
• Familiarity with various OSs and standard development practises e.g. CI, Git etc.


Functional Programmers   (Job Ref: SNRFN)

Myrtle is looking for skilled developers to join our growing development team and assist with the development of our core compiler technology. Ideally candidates would have an interest in either efficient hardware design and/ or machine learning models and frameworks. We use the functional language, Haskell, for every aspect of our work and developers will get the chance to be involved in every part of the project. Familiarity and interest with hardware design would be viewed positively but is not essential. Applicants should be familiar with Unix based systems as all our development is done on Ubuntu or NixOS.

Responsibilities
• Develop high-quality software design and architecture
• Identify, prioritize and execute tasks in the software development life cycle
• Develop tools and applications by producing clean, efficient, well documented code
• Automate tasks through appropriate tools and scripting
• Review and debug code
• Perform validation and verification testing
• Document development phases and monitor systems

Skills & Qualifications
• Proven experience as a Software Engineer within a team
• In-depth knowledge of at least one statically typed functional programming language e.g. Haskell, ML, OCaml, F#, etc.
• BSc/BA in Computer Science or a related degree
• Excellent organizational skills
• Analytical mind with problem-solving aptitude
• Ability to work independently
• Extensive experience in software development and scripting

Additional Knowledge
• Some familiarity with the Nix package manager
• Some awareness of Machine Learning frameworks and libraries e.g., Caffe, Torch, TensorFlow
• Some understanding of different types of AI/ML networks e.g. CNN, LSTM, etc.
• Familiarity with various OSs and standard development practises e.g. CI, Git etc.


Neural Network Developer   (Job Ref: QUANT)

We are looking for someone with a genuine enthusiasm for training, retraining and fine tuning neural networks. You will have a specific focus on implementing and improving existing quantization and compression techniques and new layer types within Tensor Flow. You will work for our Chief Scientist to define requirements and take the lead on operational and technical development projects. Your work will help produce the next generation of efficient silicon designs

Responsibilities
• Produce high-quality software that realises existing and original quantization and compression methods
• Maintain, improve and extend exisiting AWS instances for training
• Collaborate internally and externally on algorithm development and implementation of machine learning solutions
• Assist with the design of algorithms and inform their implementation as efficient hardware designs
• Guide internal teams on state-of-the-art machine learning research and toolkits

Skills & Qualifications
• Degree, ideally an advanced degree in Computer Science or a related numerate subject
• Genuine enthusiasm for, and strong understanding of, machine learning and deep learning
• Experience with machine learning frameworks e.g. TensorFlow, Caffe, Torch and how to implement custom layers within them
• Understanding of different types of networks e.g. CNN, LSTM, modern layer types
• Knowledge of imperative programming languages e.g. Python, C++
• Familiarity with modern parallel architectures e.g. using the CUDA framework
• Ability to work independently
• Analytical mind with problem-solving aptitude
• Flexibility, interest in technology and eagerness to learn
• Excellent organizational skills
• Experience in software development and working within an AGILE team

Additional Knowledge
• An interest in functional languages e.g. OCaml, Haskell, F#
• Some familiarity with the Nix package manager
• Familiarity with various OSs and standard development practises e.g. CI, Git etc.


Myrtle is a Gold Partner for Intel® FPGA Design Solutions Network. We develop software to accelerate data center workloads. Our principal focus is on accelerating deep learning /AI inference workloads by automatically realizing them on FPGA silicon. The technology we use to do this is a compiler, originated and maintained entirely in-house, which produces efficient silicon designs.

WORK WITH US

Contact us