0% encontró este documento útil (0 votos)
79 vistas21 páginas

Verificacion

El documento aborda técnicas de simulación y verificación de circuitos complejos utilizando VHDL, destacando la importancia de test-benches y la correcta asignación de valores a objetos. Se explican las diferencias entre funciones y procedimientos en VHDL, así como la sintaxis para su declaración y definición. Además, se introducen conceptos sobre paquetes VHDL, su estructura y cómo se utilizan en otras unidades.

Cargado por

Bryan Toapaxi
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
79 vistas21 páginas

Verificacion

El documento aborda técnicas de simulación y verificación de circuitos complejos utilizando VHDL, destacando la importancia de test-benches y la correcta asignación de valores a objetos. Se explican las diferencias entre funciones y procedimientos en VHDL, así como la sintaxis para su declaración y definición. Además, se introducen conceptos sobre paquetes VHDL, su estructura y cómo se utilizan en otras unidades.

Cargado por

Bryan Toapaxi
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

ETSISTUPM

Dpto.deIng.TelemticayElectrnica

DiseoDigital2
Bloquetemtico1

BT1_A1_P4
Diseojerrquico
Tcnicasdesimulacinyverificacinde
circuitoscomplejos
Tcnicasdesimulacinyverificacindecircuitoscomplejos

EnlarealizacindeTestBenchs VHDLsuelenutilizarseconstruccionesdellenguaje
queraravezseempleanparaconstruirmodelossintetizablesdecircuitos

Ficheros
FuncionesyProcedimientosdefinidosporelusuario
SentenciasASSERT

Sirvenpara:

Ladefinicindeestmulos:
Ficherosparalalecturadeestmulosgeneradosautomticamente.
Procedimientosyfuncionesparaelmodeladodealtoniveldelentornodefuncionamientoreal
delcircuitoyparalamodularizacin delaasignacindeestmulosenprocesos

Laverificacinautomticadelosresultadosdelassimulaciones
Escrituraderesultadossobreficherospara,posteriormente,procesarlos.
Autoverificacin entestbench mediantesentenciasASSERT

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_2
ObjetosVHDL

Aunobjetoslo puedenasignrselevaloresdel
tiposobreelqueestdefinido
variable flag1, flag2 : bit;
variable flag3 : std_ulogic;

flag1 := '0'; -- Asignacin vlida


flag1 := 'U'; -- Invlida: el caracter 'U' no pertenece
-- al tipo BIT
flag1 := 0; -- Invalida: se le asigna un valor entero
flag1 := flag2; -- Vlida: variables del mismo tipo
flag1 := flag3; -- Invlida: variables de distinto tipo

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_3
ObjetosVHDL

Paraasignarvaloresavariables seusaelsmbolo:=
Paraasignarvaloresaseales seusaelsmbolo<=
Lassentenciasdeasignacindevaloraunavariableseejecutansecuencialmente
(comoenotroslenguajesdeprogramacin)ynodeformaparalela.
Esdecir,sienelsiguienteextractodecdigos_a = 0000ys_b =1111antesde
laejecucindelproceso.Unavezfinalizadalaejecucins_a tomarelvalor
1010,mientrasques_b tomarelvalorpreviodes_a,esdecir,0000.

signal s_a,s_b :std_logic_vector(3 downto 0);

process (clk)
variable var :std_logic_vector(3 downto 0);

begin
if clkevent andclk =1then
var :=1010;
s_a <=var;
s_b <=s_a;
end if;
end process;

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_4
ObjetosVHDL

Parapoderasignaraunobjetovaloresdeuntipo
distinto,puedenusarsefuncionesdeconversin

variable flag : bit;


signal nodo : std_ulogic;

nodo <= To_StdULogic(flag);


flag := To_bit(nodo, '0');

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_5
Subprogramas:FuncionesyProcedimientos
Las funciones VHDL:
no son sentencias
devuelven un valor
dentro de ellas, no puede asignarse valor a seales o incluirse sentencias WAIT.

Los procedimientos VHDL:


son sentencias
pueden ejecutarse secuencial o concurrentemente
pueden incluir sentencias WAIT y asignar valores a seales

Declaracin de funciones y procedimientos


Puede realizarse en cualquier zona declarativa: Declaracin de Paquete, Zona de
declaracin de un Cuerpo de Arquitectura o de un proceso

Definicin de funciones y procedimientos


La definicin del procedimiento puede realizarse por separado o en la propia
declaracin
Cuando la funcin se declara en una Declaracin de Paquete, la definicin se
realiza en el Cuerpo del Paquete

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_6
SintaxisdelaDeclaracindefuncionesyprocedimientos

FUNCTION NOMBRE(LISTA_DE_ARGUMENTOS)RETURN TIPO_DE_DATOS;


PROCEDURENOMBRE(LISTA_DE_ARGUMENTOS);

