Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Struct 使用Synopsys VCSMX与SystemVerilog/SystemC接口的VHDL记录端口_Struct_Vhdl_Record_System Verilog - Fatal编程技术网

Struct 使用Synopsys VCSMX与SystemVerilog/SystemC接口的VHDL记录端口

Struct 使用Synopsys VCSMX与SystemVerilog/SystemC接口的VHDL记录端口,struct,vhdl,record,system-verilog,Struct,Vhdl,Record,System Verilog,你好,谢谢你看这个问题 我正在使用VCSMX(2011年6月的版本)模拟具有记录类型接口的内核。核心是用VHDL编写的。我正在使用Systemverilog(SV)测试台来激发这个核心 该记录看起来像: type ll_port is record frame_name : std_logic_vector(WIDTH-1 downto 0); frame_valid : std_logic; . . . end record; 我读到VHDL记录类型与

你好,谢谢你看这个问题

我正在使用VCSMX(2011年6月的版本)模拟具有记录类型接口的内核。核心是用VHDL编写的。我正在使用Systemverilog(SV)测试台来激发这个核心

该记录看起来像:

type ll_port is record
    frame_name      : std_logic_vector(WIDTH-1 downto 0);
    frame_valid     : std_logic;
 .
 .
 .
end record;
我读到VHDL记录类型与SV中的struct相同。然而,当我尝试在SV中实现ll_port结构时,这似乎仍然是VCSMX中不受支持的特性。可靠的解决方案是将记录端口分解为std_逻辑和std_逻辑向量

然而,VHDL中的这种记录类型将被多次使用,并且在最终系统中会有多个内核交互,这使得每个记录端口的分解非常麻烦

我想看看如何处理这个问题,以及在这件事上我能得到什么建议。我在SystemVerilog中已经有一个自定义的模拟基础设施,我想知道是否有解决这个问题的方法


RRS不是您要寻找的答案,但我认为您必须分解端口

老实说,VHDL中作为端口类型的记录让我感到紧张,因为这些年来它们一直是破坏各种工具的好方法。我知道,如果在端口上使用记录,那么合成工具用于反向连接(MSB LSB),而且许多公司都有内部规则禁止以这种方式使用记录


您可以在任意一侧编写一些函数,将记录展平为单个宽
std\u logic\u vector
,然后重新构建它,但我认为这比每个字段都有端口更费事,可读性也更低。

这不是您要寻找的答案,但我认为您一直在分解端口

老实说,VHDL中作为端口类型的记录让我感到紧张,因为这些年来它们一直是破坏各种工具的好方法。我知道,如果在端口上使用记录,那么合成工具用于反向连接(MSB LSB),而且许多公司都有内部规则禁止以这种方式使用记录


您可以在任意一侧编写一些函数,将记录展平为单个宽
std\u logic\u vector
,然后重新构建它,但我认为这比每个字段都有端口要费事,可读性也要差。

谢谢您的回答。我对这里的“功能”很好奇。测试台是SystemVerilog块。您是否指向某个VHDL函数到SystemVerilog函数的映射?你知道这是否可能吗?不,没有映射。只需要一个VHDL函数,它获取一个记录并返回一个std_逻辑_向量。然后有一个SV函数,它接受一个逻辑向量并返回一个结构。我并不特别喜欢这种方法,因为您有两组需要保持同步的代码,并且您已经丢失了所有类型检查,因此错误往往很微妙。这只是我过去见过的事情。一个替代方案,但不是我推荐的。谢谢你的回答。我对这里的“功能”很好奇。测试台是SystemVerilog块。您是否指向某个VHDL函数到SystemVerilog函数的映射?你知道这是否可能吗?不,没有映射。只需要一个VHDL函数,它获取一个记录并返回一个std_逻辑_向量。然后有一个SV函数,它接受一个逻辑向量并返回一个结构。我并不特别喜欢这种方法,因为您有两组需要保持同步的代码,并且您已经丢失了所有类型检查,因此错误往往很微妙。这只是我过去见过的事情。另一种选择,但我不推荐。