将多个变量存储为单个十六进制字符串

时间:2016-07-08 18:18:12

标签: verilog system-verilog

我正在寻找一种方法将一些变量存储在一个变量中,这样我就可以输出一个字符串。

例如,我有变量;

int flow_val = "128";
int numb_val = "104";
int size_val = "256";

我可以使用$display像这样把它们放在一起

$display("32'h%0h%0h_%4h", flow_val, numb_val, size_val);

打印出来

32'h8068_0100

我一直在寻找是否有办法获得该输出并将其放入hex_val等变量中。我一直在尝试几种不同的东西,但却找不到任何相关的东西。

感谢您的任何意见!

1 个答案:

答案 0 :(得分:2)

可以使用

$sformatf。请参阅IEEE Std 1800-2012,第21.3.3节将数据格式化为字符串。

module tb;

int flow_val = 128;
int numb_val = 104;
int size_val = 256;
string hex_val;

initial begin
    hex_val = $sformatf("32'h%0h%0h_%4h", flow_val, numb_val, size_val);
    $display(hex_val);
end

endmodule

/*

Output:

32'h8068_0100

*/