Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

What difference of file write operation between MSVC and MINGW421?

Status
Not open for further replies.

ruwan2

Member level 5
Member level 5
Joined
Nov 29, 2011
Messages
90
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Visit site
Activity points
2,141
Hi,

I have a code run well with Microsoft Visio Studio Express 10.0, but I would like to run with Modelsim which has MINGW4.2.1. I find that the file write operation fails. If I comment out the file operation part, it works.



What requirement for SystemC 2.3.1 work with Modelsim?

BTW, how to know the SytemsC library version in Modelsim? I can see that when run MSVC, Windows, but no such info in mingw4.2.1 under Modelsim.


The code is attached below.


Thanks a lot,


.h file:


Code C++ - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#define FILE_WRITE 1
/*
#undef FILE_WRITE
*/
struct fir: sc_module{  
  sc_in<bool>  reset;
  sc_in<bool>  input_valid;        
  sc_in<int>   sample;          
  sc_out<bool> output_data_ready;
  sc_out<int>  result;
  sc_in_clk    CLK;
  int          index;
#ifdef FILE_WRITE
  FILE* fp_real;//  ofstream       myfile;
#endif
  sc_int<9> coefs[16];
 
  SC_CTOR(fir)
     {      
      SC_CTHREAD(entry, CLK.pos());
      reset_signal_is(reset,true);
      #include "fir_const.h"
    }
  
  void entry();
 
#ifdef FILE_WRITE
  ~fir()
  {
    fclose( fp_real );
  }
#endif
};




.c file:


Code C++ - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
void fir::entry() {
 
  sc_int<8>  sample_tmp;
  sc_int<17> pro;
  sc_int<19> acc;
  sc_int<8> shift[16];
  sc_uint<16> val;  //variable to hold data
  int tmp_out;
 
  // reset watching
  /* this would be an unrolled loop */
#ifdef FILE_WRITE    
  fp_real = fopen("out_example.txt","w");
#endif 
  
  for (int i=0; i<=15; i++) 
    shift[i] = 0;
  result.write(0);
  output_data_ready.write(false);
  wait();
 
  // main functionality
  index=0;
 
  while(1) {
    output_data_ready.write(false);
    do 
    { 
      wait(); 
    }while ( !(input_valid == true) );
    sample_tmp = sample.read();
    acc = sample_tmp*coefs[0];
 
    for(int i=14; i>=0; i--) {
      /* this would be an unrolled loop */
      pro = shift[i]*coefs[i+1];
      acc += pro;
    };
 
    for(int i=14; i>=0; i--) {
      /* this would be an unrolled loop */
      shift[i+1] = shift[i];
    };
 
    shift[0] = sample_tmp;
    // write output values
    result.write((int)acc); 
    output_data_ready.write(true);/*
    myfile << "shift[xxxxxx]";
    myfile << "index=" << index << endl;
    cout << "index=" << index << endl;*/
#ifdef FILE_WRITE    
//    fprintf(fp_real,"%d  \n", tmp_out);
#endif    
    index++;
    wait();
  };
}

 
Last edited by a moderator:

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top