2

为了创建随机种子,我想在我的 VHDL 测试平台中获取系统时间戳。

我怎样才能做到这一点?

顺便说一句,我正在使用OSVVM 库中的 RandomPkg

问候。

4

2 回答 2

5

对于通用 VHDL 方法,您可以将系统时间作为通用传递给测试台实体。如果测试台看起来像:

entity seed_tb is
  generic(SEED : natural := 0);
end entity;

architecture sim of seed_tb is
begin
  assert FALSE report "SEED = " & integer'image(SEED) severity NOTE;
end architecture;

然后在带有 ModelSim 模拟器的 Linux 上,编译和运行的命令行可以是:

> vlib work
> vcom seed_tb.vhd
> vsim seed_tb -c -gSEED=`date +%s` -do "run; exit"

自 1970 年 1 月 1 日以来的date +%s秒数,这将适合 VHDL 自然类型(即使再过 25 年 :-)。

该方法的优点是可以很容易地从命令行使用相同的种子重新运行模拟,以防需要调试。

于 2013-06-22T14:25:40.117 回答
1

使用支持外部对象(架构、子程序)的 VHDL 工具套件,您可以让外部子程序从系统调用返回系统时间。

您可以将种子值放在文件中并读取它。我想到了一个执行此操作并调用您的模拟器的 shell 脚本包装器。

procfs 函数可以提供对系统时间的访问作为文件读取。

您可能会发现系统时间的概念在 VHDL 中并不重要。

于 2013-06-21T02:22:43.910 回答