You are on page 1of 18

Gua

Tema: Introduccin a VCS. Uso de Vhdl para diseo lgico.


Lugar de ejecucin: Laboratorio de Electrnica.
Tiempo de ejecucin: 2 hrs.

Facultad: Ingeniera.
Escuela: Electrnica
Asignatura: DCD
Creada por: Ing. Miguel Flores

Objetivo General

Introducir al alumno en el manejo de Synopsys VCS para el anlisis y simulacin de circuitos


realizados en VHDL.
-

Objetivos especficos

Aprender las funciones bsicas de Synopsys VCS.


Realizar los primeros scripts en VHDL que representan circuitos lgicos bsicos.
Simular los scripts.

Introduccin Terica

El lenguaje VHDL es un estndar en la industria para el desarrollo de circuitos lgicos complejos o


medianamente complejos. Gracias a l se han podido disear circuitos tales como: microprocesadores,
memorias, ALUs, procesadores digitales de seales, ASICs, etc.
Synopsys tiene una herramienta utilizada para el anlisis de scripts hechos en VHDL, Verilog y otros
lenguajes descriptores de hardware (HDL). La herramienta se llama VCSmx. Adems de dicha
herramienta se ocupar el Discovery Visualization Enviroment (DVE) para poder visualizar los
resultados de la simulacin.
El proceso con VCSmx es: realizar el anlisis de los archivos VHDL, elaborar y despus compilar un
ejecutable para realizar la simulacin, la cual puede arrancarse desde su GUI el DVE. Una vez la
simulacin se ha comprobado que es exitosa se puede proceder con la sntesis en el Design Compiler.
Materiales y equipos

1 Computadora con mquina virtual FEDORA 15 X64.


1 Acceso al servidor de licencias de Synopsys

Procedimiento

Parte I. Arrancando el sistema.

Gua

1. Arrancar la computadora con sistema operativo Ubuntu.


2. Usuario: usuario0. Contrasea: usuario.
3. Arrancar la mquina virtual VMware. Escoger la opcin de abrir una mquina virtual
previamente creada y buscar el sistema Fedora 15.
4. Darle play a la mquina virtual.
5. El usuario y contrasea de Fedora es el mismo que el Ubuntu.
6. Despus de eso se encontrar en la pantalla de inicio del Fedora 15.
7. Se recomienda dejar todo su trabajo en una sola carpeta que pueda llevarse consigo, ya que la
mquina virtual puede ser actualizada sin previo aviso y todo lo que se encuentre en ella ser
borrado.
Parte II. Funcin NAND3 de 2 etapas.
Se iniciar con el cdigo de una compuerta OR simple de dos entradas. Crear una carpeta de
proyecto y en su interior crear los archivos solicitados. El archivo de la entidad se llamar
or_simple.vhd. En cualquier editor de texto, por ejemplo gedit, digitar lo siguiente:

2.1.

-- Cdigo de una compuerta OR simple


-- El archivo se llama: or_simple.vhd
library IEEE;
use IEEE.std_logic_1164.all;
entity or_simple is
port(
x1: in std_logic;
x2: in std_logic;
y: out std_logic);
end or_simple;
architecture comportamiento of or_simple is
begin
process(x1,x2) is
begin
-- La parte que realiza la operacin lgica
y <= x1 or x2;
end process;
end comportamiento;
El cdigo anterior tambin puede funcionar sin necesidad de process, ya que el comportamiento de
la compuerta or es concurrente.
2.2.

Ahora hay que crear el archivo para probar el cdigo (or_simple_tb.vhd):

Diseo de Circuitos Integrados Digitales

Gua

-- Banco de pruebas (Testbench) para la or_simple


