VLSI Síntese RTL 1
FEUP/DEEC
Maio de 2010
Síntese RTL
João Canas Ferreira
Tópicos de
Projecto 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 4
Domínios de projecto para diferentes
níveis de abstracção
VLSI Síntese RTL 5
Fluxo de projecto
Saída: desenho completo
a 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 8
Síntese RTL (3)
VLSI Síntese RTL 9
Modelo simplificado das etapas de síntese
VLSI Síntese RTL 10
Estrutura de alto nível (CDFG)
VLSI Síntese RTL 11
Optimização ao nível lógico
VLSI Síntese RTL 12
Selecção de células
VLSI Síntese RTL 13
Alternativas para funções-objectivo
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 15
Tarefas de síntese
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 flip­flops
 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 18
Fluxo de projecto
VLSI Síntese RTL 19
Tarefas e comandos
VLSI Síntese RTL 20
Nomenclatura
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 24
Comandos para obter informações
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 2
set REF_LOAD "MTC45000/ND2/A"
# maximum load for the input pin
set_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 design
set_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_NAME
set_clock_uncertainty 0.1 $CLOCK_NAME
# input timing parameters
set_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 30
Atrasos de sinais
VLSI Síntese RTL 31
Optimização
 Arquitectural (não mapeado)
 sub­expressões comuns, partilha de recursos, reordenação 
de operadores, selecção de módulos DesignWare (repetido 
após mapeamento) 
 Nível lógico
 re­estruturaçã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 
VLSI Síntese RTL 32
Função de custo
 Regras de projecto
 Classes de optimização
 atraso máximo
 atraso mínimo
 potência máxima
 área máxima
 Objectivo: reduzir a função de custo a zero
 Comando: compile

Logic Synthesys help

  • 1.
    VLSI Síntese RTL1 FEUP/DEEC Maio de 2010 Síntese RTL João Canas Ferreira Tópicos de Projecto de Circuitos VLSI
  • 2.
    VLSI Síntese RTL2 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
  • 3.
    VLSI Síntese RTL3 Desenvolvimento top-down Abordagem: Refinamento hierárquico das descrições. Os níveis inferiores contêm progressivamente mais detalhes.
  • 4.
    VLSI Síntese RTL4 Domínios de projecto para diferentes níveis de abstracção
  • 5.
    VLSI Síntese RTL5 Fluxo de projecto Saída: desenho completo a nível lógico Alternativa: continuar para síntese física
  • 6.
    VLSI Síntese RTL6 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
  • 7.
    VLSI Síntese RTL7 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 
  • 8.
    VLSI Síntese RTL8 Síntese RTL (3)
  • 9.
    VLSI Síntese RTL9 Modelo simplificado das etapas de síntese
  • 10.
    VLSI Síntese RTL10 Estrutura de alto nível (CDFG)
  • 11.
    VLSI Síntese RTL11 Optimização ao nível lógico
  • 12.
    VLSI Síntese RTL12 Selecção de células
  • 13.
    VLSI Síntese RTL13 Alternativas para funções-objectivo
  • 14.
    VLSI Síntese RTL14 Conteúdo  Observações gerais sobre o processo de síntese  O sistema Design Compiler Inclui figuras de: Synopsys, Design Compiler User Guide
  • 15.
    VLSI Síntese RTL15 Tarefas de síntese
  • 16.
    VLSI Síntese RTL16 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 flip­flops  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
  • 17.
    VLSI Síntese RTL17 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.
  • 18.
    VLSI Síntese RTL18 Fluxo de projecto
  • 19.
    VLSI Síntese RTL19 Tarefas e comandos
  • 20.
    VLSI Síntese RTL20 Nomenclatura
  • 21.
    VLSI Síntese RTL21 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
  • 22.
    VLSI Síntese RTL22 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 "*" ]
  • 23.
    VLSI Síntese RTL23 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).
  • 24.
    VLSI Síntese RTL24 Comandos para obter informações
  • 25.
    VLSI Síntese RTL25 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
  • 26.
    VLSI Síntese RTL26 Definição de “regras de projecto” set DEFAULT_MAX_TRANSITION 2 set REF_LOAD "MTC45000/ND2/A" # maximum load for the input pin set_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 design set_max_transition $DEFAULT_MAX_TRANSITION [find design "*"]
  • 27.
    VLSI Síntese RTL27 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)
  • 28.
    VLSI Síntese RTL28 Restrições de optimização create_clock $CLOCK_NAME -period $CLOCK_PERIOD # define maximum allowed clock skew set_propagated_clock $CLOCK_NAME set_clock_uncertainty 0.1 $CLOCK_NAME # input timing parameters set_input_delay $DEFAULT_INPUT_DELAY -clock $CLOCK_NAME [all_inputs] # remove input delay attribute for clock: remove_input_delay $CLOCK_NAME -clock $CLOCK_NAME
  • 29.
    VLSI Síntese RTL29 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
  • 30.
    VLSI Síntese RTL30 Atrasos de sinais
  • 31.
    VLSI Síntese RTL31 Optimização  Arquitectural (não mapeado)  sub­expressões comuns, partilha de recursos, reordenação  de operadores, selecção de módulos DesignWare (repetido  após mapeamento)   Nível lógico  re­estruturaçã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 
  • 32.
    VLSI Síntese RTL32 Função de custo  Regras de projecto  Classes de optimização  atraso máximo  atraso mínimo  potência máxima  área máxima  Objectivo: reduzir a função de custo a zero  Comando: compile