SystemVerilog编码技巧

发布时间 2023-07-05 20:53:26作者: 笑着刻印在那一张泛黄

工程组织

可以将一些公用的变量定义成package,放到同一个sv文件中,然后在需要用到公用变量的文件中通过import来引用变量,创建filelist时,需要通过+incdir+(包含package的sv文件的路径)来指示,并将这些package的sv列在其他sv前面

package rv_param_pkg;
	parameter WITDH = 8;
endpackage

package rv_typedef_pkg;
import rv_param_pkg::*;
typedef struct packed {
	logic [WIDTH-1:0] data;
} rv_l1d_req_t;

typedef enum logic [1:0] {
	FETCH = 2’b00,
	FLUSH = 2’b01,
	FLUSH_ALL = 2’b10;
} rv_opcode_e;
endpackage

module test
import rv_param_pkg::*;
import rv_typedef_pkg::*;
(
	input clk,
    input rstn
);

endmodule

常用语法

将变量设置为全0:assign a = ‘0;
获取变量位宽:$bits(a)
将logic转为枚举类型:exe_type_e’(a[1:0])