将文件从VHDL进程打开到实例化两次的实体时出现问题:名称冲突

将文件从VHDL进程打开到实例化两次的实体时出现问题:名称冲突,vhdl,hdl,Vhdl,Hdl,我有一个VHDL实体,其结构如下: -- Imports... entity myentity is port (..specifying in and out signals..); end myentity; architecture beh_myentity of myentity is begin process(..sensitivity list..) -- Some variables file myfile : text open wri

我有一个VHDL实体,其结构如下:

-- Imports...
entity myentity is
  port (..specifying in and out signals..);
end myentity;

architecture beh_myentity of myentity is
  begin
    process(..sensitivity list..)
      -- Some variables
      file myfile : text open write_mode 
                    is "myentlog.txt";  -- <== My problem is here!!!
        begin
          -- ..The process body..
    end process;
end beh_myentity;
--导入。。。
实体myentity是
端口(指定输入和输出信号);
终末肌体;
myentity的架构是
开始
过程(…敏感度列表…)
--一些变量
文件myfile:文本打开写入模式

是“myentlog.txt”;—— 尝试将文件名作为泛型而不是端口传递


尝试将文件名作为通用名而不是端口传递


包含文件名的字符串类型的信号;或泛型(同样是字符串类型)

该信号允许您在测试台的不同时间为同一实体分配不同的文件名-使用VHDL-1993或更高版本,体系结构可以使用新文件名调用
file\u open()

泛型为每个不同的实体提供一个固定的文件名

使用最简单的应用程序

你的具体问题: 1) 是的,如果信号是字符串,则可以将整个文件名作为字符串传递,也可以传递后缀。因为要在运行时生成字符串,所以需要VHDL-93(或更高版本)语法

2) 最好的方法是在testbench中生成文件名并传入。但是,实体的输出端口可以工作!当然你不能合成这个实体

3) 当然

entity myentity is
  generic ( base_name : string := "testfile");
  port    (suffix : in string);
end myentity;
将传入(2)中所需的字符串

如果必须使用VHDL-87语法,如示例中所示,请将全名作为泛型传入:

file myfile : text open write_mode is base_name;

字符串类型的信号,包含文件名;或泛型(同样是字符串类型)

该信号允许您在测试台的不同时间为同一实体分配不同的文件名-使用VHDL-1993或更高版本,体系结构可以使用新文件名调用
file\u open()

泛型为每个不同的实体提供一个固定的文件名

使用最简单的应用程序

你的具体问题: 1) 是的,如果信号是字符串,则可以将整个文件名作为字符串传递,也可以传递后缀。因为要在运行时生成字符串,所以需要VHDL-93(或更高版本)语法

2) 最好的方法是在testbench中生成文件名并传入。但是,实体的输出端口可以工作!当然你不能合成这个实体

3) 当然

entity myentity is
  generic ( base_name : string := "testfile");
  port    (suffix : in string);
end myentity;
将传入(2)中所需的字符串

如果必须使用VHDL-87语法,如示例中所示,请将全名作为泛型传入:

file myfile : text open write_mode is base_name;