为了测试我的 Verilog 设计,我使用了两个不同的模拟器:Icarus和Verilator。这是工作,但它们之间存在一些差异。
例如,我无法使用 verilator 读取模块参数,但 Icarus 可以工作。
有没有办法知道 python testfile 中正在使用哪个模拟器?
我想写这样的东西:
if SIM == 'icarus':
self.PULSE_PER_NS = int(dut.PULSE_PER_NS)
self.DEBOUNCE_PER_NS = int(dut.DEBOUNCE_PER_NS)
else:
self.PULSE_PER_NS = 4096
self.DEBOUNCE_PER_NS = 16777216
Run Code Online (Sandbox Code Playgroud)
能够管理两个模拟器并比较它们。
我正在使用Verilator将用 SystemVerilog 编写的算法合并到可执行实用程序中,该实用程序操作通过stdin和传递的 I/O 流stdout。不幸的是,当我使用 SystemVerilog$display()函数时,输出会转到stdout. 我希望它能继续使用,stderr这样stdout我的其他用途就不会受到污染。
我怎样才能做到这一点?
我想将逻辑打包数组转换为longint unsignedsystemverilog,然后我可以使用 DPI-C 将其导出到 C++ unsigned long。我使用的模拟器是Verilator。检查下面的示例。
logic[31:0] v1;
logic[63:0] v2;
int a = signed'(v1); //cast to signed int
int b = int'(v1); //cast to signed int
int unsigned c = unsigned'(v1); //cast to unsigned int
longint d = longint'(v2); //cast to signed long
//longint unsigned e = longint unsigned'(v2); //This doesn't work. I need to cast to unsigned long.
Run Code Online (Sandbox Code Playgroud)