Configuração do PDK ASAP7nm para o Virtuoso

O ASAP7 é um Process Design Kit (PDK) acadêmico desenvolvido pela Arizona State University (ASU) para pesquisa e ensino em design de circuitos integrados na tecnologia de 7 nm. Ele foi projetado para fornecer um ambiente de desenvolvimento realista, baseado em previsões de tecnologia futuras, mas sem os detalhes proprietários encontrados em PDKs comerciais.
Esse PDK inclui modelos de transistores, regras de projeto físico, bibliotecas padrão (standard cells), arquivos de extração e simulação elétrica, permitindo o desenvolvimento de circuitos digitais e analógicos. Ele é amplamente utilizado para pesquisa em baixo consumo de energia, desempenho otimizado e novas arquiteturas de VLSI (Very Large Scale Integration).
Por ser um PDK acadêmico, o ASAP7 facilita o acesso de pesquisadores e estudantes a um ambiente de design avançado, permitindo explorar desafios e inovações na manufatura de semicondutores em tecnologia sub-10nm.
Introdução ao PDK ASAP7nm
Em seguida, vamos à análise do conteúdo do PDK do ASAP7nm. A estrutura de arquivos do ASAP7nm é a seguinte:
1. Diretórios ASAP7nm PDK.
open_pdks/
└── asap7
├── asap7_pdk_r1p7
├── asap7sc6t_26
├── asap7sc7p5t_27
├── asap7sc7p5t_28
├── asap7_sram_0p0
├── LICENSE
└── README.md
Em mais detalhes temos:
asap7/ ├── asap7_pdk_r1p7 │ ├── asap7ssc7p5t_05 │ ├── calibre │ ├── Calibre_Usage_Instructions.txt │ ├── cdslib │ ├── docs │ ├── LICENSE │ ├── models │ ├── README_ASAP7PDK_INSTALL_201210a.txt │ └── README.md ├── asap7sc6t_26 │ ├── CDL │ ├── Datasheet │ ├── GDS │ ├── LEF │ ├── LIB │ ├── LICENSE │ ├── qrc │ ├── README.md │ ├── techlef_misc │ └── Verilog ├── asap7sc7p5t_27 │ ├── CDL │ ├── Datasheet │ ├── GDS │ ├── LEF │ ├── LIB │ ├── LICENSE │ ├── qrc │ ├── README.md │ ├── techlef_misc │ └── Verilog ├── asap7sc7p5t_28 │ ├── CDL │ ├── Datasheet │ ├── GDS │ ├── LEF │ ├── LIB │ ├── license │ ├── LICENSE │ ├── qrc │ ├── README.md │ ├── techlef_misc │ └── Verilog ├── asap7_sram_0p0 │ ├── gds │ ├── generated │ ├── LICENSE │ ├── README.md │ └── verilog ├── LICENSE └── README.md
asap7_pdk_r1p7/ (Núcleo do PDK)
Este diretório contém os arquivos centrais do PDK, incluindo regras de projeto, modelos de dispositivos e documentação.
2. Diretórios asap7_pdk_r1p7 PDK.
- asap7ssc7p5t_05/ – Biblioteca OpenAccess (OA) de exemplo (standard cell).
- calibre/ – Place holder para arquivos para verificação física (DRC, LVS, etc.) usando a ferramenta Calibre da Siemens.
- Calibre_Usage_Instructions.txt – Instruções sobre como usar o Calibre para checagens de regras de projeto (DRC) e correspondência de esquemático e layout (LVS).
- cdslib/ – Biblioteca OA dos devices para o ambiente Cadence Virtuoso.
- docs/ – Documentação técnica do PDK.
- LICENSE – Licença específica para essa versão do PDK.
- models/ – Contém modelos SPICE dos transistores, fundamentais para simulação elétrica.
- README_ASAP7PDK_INSTALL_201210a.txt – Instruções de instalação do PDK.
- README.md – Informações gerais sobre o diretório do PDK
asap7sc<>/ Bibliotecas de Células Padrão
Os diretórios asap7sc6t_26/, asap7sc7p5t_27/ e asap7sc7p5t_28/ contêm bibliotecas padrão (standard cells) usadas para síntese lógica e layout físico de circuitos digitais. A asap7sc6t_26 é uma bibliotecas de células para o processo de de 6 trilhas de metais (6-track) e as asap7sc7p5t_27 e asap7sc7p5t_28 são para 7.5 trilhas.
3. Diretórios das bibliotecas de células.
Cada um desses diretórios contém:
- CDL/ – Arquivos CDL (Circuit Description Language) para verificação elétrica e extração de netlists.
- Datasheet/ – Especificações técnicas das células padrão.
- GDS/ – Arquivos GDSII para o layout físico das células, usados em ferramentas de layout.
- LEF/ – Arquivos LEF (Library Exchange Format), que contêm informações sobre o posicionamento e roteamento das células.
- LIB/ – Arquivos LIB (Liberty Format), usados para caracterização do desempenho das células (atraso, consumo de energia, etc.).
- LICENSE – Licença para a biblioteca específica.
- qrc/ – Arquivos para extração de parasitas, usados na análise de atraso e integridade do sinal.
- README.md – Informações sobre a biblioteca.
- techlef_misc/ – Arquivos adicionais Tech LEF para regras de roteamento.
- Verilog/ – Modelos Verilog para simulação lógica e síntese.
asap7_sram_0p0/ (Memória SRAM)
Este diretório contém informações sobre blocos de memória SRAM no ASAP7.
4. Diretórios da bibliotecas de memórias.
Os arquivos incluem:
- gds/ – Arquivos GDSII do layout da SRAM.
- generated/ – Contém algumas versões geradas de alguns arquivos de memória.
- LICENSE – Licença para uso da SRAM.
- README.md – Informações sobre o design da SRAM.
- verilog/ – Modelos Verilog para simulação da SRAM.
Configurar o PDK nas ferramentas da Cadence
Para simular o PDK, você precisa passar por um processo simples de instalação. Especificamente, vá até cdslib/setup, edite set_pdk_path.csh e altere o PDKdirectory na linha setenv PDK_DIR PDKdirectory para o caminho da sua própria instalação do PDK.
$ setenv PDK_DIR /opt/PDKs/ASAP_7nm/asap7_pdk_r1p7
Configuração do Workspace
Para organizar melhor a área de trabalho (workarea), crie uma pasta para o projeto e, dentro dela, os seguintes diretórios:
- data/ → Contém dados, modelos e arquivos de configuração do ambiente.
- dbs/ → Armazena bibliotecas de design criadas ao longo do projeto.
- logs/ → Guarda arquivos de log gerados durante o processo de execução.
- scripts/ → Onde ficam os scripts utilizados pelas ferramentas do projeto.
- work/ → Diretório principal onde você realiza o trabalho e executa as tarefas.
Além disso, eu gosto de utilizar Makefiles para organizar o fluxo de trabalho. Assim, posso definir targets específicos para chamar os scripts de cada etapa do projeto.
A estrutura do workspace ficará assim:
5. Diretórios do workspace.
teste/ ├── data # Arquivos de configuração, modelos e dados do ambiente │ └── cds.lib ├── dbs # Bibliotecas de design criadas ├── logs # Arquivos de log da execução ├── scripts # Scripts utilizados no fluxo de design │ └── Makefile └── work # Diretório de trabalho principal └── Makefile -> ../scripts/Makefile
O cds.lib é um arquivo de configuração usado pelo Virtuoso para definir e gerenciar bibliotecas de design no ambiente de desenvolvimento de um projeto de circuitos integrados. Ele especifica os caminhos das bibliotecas usadas no projeto, permitindo que o Virtuoso saiba onde encontrar células, esquemáticos, layouts e outros dados necessários.
O arquivo cds.lib contém comandos em texto simples para definir e incluir bibliotecas. Para utilizar o ASAP7, crio um arquivo cds.lib no diretório /data, onde adiciono uma linha para incluir o cds.lib do próprio PDK, localizado em <PDK_DIR>/asap7_pdk_r1p7/cdslib/setup/cds.lib. Isso garante que todas as bibliotecas padrão do PDK (devices e biblioteca de exemplo) sejam carregadas automaticamente. Também defino as minhas bibliotecas personalizadas.
INCLUDE /home/100000000855586/open_pdks/asap7/asap7_pdk_r1p7/cdslib/setup/cds.lib DEFINE asap7sc7p5t_28_R /home/100000000855586/open_pdks/asap7/asap7sc7p5t_28/OA/asap7sc7p5t_28_R DEFINE FULL_ADDERS /home/100000000855586/TCC/asap7/dbs/FULL_ADDERS/
O INCLUDE é usado para incluir outros cds.lib ao atual, garantindo acesso aos dispositivos do ASAP7. O DEFINE especifica novas bibliotecas personalizadas, como células padrão (asap7sc7p5t_28_R) e designs específicos (FULL_ADDERS).
Com essa configuração do cds.lib, ao abrir o Virtuoso, ele reconhecerá automaticamente todas as bibliotecas descritas no arquivo, nesse caso tanto as do PDK ASAP7 quanto as do projeto.
No entanto, além do cds.lib, também é necessário configurar o arquivo display.drf. Esse arquivo define as cores e padrões utilizados pelo Virtuoso para exibir as camadas de metais e outros elementos do processo de fabricação no ambiente de layout.
Configurando o display.drf
Para garantir que o Virtuoso exiba corretamente as camadas do ASAP7, é preciso utilizar o display.drf fornecido pelo próprio PDK. Uma maneira eficiente de fazer isso é criando um target no Makefile para gerar links simbólicos para os arquivos necessários, diretamente no diretório /work do projeto. Isso evita cópias desnecessárias e mantém o ambiente sincronizado com o PDK.
Exemplo de Makefile
################################################ ## Variables definition ################################################ # Semaphores directory VPATH=make# Directory Variables SCRIPTS_DIR=../scripts LOG_DIR=../logs RPT_DIR=../rpt DATA_DIR=../data
# Display file directory path needs to be reviewed for each PDK tech installation DISPLAY_DIR=$(HOME)/open_pdks/asap7/asap7_pdk_r1p7/cdslib/setup
# CDS init file directory path needs to be reviewed for each PDK tech installation CDS_INIT=$(DISPLAY_DIR)/cdsinit
################################################ ## Targets ################################################
## All STEPS all: $(STEPS)
## Help help: @echo ”=======================================================” @echo ” Makefile Targets ” @echo ”=======================================================” @echo ” setup : Setup Run Directory ” @echo ” clean : Removes all temporary files ” @echo ” reset : Reset makefile targets ” @echo ”=======================================================” @echo ” Makefile Options ” @echo ”=======================================================” @echo ” VPATH : Make directory (default make) ” @echo ” DATA_DIR : Data directory (default ../data) ” @echo ” SCRIPTS_DIR : Script directory (default ../scripts) ” @echo ” LOG_DIR : Logfile directory (default ../logs) ” @echo ” RPT_DIR : Reports directory (default ../rpt) ” @echo ” DISPLAY_DIR : PDK directory ” @echo ”=======================================================”
.PHONY: clean reset
## Setup setup: @/bin/mkdir -p (VPATH)/@ <span style="color: #b0b0b0;"># Creating necessary links: layers display, CDS lib, and init</span> @ln -sf (DISPLAY_DIR)/display.drf . @ln -sf (DATA_DIR)/cds.lib . @ln -sf $(DISPLAY_DIR)/cdsenv .cdsenv
Neste exemplo:
- Criamos um link simbólico para o cds.lib, garantindo que as bibliotecas do PDK sejam carregadas.
- Criamos um link simbólico para o display.drf, garantindo que as camadas do processo sejam exibidas corretamente no Virtuoso.
- Criamos links simbólicos para outros arquivos necessários localizados no diretório de setup do PDK (.cdsinit e .cdsenv)
Execução do Makefile
Para configurar o ambiente, basta executar no terminal o comando:
$ make setup
Isso criará os links simbólicos e configurará o ambiente de design para uso com o PDK ASAP7. Ao executar o Virtuoso dentro do diretório /work, que agora contém os links simbólicos, ele reconhecerá automaticamente as bibliotecas definidas no cds.lib, garantindo acesso aos dispositivos e células do PDK ASAP7, além de carregar as configurações do display.drf, permitindo que as camadas de metais e outros elementos do layout sejam exibidos corretamente com as cores e padrões apropriados, como mostrado na figura a seguir.
6. Virtuoso Library Manager.

