微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > NCVERILOG对文件读取系统函数支持问题

NCVERILOG对文件读取系统函数支持问题

时间:10-02 整理:3721RD 点击:
通过$fscanf读取文件,对应的代码在VCS和Modelsim编译运行可以(有警告,说是期望遇到一个任务,但实际遇到一个函数)
在NCELAB时报告了如下错误:
Function name encountered.  Expecting a task name. [2.7.4(IEEE Std 1364-2001)].
根据日志出问题的地方在“$fscanf(fp_r,"%h",txt_data);”这个地方

  1. `timescale 1ns / 1ps
  2. module tb_gen_data(txd_data,tklsb,tkmsb,rstn,clk1x,clk2x);
  3. output [15:0] txd_data;
  4. output tklsb,tkmsb,rstn;
  5. output clk1x,clk2x;
  6. reg  [15:0] din;

  7. wire [9:0] dtout;
  8. reg clk1x_tmp,clk2x_tmp;
  9. wire clk1x,clk2x;
  10. reg rst,pre_rst;
  11. reg [23:0] txt_data;

  12. integer fp,fp_r,i,fp_w;



  13. initial
  14.   begin
  15. #10  
  16.    clk1x_tmp <= 0;
  17.    clk2x_tmp <= 0;
  18.    rst <=1;
  19.    pre_rst<=1;
  20. #47 pre_rst <=0;   
  21. #1 rst <=0;   
  22.   end

  23. initial
  24.   begin
  25.     fp_r=$fopen("./base_data_8b10b.txt","r");
  26.   
  27.     if(!fp_r)begin
  28.       $display("Read File Error.");
  29.       $fclose(fp_r);   
  30.     end
  31.   

  32.     @(posedge clk1x)
  33.      begin
  34.        while(!($feof(fp_r)))
  35.          begin
  36.            @(posedge clk1x)
  37.              if(!pre_rst)begin      
  38.                $fscanf(fp_r,"%h",txt_data);
  39.                $display("%h",txt_data);
  40.              end
  41.          end
  42.      end
  43. end


  44. initial begin
  45.   fp_w=$fopen("./result_data_8b10b.txt","w");
  46.     if(!fp_w)begin
  47.       $display("Write File Error.");
  48.       $fclose(fp_w);   
  49.     end
  50.   
  51.     @(posedge clk1x)
  52.       begin
  53.         while(!($feof(fp_r)))
  54.           begin
  55.             @(posedge clk1x)     
  56.                 $fwrite(fp_w, "%h\n", txt_data);
  57.                $display("%h",dtout);
  58.           end
  59.       end
  60.    $fclose(fp_w);
  61.    $stop;   
  62. end



  63. always #5 clk1x_tmp =!clk1x_tmp;

  64. always #2.5 clk2x_tmp =!clk2x_tmp;

  65. assign #1 clk2x= clk2x_tmp;

  66. assign clk1x= clk1x_tmp;

  67. assign txd_data= txt_data[15:0];
  68. assign tklsb=txt_data[16];
  69. assign tkmsb=txt_data[17];
  70. assign rstn=~rst;

  71. endmodule

复制代码

沉的真快

fscanf是个函数,调用时加上返回值即可。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top