VLSI Síntese RTL 1
FEUP/DEECMaio de 2010
Síntese RTL
João Canas Ferreira
Tópicos deProjecto de Circuitos VLSI
VLSI Síntese RTL 2
Conteúdo
Inclui figuras de:Douglas J. Smith, HDL Chip Design (secção 1)
Synopsys, Design Compiler User Guide (secção 2)
Observações gerais sobre o processo de síntese
O sistema Design Compiler
VLSI Síntese RTL 3
Desenvolvimento top-down
Abordagem: Refinamento hierárquico das descrições.
Os níveis inferiores contêm progressivamente mais detalhes.
VLSI Síntese RTL 5
Fluxo de projecto
Saída: desenho completoa nível lógico
Alternativa: continuar para síntese física
VLSI Síntese RTL 6
Síntese RTL (1)
Register transfer logic
Descrição em termos de circuitos combinacionais e de registos
Sistemas síncronos
É importante formular a descrição explicitamente nestes termos.
R RCombinacional
clk
VLSI Síntese RTL 7
Síntese RTL (2)
[Tradução] HDL → representação interna do fluxo de dados e do sequenciamento (controlo) [Optimização genérica] Processamento:
expansão de funções propagação de constantes desdobramento de ciclos
[Optimização lógica] Síntese lógica Optimização dos circuitos combinacionais
VLSI Síntese RTL 14
Conteúdo
Observações gerais sobre o processo de síntese
O sistema Design Compiler
Inclui figuras de:Synopsys, Design Compiler User Guide
VLSI Síntese RTL 16
Resumo das etapas de síntese
Preparação da descrição do circuito (HDL/VHDL)
[Síntese] Tradução para componentes sintéticos
(DesignWare) e para tecnologia genérica (GTECH)
GTECH: portas lógicas e flipflops
DesignWare: somadores, comparadores, ...
Optimização e mapeamento para biblioteca-alvo
processo orientado por restrições
Síntese de infra-estrutura de teste (scan)
Re-síntese após síntese física
VLSI Síntese RTL 17
Termos
Síntese: processo de geração de uma descrição tipo
“netlist” (lista de componentes e suas interligações) a
partir de uma descrição HDL/VHDL.
Optimização: etapa do processo de síntese que tenta
determinar a combinação de células que melhor
satisfaz os requisitos
“compile”: comando DC que efectua a optimização.
VLSI Síntese RTL 21
Bibliotecas
target libraries: bibliotecas de células a usar no
netlist final
link libraries: bibliotecas de células e outros
módulos usados para satisfazer referências (inclui
target libraries)
symbol libraries: bibliotecas de símbolos para
esquemáticos gerados pelo DC
VLSI Síntese RTL 22
Exemplo MD4: .synopsys_dc.setup
• set datadir "/home/cdsmgr/cad/libs/amis/ads2002.4/cmos035/v1.9"
• lappend search_path $datadir/syn99.10 $datadir/syn99.10/3.3V
• set link_library {MTC45000_WL_TYP.db MTC45000.db MTC45005.db
MTC45100.db}
• set target_library $link_library
• set symbol_library { MTC45000.db MTC45005.sdb }
• set link_library [linsert $link_library 0 "*" ]
VLSI Síntese RTL 23
Exemplo MD4: synthesize-core.script
•analyze -f verilog md4.v•elaborate md4•current_design md4•link
•Análise: leitura de ficheiros, verificação de erros, criação de
bibliotecas
•Elaboração: tradução para GTECH e DesignWare
•Ligação: resolução de referências. Ordem: circuito corrente,
bibliotecas especificadas (incluindo search_path).
VLSI Síntese RTL 25
Especificação do “ambiente eléctrico”
set OPERATING_CONDITIONS "WCCOM"set REF_LOAD "MTC45000/ND2/A"
set OUTPUT_LOAD [ expr 1.2 * [load_of $REF_LOAD] ]set_load $OUTPUT_LOAD [all_outputs]
set_operating_conditions $OPERATING_CONDITIONS
VLSI Síntese RTL 26
Definição de “regras de projecto”
set DEFAULT_MAX_TRANSITION 2set REF_LOAD "MTC45000/ND2/A"
# maximum load for the input pinset_max_capacitance [ expr 316 * [ load_of $REF_LOAD ] ] $CLOCK_NAME
set CAP_LOAD [ expr 80 * [load_of $REF_LOAD] ]set_max_capacitance $CAP_LOAD ctrl\[0\]
# for all nets of designset_max_transition $DEFAULT_MAX_TRANSITION [find design "*"]
VLSI Síntese RTL 27
Mais conceitos...
Tempo de transição: tempo necessário para “driver”
mudar de estado.
Cada pino de entrada pode ter associado o valor
máximo da sua “carga” [max_capacitance]
As unidades estão definidas nas bibliotecas (usar o
comando report_libs)
VLSI Síntese RTL 28
Restrições de optimização
create_clock $CLOCK_NAME -period $CLOCK_PERIOD# define maximum allowed clock skew set_propagated_clock $CLOCK_NAMEset_clock_uncertainty 0.1 $CLOCK_NAME# input timing parametersset_input_delay $DEFAULT_INPUT_DELAY -clock $CLOCK_NAME [all_inputs]
# remove input delay attribute for clock:remove_input_delay $CLOCK_NAME -clock $CLOCK_NAME
VLSI Síntese RTL 29
Especificações temporais
create_clock: definir sinal de relógio set_propagated_clock: considerar atrasos da árvore de distribuição de sinal de relógio set_clock_uncertainty: definir margens de incerteza em torno do flanco activo de relógio set_input_delay: definir tempo de chegada do sinal de entrada em relação ao sinal de relógio (após flanco) set_output_delay: definir tempo que a saída deve estar estável antes do flanco de relógio
VLSI Síntese RTL 31
Optimização
Arquitectural (não mapeado) subexpressões comuns, partilha de recursos, reordenação de operadores, selecção de módulos DesignWare (repetido após mapeamento)
Nível lógico reestruturação (variáveis intermédias) + “flattening” (soma de produtos)
Nível estrutural (portas lógicas) mapeamento, optimização temporal, reparação (restrições de regras de projecto), optimização de área