-- Nombre del archivo: or_simple_tb.vhd
library IEEE;
use IEEE.std_logic_1164.all;
entity or_simple_tb is
-- No se coloca nada aqu, simplemente se crea la entidad.
end or_simple_tb;
architecture tb of or_simple_tb is
--Componente bajo prueba, normalmente referido como DUT,
--(Device Under Test).
component or_simple is
port(
x1: in std_logic;
x2: in std_logic;
y: out std_logic);
end component;
signal x1_in, x2_in, y_out: std_logic;
begin
-- Conexin del componente bajo prueba
DUT: or_simple port map(x1_in, x2_in, y_out);
process
begin
x1_in <= '0';
x2_in <= '0';
wait for 10 ns;
assert(y_out='0') report "Falla al evaluar (0,0)" severity error;
x1_in <= '1';
x2_in <= '0';
wait for 10 ns;
assert(y_out='1') report "Falla al evaluar (0,1)" severity error;
Diseo de Circuitos Integrados Digitales

Gua

x1_in <= '0';


x2_in <= '1';
wait for 10 ns;
assert(y_out='1') report "Falla al evaluar (1,0)" severity error;
x1_in <= '1';
x2_in <= '1';
wait for 10 ns;
assert(y_out='1') report "Falla al evaluar (1,1)" severity error;
-- Fin de la prueba
wait;
end process;
end tb;
Nota: los assert no son obligatorios, se pueden realizar testbenches sin necesidad de ellos.
Despus de guardar el archivo de testbench, se debe crear un archivo de configuracin para
Synopsys, el archivo se llamar synopsys_sim.setup, y debe quedar guardado en la misma carpeta de
los archivos VHDL que se acaban de hacer (se debe tener cuidado con respetar las maysculas y
minsculas).

2.3.

-- Archivo de configuracin
-- Nombre: synopsys_sim.setup
-- Configura el entorno para usar VCSmx
-- Se establece el directorio por defecto
DEFAULT: ./work_or_simple
-- Se establece la ubicacin de las libreras a utilizar
-- Para este caso son las libreras por defecto de Synopsys
IEEE : $VCS_HOME/linux/packages/IEEE/lib
SYNOPSYS : $VCS_HOME/linux/packages/synopsys/lib
-- Variables del simulador
ASSERT_STOP = ERROR
TIMEBASE = ps
TIME_RESOLUTION = 1 ps
Diseo de Circuitos Integrados Digitales

Gua

WORK > DEFAULT


DEFAULT: ./work_or_simple
Crear el directorio work_or_simple en la misma carpeta donde estn los archivos creados en
este tutorial. ste directorio ser utilizado para las salidas del VCSmx.

2.4.

2.5.

Revisar si el archivo sinopsys_sim.setup ha surtido efecto, para ello se ingresa el comando:


$ /home/usuario0/Synopsys/VCSmx_2014_12_sp3/bin/show_setup

Realmente no es necesario ingresar toda la ruta para show_setup siempre y cuando el PATH est
correctamente configurado. Al correrlo, al final, debera aparecer lo siguiente:

-- Settings from setup file: ./synopsys_sim.setup


ASSERT_STOP
= ERROR
DEFAULT
: ./work_or_simple
IEEE
: /home/usuario0/Synopsys/VCSmx_2014_12_sp3/linux/packages/IEEE/lib
SYNOPSYS
/home/usuario0/Synopsys/VCSmx_2014_12_sp3/linux/packages/synopsys/lib

TIME_RESOLUTION
= 1 ps
TIMEBASE
= ps
WORK
> DEFAULT
Ahora se realizar el anlisis de los archivos VHDL, mientras se encuentra en el directorio
donde se encuentran los archivos .vhd creados ingresar el comando:
$ vhdlan or_simple.vhd or_simple_tb.vhd -nc

2.6.

y debera mostrar lo siguiente si no hubo ningn error:


Parsing design file 'or_simple.vhd'
Parsing design file 'or_simple_tb.vhd'

Hasta este punto no se ha creado ningn ejecutable.


Despus se arranca la GUI del VCS con el comando, al hacer el llamado de VCS se crea el
ejecutable y el parmetro -R es para decir que corra el ejecutable:
vcs or_simple_tb -R -gui

2.7.

Diseo de Circuitos Integrados Digitales

Gua

2.8.

Aparece la GUI (DVE Discovery Visualization Environment):

Nota: si se intenta arrancar la GUI sin haber corrido el paso 2.7, se tendr un mensaje error.
Ahora se puede verificar que se ha creado un archivo simv, el cual es ejecutable, y contiene el
cdigo compilado de los archivos VHDL con los que se haya invocado. En la ventana del DVE
seleccionar las seales que se quieren visualizar:

