我正在尝试将一个新的黑盒 verilog 模块添加到chipyard硬件生成框架并使用verilator对其进行模拟。 我的更改通过了chipyard的scala编译阶段,其中凿子硬件规范被编译成verilog。 但是,在verilog被翻译成C++可执行文件的“验证”过程中,我遇到了一个错误: 环 ...
我正在尝试将一个新的黑盒 verilog 模块添加到chipyard硬件生成框架并使用verilator对其进行模拟。 我的更改通过了chipyard的scala编译阶段,其中凿子硬件规范被编译成verilog。 但是,在verilog被翻译成C++可执行文件的“验证”过程中,我遇到了一个错误: 环 ...
我正在使用 Xilinx axi ram IP 设计一个 cpu 内核。 为了加快仿真速度,我想将仿真环境移植到verilator。 但是,当我编译 axi_ram_sim_netlist.v 文件时出现问题。 错误 output 表示Cannot find file containing mod ...
我正在尝试通过 MMIO 外围设备为火箭芯片框架添加加速器。 我浏览了 GCD 示例并能够构建基本的 GCD 代码。 然后,我将 GCD 替换为具有自己的配置、参数和字段信息的加速器。 现在,当我尝试将此信息传递给火箭芯片时,名称与freechips.rocketchip.config.{Param ...
我有一个系统,我想使用 Verilator 进行跟踪,但是使用 VCD 跟踪文件对资源要求很高(数百 GB)并且非常耗时。 我把trace文件类型改成了FST,文件大小还算合理,但是还是比较费时间。 跟踪整个系统不是我目前的目标,因为我只想要 8 个信号的值,而不是系统的 16000 个信号。 如 ...
从多个源编译 RTL 时,通常会将它们编译到单独的 SystemVerilog 库中。 这样做意味着它们不会相互干扰,并且您可以将多个具有相同名称的不同模块编译到不同的库中。 SystemVerilog 配置用于 select 哪个库来详细说明模块。 如 SV LRM 2017(33 配置设计内 ...
我正在尝试熟悉 verilog 中的(子)模块,但遇到了我无法解释的错误。 我有这两个文件: 顶部.v : 序列号.v : 要将它们上传到我的 ECP5,我使用以下命令流: 它上传并正常工作(有一个 LED 连接到 txd,它根据 serialtx.v 中的initial o_txd = 1'bx语 ...
我已经使用生成实现了一个(工作的)波纹进位加法器,以创建 16 个不同的full_adder实例( full_adder按预期工作): 现在我正在尝试修改加法器,以便我可以保留一组加法器。 下面是我试图开始工作的代码示例: 但是,我从 Verilator 收到了一个 ASSIGNIN 错误(文档显示 ...
我正在关注本教程。 在第 24 页上,我没有得到教程讨论的 Makefile。 当我运行./thruwire它说: bash: ./thruwire: Invalid argument 。 这是我的 thruwire.v: 生成这个 verilog 文件后,我运行这些命令来创建 obj_dir ...
我正在尝试编译和链接 Verilator (veripool.org) 的运行时支持代码。 它构建得很好,但由于某种原因,有几个方法没有出现在相关的目标文件中, Verilated::timeunit(int)和Verilated::timeprecision(int) 。 这些表面上是在 inc ...
我正在学习臭名昭著的 nand2tetris 课程,并决定仅使用我在此基础上构建的原始nand门和模块在 verilog 中构建计算机。 我为每个模块编写了大量测试,在我运行整台机器之前,所有测试都运行良好。 我得到了奇怪的未定义行为,因为位只是以意想不到的方式关闭。 几个小时的调试后,我跟踪这个 ...
我正在使用 Verilog 设置 FPGA,使其每秒闪烁一次 LED。 这是一种方法: 现在我写了这个 makefile: 前两个 makefile 目标( all和flash )工作完美,当比特流文件上传到板上时,LED 以 1Hz 的频率闪烁。 好的。 但是,当我尝试simulate这个模块时, ...
我正在阅读精彩的 Verilator教程,在这些幻灯片(第 25 页)中,作者使用了库调用: 我知道tfp是一个指向 Verilator 库对象VerilatedVcdC的指针,因此这个调用实际上是: 但是这个调用实际上做了什么? header 文件/usr/share/verilator/inc ...
我正在使用 Verilator 从一个非常简单的程序中模拟电路,该程序只是反复将时钟线设置为高电平,然后是低电平,直到满足某些 output 条件: 所以问题是,如果我在单线程模式下运行verilator (即我在没有--threads N标志的情况下运行 verilator,我不会在编译期间设置V ...
我尝试从 Verialtor 源代码中制作 a.dll,因为他们已经实现了这种可能性。 他们使用通用处理程序typedef void* svScope来初始化范围。 .dll 也使用此手柄。 现在我可以使用创建新功能__declspec(dllexport) svScope svGetScope ...
我试过这个例子,但没有任何反应: 例如,如果我将CMAKE_ANDROID_ARCH_ABI更改为其他任何内容,则没有任何反应。 这就像 CMake 忽略了代码的 NDK 部分。 但是如果我将项目更改到另一个位置,则会发生不同的事情: 错误: 我没有使用 CMake 的经验,我认为问题 ...
为了测试我的 Verilog 设计,我使用了两个不同的模拟器: Icarus和Verilator 。 这是有效的,但它们之间存在一些差异。 例如,我无法使用 verilator 读取模块参数,但 Icarus 可以。 有没有办法知道 python 测试文件中使用的是哪个模拟器? 我想写这样的东西: ...
我在这里按照自述文件进行设置: https://github.com/chipsalliance/rocket-chip 。 当我在$ROCKETCHIP/emulator目录中运行make -j6 run时,我收到以下错误消息: 我打开了其中一个 *.out 文件,它输出: 我更新了火箭工具并重建 ...
我想将逻辑打包数组转换为 systemverilog 中的longint unsigned ,然后我可以使用 DPI-C 将其导出为 C++ unsigned long。 我使用的模拟器是 Verilator。 检查下面的示例。 ...
所以我在我的 verilog 中定义了以下寄存器 我的目标是从我的 verilator c++ 代码中读取存储在其中的 16 个值中的每一个。 我发现这个 VPI 东西的文档很难找到。 我仍然无法弄清楚t_vpi_vecval是什么以及它的参数是什么,或者它是否是正确的方法。 这是我读取寄存 ...
这是来自https://github.com/freechipsproject/chisel3/wiki/Frequently-Asked-Questions的 HelloWorld.scala 示例的稍微修改版本 我使用 chisel3 构建它,然后使用 verilator 生成 C++。 这 ...