TextIO NCVHDL simulation problem

Discussion in 'Cadence' started by Lily, Apr 28, 2004.

  1. Lily

    Lily Guest

    Hi,

    I've got problem with my ALU testbench. the testbench works fine when
    i simulate and extract but when i try to view the waveform it is
    complaining as below

    ncsim> run

    Error! TEXTIO error
    LINE of length 0 on READ of type CHARACTER

    below is my full testbench program. could anybody out there help me
    pls ?

    thanks a lot.


    library ieee;
    use ieee.std_logic_1164.all;
    use std.textio.all;
    use work.all;
    use ieee.numeric_std.all;
    use ieee.std_logic_textio.all;
    library std;


    entity alu_testbench is
    end alu_testbench;

    architecture test_alu of alu_testbench is
    component alu_testbench
    generic(
    OPERAND_WIDTH : integer := 8);
    Port (
    -- The input/ouput interface of the module
    S : in std_logic_vector(3 downto 0);
    A : in std_logic_vector(OPERAND_WIDTH-1 downto 0);
    B : in std_logic_vector(OPERAND_WIDTH-1 downto 0);
    Y : out std_logic_vector(OPERAND_WIDTH-1 downto 0);
    CI : in std_logic;
    C, V, Z : out std_logic
    );
    end component;


    constant clk_period: time := 5 ns;
    constant OPERAND_WIDTH : integer := 8;

    -- declare math opcode constants
    constant ADD : std_logic_vector(3 downto 0) := "0000";
    constant SUB : std_logic_vector(3 downto 0) := "0010";
    constant INC : std_logic_vector(3 downto 0) := "0001";
    constant CMP : std_logic_vector(3 downto 0) := "0011";

    -- declare logical opcode constants
    constant opAND : std_logic_vector(3 downto 0) := "1100";
    constant opOR : std_logic_vector(3 downto 0) := "1101";
    constant opXOR : std_logic_vector(3 downto 0) := "1110";
    constant opCPL : std_logic_vector(3 downto 0) := "1111";


    signal clock : std_logic;
    signal rst : std_logic;
    signal S : std_logic_vector(3 downto 0);
    signal A : std_logic_vector(OPERAND_WIDTH-1 downto 0);
    signal B : std_logic_vector(OPERAND_WIDTH-1 downto 0);
    signal Y : std_logic_vector(OPERAND_WIDTH-1 downto 0);
    signal CI : std_logic;
    signal C, V, Z : std_logic;
    signal done : std_logic;


    for t1 : alu_testbench use entity work.alu_structure;


    begin -- behavior
    t1 : alu_testbench


    port map (
    S => S,
    A => A,
    B => B,
    Y => Y,
    CI => CI,
    C => C,
    V => V,
    Z => Z
    );


    -- the clock
    clk : process
    begin -- process clk
    clock <= '0', '1' after 5 ns;
    wait for 10 ns;
    end process clk;


    -- printstatus process

    Printstatus : process

    file infile : text is in "/elhome/elhh2/NCVHDL/input.txt";
    --file outfile : text is out "output.txt";
    variable aluinput : std_logic_vector(19 downto 0) := "00000000000000000000";
    variable buff : line;

    begin
    while not (endfile(infile)) loop
    readline(infile, buff);
    read(buff,aluinput);

    A(0) <= aluinput(0);
    A(1) <= aluinput(1);
    A(2) <= aluinput(2);
    A(3) <= aluinput(3);
    A(4) <= aluinput(4);
    A(5) <= aluinput(5);
    A(6) <= aluinput(6);
    A(7) <= aluinput(7);

    B(0) <= aluinput(8);
    B(1) <= aluinput(9);
    B(2) <= aluinput(10);
    B(3) <= aluinput(11);
    B(4) <= aluinput(12);
    B(5) <= aluinput(13);
    B(6) <= aluinput(14);
    B(7) <= aluinput(15);

    S(0) <= aluinput(16);
    S(1) <= aluinput(17);
    S(2) <= aluinput(18);
    S(3) <= aluinput(19);

    wait until falling_edge(clock);

    end loop;
    wait;
    end process Printstatus;




    end test_alu;
     
    Lily, Apr 28, 2004
    #1
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.