问题标签 [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 投票
2 回答
1121 浏览

verilog - GtkWave 没有从 IVerilog 模拟中获得信号

我为我的代码编写了以下测试:

然后我编译它并使用以下命令在 GTKWave 中打开它:

当我这样做时,我得到以下输出:在此处输入图像描述

问题是我的信号即使在模拟中也不会变高。什么可能导致我的模拟不输出?

当我打开我的.vcd文件时,我得到以下输出:

0 投票
2 回答
107 浏览

verilog - 无需在iverilog中手动输入的测试台交替信号

我正在编写一个测试台,我希望能够让信号以某种模式变高和变低(像这样):在此处输入图像描述 目前我手动输入我想要的每次都是这样的:

问题在于,当我收到更多信号时(比如说 az 而不是 ab),每次手动输入和关联值都需要很长时间。因此,我想知道是否有一种方法可以使信号自动化。例如,如果我可以说 a 每 10 u 秒切换一次状态,b 每 20 u 秒切换一次,c 每 30 u 秒切换一次状态?

0 投票
1 回答
4252 浏览

verilog - 将 2 位模块(乘数)变成更多位

我有以下用于 2 位乘法器的代码:

我希望能够将其扩展到超过 2 位(32 位)。不过,我的代码结构对此提出了挑战。首先,我必须为模块提供 68 个参数。此外,我必须手动创建 64 根电线(电线 a0b1、a1b0、ha0c、a1b1 的重复)。最后,我需要手动写出一堆逻辑门和 HalfAdder 模块来连接所有逻辑。因此,我想知道是否有一种方法可以重构我的代码,以便能够实例化一个 n(传递的参数)大小的二进制乘数。

0 投票
1 回答
179 浏览

verilog - 测试台没有到达verilog中的最后一个测试用例

我编写了以下测试台来测试我的 Verilog 代码:

当我运行测试时,我从来没有得到我的 #70 的输出。这让我感到惊讶,因为我没有收到任何错误,而且一切似乎都运行良好,所以我不知道为什么它不会到达最后一个测试。这是我的输出的样子:在此处输入图像描述

还有一点需要注意的是,我从来没有在控制台中获得 FullAdder_Test 的输出(这一行):

0 投票
2 回答
2347 浏览

vhdl - 从命令行重新加载 gtkwave 中的 VCD 文件

我正在使用由 iverilog 和 gtkwave 生成​​的 VCD 文件。GUI 中有一个按钮,但我想从命令行重新加载波形窗口。我该怎么做呢?

0 投票
1 回答
944 浏览

verilog - 我不明白 iverilog 中的语法错误是什么

我这样写代码:

和伊卡洛斯向我展示了图像的答案,在此处输入图像描述 ,我不明白发生了什么。

也许这本身就是一个简单的问题,但我真的需要知道如何解决它,如果你看到我的问题,谢谢大家。

0 投票
1 回答
970 浏览

verilog - iverilog 测试台错误:输入被声明为线,但它不是

我对iverilog 非常陌生,并且正在创建一个计数器以将100Mhz 时钟频率降低到更容易使用的东西,作为更大项目的一部分。我找到了一些可以做到这一点的代码,所以我尝试为它编写一个测试平台。这是我找到的代码:

这是我写的测试台:

以下是错误消息:

第一条错误消息:clk 在这里被声明为线。但在原始代码或测试台中,它都没有被声明为连线。重置也是如此。我曾尝试从校内导师那里获得帮助,但他们不知道为什么会发生这种情况,或者能够就如何解决它提出建议。

谁能建议如何解决这个问题?

0 投票
1 回答
865 浏览

verilog - Verilog:原语或连续赋值

我正在运行这段代码

使用此测试平台:

每次迭代我都会得到 y4=X。据我了解,发生这种情况是因为没有为 y4 赋予初始值,默认值为 X。但是,我无法将 y4 的类型更改为 reg 以便为其赋值。这将导致在测试台,第 15 行,神经元 n4 中出现错误消息:

tb_neuron_xor.v:15: 错误: reg y4; 不能由原语或连续赋值驱动。tb_neuron_xor.v:15: 错误:输出端口表达式必须支持连续赋值。tb_neuron_xor.v:15: : 神经元的端口 y0 连接到 y4

我怎么能解决这个问题?

如果需要更好的上下文,这里是神经元模块的定义方式:

0 投票
1 回答
3937 浏览

mips - 如何在 icarus verilog 中包含文件?

我知道基本的 `include "filename.v" 命令。但是,我正在尝试包含另一个文件夹中的模块。现在,该模块还包括存在于同一文件夹中的其他模块。但是,当我尝试在最顶层运行模块时,出现错误。

在这里,我正在尝试制作一个 MIPS 处理器,它包含在文件“mips.v”中。该文件的第一条语句是“`include”IF/stage_if.v“。并且,在 IF 文件夹中,有许多文件存在,我已将它们包含在 stage_if.v 中,其中一个是“instruction_memory_if.v”。下面是目录级图。

0 投票
1 回答
34 浏览

verilog - 电汇语句的顺序改变行为

我的状态机中有以下数据转换:

这是唯一RESET改变的地方。

我的意图是:只有在DECODE状态下,当数据包有效时,再给寄存器赋值。在下一个(有效的)数据包到来并更改它之前,它应该停留在哪里。

当我用 iVerilog 模拟这个时,我得到了意想不到的结果。具体来说,当无效数据包 ( 8'b00000000) 到来时,RESET设置为零。但这不应该发生,因为VALID_PKT这不是真的。

现在奇怪的部分:如果我交换电线分配,即我写

然后我得到了预期的结果。这很奇怪,因为我认为线路分配的顺序无关紧要。

我不知道电线分配有什么微妙之处吗?