问题标签 [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.
stdout - 发送 SystemVerilog $display 到 stderr
我正在使用Verilator将用 SystemVerilog 编写的算法合并到一个可执行实用程序中,该实用程序操作通过stdin
和传递的 I/O 流stdout
。不幸的是,当我使用 SystemVerilog$display()
函数时,输出变为stdout
. 我希望它能够用于我的其他目的stderr
而stdout
不受污染。
我怎样才能做到这一点?
verilog - 为具有 1000 个样本值的输入查找单个最大值的 verilog 代码
我想为具有 1000 个十进制值的输入信号找到单个最大值,该值在每个正 clk 边缘从内存中读取一次。我执行了以下粗略代码来查找最大值,但它没有给我正确的最大值/number 请帮助我,这样我就可以在这 1000 个输入信号值中找到一个最大值..`提前致谢
c++ - 如何初始化用作函数参数的类类型
我正在尝试处理 HDL 到 C++ 的转换,但遇到了一些障碍。在 Ubuntu 上使用 Verilator 进行转换很容易,但是一种数据类型让我很烦。
层次结构中的顶部代码是...
将数据传递给函数
是我没有得到的。第二个参数很容易理解。第一个,不多。
我的意思是,编译器希望我通过什么?哪种数据类型?
我想像这样传递数据......
但 'randomCharacter' 未初始化。
scala - chisel 3 中的动态测试工具
我们在 Chisel 中实现了一个处理器,并且有许多非常棘手的测试用例。对于具有大量状态的元素,我们希望动态生成长序列的测试向量,并动态计算正确的响应。在 Chisel 3 中,这样做的唯一方法似乎是破解它,使用 Java 内省,将 scala 代码连接到 C++ 测试工具,并在 C++ 代码中生成激励向量和正确响应。
不是很干净。有没有办法留在 Scala 框架内并在 Scala 代码中编写动态测试?到目前为止,问题一直是将 Scala 连接到 Verilator 生成的 C++。是否有一种干净的方法可以使 Verilator 生成的 C++ 模拟器与 Scala/Chisel 测试工具代码进行交互,从而生成激励向量并即时测试响应?
谢谢
verilog - 由于verilog与verilator中的无符号算术错误,比较是恒定的
我正在使用以下逻辑在 Verilog 的双峰预测器中实现 2 位饱和计数器,并且我还使用如下验证器:
但我收到以下错误
有什么我做错了吗?
riscv - 火箭芯片仿真显示意外指令数
以下两个代码片段仅在加载到 x23 寄存器中的值不同,但minstret
指令计数(由 Rocket 芯片的 Verilator 模拟报告)有很大不同。这是一个错误,还是我做错了什么?
该read_csr()
函数来自 RISC-V 前端服务器库 ( https://github.com/riscv/riscv-fesvr/blob/master/fesvr/encoding.h ),其余代码 [syscalls.c, crt. S, test.ld] 类似于 RISC-V 基准测试 ( https://github.com/riscv/riscv-tests/tree/master/benchmarks/common )。
我检查了编译后的二进制文件是否包含完全相同的指令,除了操作数的不同。
0x0fffffff 除以 0xff,重复 1024 次:3260 条指令。
0x0fffffff除以0xffff,重复1024次:3083条指令。
在这里,3083 条指令似乎是正确的 (1024 * 3 = 3072)。由于minstret
计算了退役指令,第一个示例执行了大约 200 条指令似乎很奇怪。无论我运行这两个程序多少次,这些结果总是相同的。
verilog - 如何告诉verilator linter不验证子模块?
我正在使用 verilator 使用以下命令对我的设计进行 linting:
但是一些子模块不可用(主要是因为它来自 FPGA 构造函数的模板)。然后我有这些错误:
这些错误消息中提到的所有子模块都是 lattice machxo3 fpga 的模板。
有没有办法让验证者不关心这些模块?
verilog - Verilator 可以创建类层次结构吗?
一般Verilator
问题:
- 当我指定具有多个模块的分层 Verilog 设计时,拆分为多个文件,然后设计是否总是扁平化为
single
c++ 类,或者是否有可能Verilator
通过为每个单独的模块创建一个类来保留层次结构?
verilog - 在 topmodule 中制作子模块会导致验证器错误
我刚开始学习 Verilog,并决定制作一个 4 位加法器。为了创建这个 4 位加法器,我首先构建了一个 half_adder 模块,然后是一个使用 half_adder 模块的 full_adder 模块。在 4 位加法器中,我使用了 4 个 full_adder 模块。到目前为止,一切都使用 Verilator 编译和模拟。我写了一些测试并检查了所有输出是否正确。
在完成 4 位加法器之后,我想到创建一个使用 4 位加法器进行加法的小型 ALU。现在,当我在 ALU 模块中创建 4 位加法器的子模块时,出现验证器错误。
4 位加法器如下所示:
ALU(现在)看起来像这样。我仍然需要实现 optcode 选择等,但即使创建 4 位加法器子模块也已经导致错误......:
运行命令时
verilator -Wall -cc alu_4_bit.v
我收到以下错误:
奇怪的是,这些错误似乎来自 adder_4_bit.v,而我已经用 verilator 编译和模拟了它。我什至确保它正常工作。
这里可能是什么问题?
scala - 如何修复 Verilator 的凿子测试错误(应该与 verilator 一起使用 *** FAILED ***)?
我运行凿子测试并想用验证器生成输出。我无法准确找到错误的原因,但我认为这与验证器有关。这是执行测试的代码部分。它必须打印一些输出并生成模拟文件。
它不起作用,我得到了这个错误:
有人能帮我吗?或解释那里有什么问题