问题标签 [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 回答
653 浏览

module - 意外的高阻抗状态

我在模块的输出端口上遇到了意外的高阻抗状态问题。实例化其他模块的模块代码如下:

可实例化模块的端口声明如下:

输出的分配是在初始块中进行的,如下所示:

所以,现在的问题是,如果它 AMOUNT_OF_REGIONS == 3 或 2 那么一切正常,但如果我试图增加它的值,那么对于介于 1 和 AMOUNT_OF_REGIONS-2(包括)之间的所有区域,它们的输入和输出搞砸了(2'bzz)。但是 0 区域很好地向区域 1 发送信息,并且 AMOUNT_OF_REGIONS-1 区域将信息正确地发送给它的邻居。测试台只是实例化一列并生成触发和 clk 信号。我已经读过,如果只有电线连接而没有连接到可能导致高阻抗状态的寄存器,但据我所知,我正在将电线连接到输出寄存器......亲爱的,什么可能是有问题吗?如果重要的话,我正在使用 Icarus Verilog。

0 投票
2 回答
9805 浏览

verilog - icarus 的 SystemVerilog 支持(iverilog 编译器)

iverilog在 Mac 上使用,我在编译一些包含always_ffalways_comb块的代码时遇到问题。ModelSim 编译这些代码没有任何问题。是否可以配置iverilog为支持always_ffalways_comb阻止,或者编译器不支持它们?

0 投票
1 回答
970 浏览

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

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

这是我写的测试台:

以下是错误消息:

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

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

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

verilog - 在 Icarus Verilog 中读取文件

我有一个文件 data.txt,它有 1200 行,每行代表一个 16 位二进制字符串,如下所示。

“0001111111000000”

我正在尝试使用 Icarus Verilog 编写一个测试平台,它读取文件的每一行并将每一行发送到一个 .v 文件,该文件将在文件的每一行上运行一些简单的 if 语句(一个简单的分类算法)。

我的代码如下。

和我的 generate.v 文件:

我被困在这部分代码上。我不确定如何为文件的每一行调用 generate.v 文件。

一个更好的方法是将我的数据保存到 $readmemb 并使用它,但我希望这样做。

非常感谢任何建议。

0 投票
1 回答
278 浏览

system-verilog - 在 verilog 中实现 4x1 多路复用器的问题

我遇到了 4x1 多路复用器的问题。代码如下:

不幸的是,当我尝试在其他地方使用它时,它给了我以下错误:

testbench.sv:613:错误:无法在“testModule.RWTest.mux1”中绑定参数选择 testbench.sv:613:错误:无法评估 genvar 案例表达式:选择

第 613 行是case (select) line. 我已经对此进行了很多研究,并且在其他情况下也看到了极其相似的代码,因此我不确定到底是什么问题。

0 投票
1 回答
1781 浏览

verilog - 未解决的 net/uwire 不能有多个驱动程序

我对以下代码有一些问题:

基本上我的代码试图做的是设置wire t为二进制解码器的输出以及其他 5x32 解码器的输入(这里省略了一些)。然后,根据解码器的值,它为 ld 分配一个值,该值基本上只是一个启用信号(如果任何解码器位为 1,则启用为 1,否则为 0)。然后这些值进入一个寄存器,并由电线(globalReg1、、globalReg2等)输出。如果重要的话,他们都使用相同的时钟。

我得到的编译错误是

testbench.sv:37:错误:未解决的 net/uwire ld 不能有多个驱动程序。

在分配的每一行中;assign ld = (bitDecoder1[1]== 32'b0||bitDecoder2[1]== 32'b0||bitDecoder3[1]== 32'b0||bitDecoder4[1]== 32'b0);

我还尝试将上面的行放在always @(*) beginandend语句之间(因为我认为您总是必须在代码的逻辑部分之间这样做),但这只会给我一个错误:

testbench.sv:33:错误:ld 无法分配给未解析的电线。

如果有人能指出我正确的方向,我将永远感激不尽。谢谢!

0 投票
3 回答
243 浏览

recursion - iverilog递归函数导致分段错误

这是有问题的代码:

基本上,iverilog (Icarus Verilog) 只是给了我一个Segmentation fault: 11 vvp svsim错误。
我尝试了一些调试,它似乎不喜欢递归,即使我有一个递归锚。
不过,从内部调用函数不是问题。也测试过。
任何帮助表示赞赏!

编辑:
这里我有一段代码调用此函数失败:

0 投票
1 回答
173 浏览

verilog - Verilog 全加器意外行为

我正在尝试做一个非常基本的硬件模块/测试台来掌握 Verilog。我试图实现一个全加器。

如果我没记错的话,你有三个输入,立即加数 a 和 b 以及从 2^n-1 位进位的进位。

输出是求和和进位(可以作为基本加法器中另一个模块的进位或调用非进位先行的任何方法。)

如果我没记错的话,输出逻辑是

总和 = (a&b) | (a&cin) | (b&cin) // 或全部三个,由这些中的任何一个覆盖

cout = a ^ b ^ cin

这是完整的加法器模块

这是测试台

我的输出看起来像这样

a:0,b:0,cin:0

s:0,cout:0

a:0,b:0,cin:1

s:0,cout:0

a:0,b:1,cin:0

s:1,cout:0

a:0,b:1,cin:1

s:1,cout:0

a:1,b:0,cin:0

s:0,cout:1

a:1,b:0,cin:1

s:1,cout:0

a:1,b:1,cin:0

s:0,cout:1

a:1,b:1,cin:1

s:0,cout:1

我相信我的代码中的逻辑语句与我在上面写的布尔方程相匹配。我对自己的逻辑很有信心。我似乎无法弄清楚 Verilog 有什么问题。我是否错过了全加器测试台的计时和输入?

0 投票
2 回答
1603 浏览

verilog - 无法理解的循环 Icarus Verilog

我正在尝试遵循此处提供的基本示例。 https://www.youtube.com/watch?v=13CzlujAayc&list=PLUtfVcb-iqn8ff92DJ0SZqwsX4W1s_oab&index=17

这是我的确切代码

maj3.v

测试台.v

我正在尝试使用 Icarus Verilog 进行编译,但出现此错误

我已经查看了我的代码几次,我相信我有与讲师完全相同的行,并且我使用的是相同的编译器。唯一的区别是他在浏览器中运行,而我在 Ubuntu 终端中运行