问题标签 [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.
verilog - 我收到编译错误:data_out 不是有效的左值
这是模块单元...
/li>这是测试台
/li>我正在使用 linux 中的 iverilog 命令编译此代码。
iverilog -o register_unit.v register_unit_tb.v
在编译代码时,它在 data_out 端口上出现错误,它说它是无效的转换。
错误是 data_out 不是 test_bench 中的有效左值,并且 data_out 在这里被声明为线。
verilog - icarus 的 SystemVerilog 支持(iverilog 编译器)
我iverilog
在 Mac 上使用,我在编译一些包含always_ff
和always_comb
块的代码时遇到问题。ModelSim 编译这些代码没有任何问题。是否可以配置iverilog
为支持always_ff
和always_comb
阻止,或者编译器不支持它们?
verilog - Verilog - 嵌套生成具有多个 genvars 的循环,不可能?
我试图在下面的代码中向我的生成循环中添加第二级嵌套,但是iverilog 抛出了一个错误,即寄存器j
未知:
../crc.v:119: register ``j'' unknown in crc_tb.U_crc.loop[31].
那么是否可以在verilog中使用多个genvars?看起来像是j
被解释为一个寄存器。
代码片段:
verilog - 如何在verilog中获得可合成的延迟
我在verilog中做了一个错误控制代码,我得到了18000 ns延迟的解码数据。我需要将解码后的数据与原始数据进行比较,但我的原始数据开始大约 100 ns,那么如何对这两个信号进行比较。
如何在verilog中延迟我的输入数据并且应该是可合成的?
我需要实现这是硬件。
arrays - Icarus 不知道如何解析 localparam 数组?
我正在使用 Windows 8.1 的 Icarus Verilog v10 并且在编译一维数组时遇到了问题,例如:
或二维数组,如:
当我尝试在命令提示符下使用 iverilog 编译它时:iverilog -o tb.vvp ".v files here"
我收到以下错误:
第 39 行和第 54 行是上面两个阵列所在的行。
出了什么问题,我该如何解决这个荒谬的错误?
verilog - $signal 的算术移位在条件表达式中给出不同的结果并且总是阻塞
我正在为 MIPS 编写 ALU。
我曾经把它写成顺序逻辑(或总是块?我不知道为什么但c
必须是reg
所以我猜它是顺序逻辑?)
好像是组合逻辑
而且效果很好,4'b0100: c = $signed(mux_b) >>> mux_a[4:0]
可以得到正确的输出。但是由于某些原因,我决定使用组合逻辑条件表达式。
这几乎是一样的,除了c
是一个wire
。
我运行这段代码,它告诉我,4294967280 (FFFFFFF0) >>> 8 = 33554431 (1FFFFFF) 这太荒谬了。
但如果我(op == 4'b0100) ? ({ {31{mux_b[32]}}, mux_b} >> mux_a[4:0]) :
改用,我可以得到正确的结果。
谁能告诉我原因?以下是这些变量的定义方式(使用 33 位作为溢出标志)
time - Verilog:顺序阻塞时间
为什么顺序块(非并行)中所有指令的时间都相同?
IE
输出:
testing - Verilog:=== 运算符不工作
我有一根电线:
最后,我使用以下方法在网络上测试二进制文件:
输出:
当它清楚地显示时为什么它会失败module3Output=1
?
如果需要,我可以发布完整的代码。
verilog - Verilog:如何扩展寄存器中的二进制文件?
对寄存器中的二进制文件进行符号扩展和零扩展的代码格式是什么?
IE
符号扩展a
为 32 位,将其添加到 中b
,并将结果放入c
.
零扩展a
为 32 位,将其添加到b
,并将结果放入c
.
verilog - Verilog:使用原始模块与位运算符的实现
我正在阅读的教科书使用内置的原始模块实现了 1 位加法器:
但是为什么不使用按位运算符呢?看起来更简单。
除非按位运算符隐式使用原始模块?