首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统verilog测试台中的VHDL无约束记录

系统verilog测试台中的VHDL无约束记录
EN

Stack Overflow用户
提问于 2016-10-21 13:50:37
回答 1查看 948关注 0票数 0

要测试的设计是用VHDL编写的,它的端口使用这样的无约束记录:

代码语言:javascript
复制
type forward_stream is record
    data     : std_ulogic_vector;
    -- further members
    ...
end record;

这些端口现在应该从systemverilog驱动。有没有任何方法可以使用vhdl记录类型的测试台信号?如果是这样,我如何约束systemverilog中的记录?

还是必须创建一个VHDL包来约束记录并将其作为要在testbench中使用的类型提供?

由于HDL支持在不同的工具之间有很大的不同,我特别询问questasim (modelsim的大哥,也就是被认为有点向下兼容的同一个供应商)。

更新

我从Questa用户手册中收集了10.4的以下内容:

  • 记录映射到结构/打包结构(表9-5)
  • 表9-5中没有提到子类型。

我试过:

  1. 在system中使用子类型连接到无约束类型的端口
  2. 使用系统verilog中的子类型连接到具有约束的无约束类型的端口。
  3. 在中使用子类型连接到子类型的端口
  4. 使用系统verilog中的无约束类型(无约束)连接到具有约束的无约束类型的端口。

样本代码:

VHDL:

代码语言:javascript
复制
library IEEE;
use IEEE.std_logic_1164.all;

package module_crosslanguage_pkg is
    type t is record
        s : std_ulogic_vector(2 downto 0);
        c : std_logic_vector;
    end record;

    subtype t_s is t(c(1 downto 0));
end package;

use work.module_crosslanguage_pkg.all;

entity dummy_test is
    port(a : in t);                -- 1.
    port(a : in t(c(1 downto 0))); -- 2.
    port(a : in t_s);              -- 3.
    port(a : in t(c(1 downto 0))); -- 4.
end entity;

architecture a of dummy_test is
begin
end;

系统Verilog

代码语言:javascript
复制
module modulebay_testbench();

import module_crosslanguage_pkg::*;

    t_s testsignal;
    t testsignal2;

    dummy_test u(.a(testsignal)); -- 1., 2., 3.
    dummy_test u(.a(testsignal2)); -- 4.
endmodule;

错误总是Fatal: (vsim-3362) The type of VHDL port 'a' is invalid for Verilog connection (1st connection).

EN

回答 1

Stack Overflow用户

发布于 2016-10-21 17:40:58

是的,请参阅Questa手册中的共享用户定义类型。它展示了如何导入用一种语言定义的包,并在另一种语言中使用/导入它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40178418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档