Lalistadeargumentoseselconjuntodeparmetrosquedevuelveosepasan
alsubprograma:

Enlasfuncionestodoslosargumentossondeentrada
Enlosprocedimientos,losparmetrospuedenser:deentrada(IN),desalida
(OUT)ybidireccionales(INOUT)
Losargumentospuedensercualquiertipodeobjeto
Enladeclaracindeunargumentopuedeomitirseladireccinyeltipode
objeto;entalcaso:
Seconsiderarpordefectoqueesunargumentodeentrada
SiseomiteeltipodeobjetoseconsiderarqueesunaCONSTANTE,sies
unargumentodeentrada,yunaVARIABLE,siesdesalidaobidireccional
LasfuncionesdevuelvenunvalordelTIPODEDATOSindicadoensu
declaracin

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_7
Ejemplosdedeclaracindefuncionesyprocedimientos

function retardo_en_tclk (constant retardo, tclk: intime)return time;

function dentro_de_rango (signal a: instd_logic_vector;


constant sup,inf: integer)return boolean;

procedure tecleo (signal ena_cmd: out std_logic;


signal cmd_tecla: out std_logic_vector(3 downto 0);
signal clk: instd_logic;
constant tecla: instd_logic_vector(3 downto 0));

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_8
SintaxisdelaDefinicindefuncionesyprocedimientos

FUNCTION/PROCEDURENOMBRE(LISTA_DE_ARGUMENTOS)[RETURN]IS
ZONADEDECLARACIN
BEGIN
ALGORITMODEPROCESAMIENTOSECUENCIAL
ENDFUNCTION/PROCEDURE;

Enlazonadedeclaracindelsubprogramapuedendeclararseconstantes,
variables,tiposdedatose,incluso,otrossubprogramas
Todaslasdeclaracionessonlocales
Elalgoritmopuedeconstruirseconsentenciasdeejecucinsecuencial
Enlosprocedimientospuedenrealizarseasignacionesdevaloraseal;en
lasfuncionesnosepuede
Lasfuncionesdebendevolverunvalor,deltipodedatosindicadoensu
declaracin,utilizandounasentenciaRETURN

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_9
Ejemplodedefinicindefunciones

function hora_to_natural (hora: std_logic_vector(23 downto 0)) return natural is


variable resultado: natural := 0;

begin
resultado := 10*conv_integer(hora(23 downto 20));
resultado := resultado + conv_integer(hora(19 downto 16));
resultado := resultado * 3600;
resultado := resultado + 600*conv_integer(hora(15 downto 12));
resultado := resultado + 60*conv_integer(hora(11 downto 8));
resultado := resultado + 10*conv_integer(hora(7 downto 4));
resultado := resultado + conv_integer(hora(3 downto 0));
return resultado;

end function;

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_10
Ejemplodedefinicindeprocedimientos

procedure tecleo(signal ena_cmd: out std_logic;


signal cmd_tecla: out std_logic_vector(3 downto 0);
signal clk: in std_logic;
constant tecla: in std_logic_vector(3 downto 0)) is

begin
wait until clk'event and clk = '1';
ena_cmd <= '1';
cmd_tecla <= tecla;

wait until clk'event and clk = '1';


ena_cmd <= '0';

wait until clk'event and clk = '1';

end procedure;

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_11
Sintaxisdelassentenciasdefuncionesyprocedimientos
NOMBRE(PROCEDURE) (LISTA_DE_ASOCIACIN);
OBJETO<=NOMBRE(FUNCIN) (LISTA_DE_ASOCIACIN);

Lalistadeasociacinpuedeconstruirsemedianteconexinexplcitaopor
posicin
Siseomitealgnparmetro,esobligatorioqueenladeclaracindel
subprogramatengaasignadounvalorpordefecto
Losprocedimientospuedenejecutarsesecuencialoconcurrentementesi
algunodesusparmetrosdeentradaesunaseal
Unafuncinpuedeestarenlapartederechaasignacin deuna
sentenciaconcurrentesialgunodesusparmetrosdeentradaesuna
seal

EJEMPLO: tecleo (ena_cmd, cmd_tecla, clk, X"F");

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_12
PaquetesVHDL:conceptos(I)

Cumplenfuncionesequivalentesalasdelaslibrerasenloslenguajesde
programacindealtonivel

Contienen,fundamentalmente,tiposdedatosyoperadoresdefinidospor
elusuario,subprogramasycomponentes

Seconstruyencondosunidadesdellenguaje:
LaDeclaracindePaquete,queeslavistapblicadelPaquete
ElCuerpodepaquete,quecontieneladefinicindelosoperadoresy
subprogramasqueaparecenenlaDeclaracindelPaquete

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_13
PaquetesVHDL:conceptos(II)

