小编dav*_*_59的帖子

在systemverilog#中,当信号快于延迟时,延迟失败

以下systemverilog中的代码失败:

module test_dly;
  reg clk = 0;
  wire w_clk_d;

  always #1ns  clk <= ~clk;
  assign #1400ps w_clk_d = clk;
endmodule
Run Code Online (Sandbox Code Playgroud)

我预计w_clk_d将是clk的延迟版本,但事实并非如此.似乎#如果新事件在延迟到期之前到达,则#不工作.我编写了代码来处理这个问题,但有没有办法让#按预期工作?谢谢,

system-verilog

4
推荐指数
2
解决办法
9888
查看次数

数组元素的 Verilog OR

我想按如下方式对参数化的 32 位总线进行“或”运算:out_bus = bus1 | 巴士2 | 巴士 3 | ... | 总线N;

我还想将总线声明为数组(N 是一个固定参数,在编译时定义):

reg [31:0] 总线[N-1:0];

我能想到的最好方法是这样的:

parameter N;
reg [N-1:0] temp;
reg [31:0] out_bus;
reg [31:0] bus[N-1:0];

always @(*) begin       
   for (j=0; j<32; j=j+1) begin : bits
     for (k=0; k < N; k=k+1) begin : bus
       temp = bus[k][j];
     end
     out_bus[j] = |temp;
   end
end
Run Code Online (Sandbox Code Playgroud)

这个必须是可以综合的。必须有一个更干净/更好的方法,不是吗?

arrays for-loop verilog system-verilog

4
推荐指数
1
解决办法
2510
查看次数

请解释此SystemVerilog语法{&gt;&gt; byte {...}}

以下程序的答案是{6,7,8},但我不明白为什么,请解释一下:

module q ();
  typedef byte byteq[$];
  initial begin
    byte ans[$];

    ans = byteq'({>>byte{24'h060708}});
    $display("A:expect '{6,7,8} get %p", ans);
  end
endmodule
Run Code Online (Sandbox Code Playgroud)

verilog bit-shift system-verilog

3
推荐指数
1
解决办法
7334
查看次数

How does recursion work in Verilog?

I was supposed to apply recursion in Verilog . The code which I have designed doesn't show any error. Please have a look at my code where the task (splitt00) is recursively called. Does Verilog support recursion and how can I implement a recursive logic?

task split00;
input [0:n-1] a;
input   [0:n-1] b;
input [0:n-1] num0;
output [0:2*n-1] s;
reg [0:n-1] a0,b0,u0,v0,w0,s0,s1,a1,b1,a2,b2,u1,w1,v1;
reg [0:n-1] num00;
begin
     num00=num0;
     if(num00==2)
        begin
            u0=(a/10)*(b/10);
            w0=(a%10)*(b%10);
            if (((a%10-a/10)*(b%10-b/10))<0)
            begin
            v0=((a%10-a/10)*(b%10-b/10))*-1;
            s=u0*100+(u0+w0+v0)*10+w0;
            end
            else
            begin
            v0=((a%10-a/10)*(b%10-b/10)); …
Run Code Online (Sandbox Code Playgroud)

recursion verilog system-verilog

3
推荐指数
1
解决办法
2231
查看次数

verilog中'1是什么意思?

我有一个4位寄存器。

 reg[3:0] a;
Run Code Online (Sandbox Code Playgroud)

我想给它分配一个位,就像

 a <= '1;
Run Code Online (Sandbox Code Playgroud)

显然它不是相同的 1'b1 和 1。我是 verilog 新手,不确定它的语法。任何人都可以启发我吗?

verilog system-verilog

3
推荐指数
1
解决办法
1万
查看次数

连续分配verilog

- 此代码使用Modelsim 10.2d以verilog编写.下面的错误表明{cout,l3}赋值存在一些问题.

module alu(a,b,bin,cin,op,cout,res);
input [31:0] a,b;
input [1:0] op;
input bin,cin;
reg [31:0] l1,l2,l3;
output cout;
output [31:0] res;

assign l1 = a & b;
assign l2 = a | b;

initial
if(bin == 1'b0)
  assign {cout,l3} = a + b + cin;
else
  assign {cout,l3} = a - b + cin;

mux4to1(l1,l2,l3,op,res);
endmodule

Error-
v(14): LHS in procedural continuous assignment may not be a net: cout.
v(16): LHS in procedural continuous assignment may not be a net: …
Run Code Online (Sandbox Code Playgroud)

verilog variable-assignment system-verilog alu

2
推荐指数
1
解决办法
1万
查看次数

system中的"ref"是什么意思?

我发现这个systemverilog:

task automatic xxx(ref xxxpackage bus,input interface ift);
Run Code Online (Sandbox Code Playgroud)

我想知道它的用法ref.有什么好处?

system-verilog

2
推荐指数
1
解决办法
2万
查看次数

systemverilog中逻辑语句的非常量索引

我正在尝试创建一个for循环,在循环迭代的情况下为逻辑数组分配不同的值.

所以,例如,假设我试图实例化两个不同的砖,宽度为10,高度为5.我们也说这些值都是10位.对于两块砖,我有代码:

logic[19:0] Brick_Width;
logic[19:0] Brick_Height;
Run Code Online (Sandbox Code Playgroud)

第一块砖的宽度和高度将被分配到最重要的10位,第二块的最低有效位为10位.

这是我目前拥有的代码:

int i = 19;
initial
begin
 for(i=19; i>=0; i=i-10)
 begin
  assign Brick_Width[i:i-9] = 10;
  assign Brick_Height[i:i-9] = 5;
 end
end
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个错误,说"我"不是一个常数.关于如何做到这一点的任何想法?

verilog system-verilog

1
推荐指数
1
解决办法
2858
查看次数

SystemVerilog 中的 Prepone 区域

SystemVerilog仿真中,预分配区域是给定时隙中的几个区域之一。该地区的实际目的是什么?谁能用一个有效的例子来解释这一点?

system-verilog vlsi asic

1
推荐指数
1
解决办法
1496
查看次数

SystemVerilog wait() 语句

SystemVerilog 是否支持以下代码?

int cnt = 0;
wait( cnt == (cnt+1) )
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出LRM中的部分吗?

verilog system-verilog uvm

0
推荐指数
1
解决办法
3万
查看次数