Method cannot have a parameter of file type

Discussion in 'VHDL' started by sgregnt, Jun 10, 2007.

  1. sgregnt

    sgregnt Guest

    Hi all,

    I am trying to declare procedure in protected type, with file as
    parameter
    but ModelSim does not allow that:
    I am receiving an error : "Method cannot have a parameter of
    file type".
    The code is compiled using VHDL 1076-2002.
    Also there is an explicit example in "The Designer's Guide To
    VHDL", 2nd edition,p 632-633. of exactly the same thing I am trying to
    do, but in my case it doesn't work :(.

    1) Any suggestions what might be wrong ?
    2) Any comment are welcome.

    Thanx!

    Here is the code I am trying to compile
    _____________________________

    Library IEEE;
    use IEEE.std_logic_1164.all

    Library std
    use std.textio.all

    package pkg_mem is
    type mem is protected
    procedure input_img (file image_file : text ); --
    the error is recieved on this line.
    end protected mem;
    end pkg_mem;

    package body pkg_mem is
    type mem is protected body
    procedure input_img(file image_file : text ) is
    begin
    end ;
    end protected body mem ;
    end pakage body pkg_mem ;
    _____________________________________________

    Thanx again! (a.. that's not a copy-paste so spelling errors might pop-
    up )
     
    sgregnt, Jun 10, 2007
    #1
    1. Advertising

  2. sgregnt

    sgregnt Guest

    I know that in VHDL 93 Method cannot have a parameter of
    file type. So maybe it has something to do with compiler
    version(according to ModelSim I compile the code with VHDL 2002.)?
    Have anybody experienced similar problems?
     
    sgregnt, Jun 11, 2007
    #2
    1. Advertising

  3. sgregnt wrote:
    > I know that in VHDL 93 Method cannot have a parameter of
    > file type.


    File parameters are ok in -93.
    Notice that there is no error if I
    remove the protected types.

    -- Mike Treseler
    _________________________________
    library ieee;
    use ieee.std_logic_1164.all;
    use std.textio.all;

    package pkg_mem is
    procedure input_img (file image_file : text);
    end package pkg_mem;

    package body pkg_mem is
    procedure input_img(file image_file : text) is
    begin
    end;
    end package body pkg_mem;

    --60 Mon Jun 11 /evtfs/home/tres/vhdl/play> vcom pkg_mem.vhd
    --Model Technology ModelSim SE vcom 6.2a Compiler 2006.06 Jun 16 2006
    ---- Loading package standard
    ---- Loading package std_logic_1164
    ---- Loading package textio
    ---- Compiling package pkg_mem
    ---- Compiling package body pkg_mem
    ---- Loading package pkg_mem
     
    Mike Treseler, Jun 11, 2007
    #3
  4. sgregnt wrote:

    > Hi all,
    >
    > I am trying to declare procedure in protected type, with file as
    > parameter
    > but ModelSim does not allow that:
    > I am receiving an error : "Method cannot have a parameter of
    > file type".
    > The code is compiled using VHDL 1076-2002.
    > Also there is an explicit example in "The Designer's Guide To
    > VHDL", 2nd edition,p 632-633. of exactly the same thing I am trying to
    > do, but in my case it doesn't work :(.
    >
    > 1) Any suggestions what might be wrong ?


    Either ModelSim or the language definition. ;-)

    > 2) Any comment are welcome.


    It's a pity that vcom does not emit an error number. If it would, you could
    get an additional description of the error with the verror command.

    You could open a case on SupportNet and ask Mentor Graphics why your case
    fails. And post the result here, because I'm curious too.

    --
    Paul Uiterlinden
    www.aimvalley.nl
    e-mail addres: remove the not.
     
    Paul Uiterlinden, Jun 11, 2007
    #4
  5. 2002 LRM
    [3.5.1 Protected type declarations]
    ....
    Each subprogram specified within a given protected type declaration defines
    an abstract operation, called a method, that operates atomically and exclusively
    on a single object of the protected type. In addition to the (implied) object
    of the protected type operated on by the subprogram, additional parameters may
    be explicitly specified in the formal parameter list of the subprogram declaration
    of the subprogram. Such formal parameters must not be of an access type or a
    file type; moreover, they must not have a subelement that is [of] an access type
    [or file type]*.

    [of] added to 200X draft
    *deleted from 200X draft because of LCS-2006-008; IR2029


    If you put this in the protected type body only (so it's no longer a method,
    but rather just a subprogram local to the body), then it's OK to have
    a class FILE formal parameter. So it's conceivable to have a method that
    takes a file name (string) and calls the body subprogram with a FILE
    type data member having been opened by the method.
     
    James Unterburger, Jun 12, 2007
    #5
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Howard
    Replies:
    2
    Views:
    391
    Michiel Salters
    Jul 4, 2003
  2. Shawn
    Replies:
    2
    Views:
    15,450
    Furious George
    Sep 29, 2006
  3. Robert Mark Bram
    Replies:
    0
    Views:
    716
    Robert Mark Bram
    Feb 4, 2007
  4. sgregnt
    Replies:
    0
    Views:
    444
    sgregnt
    Jun 10, 2007
  5. Tricky
    Replies:
    1
    Views:
    864
    JimLewis
    Feb 10, 2012
Loading...

Share This Page