问题标签 [verilator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
167 浏览

linux - 在“进行测试”期间无法打开 perl 脚本“/bin/verilator”

我正在按照教程在 RHEL 环境中安装程序,到目前为止我已经克服了一些错误。我在安装过程的最后,试图通过“make test”来确认有效性,它返回以下错误:

我首先检查是否有一个 verilator-4.018/bin/verilator 文件,它是有的。

然后我尝试在线研究错误并得到一个结果,其中用户表示可以通过“将 VERILATOR_ROOT 设置为结帐的根目录”来解​​决该问题,但我不太清楚如何解释这一点,因为我是初学者。

我尝试设置为root:

但是得到了同样的错误信息。

另外,请让我知道如何改写标题以使其更具体。我认为很难具体说明我需要解释帮助的问题。

0 投票
1 回答
150 浏览

build - 启用远程缓存的非密封 Bazel 操作

我一直在迭代一个依赖于“自定义”的工具的 bazel 规则(如果您熟悉,则为验证器)。该工具应该读取参数和输入并生成 cpp 文件。调用验证器的动作定义如下

问题在于,赋予此操作的可执行文件在不同平台之间/完全/不一样——它稍大,在此处比较 mac 和 linux 可执行文件时具有不同的哈希值。

我可以相信输出可以相同,并且我想为两个平台的此操作共享一个远程缓存;是否有“最佳实践”,我可以将此操作重写为非封闭的,因此工具链二进制文件不被视为缓存的“输入”?我认为 cpp 规则做了类似的事情。

0 投票
0 回答
241 浏览

riscv - 如何使用 Verilator 将大型 Chisel 设计转换为 C++ 模型?

我在使用 Verilator 后端将大型凿子硬件设计编译为 C++ 模型时遇到了内存分配错误的问题。

当我想构建一个大型 PE 设计(例如 36x36)时,我会这样编写代码

验证器会崩溃然后抛出

像内存不够导致这个问题,有没有内存效率Chisel3内置函数或其他方法来解决这个问题?

0 投票
1 回答
235 浏览

chisel - 用verilator仿真时Chisel随机初始化寄存器值

我正在使用 Chisel 和 blackbox 对 verilog 寄存器文件运行我的 chisel 逻辑。寄存器文件没有复位信号,所以我希望寄存器被随机初始化。

我通过了--x-initial unique验证器,基本上这就是我启动测试的方式:

但是在我写任何东西之前,我从寄存器文件中读取的数据都是零。

我写入后读取的数据是正确的。

那么,凿子里面有什么需要我调整的还是我没有正确地做所有事情?

有什么建议么?

0 投票
2 回答
257 浏览

system-verilog - SystemVerilog/Verilator WIDTH 参数和案例结构索引越界

我目前正在使用 LFSR 在 SystemVerilog 中实现 PRNG,如此处所述。宽度应该使用参数可变。我达到了一个结构:

现在,在使用 Verilator 模拟这个模块时,它抱怨每个案例的选择索引超出范围> WIDTH-1,尽管(我认为)这些案例应该明显优化,因为 WIDTH 是一个常数:

有没有解决这个错误的简单方法,没有例如。移位逻辑只是为了索引第 n 位?

0 投票
2 回答
287 浏览

verilog - 如何生成依赖于 systemverilog 中先前参数的参数

我最近从 VHDL 切换到 SystemVerilog,并且正在转换我的一些代码。我想根据 3 个参数 SZ、L、max 生成一个局部参数数组。

公式

我尝试使用函数来生成 localparams,但我得到一个错误,即函数中的元素分配不是恒定的。我在 VHDL 中从未遇到过这个问题。

我能想到的唯一其他选择是在 for generate 中创建参数,但我将如何引用初始值?还有其他解决方案吗?

我使用的模拟器是 Verilator,但我也希望该设计在 Xilinx Vivado 中工作。

编辑:我不想从外部脚本生成参数,因为我无法使用 Vivado 在具有不同参数的同一项目中运行多个综合/实现的能力。这就是我以前在 VHDL 中所做的。

0 投票
1 回答
173 浏览

chisel - chisel printf 失败(使用 chisel3 然后 verilator 构建到 C++)

这是来自https://github.com/freechipsproject/chisel3/wiki/Frequently-Asked-Questions的 HelloWorld.scala 示例的略微修改版本

我使用 chisel3 构建它,然后使用 verilator 生成 C++。这是 C++ 工具中有趣的部分:

我运行了几个周期,然后发出信号停止。然而,“你好,世界!” 消息永远不会出来。

0 投票
1 回答
542 浏览

verilog - 使用 Verilator 和 VPI 读取 regs 数组

所以我在我的verilog中定义了以下寄存器

我的目标是从我的验证器 C++ 代码中读取存储在其中的 16 个值中的每一个。

我发现这个 VPI 东西的文档很难找到。我仍然无法弄清楚 at_vpi_vecval是什么以及它的参数是什么,或者它是否是正确的方法。

这是我读取寄存器中第 5 个值的方法

无论我在这里做什么,该方法都返回 0,表明我没有查看 register_mem 数组。

我究竟做错了什么?

0 投票
2 回答
2244 浏览

system-verilog - 如何在 systemverilog 中转换为 longint unsigned?

我想将逻辑打包数组转换longint unsigned为 systemverilog,然后我可以使用 DPI-C 将其导出为 C++ unsigned long。我使用的模拟器是 Verilator。检查下面的示例。

0 投票
1 回答
582 浏览

riscv - 运行 RISC-V Rocket 芯片仿真器失败

我在这里按照自述文件进行设置:https ://github.com/chipsalliance/rocket-chip 。当我make -j6 run在我的$ROCKETCHIP/emulator目录中运行时,我收到以下错误消息:

我打开了其中一个 *.out 文件,它输出:

我更新了火箭工具并重建了它,但仍然遇到同样的错误。我可以跳到在vsim目录中生成可合成的 Verilog。