问题标签 [icarus]

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 回答
421 浏览

verilog - Verilog Icarus 给出未定义的值

我正在做一个项目,我在 Icarus Verilog 0.9.7 中设计一个简单的 RISC 机器。

这段代码是模块化的,最后我将把几个组件放在一起,但是我在处理内存控制器时遇到了一个问题。对于我所有的测试值,我得到未定义的输出,或“Z”。我怎样才能解决这个问题?我看不出为什么没有填充这些值的任何原因。

定义内存控制器应该具有的所有行为超出了这个问题的范围,所以我会尽量保持简短并讨论 Verilog 的主题。

这是我当前的 Verilog 代码。工作台有两个文件,mem.sv 和 SrcMemoryController.sv:

mem.sv 目前有效,不是这个问题的根源。无论如何,我都会包括它,以防它有帮助。

这里也是测试台。它可能不需要,但发布它可能会有所帮助。

感谢所有帮助。谢谢!

0 投票
1 回答
465 浏览

verilog - 尝试使用 Icarus 编译 SV 文件的断言失败错误

我尝试使用 Icarus 使用其测试平台编译 mux.sv 设计模块,但出现以下错误vvp: array.cc:906: void compile_var2_array(char*, char*, int, int, int, int, bool): Assertion `0' failed. Aborted (core dumped)

下面是测试台的代码片段

我的测试台有什么问题会产生这个错误?

0 投票
2 回答
376 浏览

hdl - RisingEdge 示例不适用于 Chisel3 中的模块输入信号

在 Chisel 文档中,我们有一个上升沿检测方法的示例,定义如下:

我的 github项目 blp上提供了所有示例代码。

如果我在声明如下的输入信号上使用它:

有了这个 icarus/cocotb 测试平台:

我永远不会在 io.redge 和 io.fedge 上获得上升脉冲。要获得脉冲,我必须将上升沿的定义更改如下:

使用双 RegNext() : 双 RegNext 截图

使用简单的 RegNext() : 简单的 RegNext 截图

这是正常行为吗?

[编辑:我用上面给出的 github 示例修改了源示例]

0 投票
1 回答
116 浏览

delay - 如果有条件,icarus verilog 指定不遵守延迟

尝试对具有代表 HCT 设备的延迟的 74245 进行建模。

我发现我在指定块中提供的时间没有得到遵守。

我添加了一条额外的路线 A->C(不是我的原始设计的一部分)来说明延迟可以工作,只是表达式中没有条件,即其他延迟都无效。

如果我在分配上放置延迟内联,那么这总是受到尊重。

我的代码在这里:https ://www.edaplayground.com/x/hDa

有任何想法吗?

我是菜鸟。

0 投票
1 回答
540 浏览

verilog - icarus verilog 中的多维数组端口支持

我正在尝试在我的 systemverilog 代码中使用多维数组作为端口。顶部模块是一个 3 维数组,而子模块是一个 2 维数组。一个简化的测试台和设计如下:

设计是

我试图用 icarus verilog 编译这段代码,但它失败并出现以下错误。

这是编译器的错误还是某些功能尚不支持?有没有其他方法可以解决这个问题?我知道我可以扁平化数组,但是,我不想使用它,因为它会使设计更容易出现功能错误。

0 投票
3 回答
404 浏览

verilog - 验证;不能在 $display 中使用“字符串”类型

我正在使用 icarus verilog 的最新主分支构建。

我应该期望以下运行吗?

以上给出

但是,如果我通过取消注释上面的行将“x”定义为 reg,那么它会按预期工作......

0 投票
1 回答
228 浏览

arrays - 将单行二维数组作为输入传递给verilog中的模块

我想知道是否有任何方法可以将单行二维数组值作为输入传递给 Verilog 中的模块。

假设我的数组是这样定义的:

mod1具有以下定义:

我使用 icarus verilog 作为我的编译器。当我使用该标志进行编译时-g2012,它会引发以下错误:

有人可以帮我弄这个吗?

0 投票
1 回答
413 浏览

shell - 如何从文件夹中添加除iverilog命令行指令中的一个文件之外的所有文件?

我知道,如果我想包含所有 Verilog 文件,我可以通过添加如下文件来做到这一点:

它获取all_new2文件夹中的所有文件并将testbench.v设置为顶级模块。但是,我希望从此文件夹中排除文件c_functions.v文件。我该怎么做?

0 投票
1 回答
48 浏览

verilog - 参数可以可变吗

我知道我们可以使用参数来制作通用模块,并提高代码的可读性。我的问题是我们是否可以将这些参数本身作为变量。像这样的东西:

在这里,我希望p1将changeingParameterModule 的端口视为parameterModulep1的参数。这可能吗?

我使用 icarus-verilog 和 Quartus Prime Lite。

0 投票
1 回答
126 浏览

python - 如何知道 cocotb 测试台使用的是哪个模拟器?

为了测试我的 Verilog 设计,我使用了两个不同的模拟器:IcarusVerilator。这是有效的,但它们之间存在一些差异。

例如,我无法使用 verilator 读取模块参数,但 Icarus 可以。

有没有办法知道 python testfile 中使用了哪个模拟器?

我想写这样的东西:

能够管理两个模拟器并进行比较。