Configuración del PDK ASAP7nm para Virtuoso

también en: Português · English

ASAP7 es un Process Design Kit (PDK) académico desarrollado por la Arizona State University (ASU) para investigación y enseñanza en diseño de circuitos integrados en tecnología de 7 nm. Fue diseñado para ofrecer un entorno de desarrollo realista, basado en predicciones de tecnologías futuras, pero sin los detalles propietarios de los PDKs comerciales.

Este PDK incluye modelos de transistores, reglas de diseño físico, bibliotecas de celdas estándar (standard cells) y archivos de extracción y simulación eléctrica, lo que permite desarrollar circuitos digitales y analógicos. Se usa ampliamente en investigación sobre bajo consumo, rendimiento optimizado y nuevas arquitecturas VLSI (Very Large Scale Integration).

Al ser un PDK académico, ASAP7 facilita el acceso de investigadores y estudiantes a un entorno de diseño avanzado y permite explorar los desafíos e innovaciones de la fabricación de semiconductores en tecnología sub-10nm.

Introducción al PDK ASAP7nm

A continuación, analizamos el contenido del PDK ASAP7nm. La estructura de archivos de ASAP7nm es la siguiente:

Directorios del PDK ASAP7nm.

1. Directorios del PDK ASAP7nm.

open_pdks/
└── asap7
    ├── asap7_pdk_r1p7
    ├── asap7sc6t_26
    ├── asap7sc7p5t_27
    ├── asap7sc7p5t_28
    ├── asap7_sram_0p0
    ├── LICENSE
    └── README.md

Con más detalle:

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 del PDK)

Este directorio contiene los archivos centrales del PDK, incluyendo reglas de diseño, modelos de dispositivos y documentación.

Directorios del PDK asap7_pdk_r1p7.

2. Directorios del PDK asap7_pdk_r1p7.

  • asap7ssc7p5t_05/ – Biblioteca OpenAccess (OA) de ejemplo (standard cell).
  • calibre/ – Espacio reservado para los archivos de verificación física (DRC, LVS, etc.) con la herramienta Calibre de Siemens.
  • Calibre_Usage_Instructions.txt – Instrucciones para usar Calibre en la verificación de reglas de diseño (DRC) y la comparación entre esquemático y layout (LVS).
  • cdslib/ – Biblioteca OA de los dispositivos para el entorno Cadence Virtuoso.
  • docs/ – Documentación técnica del PDK.
  • LICENSE – Licencia específica de esta versión del PDK.
  • models/ – Modelos SPICE de los transistores, fundamentales para la simulación eléctrica.
  • README_ASAP7PDK_INSTALL_201210a.txt – Instrucciones de instalación del PDK.
  • README.md – Información general sobre el directorio del PDK.

asap7sc<>/ Bibliotecas de celdas estándar

Los directorios asap7sc6t_26/, asap7sc7p5t_27/ y asap7sc7p5t_28/ contienen las bibliotecas de celdas estándar (standard cells) usadas para la síntesis lógica y el layout físico de circuitos digitales. asap7sc6t_26 es una biblioteca de 6 pistas de metal (6-track), y asap7sc7p5t_27 y asap7sc7p5t_28 son de 7.5 pistas.

Directorios de las bibliotecas de celdas.

3. Directorios de las bibliotecas de celdas.

Cada uno de estos directorios contiene:

  • CDL/ – Archivos CDL (Circuit Description Language) para verificación eléctrica y extracción de netlists.
  • Datasheet/ – Especificaciones técnicas de las celdas estándar.
  • GDS/ – Archivos GDSII con el layout físico de las celdas, usados en herramientas de layout.
  • LEF/ – Archivos LEF (Library Exchange Format), con la información de posicionamiento y enrutamiento de las celdas.
  • LIB/ – Archivos LIB (formato Liberty), usados para caracterizar el rendimiento de las celdas (retardo, consumo, etc.).
  • LICENSE – Licencia de la biblioteca específica.
  • qrc/ – Archivos de extracción de parásitos, usados en el análisis de retardo e integridad de señal.
  • README.md – Información sobre la biblioteca.
  • techlef_misc/ – Archivos Tech LEF adicionales con reglas de enrutamiento.
  • Verilog/ – Modelos Verilog para simulación lógica y síntesis.

asap7_sram_0p0/ (memoria SRAM)

Este directorio contiene información sobre los bloques de memoria SRAM de ASAP7.

Directorios de la biblioteca de memorias.

4. Directorios de la biblioteca de memorias.

Los archivos incluyen:

  • gds/ – Archivos GDSII del layout de la SRAM.
  • generated/ – Algunas versiones generadas de ciertos archivos de memoria.
  • LICENSE – Licencia de uso de la SRAM.
  • README.md – Información sobre el diseño de la SRAM.
  • verilog/ – Modelos Verilog para la simulación de la SRAM.

Configurar el PDK en las herramientas de Cadence