LoselementosdeclaradosenunPaquetepuedenser
utilizadosenotrasunidadesVHDLhaciendousode
clusulasdevisibilidad

Pblico

Paquete Descripcin VHDL

Cuerpo de Paquete Clusulas de visibilidad:


library
use

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_14
PaquetesVHDL:sintaxis

package {nombre del paquete} is


{zona de declaracin}
end {nombre del paquete};

package body {nombre del paquete} is


{zona de declaracin}
end {nombre del paquete};

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_15
PaquetesVHDL:ejemplo
DECLARACINDEPAQUETE
PROTOTIPO(DECLARACIN)DE
UNAFUNCIN(CALC_LOG)
QUEREALIZAUNCLCULO
MATEMTICO

SIELPAQUETEEST
ALMACENADOENLAMISMA
LIBRERAQUELASUNIDADES
DEDISEOQUELOUSAN(EN
LALIBRERAWORK),PUEDE
OBTENERSEVISIBILIDADSOBRE
LSINDECLARARLALIBRERA:

USEWORK.AUXILIAR.ALL;

CUERPODEPAQUETE
SENTENCIARETURN
DEFINICIN DE LA FUNCIN
INDICA EL VALOR CALC_LOG
QUE DEVUELVE LA
FUNCIN

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_16
SentenciaASSERT
Las sentencias ASSERT sirven para comprobar el cumplimiento de condiciones durante la
ejecucin de una simulacin
Las condiciones deben formularse como expresiones evaluables a un valor booleano
Cuando la expresin es FALSE se reporta por consola un mensaje, acompaado por una
indicacin de la importancia del suceso un valor del tipo predefinido SEVERITY_LEVEL
Sintaxis:
ASSERT Condicin Lgica
REPORT String
SEVERITY Valor SEVERITY_LEVEL

Los valores del tipo SEVERITY_LEVEL son NOTE, WARNING, ERROR y FAILURE
La sentencia se puede ejecutar secuencial o concurrentemente si en la expresin de la
condicin lgica hay seales
Ejemplo
ASSERT minutos_T1(3 downto 0) =minutos(3 downto 0) 1
REPORT Errorenelincrementodeunidadesdeminuto
SEVERITYERROR;
DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_17
Atributos

Los atributos en VHDL proporcionan informacin adicional sobre el


elemento del lenguaje sobre el cual son aplicados
Pueden ser de diferentes tipos: valores, tipos, rangos, funciones o
seales.
Pueden aplicarse a distintos elementos del lenguaje: tipos de datos,
objetos, etc.
Sintaxis para hacer referencia a un atributo:
<identificador_elemento><identificador_atributo>

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_18
Atributosaplicablesa lasseales

SEVENT
DevuelveunTRUEsiocurriuneventoenSdurante
elactualdelta,delocontrariodevuelveFALSE.

SACTIVE
DevuelveunTRUEsiocurriunatransicinenS
duranteelactualdelta,delocontrariodevuelveFALSE.

SLAST_EVENT
Retornaeltiempotranscurridodesdelatransicin
previadelasealS.

SLAST_VALUE
RetornaelvalorpreviodeSantesdelltimoevento.

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_19
Cdigodeautoverificacin:concepto

TESTBENCH

GENERADORDEESTIMULOS DUT:RELOJPROGRAMABLE

CLK CLK MODO


nRST nRST SEGUNDOS[7:0]
TIC_1S TIC_1S MINUTOS[7:0]

ENA_CMD ENA_CMD HORAS[7:0]


PULSO_LARGO PULSO_LARGO AM_PM

CMD_TECLA[3:0] CMD_TECLA[3:0] INFO[3:0]

ESTIMULOS RESPUESTAS

CODIGODEAUTOVERIFICACIN

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_20
Cdigodeautoverificacin:ejemplo

Verificacindelcomandodepasaramododeprogramacindereloj
process(clk, nRst)
variable cmd_tecla_T1: std_logic_vector(3 downto 0);
variable ena_assert: boolean := false;
variable ena_cmd_T1: std_logic;
variable info_T1: std_logic_vector(2 downto 0);

begin
if nRst'event and nRst = '0'then
ena_assert := false;

elsif nRst'event and nRst = '1'and nRst'last_value = '0'then


ena_assert := true;

elsif clk'event and clk = '1'and ena_assert then


if ena_cmd_T1 = '1'and cmd_tecla_T1 = X"A" and info_T1 = 0 then
assert info = 1
report "Error:ignoradocomandodepasoamododeprogramacin"
severity error;
end if;

cmd_tecla_T1 := cmd_tecla;
ena_cmd_T1 := ena_cmd;
info_T1 := info;

end if;
end process;

DiseoDigital2.Dpto.deIngenieraTelemticayElectrnica(ETSISTUPM) BT1_A1_P4_21

También podría gustarte