mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			24 lines
		
	
	
	
		
			444 B
		
	
	
	
		
			Verilog
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
	
		
			444 B
		
	
	
	
		
			Verilog
		
	
	
	
	
	
module carryadd(a, b, y);
 | 
						|
 | 
						|
parameter WIDTH = 8;
 | 
						|
 | 
						|
input [WIDTH-1:0] a, b;
 | 
						|
output [WIDTH-1:0] y;
 | 
						|
 | 
						|
genvar i;
 | 
						|
generate
 | 
						|
	for (i = 0; i < WIDTH; i = i+1) begin:STAGE
 | 
						|
		wire IN1 = a[i], IN2 = b[i];
 | 
						|
		wire C, Y;
 | 
						|
		if (i == 0)
 | 
						|
			assign C = IN1 & IN2, Y = IN1 ^ IN2;
 | 
						|
		else
 | 
						|
			assign C = (IN1 & IN2) | ((IN1 | IN2) & STAGE[i-1].C),
 | 
						|
			       Y = IN1 ^ IN2 ^ STAGE[i-1].C;
 | 
						|
		assign y[i] = Y;
 | 
						|
	end
 | 
						|
endgenerate
 | 
						|
 | 
						|
// assert property (y == a + b);
 | 
						|
 | 
						|
endmodule
 |