gpt4 book ai didi

vhdl - 有没有办法将 modelsim 模拟中的信号值打印到文件中?

转载 作者:行者123 更新时间:2023-12-04 04:53:30 25 4
gpt4 key购买 nike

我需要获取几个信号的值,以便根据仿真检查它们(仿真是在 Matlab 中进行的)。有很多值,我想将它们放入一个文件中,以便我可以在脚本中运行它并避免手动复制这些值。

有没有办法自动将多个信号的值打印到文本文件中?

(该设计是用VHDL实现的)

最佳答案

首先创建将 std_logicstd_logic_vector 转换为字符串如:

function to_bstring(sl : std_logic) return string is
variable sl_str_v : string(1 to 3); -- std_logic image with quotes around
begin
sl_str_v := std_logic'image(sl);
return "" & sl_str_v(2); -- "" & character to get string
end function;

function to_bstring(slv : std_logic_vector) return string is
alias slv_norm : std_logic_vector(1 to slv'length) is slv;
variable sl_str_v : string(1 to 1); -- String of std_logic
variable res_v : string(1 to slv'length);
begin
for idx in slv_norm'range loop
sl_str_v := to_bstring(slv_norm(idx));
res_v(idx) := sl_str_v(1);
end loop;
return res_v;
end function;

使用按位格式的优点是任何非 01 值都会显示具有精确的 std_logic 值,但情况并非如此,例如十六进制演示。

然后进行从 std_logic 写入字符串的过程并std_logic_vector 文件例如在 rising_edge(clk) 处,如下所示:

library std;
use std.textio.all;
...
process (clk) is
variable line_v : line;
file out_file : text open write_mode is "out.txt";
begin
if rising_edge(clk) then
write(line_v, to_bstring(rst) & " " & to_bstring(cnt_1) & " " & to_bstring(cnt_3));
writeline(out_file, line_v);
end if;
end process;

上面的示例使用 rst 作为 std_logic,使用 cnt_1cnt_3 作为std_logic_vector(7 降到 0)。 “out.txt”中的结果输出是:

1 00000000 00000000
1 00000000 00000000
1 00000000 00000000
0 00000000 00000000
0 00000001 00000011
0 00000010 00000110
0 00000011 00001001
0 00000100 00001100
0 00000101 00001111
0 00000110 00010010

关于vhdl - 有没有办法将 modelsim 模拟中的信号值打印到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24329155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com