sintesi logica- generalità - unirc.it · .sdc physical design.sdc .g encounter rtl compiler logic...
TRANSCRIPT
Sintesi logica- Generalità
Alberto Scandurra
Physical Layer & Back-End group, On Chip Communication SystemsSTMicroelectronics
Catania, Italy
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica2
Agenda
• Definizioni
• Flusso di sintesi
• Sintesi con Encounter RTL Compiler diCadence
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica3
Definizioni
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica4
Definizioni (1)
Sintesi = traduzione + ottimizzazione + mapping
Traduzione : trasformazione del codice HDL in equazionibooleane
Ottimizzazione : riduzione delle equazioni booleane in forma minima
Mapping : implementazione delle equazioni booleane con celle di tecnologia
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica5
Definizioni (2)
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica6
Flusso di sintesi
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica7
Flusso di sintesi
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica8
Sintesi con Encounter RTL Compiler di Cadence
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica9
Optimized netlist
.lib
.lbr
RTLNetlist
.g.SDC
PhysicalDesign
.SDC .g
Encounter RTL
CompilerLogic
Verification
Input e Output per RTL Compiler
• Input– RTL: Verilog,
VHDL, direttive, pragma.– Constraints: .sdc o .g– Librerie: .lib o .lbr– Informazioni fisiche
(opzionali): LEF
• Output– Netlist ottimizzata– LEC .do file– ATPG, ScanDEF, e altro– Constraints: .sdc o .g– Input files per First
Encounter®
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica10
Il file di configurazione• Il file .synth_initcontiene una serie di comandi che vengono eseguiti al
momento dell’invocazione del software.
• Il tool cerca il file .synth_initnel seguente ordine: – Nella directory di installazione del tool (file master.synth_init) – Nella home directory (file .cadence/.synth_init)– Nella current directory (file .synth_init)
• In caso di conflitto vengono usati i comandi letti più recentemente.
include load_etc.tclsource ~/my_file.tclset_attr information_level 9 /set_attr tns_opto 1 /suppress_messages { LBR-21 LBR-72 LBR-146 }
Esempio di file .synth_init
Questo file include utili procedure tclche implementano functionalità extra (ad esempio remove_buffer_tree)
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica11
Avvio e uscita da RTL Compiler
• Encounter® RTL Compiler (RC) può essere invocato con le seguenti opzioni: rc [-E] [-files <string>]+ [-no_custom] [-cmdfile <string>] [-logfile <string>] [-overwrite ] [-use_license <string>] [-queue] [-version][-lsf_cpus <integer>] [{-32 | -64}] [-debug3264][-plat <platform>][-v3264] [-lsf_queue <string>][-execute <string>]+ [-post <string>]+
• Esempiorc –f <script_file_name> -logfile <results_file_nam e>
• Usarequit o exit per chiudere RC
• I dati di una sessione saranno persi se non salvati esplicitamente su disco
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica12
Help dei comandi• Si possono avere informazioni sui comandi digitando:
man command_name
oppurehelp command_name
• Per vedere le pagine del manuale da una shell UNIX, settare la seguentevariabile ambientale: setenv MANPATH $CDN_SYNTH_ROOT/share/synth/man
• Quando si è incerti su un comando, digitando le prime lettere e premendo iltastoTab si ottiene una lista di comandi che iniziano con quelle lettere.
• Esempiopath_
Questo comando restituisce: ambiguous "path_": path_adjust path_delay path_disa ble
path_group
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica13
Generazione di template script• Si può generate un template scriptcol comandowrite_template.• Sintassi
write_template -outfile <string> [-split] [-no_sdc][ -dft] [-power] [-msv] [-full] [-retime] [-n2n][-multimode ] [-simple] [-area] [-yield]
• Opzioni– -outfile <string>: specifica il nome del file di uscita (necessario)– [-simple]: crea un semplice template – [-power]: crea un template con gli attributi di clock gating e low power
design – [-dft]: crea un template con gli attributi e i comandi per la DFT – [-full]: crea un template con tutti i comandi di base e gli attributi per DFT
e low power design– [-n2n]: crea un template per l’ottimizzazionenetlist to netlist– [-split]: crea un template con file separati per setup, DFT e low power
design
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica14
Esecuzione di file script• Una volta avviato RC, si può eseguire uno script usando uno dei seguenti
metodi:
– Usare il comandosource: source <path>/<script_file_name>
– Settare ilsearch path così che il software possa localizzare I file dausare.
• Per settare lo script search path, digitare:set_attribute script_search_path <{ path1 path2 …
}> /
• Qundi usare:include script_file_name
oppure
source script_file_name
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica15
Struttura di directory virtuali
La strutture di directory si mappa sulla gerarchia del design.
libraries
myliba
messagesdesigns
/
hdl_libraries
DW*GTECH
AND2XL OR2XL
libcells
MUX2X1
A B Y
. . .
timingportsinstances_hier instances_cmbinstances_seq dft
my_reg[1] g101mem256x8
top_mod
. . . . . .. . .
object_types
Le directory virtuali contengono oggetti e i loro attributi. Gli oggettiappartengono a tipi come design, istanze, clock e porte.
Molti attributi influenzano la sintesi e l’ottimizzazione di questi oggetti.
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica16
Definizione di attributi• In RC esistono attributi predefiniti associati con ogetti nel
database. Il seguente comando assegna un valore ad un attributo: set_attribute <attribute_name> <value> <object>
– Alcuni attributi sonoread-onlymentre altri sonoread-write.– Alcuni attributi dipendono dallo step del flusso di sintesi. In alcuni casi,
il tipo di un attribut determina lo step del flusso di sintesi nel qualol’attributo può essere definito.
• EsempioAttibuto di root ( / ):set_attribute lp_insert_clock_gating true /
Attributo di design ( /designs/top_mod ):set_attr lp_clock_gating_exclude true
/designs/top_mod
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica17
Lettura di attributi• Per leggere il valore di un attributo, usare:
get_attribute <attribute_name> <object>
• Questo comando lavora su un singolo attributo. Per ottenere ilvalore di un attributo di ogetti multipli, si può inglobare ilcomando in un ciclo tclforeach.
• Esempioget_attr propagated_clocks $pin
get_attr load /libraries/slow/INVX1/A
• Per ottenere informazioni su un attributo, digitare:get_attribute -h <attribute_name> [<object_type>]
• Esempioget_attribute –h *clock* *
get_attribute –h *clock* clock
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica18
Flusso di sintesi di base con RCSet target library
set_attr library name /
Read HDL filesread_hdl ${FILE_LIST}
Elaborate the designelaborate
Set timing and design constraints
Apply optimization directives
synthesize -to_generic,synthesize -to_mapped, and
synthesize -incremental
Interface to place and route
Place and Route
Yes
Modify optimization directiv es
Meet constraints? No
Netlist, SDC
Analyze and Report
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica19
Settaggio delle librerie di tecnologia• L’attributo library specifica latarget technologyper la sintesi.
– Per caricare una singola libreria digitareset_attr library lsi500k.lib /
L’attributo library è un attributo della root.
– Per caricare multiple librerie digitareset lib_list1 “01_wc3.lib mylib1.lib x1.lib“
set_attr library $lib_list
Settando l’attribut library vengono caricate le librerie specificatenell’ambiente di sintesi (e viene popolata la directory virtuale/libraries).
– Per appendere librerie a un data base già esistente, digitareset_attr library {{a.lib b.lib} c.lib {x.lib y.lib} } /
In quetso esempio, RC caricaa.lib e appendeb.lib a a.lib. Quindi caricac.lib. Quindi caricax.lib e appendey.lib a x.lib.
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica20
Gerarchia di informazioni di libreria
/ = root
/hdl_libraries
operating_conditions
AND2XL OR2XLslow
/libraries /messages /designs
libcells wireload_models
myliba mylibxmylibc
MUX2X1
/
_nominal_
A B Y
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica21
Evitare l’uso di specifiche celle
• Il comandoavoid(equivalente a dont_usedi Design Compiler) informa il mapper di non usare particolari celle della tecnologia.
• Sintassiset_attr avoid <true(1)/false(0)> <cell name(s)>
• Esempioset_attr avoid 1 { mylib/snl_mux21_prx*}set_attr avoid 1 { /mylib/*nsdel}
set_attr avoid 1 [find /lib* -libcell *nsdel]
• Il comando tclset_dont_usein Design Compiler (DC) èsupportato in Encounter® RTL Compiler (RC), purchè sia usatoall’interno del file SDC.
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica22
Stima dei ritardi di propagazione
• Physical Layout Estimation (PLE)– PLE usa informazioni reali di
librerie fisiche
– Calcola dinamicamente I ritardi dei wire per differentistrutture logiche nel design
– Si correla meglio colplace & route.
set_attr lef_library <lef header>
set_attr cap_table_file <cap table>set_attr interconnect_mode ple /
• Wire-load Models– I wire load models sono modelli
statistici
– La selezione di un wire-load model appropriato per un design non è banale.
– La correlazione è difficile persino con wire-load model custom.
set_attr interconnect_mode wireload /set_attr wireload_mode top /
set_attr force_wireload [find /mylib -wireload S160K] /top
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica23
Wire load model
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica24
Lettura del design
• I comandiread_hdle read_netlistprocessano un codice rtl.
• Sintassiread_hdl [-h][-vhdl|-sv][-v1995|-v2001][-netlist]
[-define macro=name] file(s)<.gz>
• -vhdl per default RC leffe VHDL-1993• -sv legge file System Verilog®• -v1995 (Boolean) forza il modo Verilog 1995• -v2001 (Boolean) forza il modo Verilog 2001• -define definisce macro Verilog
• EsempioPer leggere un design RTL o un design misto (RTL/gate):
read_hdl {design1.v subdes1.v subdes2.v}
Per leggere una gate-level netlist (strutturale): read_netlist design_struc1.v
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica25
Elaborazione del design• Il comando elaborate
– Crea le strutture di dati e inferenzia i registri nel design
– Esegue un’ottimizzazione ad alto livello dell’rtl,come la rimozione dicoduce inutile
– Identifica candidati per il clock gating e l’operand isolation
• Il comando è richiesto solo per il top-level di un design, tutti i subdesign sonoelaborati automaticamente
elaborate [-h] [-parameter {} ] [<top_module_name>]
• Esempio
parameter data_width1 = 12;parameter averg_period = 8;parameter data_width2 = 16;
module TOP ( data_in , data_out , averg_per_sel ) ;
input [data_width1-1:0] data_in ;…
elaborate -parameter {12 8 16} TOP Durante la compilazione, i parametrisono modificati come segue:
data_width1 = 12 averg_period = 8 data_width2 = 16
parameter data_width1 = 3;parameter averg_period = 2;parameter data_width2 = 4;
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica26
Gerarchia di informazioni di design
. . . timingportsinstances_hier instances_cmbinstances_seq dft
libraries messagesdesigns
/
hdl_libraries
/ = root
my_reg[1] g101mem256x8
Top Level
. . .
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica27
Verifica del design• Usare il comandocheck_designper controllare eventuali problemi come
porte e/o pin non pilotati o con driver multipli, elementi sequenziali e portesenza carico, riferimenti non risolti, porte e/o pin connessi a costanti.
• Sintassicheck_design [-undriven] [-unloaded] [-multidriven]
[-unresolved] [-constant] [-assigns] [-all] [<desig n>] [> file]
– Se non si specifica alcuna opzione, il comandocheck_designriporta un riassunto in formato tabulare.
– Se si riscontrano riferimenti non risolti, occorre analizzare e fissare ilproblema prima di procedere con la sintesi
Riferimenti non risolti rappresentano unità funzionali mancanti nelcodice rtl on nelle librerie, il che determina una sintesi non funzionale e una conseguente perdita di tempo.
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica28
Specifica delle constraint
• Le constraint si possono specificare in uno dei seguenti due modi:
– SDC FileSi può leggere un file SDC direttamente in RC dopo l’elaborazionedel deisgn di top-level. read_sdc <sdcFileName><.gz>
• Controllare sempre errori e comandi falliti quando si legge un file SDC
• Analizzare il log file e la tabella riassuntiva alla fine del processo
– RC tcl constraint (vedremo in seguito)
• Eseguire sempre il comandoreport timing –lintdopo aver letto le constraint per verificarne la consistenza.
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica29
Sintesi del design
• L’obiettivo della sintesi è l’implementazione più piccola possibile del design, purchè si soddisfino le constraint di timing e power. La sintesi vieneeseguita col comandosynthesize.
• Sintassisynthesize [–to_generic] [–to_mapped] [- effort <level>]
[-incremental] [design|sub-design]
-to_generic— Ottimizza i MUX e i datapath si ferma prima del mapping. -to_mapped— Mappa il/i design specificati in celle descritte nellelibrerie di
tecnologia fornite ed esegue l’ottimizzazione della logica. -effort <level>— Può essere low, medium (default) o high. -incremental/-no_incremental— Abilita/disabilita la sintesi incrementale-csa_effort <level>- carry-save effort level — gestisce evenatuali limitazioni di
equivalency checking.
• Per default, il comandosynthesize –to_mappedeseguirà un’ottimizzazionegenerica, un mapping ed un’ottimizzazione incrementale.
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica30
Reporting
Genera un report di area, timing, e design rule. report summary
Genera un report di timing. report timing
Genera un report diquality of results(QoR). report qor
Genera un report di power.report power
Genera un sommario dei messaggi di errore riportati. report messages
Genera un report sull’utilizzo di memoria. report memory
Genera un report delle istanze. report instance
Genera un report sulla gerarchia. report hierarchy
Riporta le celle di libreria usate, l’area totale e un riassunto del numero di istanze
report gates
Riporta eventuali violazioni di design rule. report design_rules
Genera un report sulle risorse di tipo datapath. report datapath
Genera un report gerarchico di area esaustivo. report area
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica31
Generazione di report di timing• puts " WNS path/timing among all in2out paths" • report timing -from [all::all_inps] -to [all::all_ outs]
• puts “WNS path/timing among all reg2reg paths"• report timing -from [all::all_seqs] -to
[ all:: all_seqs]
• puts "WNS path/timing among CLK to outputs in domain $clk "• report timing -from $clk -to [all::all_outs]
• puts "WNS path/timing among CLK to D paths in domain $clk"• report timing -from $clk -to [all::all_seqs]
• puts "WNS path/timing among paths that cross from $clk to $clk2 domains"• report timing -from $clk -to $clk2
I comandi all:: sono procedure tcl chefanno parte del file load_etc.tcl , a sua volta parte della gerarchia diinstallazione. Ricordarsi di includereload_etc.tcl prima di usare questicomandi. Il file .synth_init è un buonposto per fare ciò
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica32
Reading Timing Reports=================================================== ========= Generated by: Encounter(r) RTL Compiler v07.10-p004_1 Generated on: Jul 23 2007 03:16:40 AM Module: dtmf_chip Technology libraries: slow_normal 1.0 slow_hvt 1.1 tpz973gtc 230 ram_128x16A 0.0ram_256x16A 0.0 rom_512x16A 0.0 pllclk 4.3 Operating conditions: slow (balanced_tree) Wireload mode: enclosed=================================================== ========= Pin Type Fano ut Load Slew Delay Arrival (fF) (ps) (ps) (ps) --------------------------------------------------- -------------------------------(clock m_clk) launch 0 R latency +4000 4000 R DTMF_INST TDSP_CORE_INST DATA_BUS_MACH_INST data_out_reg[0]/clk 0 4000 R data_out_reg[0]/q (u) unmapped_d_flop 19 155.1 0 +258 4258 R DATA_BUS_MACH_INST/data_out[0] TDSP_CORE_GLUE_INST/data_out[0] TDSP_CORE_GLUE_INST/port_data_in[0] PORT_BUS_MACH_INST/data_in[0] PORT_BUS_MACH_INST/pad_data_out[0] TDSP_CORE_INST/port_pad_data_out[0] DTMF_INST/port_pad_data_out[0] IOPADS_INST/tdsp_portO[0] Ptdspop00/I +0 4258 Ptdspop00/PAD PDO04CDG 1 6719.0 2038 +1648 5906 R IOPADS_INST/tdsp_port_out[0] port_pad_data_out[0] out port +0 5906 R (ou_del_1) ext delay +500 6406 R - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (clock refclk) capture 6000 R uncertainty -250 5750 R --------------------------------------------------- -------------------------------Timing slack : -656ps (TIMING VIOLATION)Start-point : DTMF_INST/TDSP_CORE_INST/DATA_BUS_MA CH_INST/data_out_reg[0]/clkEnd-point : port_pad_data_out[0]
L’header include informazioni sulibrerie e modulo.
Il body include ilcalcolo del tempo di arrivo.
Il footer include ilcalcolo dello slack.
Esempio di report di timing
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica33
Generazione degli output
• Comandi per la generazione degli output – Il comandowrite_hdl genera una gate-level netlist.
write_hdl > | >> filename
– Il comandowrite_scriptgenera il file di constraint RC.write_script > | >> constraints.g
– Il comandowrite_sdcgenera il file di constraint SDC. write_sdc [design] > | >> [filename]
Usare il simbolo > per redirezionare l’output in un file, oppure>> per accodarlo al file.
write_hdl > <path to the output dir>/design.v
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica34
Navigazione nella struttura dati• RC usa comandi UNIX-like per navigare nella gerarchia del design in memoria.
� cd — Setta la current directorynella gerarchia di design.
� ls <-l > < -a> — Lista gli ogetti nellacurrent directory.
� mv— Muove (rinomina) un design nella gerarchia.
mv test2 test3 Rinomina il designtest2come test3.
� popd — Rimuove l’elemento superiore dello stack di directory, definendo un nuovoelemento superiore e cambiando la directory nel nuovo elemento.
� pushd — Aggiunge la nuova directory specificata nello stack didirectory e cambia la current directory in quella nuova.
� rm — Rimuove un ogetto (come una definizione di clock) in una gerarchia.
rm /des*/test3/timing/clock_domains/domain_1/clock rimuovel’ogettoclock.
� find — Trova un ogetto e lo passa ad un altro comando.
ls –l –a [find / –wireload *] Riporta i wire load model.
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica35
Filtraggio di oggetti per nome e per tipo
set inst_list [ find /des* -instance *]echo $inst_list
Trova tutte le istanzegerarchiche del design
find /des* -clock * Trova tutti i clock del design
find /LibraryName –wireload *Trova tutti i wire-load model disponibili in una libreria
find /des* -subd * Trova tutti i subdesign.
find /des* -pin inst*hier/v1/*
find /des* -pin v1/*
Trova tutti i pin dell’istanza v1 nella gerarchia
find /des* -port ports_out/*Trova tutte le porte di uscita
find /des* -port ports_in/*Trova tutte le porte di ingresso
find /des* -instance inst*seq*/*Trova tutti i FFs e i latch
ComandoObiettivo
Facoltà di Ingegneria di Reggio Calabria - Corso di Laurea in Ingegneria Elettronica36
Filtraggio di oggetti basato suattributi
ls -la [ filter -invert count 0 [find / -message *]]
Lista tutti i messaggi con un conteggio superiore o uguale a 1
filter preserve true [find / -inst *]Trova tutte le istanze preservate
filter latch true [find / -instance *]Trova tutti i latch del design
ComandoObiettivo