问题标签 [iverilog]

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

verilog - Verilog 错误:无法在模块中绑定参数

我是 Verilog 的新手,如果有人能帮我解决这个错误,我将不胜感激:

我正在尝试编写一个测试台PU_tb,它正在实例化这个模块:

模块 PU_conv 如下所示:

我收到此错误:

错误:无法在“PU_tb”中绑定参数“image_height”
错误:无法在“PU_tb”中绑定参数“image_width”错误:无法在“PU_tb”
中绑定参数“kernel_height”
错误:无法在“中绑定参数“kernel_width” PU_tb'

内核和图像的宽度和高度声明如下:

我究竟做错了什么?

0 投票
2 回答
293 浏览

verilog - 如何使用生成语句重写此代码?

我有一个看起来像这样的 Verilog 代码。

如何使用generate语句编写此代码?请注意,输入top固定在top. 我无法将其更改为像a[2:0].

0 投票
1 回答
228 浏览

for-loop - “for”的输出是未知的,而不是 Verilog 中的 1

我正在使用 Icarus iVerilog 来合成和测试我的代码,但是当逻辑上应该出现 1 时,我得到了未知值。这是我正在尝试做的一个例子。

这应该产生一些形式的门

我的预期输出是

我实际上得到

我找不到 x 的任何原因,并且开始怀疑这是 iVerilog 的问题。

0 投票
1 回答
5607 浏览

verilog - 移位和加法乘数的 Verilog 代码

大家好,我创建了一个 Shift - And - Add 乘数。我对为什么我的输出错误并且总是在 85 感到困惑。这是测试台的问题吗?顺便说一句,它正在工作。

新1.v

tb_new1.v

我多次运行代码,一切似乎都在遵循我的 FSM。谁能指出哪里出错了。对这个真的很困惑

0 投票
1 回答
126 浏览

version-control - vcs 与 iverilog/modelsim 对 Systemverilog 规则 4.7(非确定性)的解释不同

对于 SystemVerilog 的 2012 规则 4.7 是如何实现的,我仍然有些困惑。该规则规定,在这样的情况下:

所有分配都将安排在非阻塞分配队列上,然后必须按顺序执行。最后一个值获胜。到这里,一切都清楚了。

但对于所有模拟器来说,接下来发生的事情并不相同。iverilog 和 Modelsim(至少 Vivado 2016/3 版)在“a”上创建一个事件,这会导致 cnt 增加。这似乎也符合卡明斯先生在 SNUG 2000 上说明的行为

然而,VCS 会过滤掉中间值并仅应用最后一个值,顺便说一下,这也是真正的触发器工作的方式。

在这种情况下,这不是纯粹的假设性讨论,仿真结果不同,iverilog/modelsim 行为可能会导致很难捕捉到的错误,因为触发器会切换,但波形中看不到值变化。

另一点是:如果iverilog/modelsim 是正确的,那么为什么他们要创建一个事件而不是两个?

编辑:附加说明。

上面的例子确实意义不大。一个更现实的情况是

这是完全合法的,并且在真正的硬件中永远不会出现故障。第一个总是在逻辑上实际上等同于

但是,如果您使用 ModelSim 模拟第一个版本,您会看到您的 q 愉快地切换,clk2 常量为 0。这将是调试的噩梦。

0 投票
1 回答
1539 浏览

verilog - 在结构 Verilog 中创建一个 32 位 ALU,我不太确定如何实现操作码

我必须使用 AND(000)、OR(001)、ADD(010)、SUB(110)、SLT(111) 和 BEQ(100) 的操作码在结构 verilog 中创建一个 32 位 ALU。我了解这些中的每一个如何在门级单独工作我只是对如何使用操作码来获得我想要的输出感到困惑。例如,如果它是一种高级语言,我会写一些类似 if opcode == 100 {output = branch} 的东西。如果这是一个愚蠢的问题,我很抱歉,我只是 verilog 的新手,网上的许多答案要么使用行为 verilog,要么非常令人困惑。

电路图

0 投票
1 回答
1866 浏览

arrays - 如何在“verilog”中创建一个数组(里面的代码)

我想创建一个名为“a”的数组并用任何二进制数填充它

它是一维数组,我的代码必须像 mips 中的 sw 一样(存储字)'m' 我想将它存储在 's' 中的值

谢谢,

///////////////////////////////////

0 投票
2 回答
4454 浏览

for-loop - 简单 Verilog for 循环中的错误

我正在熟悉 Verilog 做一些小练习,现在我正在尝试实现一个线性反馈移位寄存器。

我正在尝试使用 for 循环对始终块内的触发器链进行建模,但 iverilog 不断给我错误寄存器“i”,在 lfsr 中未知,其中“i”是迭代变量,lfsr 是我的模块。

有人可以帮帮我吗?

谢谢。

0 投票
1 回答
1136 浏览

verilog - 包含的iverilog语法?

我试图在我的主文件 (cpu.v) 中包含一个 Verilog 文件 (alu.v)。两个文件都在同一个目录中。

当我尝试编译它时,我收到以下错误。

我看不出 include 语句是怎么错的。我确定我的语法是正确的,如下所示

0 投票
1 回答
302 浏览

verilog - verilog 声明一个非线

试图声明一条线与 C 线相反,我们使用 nC 作为这条线。

我们的教授向我们展示了使用 or (destination,1,2);, and (destination,1,2); , 但不是 not();. 我们认为不应该是(nC, C);但它根本不起作用。