What are the responsibilities and job description for the Firmware Engineer, Optical Interconnect position at Avicena Tech?
Job Title
Firmware Engineer, Optical Interconnect
Job Description
Avicena builds optical interconnect based on microLED technology. Our optical engine is an ASIC and the firmware on that core is what brings the chip to life: powering it up, calibrating the analog, training the optical link, and keeping it running. As a Firmware Engineer you will write that firmware, and the firmware for the module controllers that manage it. You will work on a small team, which means you will own deliverables rather than tickets. You will bring up new boards and new silicon, debug at the register level, and build the benches and tools that prove the firmware works before it ships. This role suits an engineer early in their career who already knows their way around a microcontroller and a datasheet, and who wants to work close to the hardware on a product that has not been built before.
What You Will Work On
Firmware Engineer, Optical Interconnect
Job Description
Avicena builds optical interconnect based on microLED technology. Our optical engine is an ASIC and the firmware on that core is what brings the chip to life: powering it up, calibrating the analog, training the optical link, and keeping it running. As a Firmware Engineer you will write that firmware, and the firmware for the module controllers that manage it. You will work on a small team, which means you will own deliverables rather than tickets. You will bring up new boards and new silicon, debug at the register level, and build the benches and tools that prove the firmware works before it ships. This role suits an engineer early in their career who already knows their way around a microcontroller and a datasheet, and who wants to work close to the hardware on a product that has not been built before.
What You Will Work On
- Firmware for an optical engine ASIC: boot, device initialisation, clock and analog bring-up, datapath control, and in-field update.
- Firmware for module controllers implementing the industry standard optical module management interface.
- Host-side tools in Python that drive hardware over USB, programme flash, capture data, and automate tests.
- Test benches: FPGA platforms, hardware simulators, and the continuous integration that runs against them.
- Embedded firmware development
- Write C/C for ARM Cortex-M targets (including other MCU families), both bare metal and under a real-time operating system.
- Implement and debug peripheral drivers: SPI, I2C, UART, QSPI, GPIO, timers, interrupts.
- Work from register maps and datasheets to produce working, tested drivers.
- Keep firmware within tight memory and timing budgets, and be able to show where the bytes and the microseconds went.
- Hardware bring-up and debug
- Power on new boards and new silicon for the first time, following and improving a written procedure.
- Debug with SWD and JTAG probes, logic analyzers, and oscilloscopes.
- Isolate whether a fault is in the firmware, the board, or the silicon, and say which with evidence.
- Tooling and test
- Build host-side tools and automation in Python.
- Write unit tests for firmware logic that run on a host without hardware.
- Maintain continuous integration so that builds, tests, and size limits are checked on every change.
- Documentation and communication
- Record bring-up procedures, test results, and design decisions clearly enough that someone else can repeat them.
- Raise problems early and specifically, with file references, register names, and measurements rather than impressions.
- Education
- Bachelor's degree in Electrical Engineering, Computer Engineering, Computer Science, or equivalent practical experience.
- Technical Skills
- Embedded software
- Proficient in C for embedded targets, with working knowledge of ARM Cortex-M.
- Comfortable reading a datasheet or register map and turning it into a driver that works.
- Understands memory layout, linker scripts, interrupts, and why a firmware image is the size it is.
- Hardware interfaces
- Practical experience with SPI, I2C, and UART.
- Comfortable with standard bench equipment: oscilloscope, logic analyzer, multimeter, bench supply.
- Able to wire up a board from a schematic or a pinout without supervision.
- Software development
- Proficient in Python for automation, tooling, and test.
- Comfortable with Git, including branches, pull requests, and resolving a merge honestly.
- Other skills
- Careful with hardware that cannot easily be recovered, and methodical about the order in which things are switched on.
- Able to work independently, and to ask for help at the right moment rather than the last one.
- Strong written communication. A short, accurate note beats a long, vague one.
- Attention to detail, and the discipline to write down what was measured rather than what was expected.
- Experience with FreeRTOS or a comparable real-time operating system.
- Bootloaders, firmware update mechanisms, or flash memory (NOR, QSPI).
- Familiarity with optical modules and their management interfaces (CMIS, QSFP, OSFP, SFF specifications).
- Exposure to FPGA workflows, or the ability to read Verilog well enough to check what the hardware actually does.
- Experience taking a new chip or board from first power-on to working.
- GUI development with PyQt6 or a similar framework.
- Linux and command-line tools.
- C in an embedded context.
- Real ownership on a small team, from the first line of code to silicon on a bench.
- Direct exposure to ASIC, systems, and software teams, and to the customers who will use the product.
- The chance to be in the room when a new chip powers on for the first time.