mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	added population count in generic modules
This commit is contained in:
		
							parent
							
								
									8b6aad27c7
								
							
						
					
					
						commit
						4b6a757d68
					
				
							
								
								
									
										40
									
								
								pipelined/src/generic/popcnt.sv
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								pipelined/src/generic/popcnt.sv
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,40 @@ | ||||
| 
 | ||||
| ///////////////////////////////////////////
 | ||||
| //
 | ||||
| // Written: Kevin Kim <kekim@hmc.edu>
 | ||||
| // Modified: 2/4/2023
 | ||||
| //
 | ||||
| // Purpose: Population Count
 | ||||
| // 
 | ||||
| // A component of the CORE-V-WALLY configurable RISC-V project.
 | ||||
| // 
 | ||||
| // Copyright (C) 2021-23 Harvey Mudd College & Oklahoma State University
 | ||||
| //
 | ||||
| // SPDX-License-Identifier: Apache-2.0 WITH SHL-2.1
 | ||||
| //
 | ||||
| // Licensed under the Solderpad Hardware License v 2.1 (the “License”); you may not use this file 
 | ||||
| // except in compliance with the License, or, at your option, the Apache License version 2.0. You 
 | ||||
| // may obtain a copy of the License at
 | ||||
| //
 | ||||
| // https://solderpad.org/licenses/SHL-2.1/
 | ||||
| //
 | ||||
| // Unless required by applicable law or agreed to in writing, any work distributed under the 
 | ||||
| // License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
 | ||||
| // either express or implied. See the License for the specific language governing permissions 
 | ||||
| // and limitations under the License.
 | ||||
| ////////////////////////////////////////////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| module popcnt #(parameter WIDTH = 32) ( | ||||
|   input logic  [WIDTH-1:0]            num,    // number to count total ones
 | ||||
|   output logic [$clog2(WIDTH):0]  PopCnt  // the total number of ones
 | ||||
| ); | ||||
| 
 | ||||
|   logic [$clog2(WIDTH):0] sum;  | ||||
|   genvar i; | ||||
|   for (i=0;i<WIDTH;i++) begin:loop | ||||
|     assign sum = sum + num[i]; | ||||
|   end | ||||
|   assign PopCnt = sum; | ||||
| 
 | ||||
|    | ||||
| endmodule | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user