Para simular con el PDK, necesitas un proceso de instalación sencillo. Ve a cdslib/setup, edita set_pdk_path.csh y cambia PDKdirectory en la línea setenv PDK_DIR PDKdirectory por la ruta de tu propia instalación del PDK.

$ setenv PDK_DIR /opt/PDKs/ASAP_7nm/asap7_pdk_r1p7

Configuración del workspace

Para organizar mejor el área de trabajo (workarea), crea una carpeta para el proyecto y, dentro de ella, los siguientes directorios:

  • data/ → Contiene los datos, modelos y archivos de configuración del entorno.
  • dbs/ → Almacena las bibliotecas de diseño creadas a lo largo del proyecto.
  • logs/ → Guarda los archivos de log generados durante la ejecución.
  • scripts/ → Donde están los scripts usados por las herramientas del proyecto.
  • work/ → Directorio principal donde haces el trabajo y ejecutas las tareas.

Además, me gusta usar Makefiles para organizar el flujo de trabajo. Así puedo definir targets específicos para llamar a los scripts de cada etapa del proyecto.

La estructura del workspace queda así:

Directorios del workspace.

5. Directorios del workspace.

teste/
├── data      # Archivos de configuración, modelos y datos del entorno
│   └── cds.lib
├── dbs       # Bibliotecas de diseño creadas   
├── logs      # Archivos de log de la ejecución
├── scripts   # Scripts usados en el flujo de diseño
│   └── Makefile
└── work      # Directorio de trabajo principal
    └── Makefile -> ../scripts/Makefile

cds.lib es un archivo de configuración que Virtuoso usa para definir y gestionar las bibliotecas de diseño en el entorno de desarrollo de un proyecto de circuitos integrados. Especifica las rutas de las bibliotecas del proyecto, para que Virtuoso sepa dónde encontrar celdas, esquemáticos, layouts y otros datos necesarios.

El archivo cds.lib contiene comandos en texto plano para definir e incluir bibliotecas. Para usar ASAP7, creo un archivo cds.lib en el directorio /data y añado una línea que incluye el cds.lib del propio PDK, ubicado en <PDK_DIR>/asap7_pdk_r1p7/cdslib/setup/cds.lib. Así todas las bibliotecas estándar del PDK (dispositivos y biblioteca de ejemplo) se cargan automáticamente. También defino mis 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/

INCLUDE se usa para incluir otros cds.lib en el actual, lo que da acceso a los dispositivos de ASAP7. DEFINE declara nuevas bibliotecas personalizadas, como celdas estándar (asap7sc7p5t_28_R) y diseños específicos (FULL_ADDERS).

Con esta configuración del cds.lib, al abrir Virtuoso este reconocerá automáticamente todas las bibliotecas descritas en el archivo, en este caso tanto las del PDK ASAP7 como las del proyecto.

Sin embargo, además del cds.lib, también hay que configurar el archivo display.drf. Este archivo define los colores y patrones que Virtuoso usa para mostrar las capas de metal y otros elementos del proceso de fabricación en el entorno de layout.

Configurando el display.drf

Para que Virtuoso muestre correctamente las capas de ASAP7, hay que usar el display.drf que proporciona el propio PDK. Una forma eficiente de hacerlo es crear un target en el Makefile que genere enlaces simbólicos a los archivos necesarios directamente en el directorio /work del proyecto. Esto evita copias innecesarias y mantiene el entorno sincronizado con el PDK.

Ejemplo 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)@/bin/touch(VPATH) @/bin/touch (VPATH)/@ <span style="color: #b0b0b0;"># Creating necessary links: layers display, CDS lib, and init</span> @ln -sf (DISPLAY_DIR)/display.drf . @ln -sf (CDSINIT).cdsinit@ln−sf(CDS_INIT) .cdsinit @ln -sf (DATA_DIR)/cds.lib . @ln -sf $(DISPLAY_DIR)/cdsenv .cdsenv

En este ejemplo:

  • Creamos un enlace simbólico al cds.lib, para que se carguen las bibliotecas del PDK.
  • Creamos un enlace simbólico al display.drf, para que las capas del proceso se muestren correctamente en Virtuoso.
  • Creamos enlaces simbólicos a otros archivos necesarios del directorio de setup del PDK (.cdsinit y .cdsenv).

Ejecución del Makefile

Para configurar el entorno, basta con ejecutar en la terminal el comando:

$ make setup

Esto crea los enlaces simbólicos y configura el entorno de diseño para el PDK ASAP7. Al ejecutar Virtuoso dentro del directorio /work, que ahora contiene los enlaces simbólicos, este reconoce automáticamente las bibliotecas definidas en el cds.lib, con acceso a los dispositivos y celdas del PDK ASAP7, y carga la configuración del display.drf, de modo que las capas de metal y otros elementos del layout se muestran con los colores y patrones adecuados, como en la siguiente figura.

Virtuoso Library Manager.

6. Virtuoso Library Manager.