Inclusão dos PADs

Nesta etapa serão realizadas as atividades de:

- Escolha dos PADs apropriados;

- Modificação do arquivo HDL sintetizado;

- Modificação do arquivo HDL para simulação e realização da simulação.

- Criação do arquivo .io

Escolha dos PADs apropriados

A partir da biblioteca escolhida deve-se escolher quais PADs serão utilizados.

No nosso caso, a biblioteca escolhida foi a c35_IOLIB, que tem documentação em http://asic.austriamicrosystems.com/databooks/c35/databook_io_33/.

Os PADs escolhidos foram:
CMOS Clock Input Buffer 2mA: ICCK2P
CMOS Input Buffer: ICP
Output buffer 8mA: BU8P

A escolha dos PADs deve ser realizada de maneira criteriosa pois há muitos parâmetros envolvidos em cada PAD, como corrente e impedância de entrada e saída, tempo de subida e descida do sinal na entrada e saída, potência e área consumida, etc.

Porém, neste projeto a escolha foi realizada de maneira menos criteriosa, apenas para fins didáticos. Por exemplo, o PAD de saída foi escolhido com capacidade de suprir até 8mA para o meu circuito externo ao CI.

Modificação do arquivo HDL sintetizado

Deve-se incluir os PADs no arquivo .v conforme exemplo do arquivo uart_sint_PAD.v

No arquivo pode-se perceber que declaramos cada PAD como um módulo descrito na biblioteca de PADs c35_IOLIB_4M.v que ficará entre o código HDL escrito sintetizado e as portas de I/O. Por exemplo, o PAD ICCK2P é descrito na biblioteca no seguinte modo:

module ICCK2P (PAD, Y);
input PAD;
output Y;
buf (Y, PAD);
`ifdef functional
`else
specify
(PAD => Y) = (1,1);
endspecify
`endif

e sua declaração no arquivo HDL sintetizado deverá ser:

ICCK2P CLK_PAD (.PAD (csi_clockInput_clk_PAD), .Y (csi_clockInput_clk));

onde csi_clockInput_clk_PAD é o pino de entrada de clock do módulo UART e o pino csi_clockInput_clk é o pino que sai do PAD para o circuito interno da UART.

Modificação do arquivo HDL para simulação e realização da simulação

Foi realizada uma nova simulação com os PADs. Porém o arquivo que interliga o gerador.v com o uart_sint_PAD.v também teve que ser modificado para uart_PAD.v

Logo, o novo comando para realizar a simulação é:

irun -access +rwc -gui uart_PAD.v uart_sint_PAD.v gerador.v /opt/cadence/ams_hk/ams_v3.70/verilog/c35b4/c35_CORELIB.v /opt/cadence/ams_hk/ams_v3.70/verilog/c35b4/c35_UDP.v /opt/cadence/ams_hk/ams_v3.70/verilog/c35b4/c35_IOLIB_4M.v -top uart

Os resultados podem ser vistos no gráfico 1 e no gráfico 2.

Percebemos que não houve perda de desempenho após a inclusão dos PADs.

Criação do arquivo .io

Após funcionando a simulação, tem-se que criar o arquivo .io que especifica o posicionamento dos PADs e inclusão de corners no chip. Neste momento já há um início de desenvolvimento do layout do Chip.

O arquivo criado foi o uart.io, que está descrito a seguir:

Pad: CORNER4 SW CORNERP
Pad: CORNER3 NW CORNERP
Pad: CORNER2 SE CORNERP
Pad: CORNER1 NE CORNERP

Pad: VDD1 N VDD3ALLP
Pad: CS_PAD N ICP
Pad: CLK_PAD N ICCK2P
Pad: WR_PAD N ICP
Pad: RST_PAD N ICP

Pad: ADDRESS0_PAD E ICP
Pad: ADDRESS1_PAD E ICP
Pad: ADDRESS2_PAD E ICP
Pad: ADDRESS3_PAD E ICP
Pad: VDD2 E VDD3ALLP

Pad: DATAIN0_PAD S ICP
Pad: DATAIN1_PAD S ICP
Pad: DATAIN2_PAD S ICP
Pad: DATAIN3_PAD S ICP
Pad: DATAIN4_PAD S ICP

Pad: DATAIN5_PAD W ICP
Pad: DATAIN6_PAD W ICP
Pad: DATAIN7_PAD W ICP
Pad: SOUT_PAD W BU8P
Pad: GND W GND3ALLP

Pode-se intuitivamente observar que neste arquivo é definido a posição do PAD (Norte, Sul, Leste ou Oeste) e a ordem dos mesmos no CI.

Obs.: Decidi colocar dois VCC somente para o chip ficar simétrico!

Voltar