【问题标题】:VHDL unconstrained records in system verilog testbenches系统 verilog 测试平台中的 VHDL 无约束记录
【发布时间】:2016-10-21 13:50:37
【问题描述】:

要测试的设计是用 VHDL 编写的,并在其端口中使用像这样的无约束记录:

type forward_stream is record
    data     : std_ulogic_vector;
    -- further members
    ...
end record;

现在应该从 systemverilog 测试平台驱动这些端口。有什么方法可以将 vhdl 记录类型用于测试台信号?如果是这样,我如何限制 systemverilog 中的记录?

或者我是否必须创建一个 VHDL 包来约束记录并将其作为要在测试台中使用的类型提供?

由于工具之间的 HDL 支持差异很大,我特别询问的是 questasim(modelsim 的老大哥,同一供应商,因此据说有点向下兼容)。

更新

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

  • 记录映射到结构/打包结构(表 9-5)
  • 表 9-5 中未提及亚型

我试过了:

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

示例代码:

VHDL:

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

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).

【问题讨论】:

  • 这完全是一个 Questasim 问题。参见 IEEE Std 1076-2008 14.2 Elaboration of a design hierarchy, paras 7 and 8 quoted):*同样,顶层接口对象与层次结构的外部环境相关联的方式也由实现定义支持顶级接口对象。

标签: vhdl system-verilog modelsim questasim


【解决方案1】:

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

【讨论】:

  • 您如何从三个问题中获得肯定? 共享用户定义类型还有两个小节,使用通用 VHDL 包使用通用系统 Verilog包。哪个是“是”?
  • 是的,这是您问题的重点。您可以在 SystemVerilog 测试平台中使用 VHDL 包。通过将您指向手册来回答“操作方法”问题。是的,您可能必须创建一个单独的 VHDL 包以满足导入 SystemVerilog 的要求。
  • 不是我的问题,OP提出的三个问题的重点是什么?
  • 嗨,戴夫,我希望能得到你的答复,因为你似乎有一些见解。关于手册:我在发布之前查看了它,它对无约束向量没有帮助。我更新了我尝试过的内容,如果您对如何使这项工作有任何其他想法(除了在 VHDL 中编写一个包含完全受限记录作为接口的包装器),任何见解都将不胜感激。不幸的是,examples/mixedlang 也没有帮助。
  • 似乎 Questa 可能不支持在语言边界将记录与无约束数组组合。您可能必须创建一个单独的约束类型。抱歉,我不太了解 VHDL,无法为您提供解决方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多