在复杂的测试平台中,某些变量声明可能具有更长的数据类型规范,或者需要在测试平台的多个位置使用。
在这种情况下,我们可以使用typedef为现有数据类型提供用户定义的名称。 然后可以在整个代码中使用新的数据类型,因此,如果需要,可以避免在多个位置进行编辑。
// 正常声明可能会很长
unsigned shortint my_data;
enum {RED, YELLOW, GREEN} e_light;
bit [7:0] my_byte;
// 为这个长定义声明一个别名
typedef unsigned shortint u_shorti;
typedef enum {RED, YELLOW, GREEN} e_light;
typedef bit [7:0] ubyte;
// 使用这些新的数据类型创建变量
u_shorti my_data;
e_light light1;
ubyte my_byte;
Syntax
typedef data_type type_name [range];
Example
module tb;
typedef shortint unsigned u_shorti;
typedef enum {RED, YELLOW, GREEN} e_light;
typedef bit [7:0] ubyte;
initial begin
u_shorti data = 32'hface_cafe;
e_light light = GREEN;
ubyte cnt = 8'hFF;
$display ("light=%s data=0x%0h cnt=%0d", light.name(), data, cnt);
end
endmodule
Simulation Log
ncsim> run
light=GREEN data=0xcafe cnt=255
ncsim: *W,RNQUIE: Simulation is complete.
参考文献:
【1】https://www.chipverify.com/systemverilog/systemverilog-typdef-user-defined-data-type