标签: system-verilog

在系统verilog中打包vs unpacked向量

看一下我在System Verilog中维护的一些代码,我看到一些定义如下的信号:

node [range_hi:range_lo]x;
Run Code Online (Sandbox Code Playgroud)

和其他定义如下:

node y[range_hi:range_lo];
Run Code Online (Sandbox Code Playgroud)

据我所知,它x被定义为packed,而y被定义为unpacked.但是,我不知道这意味着什么.

System Verilog中的打包和解包矢量有什么区别?

编辑:回应@Empi的答案,为什么要在SV中编写的硬件设计师关心数组的内部表示?有没有时候我不应该不能使用打包信号?

vector system-verilog

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

VHDL/Verilog相关的编程论坛?

使用VHDL或Verilog进行硬件设计更像是现在的编程.但是,我看到SO成员并没有那么积极地谈论VHDL/Verilog编程.

有没有关于使用Verilog/VHDL/SystemVerilog或SystemC处理硬件设计的论坛?

verilog vhdl system-verilog systemc

25
推荐指数
2
解决办法
8229
查看次数

如何解释Verilog中的阻塞与非阻塞分配?

在绘制硬件图时,我对如何解释阻塞和非阻塞分配感到有些困惑.我们是否必须推断非阻塞分配给我们一个寄存器?然后根据这个陈述c <= a+b ,c将是一个注册权,但不是a和b?

module add (input logic clock,  
output logic[7:0] f);   

logic[7:0] a, b, c;  

always_ff @(posedge clock)  
begin   
  a = b + c;   
  b = c + a;   
  c <= a + b;  
end   

assign f = c;  

endmodule
Run Code Online (Sandbox Code Playgroud)

verilog system-verilog

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

使用+编制索引向量和数组:

我在SystemVerilog中看到一个代码如下:

if(address[2*pointer+:2])
  do_something;
Run Code Online (Sandbox Code Playgroud)

我应该如何理解+:索引此向量的时间?

我发现它被称为位切片,但我无法找到它的解释.

system-verilog

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

RAM DEPTH的地址宽度

我正在实现一个可配置的DPRAM,其中RAM DEPTH是参数.

如何从RAM DEPTH确定ADDRESS WIDTH?

我知道关系RAM DEPTH = 2 ^(ADDRESS WIDTH)

即ADDRESS WIDTH = log(base 2)RAM DEPTH.

如何在Verilog中实现log(base 2)函数?

verilog system-verilog

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

SystemVerilog数据类型的区别(reg,逻辑,位)

systemverilog中有不同的数据类型,可以像下面这样使用:

reg [31:0] data;
logic [31:0] data;
bit [31:0] data;
Run Code Online (Sandbox Code Playgroud)

他们三个如何不同?

system-verilog

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

always_ff,always_comb,always_latch和always之间的区别

我完全这4个学期中的困惑:always_ff,always_comb,always_latchalways.这些如何使用以及用于何种目的?

system-verilog

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

什么是`+:`和` - :`?

我最近在verilog/systemverilog代码中看到了这个运算符.

logic [15:0] down_vect;
logic [0:15] up_vect;

down_vect[lsb_base_expr +: width_expr]
up_vect  [msb_base_expr +: width_expr]
down_vect[msb_base_expr -: width_expr]
up_vect  [lsb_base_expr -: width_expr]
Run Code Online (Sandbox Code Playgroud)

我很少见到这一点,我想问一下这是什么,何时以及如何使用它?

verilog system-verilog

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

$ size,$ bits,verilog

verilog中$size$bits运算符有什么区别?如果我有变量[9:0]a,[6:0]b,[31:0]c.

c <= [($size(a)+$size(b)-1]-:$bits(b)];
Run Code Online (Sandbox Code Playgroud)

上面表达式中'c'的输出是什么?

arrays verilog system-verilog

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

如何从预处理器宏创建字符串

我有一个预处理器宏,代表我的设计的分层路径.

例:

`define HPATH top.chip.block
Run Code Online (Sandbox Code Playgroud)

我需要构造一个保存值的字符串`HPATH,所以在我的例子中字符串应该相等top.chip.block.

有没有办法构建这样的字符串?

以下尝试都没有奏效:

string hpath;
hpath = "`HPATH";     // Results in hpath = "`HPATH"
hpath = \"``HPATH\";  // Doesn't compile
hpath = `HPATH;       // Doesn't compile
Run Code Online (Sandbox Code Playgroud)

我希望hpath等同于执行此分配hpath = "top.chip.block",但通过使用`HPATH而不是再次指定路径.

我无法使用,%m因为我需要在我的顶级UVM环境中的字符串,而不是在模块中.

更多背景:我想这样做的原因是因为我在UVM类库中使用后门寄存器访问.后门API需要将hdl_path设置为设计中的块,作为字符串.我已经定义了分层路径,并且在指定hdl_paths时尝试重用它们,所以我没有定义两次相同的路径.我的测试平台将使用分层路径和字符串路径.

macros verilog system-verilog

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

标签 统计

system-verilog ×10

verilog ×6

arrays ×1

macros ×1

systemc ×1

vector ×1

vhdl ×1