Prime number generator with simulation time - EDA Playground
Warning! This exercise has been opened in another tab; autosave has been disabled. Close this tab or refresh to reactivate.

 Languages & Libraries

 Tools & Simulators

 Examples

206


25
 
1
// Code your testbench here
2
// or browse Examples
3
module dut;
4
  
5
  logic clk;
6
  initial begin
7
    clk = 1'b0;
8
    forever begin
9
      #40ns clk = ~clk;
10
    end
11
  end
12
  
13
  //Test Program
14
  initial begin
15
    $dumpfile("dump.vcd"); $dumpvars;
16
    repeat (120) 
17
      @(posedge clk);
18
    $finish;
19
  end
20
  
21
  prime_number_count u_prime(
22
    .clk(clk)
23
  );
24
  
25
endmodule
xxxxxxxxxx
1
64
 
1
module prime_number_count(
2
  input clk
3
);
4
5
//for count 1
6
parameter N =100;          // size of array
7
parameter N_bits = 32;
8
reg     [N_bits-1:0] prime_number[0:N-1]; // memory array for prime_number 
9
reg     [N_bits-1:0] prime_aftr50 [0:49]; // memory array to get       
10
integer     k;               // counter variable   
11
integer     k1;               // counter variable   
12
integer     count;  
13
integer     test;
14
realtime     time_s1 = 0;
15
realtime     time_s2 = 0;
16
integer      check; //Counts 1 to k
17
localparam S_INC   = 2'b01;
18
localparam S_CHECK = 2'b10;
19
reg [1:0] state;
20
21
initial begin
22
  $timeformat(-9, 2, " ns", 10); 
23
  prime_number[1] = 'd2;
24
  state           = S_CHECK; //Check set count first
25
  count           = 'd3;
26
  k               = 'd2; //0,1 preloaded
27
  check           = 'd1;
28
  test            = 'd1;
29
  k1              = 'd0;
30
end
31
32
  always @(posedge clk ) begin
33
     if(state == S_INC) begin  // if state is 1
34
       count <= count+1 ;
35
       state <= S_CHECK ;  // chang the state to 2
36
       check <= 'd1; // Do not check against [0] value 1
37
       test  <= 'd1; // Safe default
38
     end     
39
     else if (state == S_CHECK) begin
40
        if (test == 0) begin
41
          // Failed Prime test (exact divisor found)
42
          state           <= S_INC ;
43
         end
44
         else 
45
           if (check == k) begin
46
              //Passed Prime check
47
              time_s2         = time_s1; //Last Prime
48
              time_s1         = $realtime ;
49
              prime_number[k] <=  count;
50
              k               <=  k + 1;
51
              state           <= S_INC ; 
52
              $display("Found %1d th Prime_1 %1d", k, count);
53
              $display("Found at time : %t", time_s1);
54
              $display("Time Diff      : %t", time_s1 - time_s2);
55
            end
56
            else begin
57
              test  <= count % prime_number[check] ;
58
              check <= check + 1;
59
            end
60
      end
61
end     
62
63
64
endmodule
844 views and 0 likes     
 
http://stackoverflow.com/questions/27522426/calculation-of-simulation-time-in-verilog
1110:0