Synopsys går dock flera steg längre än dessa två. Nylanserade Synphony HLS – High Level Synthesis – tar indata i Matlabspråket M, optimerar koden för hårdvaruimplementering och ger kod på registernivå (RTL) som utdata. RTL-koden kan sedan syntetiseras till underlag för asicproduktion eller FPGA-implementation, eller användas för prototypkort eller för att börja skriva programvara.
Målgruppen är främst konstruktörer av kommunikationsprodukter, multimedia eller andra algoritmkrävande tillämpningar. Synopsys påpekar att i kretsar för trådlöst utgörs i genomsnitt 25-30 procent av kiselytan av digital signalbehandling, och inom trådbunden kommunikation, multimedia och settop-boxar är det inte ovanligt att hälften av kiselytan kan hänföras till detta ändamål.
– Signalbehandlingsalgoritmerna utvecklas ofta i M, och att skriva om dem i C eller VHDL innebär mycket manuellt arbete, med stor risk för fel. Vi vill automatisera det arbetet, för att konstruktörerna ska kunna göra en större del av arbetet på en högre abstraktionsnivå och få möjlighet att optimera sin design genom att prova så många implementationer som möjligt, säger George Zafiropoulos, Synopsys marknadsansvarige.
Algoritmerna kan utvecklas antingen från scratch eller genom att plocka in element från det tillhörande IP-biblioteket. När M-koden är simulerad och verifierad omvandlas den från flyttalsoperationer (floating point) till heltalsoperationer (fixed point), varvid hänsyn tas till användarens randvillkor. Denna representation simuleras i Simulink.
Därefter kompileras denna kod till RTL, och kan då optimeras ytterligare med avseende på exempelvis hastighet eller kiselyta. I detta steg kan användaren också välja om konstruktionen ska bli en asic, en FPGA, eller laddas ned i ett prototypkort, förslagsvis de svenskutvecklade Haps som numera ingår i Synopsys portfölj. Väljer man en given FPGA-krets tar verktyget hänsyn till dess innehåll och ser till att tillgängliga resurser används optimalt. Alla FPGA:er från Xilinx, Altera, Actel och Lattice stöds, liksom asicflöden från TSMC och andra större foundrys.
– En stor poäng med M är att koden blir väldigt kompakt. Tre rader M-kod kan uttrycka lika mycket som 20 rader C-kod eller 200 rader VHDL, säger George Zafiropoulos.
Verktyget kan inte hantera hela språket M, utan Synopsys har valt en delmängd som går att syntetisera. M är ingen ingen IEEE-standard, och ägs faktiskt inte heller av The Mathworks utan är i praktiken fritt att använda, så kallad public domain.
Ytterligare en möjlighet är att låta utdata kompileras till C-kod (Ansi-C). Denna kod, som har timing nog för att vara cykelriktig (cycle accurate) kan då samsimuleras med annan C-kod för verifiering. Den kan också ges till programvaruutvecklarna så att dessa kan komma igång snabbt med programmerandet för att på så sätt komprimera utvecklingstiden ytterligare.
– Ambitionen är att arbete som tidigare tog veckor eller månader nu ska kunna göras på ett antal timmar eller dagar, säger Zafiropoulos.
Det är inte första gången Synopsys försöker sig på att höja abstraktionsnivån med så kallad högnivåsyntes. Redan 1994 kom verktyget Behavioral Compiler som utgick från VHDL och Verilog, men succén uteblev.
– Vi var nog före vår tid. Behoven fanns inte, och dessutom var höjningen av abstraktionsnivån inte tillräcklig. Den här gången tror vi att vi verkligen fyller ett hål i utvecklingsflödet, säger Zafiropoulos.
Synphony och det tillhörande IP-biblioteket i M har testats av ett antal nyckelkunder och ska finnas allmänt tillgängligt från december. Mer information finns här (länk).