Hola colegas, tengo una dudas en cuanto a a la creación de testbench en vhdl, en particular uno que prueba una memoria ROM. Lo que intento hacer es rellenar los espacios en la ROM (32 espacios de 14 bits) a partir de un archivo de texto en donde están dichos valores. Ahora, en lo que he tenido problemas es en mandar la la signal que contiene los valores en el testbench a la signal de la entidad que describe la rom. A continuación les pongo el código y describo en donde tengo problemas.
La pregunta principal es... se puede asociar una signal del testbench (en este caso tmp_eprom) con una signal en la entidad. En este caso la signal en la entidad tambien se llama tmp_eprom, pero no actua como la signal del testbench ya que sus valores son indefinidos. Espero haberme explicado bien... gracias.
Código:
-- Test bench shell
-- Created by OrCAD Express Simulate
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use std.textio.all;
entity test_schematic1 is end test_schematic1;
architecture testbench of test_schematic1 is
-- Declaration of the component under test
component schematic1
port (
ini_eprom : in std_logic_vector(13 downto 0);--IDEALMENTE ESTE PUERTO NO QUISIERA ---QUE EXISTIERA, SOLO LO PUSE PORQ NO SE ENCONTRÉ COMO LIGAR LA LA SIGNAL EN ESTE
--TESTBENCH QUE CONTIENE LOS VALORES DEL ARCHIVO DE TEXTO CON LA SIGNAL QUE SE ---ENCUENTRA EN LA ENTIDAD
salida : out std_logic_vector(13 downto 0);
q1 : in std_logic;
q2 : in std_logic
);
end component;
signal ini_eprom : std_logic_vector(13 downto 0);
signal salida : std_logic_vector(13 downto 0);
signal q1 : std_logic;
signal q2 : std_logic;
type eprom_type is array (0 to 31) of std_logic_vector(13 downto 0);--AQUI DECLARO EL ------TIPO DE VARIABLE QUE REPRESENTA LA ROM
signal tmp_eprom: eprom_type;--ESTA ES LA SIGNAL QUE CONTIENE LOS VALORES DEL --------ARCHIVO DE TEXTO EN EL TESTBENCH
begin
-- Place stimulus and analysis statements here
process
BEGIN
Q1<='0';WAIT FOR 20 ns;
Q1<='1';WAIT FOR 20 ns;
end process;
process
BEGIN
WAIT FOR 5ns;
Q2<='0';WAIT FOR 20 ns;
Q2<='1';WAIT FOR 20 ns;
end process;
process
file arch:text;
variable ptr:line;
VARIABLE DIRECCION:INTEGER:=0;
variable vecg:std_logic_vector(13 downto 0);
begin
file_open(arch,"C:\Program Files\OrCAD\EPROM\INICIALIZACION_EPROM.txt",read_mode);
while not(endfile(arch)) loop
readline(arch,ptr);
read(ptr,vecg);
tmp_eprom(DIRECCION)<=vecg;--EFECTIVAMENTE SE GUARDAN TODOS LOS VALORES DEL ----ARCHIVO DE TEXTO EN LA VARIABLE tmp_eprom
ini_eprom<=vecg;--ESTO NO SIRVE
DIRECCION:=DIRECCION+1;
end loop;
file_close(arch);
wait;
end process;
dut : schematic1 port map (
ini_eprom => ini_eprom,
salida => salida,
q1 => q1,
q2 => q2
);
end testbench;
La pregunta principal es... se puede asociar una signal del testbench (en este caso tmp_eprom) con una signal en la entidad. En este caso la signal en la entidad tambien se llama tmp_eprom, pero no actua como la signal del testbench ya que sus valores son indefinidos. Espero haberme explicado bien... gracias.