2.9.

Para seleccionar varias seales hay que mantener presionada la tecla Ctrl y hacer clic en todas las
seales que se deseen.
2.10.

Se hace clic derecho sobre las seales y se agregan las seales a una nueva ventana de ondas.

Diseo de Circuitos Integrados Digitales

Gua

En la ventana que aparece se debe hacer Simulator> Start/continue y despus View>Zoom Full,
para ver la seal de salida.

2.11.

Al tener seleccionadas las seales, en la ventana del DVE, se pueden tener diversas vistas del
circuito que se est analizando:

2.12.

Diseo de Circuitos Integrados Digitales

Gua

Se puede realizar el mismo proceso de anlisis y sntesis de forma alternativa, utilizando


comandos de consola:
$ vhdlan or_simple_tb.vhd or_simple.vhd -smart_order -smart_script "analizar.scr"

2.13.

El archivo analizar.scr contiene:

#!/bin/sh -f
vhdlan \
or_simple.vhd \
or_simple_tb.vhd
En donde se muestra que hizo un anlisis para determinar las dependencias existentes entre los
diversos archivos que componen el proyecto y por tanto cre un script para correr el vhdlan con el
orden correcto de los archivos a llamar de acuerdo a su relacin con los dems.
2.14.

Ahora se compila y crea el ejecutable de los archivos VHDL:

$ vcs or_simple_tb -debug_all


2.15.

Y se ejecuta el archivo resultante:

Diseo de Circuitos Integrados Digitales

Gua

$ ./simv
Si se desea correr mostrando la GUI se debe hacer $ ./simv -gui, con lo que se obtiene los mismos
resultados que en el paso 2.8.
Tambin se pudo haber creado un script (por ejemplo compilar.csh) desde el principio
utilizando el editor de texto:

2.16.

#!/bin/csh -f
mkdir -p work_or_simple
vhdlan -nc -smart_order \
or_simple.vhd \
or_simple_tb.vhd
vcs or_simple_tb -debug_all
./simv -gui
Y para correrlo se ejecutara la orden:
$ source compilar.csh
Tambin se puede crear un script para eliminar todos los archivos y carpetas creados durante el
proceso de elaboracin y ejecucin de los archivos VHDL. Se puede nombrar como: limpiar.csh.

2.17.

#Borrado de archivos intermedios y carpetas creadas en el proceso de elaboracin


