OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 689|回复: 0

[XILINX] 仿真过程数据以TXT导出数据丢失问题

[复制链接]

40

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
391
金钱
391
注册时间
2019-7-5
在线时间
97 小时
发表于 2024-4-2 18:26:02 | 显示全部楼层 |阅读模式
50金钱
在使用Vivado或者使用Modelsim仿真的时候,有时候需要把数据导出来到MATLAB中,和MATLAB的仿真结果对比。
之前一直使用的是$fdisplay对数据进行输出,如下所示。
(需要输出的信号都配对了同步信号用来确保不会有无效的数据导出去)
  1.     /* synthesis translate_off */
  2.     integer handle;
  3.     initial begin
  4.         handle = $fopen("../../../../sim_out_data/sim3/wave0_data0_real.txt");
  5.     end

  6.     always@(posedge clk_200MHz)begin
  7.         if(wave0_valid)
  8.             $fdisplay(handle,"%d",wave0_data0_real);
  9.     end

  10.     /* synthesis translate_on */
复制代码



但是当同时用这种方法同时导出很多信号的时候,就会发现有的数据对应的txt文件会丢失,不会建立相应的文件
或者建立了但是文件一直是0KB(查看文件的时候已经退出了仿真)


在网上看到另外一种使用tcl语言的方法:
  1. proc write_sim_data {env name radix cycle file} {
  2.     set fid [open $file w]
  3.     for {set i 0} {$i <= $::now} {incr i [expr $cycle * 1000]} {
  4.         set str [exa -env $env -radix $radix -time ${i}ps {*}$name]
  5.         puts $fid $str
  6.     }
  7.     close $fid
  8. }
复制代码
但是这种也存在问题:没办法关联数据有效信号以及数据时钟,只能取决于Modelsim的绝对时钟


所有想请问一下有没有其他更好的导出的方式?(现在主要用的是Modelsim仿真)

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 10:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表