Function 在VHDL中向函数传递类型访问权限时出错

Function 在VHDL中向函数传递类型访问权限时出错,function,parameters,vhdl,modelsim,Function,Parameters,Vhdl,Modelsim,我有一个VHDL记录,其中包含一个指针(access)。 我需要创建一个函数,将此记录作为参数接收,并将其数据写入文件 但使用MODELSIM进行模拟时,我得到以下错误: **错误:(vcom-1462)非法声明x_file_格式(类型为或包含访问类型)的常量“xxx” 如何将指针作为参数传递给函数?函数参数只能是常量(或信号或文件)输入。访问类型必须是变量。因此,您必须编写一个过程来执行此操作,并将访问类型作为变量传入 Procedure proc ( variable ptr : someA

我有一个VHDL记录,其中包含一个指针(
access
)。 我需要创建一个函数,将此记录作为参数接收,并将其数据写入文件

但使用MODELSIM进行模拟时,我得到以下错误:

**错误:(vcom-1462)非法声明x_file_格式(类型为或包含访问类型)的常量“xxx”


如何将指针作为参数传递给函数?

函数参数只能是常量(或信号或文件)输入。访问类型必须是变量。因此,您必须编写一个过程来执行此操作,并将访问类型作为变量传入

Procedure proc ( variable ptr : someAccessType ) is

IEEE Std 1076-2008 4.2子程序声明,4.2.2.1正式参数列表“对于具有模式的参数,函数的正式参数所允许的唯一模式是中的模式(无论该模式是显式指定还是隐式指定)。对象类应为常量、信号或文件。如果未明确给出对象类,则假定为常量。“5.4访问类型,5.4.1概述”声明为访问类型的对象应为类变量对象。由访问值指定的对象始终为类变量对象。“5.3复合类型,5.3.1概述”复合类型的对象表示对象的集合,复合对象的每个元素对应一个对象。如果复合类型包含文件类型或受保护类型的元素,则为错误。因此,复合类型的对象最终表示标量或访问类型的对象集合,复合对象的每个非复合子元素一个。“6.声明、6.4对象、6.4.1概述”有四类对象:常量、信号、变量和文件。对象的变量类还有一个子类:共享变量。显式声明对象的类由保留字指定,该保留字将或可能出现在该对象声明的开头。对于复合类型的给定对象,该对象的每个子元素本身就是与给定对象具有相同类和子类(如果有的话)的对象。复合对象的值是其子元素值的集合。“函数标记和参数标记都不能准确地传递VHDL标准中的定义。