mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-03 21:09:12 +00:00 
			
		
		
		
	
							parent
							
								
									f599c148c5
								
							
						
					
					
						commit
						f84c9d8e17
					
				
					 2 changed files with 37 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -416,7 +416,9 @@ struct MemoryShareWorker
 | 
			
		|||
					else
 | 
			
		||||
						this_addr.extend_u0(GetSize(last_addr));
 | 
			
		||||
 | 
			
		||||
					port1.addr = module->Mux(NEW_ID, last_addr, this_addr, this_en_active);
 | 
			
		||||
					SigSpec new_addr = module->Mux(NEW_ID, last_addr.extract_end(port1.wide_log2), this_addr.extract_end(port1.wide_log2), this_en_active);
 | 
			
		||||
 | 
			
		||||
					port1.addr = SigSpec({new_addr, port1.addr.extract(0, port1.wide_log2)});
 | 
			
		||||
					port1.data = module->Mux(NEW_ID, last_data, this_data, this_en_active);
 | 
			
		||||
 | 
			
		||||
					std::map<std::pair<RTLIL::SigBit, RTLIL::SigBit>, int> groups_en;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										34
									
								
								tests/opt/bug3117.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								tests/opt/bug3117.ys
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,34 @@
 | 
			
		|||
read_verilog << EOT
 | 
			
		||||
 | 
			
		||||
module test (...);
 | 
			
		||||
 | 
			
		||||
input [7:1] wa1;
 | 
			
		||||
input [7:1] wa2;
 | 
			
		||||
input [7:0] ra;
 | 
			
		||||
output [7:0] rd;
 | 
			
		||||
input clk;
 | 
			
		||||
input we1, we2;
 | 
			
		||||
input [15:0] wd1, wd2;
 | 
			
		||||
 | 
			
		||||
reg [7:0] mem [0:255];
 | 
			
		||||
 | 
			
		||||
assign rd = mem[ra];
 | 
			
		||||
 | 
			
		||||
always @(posedge clk) begin
 | 
			
		||||
        if (we1) begin
 | 
			
		||||
                mem[{wa1, 1'b0}] <= wd1[7:0];
 | 
			
		||||
                mem[{wa1, 1'b1}] <= wd1[15:8];
 | 
			
		||||
        end else begin
 | 
			
		||||
                mem[{wa2, 1'b0}] <= wd2[7:0];
 | 
			
		||||
                mem[{wa2, 1'b1}] <= wd2[15:8];
 | 
			
		||||
        end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
endmodule
 | 
			
		||||
 | 
			
		||||
EOT
 | 
			
		||||
 | 
			
		||||
proc
 | 
			
		||||
opt
 | 
			
		||||
memory_share
 | 
			
		||||
select -assert-count 1 t:$memwr_v2
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue