Skriv ut
På högre abstraktionsnivå går det fortare att ta fram bättre konstruktioner. Så har löftena länge ljudit från anhängare av högnivåkonstruktion. Företaget bakom nylanserade verktyget Mobius säger sig uppfylla löftena.
Konstruktioner skrivna i VHDL och Verilog är lätta att syntetisera med bra kvalitet. Men det blir mycket kod, för möjligheten att gå upp i abstraktionsnivå är begränsad.

SystemC, å andra sidan, är bra för högnivåabstraktion, men ger inte någon effektiv hårdvara. Alltså behövs något nytt, resonerade svenske Per Ljung och hans kollegor på företaget Codetronix. Resultatet heter Mobius och visades för första gången för allmänheten på mässan FPGA World.

- Codetronix har utvecklat Mobius med användare inom amerikanska militären. Vi läste en artikel i Elektroniktidningen om att ABB utvärderade högnivåverktyg, tog kontakt med dem och nu är ABB vår första svenska kund, berättar Per Ljung.

Med Mobius går det att koda såväl hård- som mjukvara på hög nivå. Källkoden blir typiskt en femtondedel så stor som motsvarande VHDL eller C-kod, och den kan simuleras 100 gånger snabbare än VHDL eller Verilog. Utdata blir Verilog eller VHDL som accepteras av marknadens vanliga syntesverktyg, plus Ansi-C som kan kompileras med valfri kompilator.

Språket Mobius har en snudd på intuitiv syntax. Det bygger på CSP-metodik (Communicating Sequential Processes), vars principer påminner om UML. Användaren måste alltså lära sig ett nytt språk, men enligt Codetronix är det lätt att lära sig och därtill väl värt insatsen eftersom produktiviteten ökar 10-20 gånger. Befintliga konstruktioner och programvara skrivna i VHDL, Verilog eller C kan förses med omslagsprotokoll (”wrappers”) och därmed ingå i större Mobiuskonstruktioner.

En intressant aspekt är också att verktyget utger sig för att stödja hård- och mjukvarukonstruktion lika bra. Varje del av konstruktionen kan kompileras till endera hård eller mjukvara – eller en kombination. Stöd finns också för sådant flertrådad synkronisering i realtid av såväl hård- som mjukvaruprocesser.

Konstruktionen verifieras med den inbyggda debuggern och transaktionsnivåsimulatorn. Konstruktören får skriva en testbänk på vanligt sätt, och använda simulatorn för att bekräfta funktionerna.

- Vi tycker inte att någon lågnivåverifiering behövs. De som använder Synopsys Design Compiler eller Xilinx ISE har inga klagomål på den Mobiusgenererade koden, säger Per Ljung.

Mobius är inte standardiserat, och det finns inga omedelbara planer på någon sådan process. Per Ljung ser inte heller någon konkurrens från exempelvis System Verilog.

 - System Verilog är ganska lågnivå. Mobiusanvändare har inget behov eller fördel av System Verilog, säger Per Ljung.


  Kodexempel

Mobius syntax påminner om Pascal och är tämligen intuitiv. En sekvensiell krets med tre cyklers latens och utdata var tredje cykel beskrivs såhär:

procedure slow(
in x:chan of integer,
out y:chan of integer);
var
t1,t2:integer;
while true do Seq
t1:=func1(x);
t2:=func2(t1);
y:=func3(t2);
end;

Motsvarande krets med pipeline beskrivs såhär:
procedure fast(
in x:chan of integer;
out y:chan of integer);
var
t1,t2:integer;

while true do
t1, t2, y:= func1(x), func2(t1), func3(t2);