25 lines
		
	
	
		
			683 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			683 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include <chrono>
 | |
| #include <stdint.h>
 | |
| #include <systemc>
 | |
| 
 | |
| using namespace sc_core;
 | |
| 
 | |
| int sc_main(int argc, char* argv[]) {
 | |
|     const uint64_t NS_VAL = 100000000;
 | |
| 
 | |
|     sc_clock clk("clk", 1, SC_NS);
 | |
|     sc_time run_time(NS_VAL, SC_NS);
 | |
| 
 | |
|     auto start = std::chrono::high_resolution_clock::now();
 | |
|     sc_start(run_time);
 | |
|     auto end = std::chrono::high_resolution_clock::now();
 | |
|     auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
 | |
| 
 | |
|     double simulated_cycles = (double)NS_VAL;
 | |
|     double real_us = duration.count();
 | |
|     double speed_Mhz = simulated_cycles / real_us;
 | |
|     std::cout << "Simulation speed: " << speed_Mhz << " MHz\n";
 | |
| 
 | |
|     return 0;
 | |
| }
 |