Embedded Software Engineer
Role overview
As an embedded software engineer at Ulvetanna, you will design and implement our embedded software stacks utilizing high-performance coprocessors. This involves interfacing directly with device drivers, understanding distributed memory architectures and specialized instruction sets, and interpreting compiler outputs for performance tuning. Along with the cryptography engineering team, you will co-design system APIs for rapidly prototyping hardware-accelerated cryptographic algorithms and proof systems. Team members work closely with the FPGA engineers to specify algorithms implemented in hardware, and with the cryptography engineers to integrate efficiently with the top-level software stack.
Necessary Qualifications
- A deep passion for technology, software development, and secure computing
- Demonstrated ability to deliver software projects from inception to completion in a fast-pace environment
- Understanding of computer architecture and data structures
- Experience writing multi-threaded, concurrent software
- Experience programming embedded processors and Linux kernel modules/drivers
- Ability to think across layers of abstractions
- Experienced and well-versed in Linux, version control, scripting, and build systems
- Understanding of technology tradeoffs and a pragmatic approach to problem solving
- Strong written and verbal communications skills
- Strong knowledge of C++
Extra Qualifications
- Experience modifying and contributing to open-source codebases
- Experience implementing high-performance software and distributed systems
- Experience programming for GPUs or ZYNQs
- Experience writing software for real-time operating systems
- Experience implementing low-level cryptographic primitives
- Knowledge of Rust
- Aptitude for math and computer algorithms
- Understanding of cryptographic proof systems, zero-knowledge cryptography, elliptic curve cryptography, and symmetric cryptography
Cryptographic Software Engineer
Role Summary
As a cryptographic software engineer at Ulvetanna, you will contribute to internal and open-source zk-SNARK proving codebases, analyze their performance, and propose and implement optimizations. Tasks may include to modifying and refactoring the codebases to utilize hardware coprocessors, reading and implementing zero-knowledge cryptography research, reverse engineering high-level algorithms from open-source software and smart contracts, and designing or analyzing arithmetic constraint systems for verifiable programs. Team members work closely with the FPGA engineers to specify algorithms implemented in hardware, and with the systems software engineers to interface efficiently with hardware acceleration units.
Necessary Qualifications
- A deep passion for technology, software development, and secure computing
- Demonstrated ability to deliver software projects from inception to completion
- Understanding of algorithm design and computer architecture
- Experience writing multi-threaded, concurrent software
- Ability to think across layers of abstractions
- Mathematical aptitude, especially in linear and abstract algebra
- Experienced and well-versed in Linux, version control, scripting, and build systems
- Understanding of technology tradeoffs and a pragmatic approach to problem solving
- Strong written and verbal communications skills
- Strong knowledge of Rust and/or C++
Extra Qualifications
- Experience modifying and contributing to open-source codebases
- Experience implementing high-performance software and distributed systems
- Experience implementing compilers
- Experience implementing low-level cryptographic primitives
- Experience programming embedded systems
- Experience with computer algebra systems such as SageMath
- Understanding of mathematical and cryptographic proof techniques
- Understanding of cryptographic proof systems, zero-knowledge cryptography, elliptic
curve cryptography, and symmetric cryptography
FPGA Engineer
Role Summary
At Ulvetanna, our team of FPGA Engineers create next generation FPGA platforms to enable ZKP acceleration. FPGA Engineers work closely with cryptography and business leaders to design and deploy FPGA solutions that boost proof generation performance. You will be mandated to research, design, implement and deploy FPGA products across Ulvetanna’s data centers. You will contribute to maximizing FPGA products efficiency and performance.
Necessary Qualifications
- A deep passion for technology, software, and hardware development
- Degree in Electrical Engineering, Computer Science, Computer Engineering or equivalent field of study
- Experienced and well-versed in SystemVerilog
- Experience in one or more of the following areas: Hardware Architecture, RTL Coding, Simulation, Systems Integration, Hardware Validation and Testing, FPGA Synthesis, and Static Timing Analysis
- Sound understanding of technology tradeoffs, and a pragmatic approach to problem solving
- Strong written and verbal communications skills
Extra Qualifications
- Experienced and well-versed in Linux, Python, C, Tcl, and bash
- MSc or PhD in Electrical Engineering, Computer Science, Computer Engineering or equivalent field of study
- HLS flow
- HW CI/CD flow
- Embedded Processors (ARM, RiscV) experience
- GPU or ASIC design experience
- High Speed Communication Interfaces and protocols (SerDes, PCIe, Ethernet)
- AXI-4 Stream protocol expertise
- Xilinx DSP & HBM primitives expertise
- Xilinx Versal experience