是否有 verilog 函数可以迭代多个输入文件进行验证?

Is there a verilog function to iterate over multiple input files for validation?

我可以用

打开文件
integer fd;
fd = $fopen ("file_to_open.txt", "r");

但是如果我在一个目录中有多个文件,例如

f1.txt
f2.txt
f3.txt

如何在不在我的 verilog 测试台中明确定义它们的名称的情况下迭代这些文件?

在 bash 中,这将通过以下方式完成:

for f in ./*.txt; do
    ...
done

Verilog 无法直接与操作系统进行交互,模拟 运行 开启,因此它无法扩展文件名。

您在 Verilog 中的两个选择是:

  1. 编写一些执行此操作的 C 代码并通过 VPI 链接该代码(困难)
  2. 创建一个 bash 脚本,将您的文件列表构建到文本文件中,然后使用 $fgets$fscanf 一次读取该列表一行。 (繁琐)

如果您使用的是 SystemVerilog,这会容易得多,因为它具有字符串数据类型,以及与 C (DPI) 的直接接口