Nástroje/technologie pro návrh a vývoj hardwaru
Analýza
Prvním krokem při vývoji hardwaru je analýza celého systému.
Při návrhu hardwaru používáme ke kreslení diagramu první úrovně a rozpočtu hluku standardní kancelářský software, někdy i tak jednoduchý jako MS Excel.
Mohli bychom samozřejmě použít i některé sofistikovanější a dražší nástroje, nicméně pro většinu projektů je takový nadstandard zbytečný a jejich přínos obvykle není nijak velký.

Dlouhodobé zkušenosti nám umožňují dosáhnout pomocí standardního (a levného) nástroje stejného efektu jako při použití nástroje sice výkonného, ale drahého.
Simulace hardwarových komponent nám ukazuje fyzické limity.
Pro nízkofrekvenční lineární a nelineární analýzu efektivně využíváme nástroje rodiny Spice. Přestože jsou často zdarma, ve většině případů jsou dostačující.
V dalším kroku přistoupíme k simulaci všech hardwarových komponent.

Fyzikální přesnost vychází z pochopení modelu, ne z ceny simulátoru.
Mechanický model nám umožňuje navrhnout vynikající vyrobitelný produkt.
Strojní inženýr vytvoří 3D model produktu z mechanického pohledu. Model je poté upraven a optimalizován tak, aby splňoval požadavky stanovené v hlavní definiční fázi a zároveň byl kompatibilní s elektronickým designem.

Dobrý mechanický design funguje pro desku i pro výrobu.
Rádiové frekvence – naše eso v rukávu
Používáme nejběžnější značky nástrojů podle jejich účelu. Některé nástroje umožňují úplnou EM analýzu, jiné jsou velmi výkonné v nelineárních simulacích.
Pokud technicky splňují všechny požadavky, využíváme i nástroje, které jsou zdarma, což nám umožňuje minimalizovat náklady na simulační čas a ušetřit část rozpočtu na vývoj.
Jakmile pomocí těchto nástrojů optimalizujeme strukturu PCB, data exportujeme pro další vývojové fáze.

Správná kombinace RF nástrojů přináší spolehlivé výsledky, které nelze dosáhnout s jediným nástrojem.
Návrh PCB je obvod vizualizovaný do reálných dat.
Když máme všechny potřebné komponenty nasimulované a optimalizované, přejdeme k návrhu PCB. Navrhneme schéma zapojení, propojíme všechny součástky a výsledný model předáme týmu pro návrh PCB.
Ti pak převádějí model do podoby konkrétních desek plošných spojů. Tento proces probíhá ručně a významně se při něm projeví know-how našeho odborného týmu a jeho dlouholeté zkušenosti v oblasti návrhů PCB. Elektronické části je samozřejmě nutno navrhnout také s ohledem na požadovanou fyzickou podobu výrobku.
Jakmile jsou hotovi s layoutem PCB, exportují výrobní a montážní data k finální kontrole.

Vývoj PCB proto probíhá v úzké komunikaci se strojními inženýry s využitím jejich 3D modelů.
Hardwarový test je konečnou fází naší práce.
Fáze po získání prvních vzorků z výroby je vzrušující.
Používáme řadu pokročilých diagnostických a testovacích přístrojů a ověřujeme, zda naše prototypy opravdu splňují požadavky stanovené v definiční fázi projektu.
Pokud zjistíme, že výrobek v jakémkoliv parametru nevyhovuje, diagnostikujeme příčinu a najdeme řešení.

Testujeme pomocí standardních průmyslových přístrojů, rozšířených o náš vlastní testovací software.
Model Architektury
Než přejdeme k implementaci softwaru, připravíme architekturu v modelu UML.
Pro takové modelování používáme různé nástroje.
Kdysi jsme začínali s Rational Rhapsody a nyní používáme PlantUML, Microsoft Visual Studio, Microsoft Visio, Lucid Chart a Enterprise Architect.

Architekturu vhodně přizpůsobíme, ať už stavíme na operačním systému - Linux nebo Windows - nebo na holém firmwaru.
Projektový management je páteří vývoje softwaru.
K realizaci vývoje softwaru používáme rodinu nástrojů od společnosti Atlassian.
Ke sledování chyb používáme už dlouhá léta systém JIRA. Často v něm využíváme agilní procesní toky založené na Kanbanu nebo Scrumu.

Oceňujeme také hlavní výhodu systému JIRA – jeho úzké propojení s úložištěm Bitbucket.
Systémy řízení verzí
Pokud jde o systém správy revizí, začali jsme se systémem SVN, ale v posledních letech jsme přešli na řetězce nástrojů založené na systému Git. Ty oproti SVN přináší výhodu flexibilního větvení a slučování.
Data posíláme do vzdáleného úložiště Bitbucket, které nabízí výkonnou infrastrukturu a integraci s dalšími nástroji společnosti Atlassian.

Používáme technologie kontinuální integrace (CI), jako je Jenkins Server.
Nástroje pro kódování
Nikdo z týmu nemá dané, jaké konkrétní nástroje musí používat. Většina ráda používá Visual Studio Code (VS Code) nebo MS Visual Studio; někteří zase mají rádi Atom, Eclipse nebo jiné jednoduché editory založené na Linuxu.
Pro zdrojové soubory používáme nástroje statické analýzy kódu, jako je Clang.

Téměř všechny nástroje nabízejí plný výkon vzdáleného debuggeru a různé balíčky pluginů.
Programovací jazyky
Většina programovacích jazyků, které používáme, poskytuje silnou podporu operačních systémů Linux i Windows.
Někteří z nás mají rádi Python pro jeho flexibilitu a absenci nutnosti kompilace, zejména pro rychlé softwarové prototypování nebo pro testovací skripty.
Pro webové aplikace máme dobré zkušenosti s JavaScriptem, TypeScriptem a různými webovými frameworky, jako jsou ReactJS a Express, které jsou podporovány runtimy jako jsou NodeJS a Electron.

Na druhou stranu kolegové, kteří se intenzivně zabývají programováním na low-level úrovni pro firmware ARM Cortex, jsou skvělí v C nebo C++.
Ovladače zařízení
Některé projekty vyžadují karty PCIe pro hostitelský počítač. Takové počítače většinou běží na systému Windows, proto podporujeme naše zákazníky vývojem ovladačů pro Windows.
Samozřejmě vytváříme ovladače i pro vestavěný Linux — ve většině případů pro periferie, které nejsou součástí jednotlivých SOM (system on module).

Máme dost zkušeností se starší sadou ovladačů systému Windows (WDK) a novějším Kernel-Mode Driver Framework (KMDF).