#del ejecutable, adems del ejecutable
rm -rf .vdbg_* *.vpd *.vcd *.evcd *.log *.dump csrc* simv* ucli* DVEfiles*
# se borra el directorio de trabajo y otros elementos ms
rm -rf work_or_simple/* worklib_syn logfile.* rpt.*
rmdir work_or_simple
2.18.

Para invocarlo desde la lnea de comandos:


$ source limpiar.csh

Los archivos .csh creados pueden unirse en un solo Makefile para ser invocados todos de una
vez, el cual puede ser creado con el editor de texto (su nombre sera Makefile) un ejemplo de este
tipo de archivos sera:

2.19.

all: limpiar compilar correr


Diseo de Circuitos Integrados Digitales

Gua

compilar:
mkdir -p work_or_simple
vhdlan -nc -smart_order \
or_simple.vhd \
or_simple_tb.vhd
vcs or_simple_tb -debug_all
correr:
./simv -gui
limpiar:
#Borrado de archivos intermedios y carpetas creadas en el proceso de elaboracin
#del ejecutable, adems del ejecutable
rm -rf .vdbg_* *.vpd *.vcd *.evcd *.log *.dump csrc* simv* ucli* DVEfiles*
# se borra el directorio de trabajo y otros elementos ms
rm -rf work_or_simple/* worklib_syn logfile.* rpt.*
rmdir work_or_simple

2.20.

Para invocarlo:
$ make compilar

$ make correr
$ make limpiar
Para realizar todo de una vez se puede invocar como:
$ make
2.21. Ahora se continuar con la sntesis, pero previo a esto se debe crear el directorio
work_or_simple_syn, y ahora se crea el archivo .synopsys_dc.setup (debe llevar el punto al inicio)
siempre en el mismo directorio del proyecto:

2.21.

# Definicin de variables de usuario


set designer "Ingeniero .......... .... ... ."
set company "UDB"
set view_background "white"
# Define work library location
define_design_lib WORK -path "./work_or_simple_syn"
Diseo de Circuitos Integrados Digitales

Gua

#define path directories for file locations


set SNPS_SYN [getenv {SYNOPSYS}]
# set SNPS_DIR "/usr/synopsys/I-2013.12-SP5-2"
# ubicacin de la librera saed90nm
set SNPS_MOD
"/home/usuario0/Synopsys/Libraries/SAED_EDK90nm/Digital_Standard_cell_Library/synopsys/mod
els"
# Ubicacin de la base de datos de los smbolos para saed90nm, la he anulado hasta encontrar la
# ubicacin de estos conos
#set SNPS_SYM
#"/usr/s90edk/SAED90_EDK/SAED_EDK90nm/Digital_Standard_cell_Library/synopsys/icons"
#original
#set search_path [list . ${SNPS_SYN}/libraries/syn ${SNPS_MOD} ${SNPS_SYM}]
#modificado
set search_path [list . ${SNPS_MOD}]
set mapped_path "./work_or_simple_syn"
# Define Target technology library, symbol library and link library
set target_library "saed90nm_typ.db \
saed90nm_max.db \
saed90nm_min.db"
set synthetic_library "dw_foundation.sldb"
set link_library [concat "*" $target_library $synthetic_library]
# for nicer looking graphic use saed90nm.sdb)
#set symbol_library "saed90nm.sdb"
# for more informative graphic use generic.sdb
set symbol_library "generic.sdb"

2.22.

Se crea el archivo or_simple.scr:

Diseo de Circuitos Integrados Digitales

Gua

# Remove any design in memory


remove_design -all
# read in (or equivalently analyze and elaborate) the design
analyze -f vhdl {or_simple.vhd}
elaborate or_simple

# El diseo actual es de la compuerta or simple


current_design or_simple

# Revisa que todas las partes del diseo actual estn disponibles
link

# Establece las condiciones de operacin


# Se asegura que leer las libreras de parmetros mnimos y mximos que se encuentran en
# la memoria antes de establecer las condiciones de operacin.
set_operating_conditions -min BEST -max WORST -min_library saed90nm_min -max_library
saed90nm_max

# modelo de cableado
# se selecciona el modo de autoajuste (para poder utilizar este modo la librera debe ser capaz
# de soportarlo).
set auto_wire_load_selection true
#libraries:
#------------------------------------------#- time unit: ns
#- voltage unit: V
#- current unit: uA
#- capacitive load unit: 1 f
#- wire load model: ForQA
#TYP
Diseo de Circuitos Integrados Digitales

Gua

#- interconnect model : balanced_tree


#- Process : 1.00
#- Temperature : 25
#- Voltage : 1.2
#
#WORST
#- interconnect model : worst_case_tree
#- Process : 1.00
#- Temperature : 125
#- Voltage : 0.70
#BEST
#- interconnect model : best_case_tree
#- Process : 1.00
#- Temperature : -40
#- Voltage : 1.32

#
# Para extraer informacin acerca de las libreras se puede usar:
# report_lib saed90nm_typ
# report_lib saed90nm_max
# report_lib saed90nm_min
# establece las cargas conectadas a los puertos de entrada
set sample_load [load_of saed90nm_typ/NAND2X1/IN1]
set_load [expr 5*$sample_load] [all_outputs]
# no usar buffers
set_dont_use saed90nm_typ/*BUF*

# compilar y posiblemente unififcar (en otras palabras aplana la jerarqua)


compile -map_effort medium
# Guardar la base de datos del diseo
Diseo de Circuitos Integrados Digitales

Gua

set command_status [compile]


if {$command_status == 1} {
write -hierarchy -format ddc -output $mapped_path/or_simple.ddc
}
#
# Reportes solicitados
#
check_design > rpt.or_simple
report_design >> rpt.or_simple
report_clocks >> rpt.or_simple
report_clocks -skew >> rpt.or_simple
report_timing_requirements >> rpt.or_simple
report_constraints >> rpt.or_simple
report_port -verbose >> rpt.or_simple
report_reference >> rpt.or_simple
report_area >> rpt.or_simple
report_timing -path end -delay max >> rpt.or_simple
report_timing -path end -delay min >> rpt.or_simple
report_timing -path full -delay max -max_paths 3 -nosplit -net >> rpt.or_simple
report_timing -path full -delay min -max_paths 3 -nosplit -net >> rpt.or_simple
report_timing -path full -delay max -max_paths 3 -nosplit -cap >> rpt.or_simple
report_timing -path full -delay min -max_paths 3 -nosplit -cap >> rpt.or_simple
#
# Remueve los parmetros y variables utilizados
#
unset command_status
unset sample_load
#
# sale del shell del Design compiler
#
quit

2.23.

Ahora para correrlo desde la lnea de comandos se puede hacer:

Diseo de Circuitos Integrados Digitales

Gua

$ dc_shell -f or_simple.scr >& logfile.synt


2.24.

Ahora se puede visualizar su resultado con:


$ design_vision

Lo cual abre la siguiente GUI:

En el men File > Read buscar el archivo or_simple.ddc. Est en la carpeta


work_or_simple_syn.

2.25.

Al abrirlo aparece un pequeo smbolo en forma de compuerta en la parte superior izquierda del
explorador de jerarquas. Hacer clic derecho sobre el smbolo y escoger Schematic View, con ello
aparecer el esquemtico en forma de bloque, pero al hacer doble clic sobre l se abrir su vista a nivel
de compuerta:

2.26.

Diseo de Circuitos Integrados Digitales

Gua

Al hacer doble clic encima de la figura anterior muestra lo siguiente:

En el archivo logfile.synt aparece la salida de la ejecucin del script. Y en el archivo


rpt.or_simple aparecen todos los reportes solicitados del diseo.

2.27.

2.28.

Apague la computadora y deje todo ordenado.

Anlisis de resultado

1. Presentar los diagramas y grficos de simulacin obtenidos en la prctica.


Investigacin Complementaria

1. Implementar una compuerta exor utilizando el mismo procedimiento visto en la prctica.


2. Implementar una compuerta and utilizando el mismo procedimiento visto en la prctica.
Diseo de Circuitos Integrados Digitales

Gua

Bibliografa

Pedroni, Volnei A. Circuit Design and Simulation with VHDL (2nd Edition). (2010). MIT
Press, http://app.knovel.com/hotlink/toc/id:kpCDSVHDLN/circuit-design-simulation/circuit-designsimulation.

Synopsys, VCS MX/VCS MXiTM User Guide, J-2014.12-SP3, July 2015

CMOS Logic Circuit Design, John P. Uyemura.

Internet.

Diseo de Circuitos Integrados Digitales

Gua

Hoja de cotejo:

Gua 6: Introduccin a VCS. Uso de Vhdl para diseo lgico.

Alumno:

Estacin No:

GL:

Docente: Miguel Flores

Fecha:

EVALUACION
%
CONOCIMIENTO

25%

10%

APLICACIN
DEL
CONOCIMIENTO
25%

ACTITUD

TOTAL

15%

1-4
Conocimiento
deficiente de lo
visto en la
prctica

5-7
Conocimiento y
explicacin
incompleta de lo
visto en la
prctica.

8-10
Conocimiento
completo
y
explicacin clara
de lo visto en la
prctica

Necesit la ayuda Realiz los pasos de


No realiz los pasos del docente de
la gua y lleno todas
de la gua
laboratorio
las partes donde
aplicaba
No pudo realizar el
anlisis de
Necesit la ayuda Realiz el anlisis
resultados
del docente de
de resultados
laboratorio

No tiene
actitud
proactiva.

100%

Diseo de Circuitos Integrados Analgicos

Actitud
propositiva y
con propuestas no
aplicables al
desarrollo de la
prctica.

Tiene actitud
proactiva y
sus propuestas son
concretas y
factibles.

Nota

You might also like