intel AN 903 Chiusura temporizzata accelerata
AN 903: accelerazione della chiusura dei tempi in Intel® Quartus® Prime Pro Edition
La densità e la complessità dei moderni progetti FPGA, che combinano sistemi embedded, IP e interfacce ad alta velocità, presentano sfide crescenti per la chiusura dei tempi. Le ultime modifiche dell'architettura e le sfide di verifica possono portare a iterazioni di progettazione che richiedono molto tempo. Questo documento riassume tre passaggi per accelerare la chiusura dei tempi utilizzando una metodologia verificata e ripetibile nel software Intel® Quartus® Prime Pro Edition. Questa metodologia include l'analisi e l'ottimizzazione RTL iniziali, nonché tecniche automatizzate per ridurre al minimo i tempi di compilazione e ridurre la complessità del progetto e le iterazioni necessarie per la chiusura dei tempi.
Fasi di accelerazione della chiusura temporizzata
Fasi di accelerazione della chiusura temporizzata
Passaggio 1: analisi e ottimizzazione della progettazione RTL
L'ottimizzazione del codice sorgente del progetto è in genere la prima e più efficace tecnica per migliorare la qualità dei risultati. Intel Quartus Prime Design Assistant ti aiuta a correggere rapidamente le violazioni delle regole di progettazione di base e consiglia modifiche RTL che semplificano l'ottimizzazione della progettazione e la chiusura dei tempi.
Problemi di chiusura temporizzata
- Livelli logici eccessivi influenzano l'ordine di elaborazione, la durata e la qualità dei risultati di Fitter.
- Le reti di fan-out elevate causano la congestione delle risorse e aggiungono ulteriore tensione sui percorsi dei dati, aumentando inutilmente la criticità del percorso e complicando la chiusura dei tempi. Questa tensione è la forza di attrazione che spinge il percorso (e tutti i percorsi che condividono quell'alto segnale di fan-out) verso la fonte di alto fan-out.
Soluzioni di chiusura temporizzata
- Correggi le violazioni di Design Assistant a pagina 4: per identificare e correggere rapidamente le violazioni delle regole di progettazione di base rilevanti per il tuo progetto.
- Ridurre i livelli logici a pagina 7, per garantire che tutti gli elementi del progetto possano ricevere le stesse ottimizzazioni di Fitter e ridurre i tempi di compilazione.
- Ridurre le reti High Fan-Out a pagina 9, per ridurre la congestione delle risorse e semplificare la chiusura dei tempi.
Informazioni correlate
- "Verifica delle regole di progettazione con Design Assistant", Guida per l'utente di Intel Quartus Prime Pro Edition: Raccomandazioni per la progettazione
- "Ottimizza il codice sorgente", Guida per l'utente di Intel Quartus Prime Pro Edition: Ottimizzazione del progetto
- "Duplicate Registers for Fan-Out Control", Guida per l'utente di Intel Quartus Prime Pro Edition: Ottimizzazione del design
Correggere le violazioni di Design Assistant
L'esecuzione dell'analisi iniziale del progetto per eliminare i problemi noti di chiusura della temporizzazione aumenta significativamente la produttività. Dopo aver eseguito una compilation iniziale con le impostazioni predefinite, puoi review i report di Design Assistant per l'analisi iniziale. Se abilitato, Design Assistant segnala automaticamente eventuali violazioni rispetto a un set standard di linee guida di progettazione consigliate da Intel FPGA. Puoi eseguire Design Assistant in modalità Compilation Flow, permettendoti di farlo view le violazioni rilevanti per la compilazione stages corri. In alternativa, Design Assistant è disponibile in modalità analisi in Timing Analyzer e Chip Planner.
- Modalità flusso di compilazione—viene eseguito automaticamente durante uno o più stages di compilazione. In questa modalità, Design Assistant utilizza i dati in entrata (transitori) durante la compilazione.
- Modalità di analisi— eseguire Design Assistant da Timing Analyzer e Chip Planner per analizzare le violazioni di progettazione in una compilazione specificatage, prima di procedere nel flusso di compilazione. In modalità di analisi, Design Assistant utilizza dati statici di istantanee di compilazione.
Design Assistant contrassegna ogni violazione delle regole con uno dei seguenti livelli di gravità. È possibile specificare quali regole si desidera che Design Assistant controlli nel progetto e personalizzare i livelli di gravità, eliminando così i controlli delle regole che non sono importanti per il progetto.
Livelli di gravità delle regole di Design Assistant
Categorie | Descrizione | Colore del livello di gravità |
Critico | Affrontare il problema per il passaggio di consegne. | Rosso |
Alto | Potenzialmente causa guasti funzionali. Può indicare dati di progettazione mancanti o errati. | Arancia |
Medio | Potenzialmente influisce sulla qualità dei risultati per fMassimo o utilizzo delle risorse. | Marrone |
Basso | La regola riflette le migliori pratiche per le linee guida di codifica RTL. | Blu |
Configurazione dell'Assistente di progettazione
Puoi personalizzare completamente Design Assistant in base alle tue caratteristiche di progettazione individuali e ai requisiti di reporting. Fare clic su Assegnazioni ➤ Impostazioni ➤ Impostazioni regole di Design Assistant per specificare le opzioni che controllano quali regole e parametri si applicano ai vari messaggi di posta elettronica.tages di compilazione del progetto per il controllo delle regole di progettazione.
Impostazioni delle regole di Design Assistant
Assistente alla progettazione in esecuzione
Se abilitato, Design Assistant viene eseguito automaticamente durante la compilazione e segnala le violazioni delle regole di progettazione abilitate nel rapporto di compilazione. In alternativa, puoi eseguire Design Assistant in modalità di analisi su un'istantanea di compilazione specifica per concentrare l'analisi solo su quellatage. Per abilitare il controllo automatico di Design Assistant durante la compilazione:
- Attivare Abilita l'esecuzione di Design Assistant durante la compilazione nelle impostazioni delle regole di Design Assistant. Per eseguire Design Assistant in modalità di analisi per convalidare un'istantanea specifica rispetto a qualsiasi regola di progettazione che si applica all'istantanea:
- Fare clic su Report DRC nel pannello Timing Analyzer o Chip Planner Tasks.
Viewing e correzione dei risultati di Design Assistant
Il Design Assistant segnala le violazioni delle regole di progettazione abilitate nei vari messaggi di posta elettronicatages del rapporto di compilazione.
Risultati di Design Assistant in sintesi, pianificazione, posizionamento e finalizzazione di report
A view i risultati per ciascuna regola, fare clic sulla regola nell'elenco Regole. Vengono visualizzate una descrizione della regola e raccomandazioni di progettazione per la correzione.
Raccomandazione sulla violazione delle regole di Design Assistant
Modifica il tuo RTL per correggere le violazioni delle regole di progettazione.
Ridurre i livelli logici
Livelli logici eccessivi possono influire sulla qualità dei risultati dell'installatore perché il percorso critico di progettazione influenza l'ordine e la durata dell'elaborazione dell'installatore. L'installatore posiziona e instrada il progetto in base al margine di temporizzazione. L'installatore posiziona prima i percorsi più lunghi con il minimo gioco. L'installatore generalmente dà la priorità ai percorsi di livello logico superiore rispetto ai percorsi di livello logico inferiore. Tipicamente, dopo il Fitter stage è completo, i percorsi critici rimanenti non sono i percorsi di livello logico più elevato. L'installatore assegna il posizionamento, l'instradamento e il retiming preferiti alla logica di livello superiore. La riduzione del livello logico aiuta a garantire che tutti gli elementi del progetto ricevano la stessa priorità di installatore. Esegui report ➤ Report personalizzati ➤ Report Timing in Timing Analyzer per generare report che mostrano i livelli di logica nel percorso. Se il percorso fallisce nella temporizzazione e il numero di livelli logici è elevato, prendere in considerazione l'aggiunta di pipelining in quella parte del progetto per migliorare le prestazioni.
Profondità logica nel report del percorso
Profondità del livello logico di reporting
Dopo il piano del compilatore stage, puoi eseguire report_logic_depth nella console Timing Analyzer Tcl a view il numero di livelli logici all'interno di un dominio di clock. report_logic_depth mostra la distribuzione della profondità logica tra i percorsi critici, consentendoti di identificare le aree in cui puoi ridurre i livelli logici nel tuo RTL.
report_logic_depth -panel_name -from [get_clocks ] \ -to [get_clocks ]
report_logic_depth Uscita
Per ottenere i dati per l'ottimizzazione di RTL, eseguire report_logic_depth dopo Compiler's Plan stage, prima di correre rimanenti Fitter stages. In caso contrario, i report post-Fitter includono anche i risultati dell'ottimizzazione fisica (retiming e risintesi).
Segnalazione di percorsi adiacenti
Dopo aver eseguito Fitter (Finalize) stage, puoi eseguire report_neighbor_paths per aiutare a determinare la causa principale del percorso critico (ad esample, livello logico alto, limitazione retiming, posizionamento non ottimale, incrocio colonne I/O, hold-fix o altro): report_neighbor_paths -to_clock -npath -nome_pannello
report_neighbor_paths segnala i percorsi più critici in termini di tempo nel progetto, inclusi il margine di flessibilità associato, informazioni di riepilogo del percorso aggiuntive e riquadri di delimitazione del percorso.
report_neighbor_paths Uscita
report_neighbor_paths mostra il percorso più critico prima e il percorso dopo ogni percorso critico. Il ritiming o il bilanciamento logico del percorso possono semplificare la chiusura della temporizzazione se c'è un rallentamento negativo sul percorso, ma un rallentamento positivo sul percorso prima o sul percorso dopo.
Per abilitare il retiming, assicurati che le seguenti opzioni siano attivate:
- Per i registri: abilita Assegnazioni ➤ Impostazioni ➤ Impostazioni compilatore ➤ Ottimizzazione registro ➤ Consenti temporizzazione registro
- Per gli endpoint RAM: abilita Assegnazioni ➤ Impostazioni ➤ Impostazioni compilatore ➤ Impostazioni Fitter (Avanzate) ➤ Consenti temporizzazione RAM
- Per gli endpoint DSP: abilita Assegnazioni ➤ Impostazioni ➤ Impostazioni compilatore ➤ Impostazioni Fitter (Avanzate) ➤ Consenti temporizzazione DSP
NOTA
Se è necessario un ulteriore bilanciamento della logica, è necessario modificare manualmente il proprio RTL per spostare la logica dal percorso critico al percorso prima o al percorso dopo.
Se l'uscita di un registro è collegata al suo ingresso, uno o entrambi i percorsi vicini possono essere identici al percorso corrente. Quando si cercano i percorsi adiacenti con il gioco peggiore, vengono considerate tutte le condizioni operative, non solo le condizioni operative del percorso principale stesso.
Visualizzazione dei livelli logici nella mappa tecnologica Viewer
La mappa tecnologica Viewer fornisce anche rappresentazioni schematiche, mappate dalla tecnologia, della netlist di progettazione e può aiutarti a vedere quali aree in una progettazione possono trarre vantaggio dalla riduzione del numero di livelli logici. Puoi anche esaminare in dettaglio il layout fisico di un percorso nel Chip Planner. Per individuare un percorso di temporizzazione in uno dei file viewPer gli utenti, fare clic con il pulsante destro del mouse su un percorso nel rapporto di temporizzazione, puntare su Localizza percorso e selezionare Localizza in mappa tecnologica Vieweh.
Ridurre le reti ad alto fan-out
Le reti di fan-out elevate possono causare la congestione delle risorse, complicando così la chiusura dei tempi. In generale, il compilatore gestisce automaticamente reti di fan-out elevate relative ai clock. Il compilatore promuove automaticamente reti ad alto fan-out riconosciute alla rete di clock globale. Il compilatore compie uno sforzo di ottimizzazione maggiore durante Place e Route stages, che si traduce in una vantaggiosa duplicazione del registro. Nei seguenti casi limite, puoi ridurre ulteriormente la congestione apportando le seguenti modifiche manuali al tuo design RTL:
Custodie angolari con rete ad alto ventaglio
Caratteristica del progetto | Ottimizzazione RTL manuale |
Reti ad alto fan-out che raggiungono molte gerarchie o destinazioni fisicamente lontane | Specificare l'assegnazione duplicate_hierarchy_depth sull'ultimo registro in una pipeline per duplicare manualmente le reti a fan-out elevato tra le gerarchie. Specificare l'assegnazione duplicate_register per duplicare i registri durante il posizionamento. |
Disegni con segnali di controllo a blocchi di memoria DSP o M20K da logica combinatoria | Invia il segnale di controllo alla memoria DSP o M20K da un registro. |
Duplicazione dei registri tra le gerarchie
È possibile specificare l'assegnazione duplicate_hierarchy_depth sull'ultimo registro in una pipeline per guidare la creazione della duplicazione del registro e dei fan-out. Le seguenti figure illustrano l'impatto della seguente assegnazione duplicate_hierarchy_depth:
set_instance_assignment -name duplicate_hierarchy_depth -to \
Dove:
- register_name: l'ultimo registro in una catena che si estende a più gerarchie.
- level_number: il numero di registri nella catena da duplicare.
Figura 9. Prima della duplicazione dei registri
Impostare l'assegnazione duplicate_hierarchy_depth per implementare la duplicazione dei registri tra le gerarchie e creare un albero di registri dopo l'ultimo registro nella catena. Si specifica il nome del registro e il numero di duplicati rappresentati da M nel seguente esample. Le frecce rosse mostrano le potenziali posizioni dei registri duplicati.
- set_instance_assignment –name DUPLICATE_HIERARCHY_DEPTH –to regZ M
Duplicazione registro = 1
Specificando il seguente livello singolo di duplicazione del registro (M=1) si duplica un registro (regZ) al di sotto di un livello della gerarchia del disegno:
- set_instance_assignment –name DUPLICATE_HIERARCHY_DEPTH –to regZ 1
Duplicazione registro = 3
Specificando tre livelli di duplicazione dei registri (M=3) vengono duplicati tre registri (regZ, regY, regX) rispettivamente al di sotto di tre, due e un livello della gerarchia:
- set_instance_assignment –name DUPLICATE_HIERARCHY_DEPTH –to regZ 3
Duplicando e spingendo i registri nelle gerarchie, il progetto mantiene lo stesso numero di cicli verso tutte le destinazioni, accelerando notevolmente le prestazioni su questi percorsi.
Duplicazione dei registri durante il posizionamento
La Figura 12 a pagina 11 mostra un registro con elevato fan-out su un'ampia area del chip. Duplicando questo registro 50 volte, è possibile ridurre la distanza tra il registro e le destinazioni che alla fine si traducono in prestazioni di clock più veloci. L'assegnazione di duplicate_register consente al compilatore di sfruttare la vicinanza fisica per guidare il posizionamento di nuovi registri alimentando un sottoinsieme di fan-out.
Figura 12. Duplicazione dei registri durante il posizionamento
Nota: Per trasmettere un segnale attraverso il chip, usa un multistage conduttura. Applicare l'assegnazione duplicate_register a ciascuno dei registri nella pipeline. Questa tecnica crea una struttura ad albero che trasmette il segnale attraverso il chip.
Viewduplicazione dei risultati
Dopo la sintesi progettuale, view i risultati della duplicazione nel rapporto di riepilogo della duplicazione dell'albero gerarchico nella cartella Sintesi del rapporto di compilazione. Il rapporto fornisce quanto segue:
- Informazioni sui registri che hanno l'assegnazione duplicate_hierarchy_depth.
- Motivo della lunghezza della catena che puoi utilizzare come punto di partenza per ulteriori miglioramenti con l'assegnazione.
- Informazioni sui singoli registri nella catena che puoi utilizzare per comprendere meglio la struttura dei duplicati implementati.
Il rapporto Fitter include anche una sezione sui registri che hanno l'impostazione duplicate_register.
Applicare tecniche di ottimizzazione del compilatore
Disegni che utilizzano una percentuale molto altatagTutte le risorse del dispositivo FPGA possono causare la congestione delle risorse, con conseguente fMAX inferiore e chiusura della temporizzazione più complessa. Le impostazioni della modalità di ottimizzazione del compilatore consentono di specificare il focus degli sforzi del compilatore durante la sintesi. Per esample, ottimizzi la sintesi per Area, o Routability quando affronti la congestione delle risorse. Puoi sperimentare combinazioni di queste stesse impostazioni della modalità di ottimizzazione in Intel Quartus Prime Design Space Explorer II. Queste impostazioni e altre tecniche manuali possono aiutarti a ridurre la congestione nei progetti altamente utilizzati.
Problema di chiusura temporizzata
- I progetti con un utilizzo molto elevato delle risorse del dispositivo complicano la chiusura dei tempi.
Soluzioni di chiusura temporizzata
- Applicare le modalità e le strategie di ottimizzazione del compilatore a pagina 13: specificare l'obiettivo principale della modalità di ottimizzazione per la sintesi del progetto.
- Sperimenta con le opzioni di area e percorrenza a pagina 16: applica ulteriori raccolte di impostazioni per ridurre la congestione e raggiungere gli obiettivi di area e percorrenza.
- Prendere in considerazione la sintesi frattale per i progetti ad alta intensità di aritmetica a pagina 16—Per i progetti ad alto rendimento e ad alta intensità di aritmetica, la sintesi frattale riduce l'utilizzo delle risorse del dispositivo attraverso la regolarizzazione del moltiplicatore, il retiming e l'impacchettamento aritmetico continuo.
Informazioni correlate
- Capitolo "Timing Closure and Optimization", Guida per l'utente di Intel Quartus Prime Pro Edition: Ottimizzazione della progettazione
- Guida per l'utente di Intel Quartus Prime Pro Edition: Compilazione del progetto
Applicare modalità e strategie di ottimizzazione del compilatore
Usare le informazioni seguenti per applicare le modalità di ottimizzazione del compilatore e le strategie di compilazione di Design Space Explorer II (DSE II).
Sperimenta con le impostazioni della modalità di ottimizzazione del compilatore
Segui questi passaggi per sperimentare le impostazioni della modalità di ottimizzazione del compilatore:
- Crea o apri un progetto Intel Quartus Prime.
- Per specificare la strategia di ottimizzazione di alto livello del compilatore, fare clic su Assegnazioni ➤ Impostazioni ➤ Impostazioni del compilatore. Sperimentare con una qualsiasi delle seguenti impostazioni di modalità, come descritto nella Tabella 4 a pagina 14.
- Per compilare il progetto con queste impostazioni, fai clic su Avvia compilazione nella Dashboard di compilazione.
- View la compilazione risulta nel Rapporto di Compilazione.
- Fare clic su Strumenti ➤ Analizzatore tempi su view i risultati delle impostazioni di ottimizzazione sulle prestazioni.
Impostazioni della modalità di ottimizzazione del compilatore
Modalità di ottimizzazione (pagina delle impostazioni del compilatore)
Modalità di ottimizzazione | Descrizione |
Bilanciato (flusso normale) | Il compilatore ottimizza la sintesi per un'implementazione bilanciata che rispetti i vincoli temporali. |
Sforzo ad alte prestazioni | Il compilatore aumenta lo sforzo di ottimizzazione della temporizzazione durante il posizionamento e il routing e abilita le ottimizzazioni della sintesi fisica relative alla temporizzazione (per impostazioni di ottimizzazione del registro). Ogni ulteriore ottimizzazione può aumentare il tempo di compilazione. |
Alte prestazioni con il massimo sforzo di posizionamento | Abilita le stesse ottimizzazioni del compilatore di Sforzo ad alte prestazioni, con un ulteriore sforzo di ottimizzazione del posizionamento. |
Prestazioni superiori | Abilita le stesse ottimizzazioni del compilatore di Sforzo ad alte prestazionie aggiunge ulteriori ottimizzazioni durante l'analisi e la sintesi per massimizzare le prestazioni di progettazione con un potenziale aumento dell'area logica. Se l'utilizzo del progetto è già molto elevato, questa opzione può portare a difficoltà di adattamento, che possono anche influire negativamente sulla qualità complessiva dell'ottimizzazione. |
Prestazioni superiori con il massimo sforzo di posizionamento | Abilita le stesse ottimizzazioni del compilatore di Prestazioni superiori, con un ulteriore sforzo di ottimizzazione del posizionamento. |
Zona Aggressiva | Il compilatore compie sforzi aggressivi per ridurre l'area del dispositivo richiesta per implementare il progetto a scapito potenziale delle prestazioni del progetto. |
Elevato sforzo di instradabilità del posizionamento | Il compilatore fa un grande sforzo per instradare il progetto a spese potenziali dell'area di progettazione, delle prestazioni e del tempo di compilazione. Il compilatore impiega altro tempo a ridurre l'utilizzo dell'instradamento, il che può migliorare l'instradamento e risparmiare energia dinamica. |
Elevato sforzo di instradabilità dell'imballaggio | Il compilatore fa un grande sforzo per instradare il progetto a spese potenziali dell'area di progettazione, delle prestazioni e del tempo di compilazione. Il compilatore impiega più tempo a impacchettare i registri, il che può migliorare l'instradabilità e risparmiare anche potenza dinamica. |
Ottimizza la netlist per l'instradabilità | Il compilatore implementa modifiche alla netlist per aumentare l'instradabilità a scapito delle prestazioni. |
continua… |
Modalità di ottimizzazione | Descrizione |
Sforzo ad alta potenza | Il compilatore fa un grande sforzo per ottimizzare la sintesi a bassa potenza. Sforzo ad alta potenza aumenta il tempo di esecuzione della sintesi. |
Potere aggressivo | Fa uno sforzo aggressivo per ottimizzare la sintesi a bassa potenza. Il compilatore riduce ulteriormente l'utilizzo del routing dei segnali con i tassi di commutazione più elevati specificati o stimati, risparmiando ulteriore potenza dinamica ma potenzialmente influenzando le prestazioni. |
Tempo di compilazione aggressivo | Riduce il tempo di compilazione necessario per implementare il progetto con uno sforzo ridotto e minori ottimizzazioni delle prestazioni. Questa opzione disabilita anche alcune funzioni di reportistica dettagliata.
Nota: Accensione Tempo di compilazione aggressivo abilita le impostazioni di Intel Quartus Prime File (.qsf) impostazioni che non possono essere sovrascritte da altre impostazioni .qsf. |
Strategie di compilazione di Space Explorer II
DSE II consente di trovare le impostazioni di progetto ottimali per gli obiettivi di ottimizzazione delle risorse, delle prestazioni o dell'alimentazione. DSE II consente di compilare in modo iterativo un progetto utilizzando diverse combinazioni preimpostate di impostazioni e vincoli per raggiungere un obiettivo specifico. DSE II riporta quindi la migliore combinazione di impostazioni per raggiungere i tuoi obiettivi. DSE II può anche trarre vantaggiotage delle capacità di parallelizzazione per compilare semi su più computer. Le impostazioni della strategia di compilazione DSE II rispecchiano le impostazioni della modalità di ottimizzazione nella Tabella 4 a pagina 14
Progettare Space Explorer II
Segui questi passaggi per specificare la strategia di compilazione per DSE II:
- Per avviare DSE II (e chiudere il software Intel Quartus Prime), fare clic su Strumenti ➤ Avvia Design Space Explorer II. DSE II si apre dopo la chiusura del software Intel Quartus Prime.
- Sulla barra degli strumenti DSE II, fare clic sull'icona Esplorazione.
- Espandi punti di esplorazione.
- Seleziona Esplorazione del design. Abilita qualsiasi delle strategie di compilazione per eseguire esplorazioni di progettazione mirate a tali strategie.
Ridurre la congestione per un elevato utilizzo
I progetti che utilizzano oltre l'80% delle risorse del dispositivo in genere presentano le maggiori difficoltà nella chiusura dei tempi. È possibile applicare le seguenti tecniche manuali e automatizzate per ridurre ulteriormente la congestione e semplificare la chiusura dei tempi.
- Sperimenta con le opzioni Area e Percorso a pagina 16
- Si consideri la sintesi frattale per i progetti ad alta intensità aritmetica a pagina 16
Sperimenta con le opzioni di area e di instradamento
Quando l'utilizzo del dispositivo causa la congestione del routing, puoi sperimentare le impostazioni di ottimizzazione di area e instradabilità per ridurre l'utilizzo delle risorse e la congestione per la tua progettazione. Fare clic su Assegnazioni ➤ Impostazioni ➤ Impostazioni del compilatore ➤ Modalità di ottimizzazione per accedere a queste impostazioni:
Opzioni di area e di instradamento
Considera la sintesi frattale per i progetti aritmetici intensivi
Per i progetti ad alto rendimento e ad uso intensivo di operazioni aritmetiche, è possibile abilitare le ottimizzazioni automatiche della sintesi frattale per migliorare l'utilizzo delle risorse del dispositivo. Le ottimizzazioni della sintesi frattale includono la regolarizzazione e il retiming del moltiplicatore, nonché l'impacchettamento aritmetico continuo. Le ottimizzazioni mirano a progetti con un gran numero di operazioni aritmetiche a bassa precisione (come addizioni e moltiplicazioni). Puoi abilitare la sintesi frattale a livello globale o solo per moltiplicatori specifici. In condizioni ideali, l'ottimizzazione della sintesi frattale può ottenere una riduzione dell'area del 20-45%.
Moltiplicatore Regolarizzazione e Retiming
La regolarizzazione e il retiming del moltiplicatore eseguono l'inferenza di implementazioni di moltiplicatori soft altamente ottimizzate. Il compilatore può applicare il retiming all'indietro a due o più pipelinetages se richiesto. Quando abiliti la sintesi frattale, il compilatore applica la regolarizzazione e il retiming del moltiplicatore ai moltiplicatori con segno e senza segno.
Figura 16. Temporizzazione del moltiplicatore
NOTA
- La regolarizzazione del moltiplicatore utilizza solo risorse logiche e non utilizza blocchi DSP.
- La regolarizzazione e il retiming del moltiplicatore vengono applicati sia ai moltiplicatori con segno che a quelli senza segno nei moduli in cui è impostata l'assegnazione QSF FRACTAL_SYNTHESIS.
Packing aritmetico continuo
L'impacchettamento aritmetico continuo ri-sintetizza le porte aritmetiche in blocchi logici dimensionati in modo ottimale per adattarsi agli Intel FPGA LAB. Questa ottimizzazione consente l'utilizzo fino al 100% delle risorse LAB per i blocchi aritmetici. Quando si abilita la sintesi frattale, il compilatore applica questa ottimizzazione a tutte le catene di riporto e alle porte logiche a due ingressi. Questa ottimizzazione può comprimere alberi sommatori, moltiplicatori e qualsiasi altra logica relativa all'aritmetica.
Packing aritmetico continuo
NOTA
Si noti che l'impacchettamento aritmetico continuo funziona indipendentemente dalla regolarizzazione del moltiplicatore. Quindi, se stai usando un moltiplicatore che non è regolarizzato (come scrivere il tuo moltiplicatore), allora l'impacchettamento aritmetico continuo può ancora funzionare. L'ottimizzazione della sintesi frattale è più adatta per i progetti con acceleratori di deep learning o altre funzioni ad alto rendimento e ad alta intensità aritmetica che superano tutte le risorse DSP. L'abilitazione della sintesi frattale a livello di progetto può causare inutili sovraccarichi sui moduli che non sono adatti per le ottimizzazioni frattali.
Abilitare o disabilitare la sintesi frattale
Per i dispositivi Intel Stratix® 10 e Intel Agilex™, l'ottimizzazione della sintesi frattale viene eseguita automaticamente per piccoli moltiplicatori (qualsiasi istruzione A*B in Verilog HDL o VHDL in cui la larghezza di bit degli operandi è pari o inferiore a 7). Puoi anche disabilitare la sintesi frattale automatica per piccoli moltiplicatori per questi dispositivi utilizzando uno dei seguenti metodi:
- In RTL, impostare il multistile DSP, come descritto in "Multstyle Verilog HDL Synthesis Attribute". Per esample: (* multistyle = “dsp” *) modulo foo(…); module foo(..) /* sintesi multistyle = “dsp” */;
- Nel .qsf file, aggiungere come assegnazione come segue: set_instance_assignment -name DSP_BLOCK_BALANCING_IMPLEMENTATION \DSP_BLOCKS -to r
Inoltre, per i dispositivi Intel Stratix 10, Intel Agilex, Intel Arria® 10 e Intel Cyclone® 10 GX, è possibile abilitare la sintesi frattale a livello globale o per moltiplicatori specifici con l'opzione GUI Fractal Synthesis o l'assegnazione FRACTAL_SYNTHESIS .qsf corrispondente:
- In RTL, usa altera_attribute come segue: (* altera_attribute = “-name FRACTAL_SYNTHESIS ON” *)
- Nel .qsf file, aggiungi come assegnazione come segue: set_global_assignment -name FRACTAL_SYNTHESIS ON -entity
Nell'interfaccia utente, attenersi alla seguente procedura:
- Fare clic su Assegnazioni ➤ Editor assegnazioni.
- Selezionare Fractal Synthesis per Assignment Name, On per Value, il nome dell'entità aritmetica intensiva per Entity e un nome di istanza nella colonna To. È possibile immettere un carattere jolly (*) per To per assegnare tutte le istanze dell'entità.
Figura 18. Assegnazione della sintesi frattale nell'Editor assegnazioni
Informazioni correlate
- Attributo di sintesi HDL di Multistyle Verilog
- Nella Guida di Intel Quartus Prime.
Preserva risultati soddisfacenti
È possibile semplificare la chiusura dei tempi annotando all'indietro risultati di compilazione soddisfacenti per bloccare il posizionamento di blocchi di grandi dimensioni relativi a clock, RAM e DSP. Allo stesso modo, la tecnica di riutilizzo del blocco di progettazione consente di preservare risultati di compilazione soddisfacenti per specifici blocchi di progettazione della logica del nucleo o della periferia FPGA (logica che comprende un'istanza di progettazione gerarchica) e quindi riutilizzare tali blocchi nelle compilazioni successive. Nel riutilizzo del blocco di progettazione, si assegna l'istanza gerarchica come partizione di progettazione, quindi si conserva ed esporta la partizione dopo la corretta compilazione. La conservazione e il riutilizzo di risultati soddisfacenti consente di concentrare l'impegno e il tempo del compilatore solo su porzioni del progetto che non hanno temporizzazione chiusa.
Problema di chiusura temporizzata
- A meno che non sia bloccato, il compilatore può implementare blocchi di progettazione, clock, RAM e DSP in modo diverso dalla compilazione alla compilazione a seconda di vari fattori.
Soluzioni di chiusura temporizzata
- Blocco di clock, RAM e DSP a pagina 20: annota i risultati di compilazione soddisfacenti per bloccare il posizionamento di blocchi di grandi dimensioni relativi a clock, RAM e DSP.
- Mantieni i risultati della partizione del progetto a pagina 21: conserva le partizioni per i blocchi che rispettano i tempi e focalizza l'ottimizzazione sugli altri blocchi del progetto.
Informazioni correlate
- Guida della finestra di dialogo Assegnazioni retro-annotazione
- AN-899: Riduzione del tempo di compilazione con conservazione rapida
- Guida per l'utente di Intel Quartus Prime Pro Edition: progettazione basata su blocchi
Blocca clock, RAM e DSP
È possibile semplificare la chiusura dei tempi annotando all'indietro risultati di compilazione soddisfacenti per bloccare il posizionamento di blocchi di grandi dimensioni relativi a clock, RAM e DSP. Il blocco del posizionamento di blocchi di grandi dimensioni può produrre fMAX più elevati con meno rumore. Il blocco di blocchi di grandi dimensioni come RAM e DSP può essere efficace perché questi blocchi hanno una connettività più pesante rispetto ai normali LAB, complicando il movimento durante il posizionamento. Quando un seme produce buoni risultati da un posizionamento RAM e DSP adeguato, è possibile acquisire quel posizionamento con annotazioni posteriori. Le compilazioni successive possono quindi beneficiare della RAM di alta qualità e del posizionamento DSP dal buon seme. Questa tecnica non avvantaggia in modo significativo i progetti con pochissime RAM o DSP. Fare clic su Assegnazioni ➤ Annota indietro assegnazioni per copiare le assegnazioni delle risorse del dispositivo dall'ultima compilazione al file .qsf per utilizzarle nella compilazione successiva. Selezionare il tipo di annotazione posteriore nell'elenco Tipo di annotazione posteriore.
Finestra di dialogo Assegnazioni retro-annotazione
In alternativa, puoi eseguire back-annotation con il seguente eseguibile quartus_cdb. quartus_cdb –back_annotate [–dsp] [–ram] [–clock]
NOTA
- L'eseguibile supporta le variabili aggiuntive [–dsp], [–ram] e [–clock] che la finestra di dialogo Back-Annotate Assignments non supporta ancora.
Mantieni i risultati della partizione del progetto
NOTA
- Dopo aver partizionato il progetto, puoi conservare le partizioni per i blocchi che soddisfano i tempi e concentrare l'ottimizzazione sugli altri blocchi del progetto. Inoltre, l'opzione Fast Preserve semplifica la logica di una partizione conservata in modo da interfacciare solo la logica durante la compilazione, riducendo così il tempo di compilazione per la partizione. Fast Preserve supporta solo il riutilizzo della partizione root e progetti di riconfigurazione parziale. Per i progetti con sottomoduli che richiedono tempi di chiusura difficili, è possibile eseguire l'ottimizzazione e la compilazione autonome della partizione del modulo, quindi esportare il modulo con chiusura dei tempi per preservare l'implementazione nelle compilazioni successive.
Conservazione dei risultati della partizione del progetto
La progettazione basata su blocchi richiede il partizionamento della progettazione. Il partizionamento del progetto consente di preservare singoli blocchi logici nel progetto, ma può anche introdurre una potenziale perdita di prestazioni a causa dell'attraversamento delle partizioni e degli effetti della planimetria. È necessario bilanciare questi fattori quando si utilizzano tecniche di progettazione basate su blocchi. I seguenti passaggi di alto livello descrivono il flusso di conservazione della partizione per i progetti di riutilizzo della partizione root:
- Fare clic su Elaborazione ➤ Avvia ➤ Avvia analisi ed elaborazione.
- Nel Navigatore progetto, fare clic con il pulsante destro del mouse sull'istanza di progettazione temporizzata chiusa, puntare su Progetta partizione e selezionare un Tipo di partizione, come descritto nelle Impostazioni di progettazione partizione a pagina 23.
Crea partizioni di progettazione
- Definire i vincoli di planimetria Logic Lock per la partizione. Nella finestra Design Partitions, fare clic con il pulsante destro del mouse sulla partizione, quindi fare clic su Logic Lock Region ➤ Create New Logic Lock Region. Assicurarsi che l'area sia sufficientemente grande da racchiudere tutta la logica nella partizione.
- Per esportare i risultati della partizione dopo la compilazione, nella finestra Design Partitions, specificare la partizione .qdb come Post Final Export File.
Dopo l'esportazione finale File
- Per compilare il progetto ed esportare la partizione, fare clic su Compila progetto nel dashboard di compilazione.
- Apri il progetto di primo livello nel software Intel Quartus Prime.
- Fare clic su Assegnazioni ➤ Impostazioni ➤ Impostazioni del compilatore ➤ Compilazione incrementale. Attiva l'opzione Conservazione veloce.
Opzione di conservazione rapida
- Fare clic su OK.
- Nella finestra Design Partitions, specificare il file .qdb esportato come database delle partizioni File per la partizione in questione. Questo .qdb è ora l'origine per questa partizione nel progetto. Quando si abilita l'opzione Fast Preserve, il compilatore riduce la logica della partizione importata alla sola logica di interfaccia, riducendo così il tempo di compilazione richiesto dalla partizione.
Progettare le impostazioni della partizione
Progettare le impostazioni della partizione
Opzione | Descrizione |
Nome della partizione | Specifica il nome della partizione. Ogni nome di partizione deve essere univoco e consistere di soli caratteri alfanumerici. Il software Intel Quartus Prime crea automaticamente una "partizione_root" di primo livello (|) per ogni revisione del progetto. |
Percorso gerarchico | Specifica il percorso della gerarchia dell'istanza dell'entità assegnata alla partizione. Si specifica questo valore nel file Crea nuova partizione la finestra di dialogo. Il percorso della gerarchia della partizione radice è |. |
Tipo | Fare doppio clic per specificare uno dei seguenti tipi di partizione che controllano il modo in cui il compilatore elabora e implementa la partizione: |
continua… |
Opzione | Descrizione |
• Predefinito—Identifica una partizione standard. Il compilatore elabora la partizione utilizzando la sorgente di progettazione associata files.
• riconfigurabile—Identifica una partizione riconfigurabile in un flusso di riconfigurazione parziale. Specificare la riconfigurabile type per preservare i risultati della sintesi, consentendo al tempo stesso di riadattare la partizione nel flusso PR. • Nucleo riservato—Identifica una partizione in un flusso di progettazione basato su blocchi riservata allo sviluppo principale da parte di un consumatore che riutilizza la periferia del dispositivo. |
|
Livello di conservazione | Specifica uno dei seguenti livelli di conservazione per la partizione:
• Non impostato—non specifica alcun livello di conservazione. La partizione viene compilata dal sorgente files. • sintetizzato—la partizione viene compilata utilizzando lo snapshot sintetizzato. • finale—la partizione viene compilata utilizzando lo snapshot finale. Con Livello di conservazione of sintetizzato or finale, le modifiche al codice sorgente non vengono visualizzate nella sintesi. |
Vuoto | Specifica una partizione vuota che il compilatore ignora. Questa impostazione non è compatibile con il Nucleo riservato E Database delle partizioni File impostazioni per la stessa partizione. Il Livello di conservazione deve essere Non impostato. Una partizione vuota non può avere partizioni figlio. |
Database delle partizioni File | Specifica un database di partizione File (.qdb) che il compilatore utilizza durante la compilazione della partizione. Esportare il .qdb per la stage della compilation che vuoi riutilizzare (sintetizzata o definitiva). Assegna il file .qdb a una partizione per riutilizzare i risultati in un altro contesto. |
Rilegatura dell'entità | • Flusso PR: specifica l'entità che sostituisce la persona predefinita in ogni revisione dell'implementazione.
• Flusso di riutilizzo della partizione radice: specifica l'entità che sostituisce la logica principale riservata nel progetto consumer. |
Colore | Specifica la codifica a colori della partizione nelle schermate Chip Planner e Design Partition Planner. |
Esportazione post sintesi File | Esporta automaticamente i risultati della compilazione post-sintesi per la partizione nel file .qdb specificato, ogni volta che Analysis & Synthesis viene eseguito. È possibile esportare automaticamente qualsiasi partizione di progetto che non dispone di una partizione principale preservata, inclusa la partizione_root. |
Dopo l'esportazione finale File | Esporta automaticamente i risultati della compilazione post-finale per la partizione nel file .qdb specificato, ogni volta che la s finaletage delle corse di Fitter. È possibile esportare automaticamente qualsiasi partizione di progetto che non dispone di una partizione principale preservata, inclusa la partizione_root. |
AN 903 Cronologia delle revisioni dei documenti
Questo documento ha la seguente cronologia delle revisioni:
Versione del documento | Versione Intel Quartus Prime | Cambiamenti |
2021.02.25 | 19.3 | Sostituito "pull" con "tension" in Analizza e ottimizza la progettazione RTL argomento. |
2020.03.23 | 19.3 | Errore di sintassi corretto nel codice sample nell'argomento "Bloccare clock, RAM e DSP". |
2019.12.03 | 19.3 | • Prima versione pubblica. |
Documenti / Risorse
![]() |
intel AN 903 Chiusura temporizzata accelerata [pdf] Guida utente AN 903 Chiusura temporizzata accelerata, AN 903, Chiusura temporizzata accelerata, Chiusura temporizzata |