Verilog 将为变量分配哪些值。[需要了解程序逻辑]

Verilog 将为变量分配哪些值。[需要了解程序逻辑],verilog,system-verilog,Verilog,System Verilog,我是Verilog的初学者。我需要理解测试用例的逻辑,但由于这些变量的逻辑,我遇到了困难 这些是定义整数类型的F和G。我读到参数是常量 'define F 32 'define G 0 module M(...); parameter pMaxPacketsSize =1024; localparam pTotalBits=3*'G; localparam pForcePktSize=(pMaxPacketsSize-'F); loc

我是Verilog的初学者。我需要理解测试用例的逻辑,但由于这些变量的逻辑,我遇到了困难

这些是定义整数类型的F和G。我读到参数是常量

    'define F 32
    'define G 0

    module M(...);

    parameter  pMaxPacketsSize =1024;
    localparam pTotalBits=3*'G;
    localparam pForcePktSize=(pMaxPacketsSize-'F);
    localparam pLastPacketSize =((pTotalBits-1)%(pForcePktSize))+1;
    localparam pNumTransactions=((pTotalBits-1)/(pForcePktSize))+1;
    localparam pPortSize=(pNumTransactions>1)?pMaxPacketsSize:((((pTotalBits-1)/32)+1)*32)+'F;
当G被定义为0时, ForcePacketsize的值是多少。我尝试了二进制减法,得到了128(7位)[是否正确?].[0-32]。所有这些操作都需要用二进制算法执行。我想知道这些参数(pForcePktSize、pLastPacketSize、PNumTransactions)的值

我想了解的另一个说法是:

wire[pPortSize-1:0]D;
wire[pNumTransactions-1:0] t;
assign t=1'b1<<D[14:0];
wire[pPortSize-1:0]D;
电线[pNumTransactions-1:0]t;

在verilog中指定t=1'b1
`define
c
中的
#define
相同。它定义了一个文本宏
`G
`F
实例化宏,并在解析之前被程序中的上下文替换

那么,在你的情况下

localparam pTotalBits=3*'G;
localparam pForcePktSize=(pMaxPacketsSize-'F);
将被替换为

localparam pTotalBits=3*0;
localparam pForcePktSize=(pMaxPacketsSize-32);

替换是文本的,宏的实例化刚刚被它们的定义替换。没有与宏定义相关联的类型。

那么pLastPacketSize中将存储什么值?是否发生二进制模对不起,在替换中得到了额外的回勾,已修复<代码>pTotalBits
将为
0
<代码>塑料袋大小将为
1024-32=992