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!