Tesi Robotica Algoritmi ed architetture per la risoluzione di... | Page 60
3.2. CONVERSIONE C TO HARDWARE: HIGH LEVEL SYNTESIS
60
);
90
// @.str1 = private unnamed_addr constant [12 x i8] c"homogeneous\00"
95
100
105
ram_dual_port _str1 (
...
);
defparam _str1.width_a = 8;
defparam _str1.width_b = 8;
defparam _str1.widthad_a = 4;
defparam _str1.widthad_b = 4;
defparam _str1.width_be_a = 1;
defparam _str1.width_be_b = 1;
defparam _str1.numwords_a = 12;
defparam _str1.numwords_b = 12;
defparam _str1.init_file = "_str1.mif";
...
Legup ci permette di gestire due di erenti flussi di sintesi:
• Hardware Puro
• Hybryd
Noi abbiamo scelto il flusso Hardware Puro che converte l’intero codice Ansi C in
codice Verilog. Ovvimanete per fare questo bisogna prendere piccole accortezze
come ad esempio non utilizzare memoria dinamica che a livello hardware non
è gestibile. Gli approfondimenti sono lasciati al capitolo 4, qui ci limiteremo
semplicemente ad esporre e/o evidenziare i punti chiave dell’implementazione.
Come si evince dal codice, LegUp ha trasformato le istruzioni di agast5_8.c in
moduli, ogni modulo ha un compito specifico nel linguaggio Verilog(lasciamo al
lettore il compito di approfondimenti per quanto riguarda il linguaggio Verilog).