Anche la logica di controllo si progetta in C

Quando si progettano circuiti integrati particolarmente complessi, come i SoC, senza avere a disposizione blocchi predefiniti (blocchi IP o descrizione logica dei circuiti), i tool di sintesi logica in grado di astrarre la descrizione Rtl dei circuiti direttamente dalla descrizione comportamentale in linguaggio C, sono strumenti particolarmente potenti ed efficaci in quanto ricalcano esattamente il processo mentale del progettista che dato un algoritmo, ne deve dedurre il circuito che implementa la funzione. Non stupisce quindi il successo che hanno avuto i tool di sintesi come Catapult C di Mentor Graphics (caratterizzato dal fatto di utilizzare codice sorgente in puro Ansi C++) e i prodotti analoghi di altre aziende. Uno dei limiti dei tool di sintesi ad alto livello in linguaggio C era però il fatto di essere ottimizzati per i circuiti di elaborazione dati (i data path), ma meno efficaci nel descrivere il comportamento della circuiteria logica di controllo, una difficoltà connaturata nel linguaggio C stesso, che offre un ottimo modo di specificare operazione sequenziali (temporizzate sul clock o meno) su blocchi di dati, ma è poco adatto a descrivere il comportamento di gruppi di porte logiche che operano simultaneamente e in parallelo su variabili diverse. Le aziende protagoniste del mondo Eda da tempo sono impegnate nella ricerca di soluzioni per questo problema e l'ultimo annuncio di Mentor Graphics sembra un deciso passo avanti in questa direzione. La nuova release 2009 di Catapult C viene infatti presentata come in grado di sintetizzare anche la logica di controllo, o almeno alcuni tipi di logica, ad esempio I circuiti di controllo delle pipeline, la logica di interfaccia e i circuiti logici che controllano lo spostamento dei dati tra vari blocchi di elaborazione.

Un meccanismo chiave
In pratica, l'innovazione consiste nella definizione di un nuovo costrutto C++ sintetizzabile (cioè una nuova classe nella struttura delle classi in C), chiamato Decoupling Control Channel, che permette di descrivere il comportamento della logica di controllo in questione, considerando tutte le variabili. Secondo Mentor, questo meccanismo chiave permette di interfacciare le rappresentazioni di algoritmi basati su flussi di dati con i blocchi di controllo sincronizzati dai clock. Ne risulta uno stile di codifica familiare ai progettisti hardware, che consente agli utenti di esprimere facilmente il coordinamento delle comunicazioni, delle priorità e dei task all’interno di una rappresentazione astratta dell'elaborazione concorrente. Inoltre, come sottolineato da Thomas Bollaert, "Il processo di sintesi è affiancato da una nuova metodologia di verifica circuitale completamente automatizzata, che per la prima volta permette agli utenti di validare in modo dettagliato a livello C le interazioni tra i blocchi di livello RTL. La stretta integrazione tra verifica e sintesi si è rivelata indispensabile per esprimere tutto il potenziale della sintesi ad alto livello, senza essere penalizzati da una eccessiva complessità della verifica dell’output RTL".

Un tecnologia innovativa
In aggiunta al supporto per la control logic, la nuova relase del tool di sintesi Catapult C include anche una tecnologia innovativa per la progettazione low-power, basata sull'applicazione automatica di due tecniche progettuali tra le più usate: il clock gating multilivello e l’interfacciamento ad unità di gestione dinamica della potenza e dei clock. Il tool Catapult C è in grado di analizzare in maniera esaustiva gli alberi logici per trovare i clock a cui poter applicare il gating, un’attività tipicamente effettuata da progettisti esperti in modo manuale e quindi onerosa e soggetta ad elevati tassi di errore. Questa ottimizzazione, produce risultati di clock gating con una precisione vicina al 100%, operando a livello di flip-flop e massimizzando i risparmi di potenza grazie ad una tecnica di inferenziazione locale della logica di gating in prossimità dei registri considerati. Inoltre, per consentire ulteriori riduzioni di potenza, Catapult C esporta in tempo reale le informazioni sullo stato di tutti i blocchi del sistema. Talea informazione viene passata alle unità di gestione dell'alimentazione, per essere valutata nell'ambito delle considerazione di dimensionamento dinamico di tensione frequenza , con possibili ottimizzazione dei consumi di potenza a livello di sistema. La riduzione dinamica di potenza, dipende sia dal progetto che dai vettori di test; le rilevazioni effettuate su oltre 300 progetti di clienti di Mentor Graphics hanno evidenziato miglioramenti variabili tra il 10% ed il 90%, con una media pari al 40%.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome