13得票1回答
System Verilog中的++运算符是阻塞还是非阻塞的?

良好的编码规范建议在组合块中使用阻塞赋值,而在时序块中使用非阻塞赋值。我想在组合块中使用++运算符,但是我不知道它是否是阻塞的。那么这段代码是:input [3:0] some_bus; logic [2:0] count_ones; always_comb begin count_one...

13得票4回答
如何同时使用foreach和fork来并行执行某些操作?

这个问题并非特定于 UVM,但我正在处理的示例与 UVM 相关。 在我的 UVM 环境中,我有一个代理数组,我希望能够同时在它们所有代理上启动一条序列。 如果我执行以下操作:foreach (env.agt[i]) begin seq.start(env.agt[i].sqr);...

12得票2回答
在Verilog Generate语句中递增多个genvar

我正在尝试在Verilog中创建一个多级比较器,但我无法想出如何在单个generate循环中增加多个genvar。我正在尝试以下操作:genvar i,j; //Level 1 generate j=0; for (i=0;i<128;i=i+1) begin: level1...

12得票3回答
在Verilog中的Generate For循环中实例化模块

我正在尝试使用generate块在Verilog中实例化一些模块,因为我将会实例化不同数量的它们。genvar i; generate for (i=1; i<=10; i=i+1) begin status whatever_status ( .clk(...

12得票3回答
如何在Verilog中将二维数组的所有位都设为0?

我在Verilog中构建了一个8*2位数组来表示一块内存。 reg [1:0] m [0:7] 这个存储器有一个复位信号,如果复位为1,则该存储器中的所有位都应重置为0。但我不知道如何以简洁的方式设置m的所有位,因为如果存储器中有成千上万个位,那么以下方法显然是不可行的。 always...

12得票2回答
如何在Verilog中判断一个总线是否仅包含单个x?

我有一个测试台可以监视总线。 总线中的某些信号(位)可能为1'bx。出于各种原因,我需要知道总线中是否有任何信号为1'bx。 有什么最好的方法可以测试(不是针对合成,只用于仿真目的),以确定总线是否包含任何x? 我本来希望可以使用一个 Redcution OR 然后使用 ===,但这似乎无法工作。

11得票2回答
如何在Verilog中使用const

Instead of using module ... ( .. ) ; #15 endmodule 我想使用 module ... ( ... ) ; // GateDelay is a const, like in c language const int GateDel...

11得票2回答
@(posedge Clk); a<= 1'b1; 和 @(posedge Clk) a<= 1'b1; 的区别是什么?

这两者有什么不同吗?@(posedge Clk); a&lt;= 1'b1; 并且@(posedge Clk) a&lt;= 1'b1; 注意在Clk后面有分号。我在浏览测试台时遇到了类似的代码行。我进行了一些简单的实验,但是在仿真期间没有发现任何差异。这些行之后的代码执行顺序是否...

11得票3回答
在SystemVerilog中正确使用"disable fork"

我有以下类似于伪代码的内容:for (lets say 10 iterations) begin // Do some configuration changes fork begin ///apply input to design e...

11得票3回答
如何在Verilog中将长语句分成多行

例如,我有一个单独的长语句: $display("input_data: %x, output_data: %x, result: %x", input_data, ou...