Advertisement
Sidsh

Dijkstra

Feb 6th, 2022
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module Dijkstra2 (input clk);
  2.  
  3. reg [11:0] cost [0:36][0:36];
  4.  
  5. reg [0:5] key;
  6.  
  7. parameter inf = 999;
  8. integer min;
  9. parameter n=37;
  10. integer src;
  11. integer u;
  12. reg [5:0] i,j;
  13.  
  14.  
  15.     // always @(posedge clk)
  16.    
  17.      function [0:49] getMin;
  18.      input [0:6] key;
  19.      input [0:6] i;
  20.      input [0:5] dist;
  21.      input [0:1] visited;
  22.         begin
  23.             for(i=0; i<n; i=i+1)
  24.                
  25.                 begin
  26.                 if(!visited[i] && dist [i] < min)
  27.                      begin
  28.                 min = dist[i];
  29.                 key = i;
  30.  
  31.                     end  
  32.                 end  
  33.             end      
  34.      endfunction
  35.     // end
  36.    //  end
  37.    
  38. /*reg [0:49] par;
  39. reg [0:49] dist;
  40. reg [0:49] visited;
  41. reg [0:49] g;
  42. reg [0:9] k;
  43. reg [0:9] v;*/
  44.  
  45.  
  46.  
  47. //always @(posedge clk)
  48.   // begin
  49.      
  50.      function dijkstra ;
  51.         input [0:49] par;
  52.         input [0:49] dist;
  53.         input [0:49] visited;
  54.         input [0:49] g;
  55.         input [0:9] k;
  56.         input [0:9] v;
  57.  
  58.         begin
  59.           dist[src] = 0;
  60.         par[src] = 1 ;
  61.          
  62.           // assign u = getMin(dist,visited);
  63.          
  64.             for (k=0; k <=n-1; k=k+1)
  65.                 begin u = getMin(key, i, dist, visited);
  66.                  for    (v=0; v < n; v = v+1)
  67.                   begin
  68.                         if(visited[v] != 1 && dist[u] + cost[u][v] < dist[v] && cost[u][v] != inf  )
  69.                     begin
  70.                     par[v] = u;
  71.                     dist[v] = dist[u] + cost[u][v];
  72.                     end
  73.                    end
  74.                  end
  75.                 end
  76.            
  77.      
  78.      endfunction  
  79.    
  80. initial
  81. begin
  82.  
  83.     for (i=0;i<37;i=i+1)
  84.     begin
  85.    
  86.         for(j=0;j<37;j=j+1)
  87.         begin
  88.    
  89.             if(i==j) cost[i][j] = 0;
  90.             else cost[i][j] = inf;
  91.            
  92.             $display("%d ", cost[i][j]);
  93.    
  94.         end
  95.    
  96.     end
  97.    
  98.    
  99. end
  100.  
  101.  
  102.  
  103.  
  104.  
  105.    // end
  106. //end
  107.  
  108. endmodule
  109.    
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement