vhdl optimering

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Danish to

Threaded View
Hejsa,

jeg har efterhånden skrevet nogle projekter med VHDL til Xilinx FPGA'ere;
men jeg er i tvivl om hvor vidt jeg laver en optimal løsning, eller noget
dårlig kode, der (let) kan optimeres.

Er der nogen, der kender en bog, website eller andet, hvor man fx kan
finde eksempler på god og dårlig kode - og kode der er optimeret mht
hastighed hhv antallet af gates?

//michael

--
Instead of email, use this: http://mtech.dk/thomsen/contact.php

Re: vhdl optimering

Quoted text here. Click to load it

Kender ikke til nogen bøger/websites som kan hjælpe med dette. Jeg
bruger (1) hovedet (kan jeg visualisere det som FF+gates?) og (2)
spørger værktøjet (prøve-synteser med udvalgte blokke/konstruktioner).

Det skal dog siges at min erfaring de sidste ~10år er med Synopsys
Design Compiler.

En af klassikerne er mux'en. I specielt de ældre udgaver af DC, vil en
simpel Y <= A(index) ikke give et optimalt resultat. Derimod giver
for i in loop A'range do
  if i = index then
    Y <= A(i);
    exit;
  end if;
end loop;
det bedste resultat (for alle 3 parametre: runtime, areal og delay).
(Bonusspørgsmål: tænk over hvorfor det går galt når man fjerner "exit"
statement'et).

Ellers kan jeg anbefale at kigge med ovre i news:comp.lang.vhdl


Kai
--
Kai Harrekilde-Petersen <khp(at)harrekilde(dot)dk>

Re: vhdl optimering
On Tue, 03 Jan 2006 17:44:32 +0100, Kai Harrekilde-Petersen  

Quoted text here. Click to load it

Ok, det er (2) jeg gerne ville undgå, hvis det var muligt ;) men det
lyder som om alle programmerne har deres egne særheder, så der ikke
er nogen vej udenom...

Quoted text here. Click to load it

Det kan jeg så ikke gennemskue :(

Quoted text here. Click to load it

Ok, det er der folk holder til - tak for info!

//michael

--
Instead of email, use this: http://mtech.dk/thomsen/contact.php

Re: vhdl optimering

Quoted text here. Click to load it

Det er min erfaring - og specielt at særhederne ændrer sig fra version
til version af værkstøjet :-(

Quoted text here. Click to load it

Med en exit-statement kan compileren gennemskue at der kun kan være
netop én værdi af loop-variablen som giver en assignment til Y. Udfra
det laver DC så en N:1 mux (af en given bredde).

Hvis der ikke er nogen exit, vil DC lave N 2:1 mux'e som er lagt i
forlængelse af hinanden. Dette vil selvfølgelig blive løst under
timing optimerings fasen, men det bliver bare ikke lige så hurtigt og
effektivt, som hvis man havde skrevet den sk*de exit statement.


Kai
--
Kai Harrekilde-Petersen <khp(at)harrekilde(dot)dk>

Re: vhdl optimering
On Wed, 04 Jan 2006 12:35:09 +0100, Kai Harrekilde-Petersen  

Quoted text here. Click to load it

Det er jo super..

Quoted text here. Click to load it

Ok derfor. Jeg begynder at forstå, at VHDL er en hel kunstart!

Iøvrigt tak for tippet med comp.lang.vhdl - jeg har lige nydt at læse
deres beretninger om Z8000 og dens konkurrenter :-D

//michael

--
Instead of email, use this: http://mtech.dk/thomsen/contact.php

Re: vhdl optimering


Quoted text here. Click to load it

I et kursus, skulle vi ligeledes programmere FPGA'er, og eftersom der var
forskellige konkurrencer a'la "hurtigste", "mindste" (processor), gik vi
meget op i, hvad de forskellige kodestumper blev oversat til. Eneste
overordnede råd jeg kan give, er at læse databladene for FPGA'erne (jeg
orker ikke at finde et link lige nu.., men det burde ikke være så svært).
Hvis den enkelte FPGA supporterer specielle skifteregistre, RAM etc., så
kræver det i nogle tilfælde specielle - mere eller mindre indlysende -
VHDL-implementeringer. Derudover er der det generelle råd, som du sikkert
har hørt før: tænk hardware - og ikke software

/Kenneth



Site Timeline