【发布时间】:2019-04-04 23:35:52
【问题描述】:
我正在尝试在系统 verilog 中为数据包编写约束。我有一个数据包,其大小可以是 0-4096 位,我需要在我的数据包类中编写一个约束,即数据包应该是 4 字节对齐的并且它不应该跨越 4k 边界或者如果起始地址高于 4k,它不应跨越 8k 边界,依此类推,最高可达 1GB。所以,问题是我可以为第一个 4k 边界编写一个约束,如下所示(如果它看起来不错?)但是如果起始地址高于 4K 并且在这种情况下它不应该超过 8K 或者如果起始地址在8K以上,以此类推,如何写一个通用的约束??
class packet
int size;
rand bit [31:0] addr; // start address
rand bit [7:0] data[]; // data
rand bit [15:0] size; // size of packet
constraint size_c { size inside [0:4096]; }
constraint addr_c { addr[0:1]==0; // for 4 byte alignment
addr[12:0] <'h1000 - size; }
endclass
【问题讨论】:
标签: constraints system-verilog