Layout
Nesta etapa foram realizadas as atividades:
- Criação do template e edição do arquivo de configurações;
- Definição do Floorplan;
- Definição da rede de Vcc e Gnd;
- Realização do Placemment;
- Geração da árvore de clock;
- Roteamento e análise geométrica;
- Inclusão dos preenchimentos;
- Análise final;
- Exportação dos arquivos HDL e SDF.
Criação do template e edição do arquivo de configurações
O processo pode se iniciar digitando:
ams_encounter -tech c35b4
Após a execução do comando serão criados alguns arquivos e uma estrutura de pastas próprias para o desenvolvimento de layout utilizando a tecnologia de 35 micrômetros da Cadence.
Em seguida, deve-se inicializar o encounter digitando:
encounter
Para iniciar o design, deve-se ir em Design -> Import Design... -> load... e escolher o arquivo .conf criado pelo template (c35b4_std.conf). Com isto o projeto já é iniciado com alguns parâmetros padrão e com a especificação das bibliotecas de tecnologia.
Deve-se em seguida incluir na configuração do projeto o seu arquivo HDL (após a síntese e inclusão dos PADs), o arquivo de restrições .sdc (gerado na síntese) e o arquivo .io (criado após a inclusão dos PADs no arquivo HDL). Além disto, deve-se definir o “top cell”. Neste projeto foi digitado “uartproto”.
Para facilitar futuros processos de re-design, aconselha-se salvar a configuração criada clicando em save...
Definição do Floorplan
Entrar em Floorplan -> Specify Floorplan
Definir o floorplan. No projeto em desenvolvimento, foi definido:
Die Size By: Width: 1210.8 Height: 1210.8. Nesta dimensão foi observado uma taxa de utilização do core de menos de 20%, o que é suficiente para desenvolver o CI e distância entre pinos de IO é de 5.
Core to IO Boundary: Core to Left: 100 Core to Top: 100 Core to Right 100 Core to Bottom: 100. Essas dimensões são suficientes para traçar as linhas vcc e gnd ao redor do core.
Após clicar em Ok, com o botão Move/Resize/Reshape posicionou-se e esticou-se a área do design para toda área do core.
Após esta etapa a imagem do Chip a ser visualizada deverá ser conforme a imagem floorplan.png.
Definição da rede de Vcc e Gnd
No início do processo, ao criar o template, foi gerado um arquivo chamado gemma.tcl. Neste arquivo é possível observar um script completo para realizar o design do CI. Porém, muitas linhas estão comentadas, ficando a cargo do designer descomentá-las e executar o script de acordo com suas necessidades.
Iremos preferencialmente utilizar a interface gráfica para o desenvolvimento do CI. Porém em alguns momentos pode ser útil a utilização de alguns comandos do arquivo gemma.tcl, principalmente quando o procedimento a ser realizado pela interface gráfica é trabalhoso ou não foi identificado.
A partir do arquivo gemma.tcl foi identificado que antes de realizar o layout do vcc e gnd é necessário executar a seguinte seqüência de comandos para interconectar a alimentação dos PADs.
clearGlobalNets
globalNetConnect vdd! -type pgpin
-pin vdd! -inst * -module {}
globalNetConnect gnd! -type pgpin
-pin gnd! -inst * -module {}
globalNetConnect vdd3o! -type pgpin
-pin vdd3o! -inst * -module {}
globalNetConnect vdd3r1! -type
pgpin -pin vdd3r1! -inst * -module {}
globalNetConnect vdd3r2!
-type pgpin -pin vdd3r2! -inst * -module {}
globalNetConnect
gnd3o! -type pgpin -pin gnd3o! -inst * -module {}
globalNetConnect
gnd3r! -type pgpin -pin gnd3r! -inst * -module {}
Em seguida deve-se ir em Power -> Power Planning -> Add Rings...
No campo Net(s): deve-se deixar apenas gnd! e vdd! - Os demais são alimentação dos PADs e serão inseridos automaticamente.
Nas dimensões das trilhas vcc e gnd foram
definidos Width: 20 Top: 20 Bottom: 20 Left: 20 Right: 20
Spacing:
10 10 10 10 / Offset: 10 10 10 10
Após clicar em Ok, deve-se ir em Power -> Power Planning -> Add Stripes...
No campo Net(s): deve-se deixar apenas gnd! e vdd! - Os demais são alimentação dos PADs e serão inseridos automaticamente.
Width: 2
Spacing: 2
Set-to-set distance: 100
Após cliar em Ok, deve-se ir em Route -> Special Route...
Apenas clicar em Ok. Neste momento pode-se observar que foram criadas diversas linhas de alimentação na altura apropriada para a conexão das standard cells.
Ao final destes procedimentos a imagem deverá ser similar a power.png.
Realização do Placemment
Ir em Place -> Standard Cells and Blocks...
Clicar em Default e Ok. Caso não seja clicado no botão Default antes de clicar em Ok, algumas células serão posicionadas “de cabeça para baixo” - gerando erro na conexão da alimentação com estas.
Para uma melhor visualização, clicar em Physical view. A imagem deverá ser similar a placemment.png.
As áreas ocupadas pelos módulos de seu sistema também poderão ser vistos ao clicar em Amoeba view. Neste caso a imagem visualizada será similar a amoeba.png. Observar na imagem as áreas do módulo transmitter e do módulo baud generator.
Geração da árvore de clock
Ir em Clock -> Design Clock -> Gen Spec...
Foram selecionados todos os tipos de buffers que começavam com 'clk' disponíveis.
Clicar em Ok.
Roteamento e análises
Route -> Nanoroute -> Route...
Basta clicar em Ok.
Em seguida deve-se verificar o design em Verify -> Geometry..., em Verify -> Process Antenna... e em Verify -> Connectivity...
Os erros encontrados poderão ser corrigidos reposicionando as células manualmente. No projeto em questão, apareceu um erro “antenna”. Após reduzido a distância da trilha crítica ao bloco manualmente, o problema foi solucionado. Outro erro foi um curto. afastei o bloco do strip de alimentação para que o programa tivesse espaço para rotear e o problema também foi solucionado.
Obs.: Após mover uma célula, basta rotear novamente.
O resultado pode ser visto na figura route.png.
Inclusão dos preenchimentos
Ir em Place -> Filler -> Add Filler...
Inserir as células FILL1 FILL2 FILL5 FILL10 FILL25
Clicar em Ok.
Ir em Place -> Filler -> Add IO Filler...
Inserir as células PERI_SPACER_100_P PERI_SPACER_50_P PERI_SPACER_20_P PERI_SPACER_10_P PERI_SPACER_1_P PERI_SPACER_01_P
Clicar em Ok.
Ir em Route -> Wroute...
Clicar em Ok.
Ir em Route -> Metal Fill -> Add...
Clicar em Ok.
O resultado será de acordo com a imagem metal.png.
Análise final
Relatórios diversos podem ser obtidos através de Design -> Check Design... e Design -> Report
Um relatório síntese pode ser visto em summaryReport.rpt:
Exportação dos arquivos HDL e SDF
Para efeito de simulação pós-layout, deve-se exportar o arquivo .v (HDL) e .sdf (especificação dos delays).
Para o arquivo HDL, deve-se ir em Design -> Save -> Netlist...
Já para o arquivo .sdf, foi visto que é mais simples utilizar o prompt do encounter digitando a seguinte seqüência de comandos:
setExtractRCMode -detail -rcdb none.rcdb
-relative_c_t 0.01 -total_c_t 5.0 -reduce 5 -noise
setXCapThresholds
-totalCThreshold 5.0 -relativeCThreshold 0.01
extractRC
rcOut
-spef uart_layout.spef
delayCal
-sdf uart_layout.sdf