mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	added comments for RAM and bootram, removed trailing whitepace
This commit is contained in:
		
							parent
							
								
									c8e9edcc43
								
							
						
					
					
						commit
						b36a5614b4
					
				| @ -164,6 +164,17 @@ module testbench_busybear(); | |||||||
|     end |     end | ||||||
|   endgenerate |   endgenerate | ||||||
| 
 | 
 | ||||||
|  |   // RAM and bootram are addressed in 64-bit blocks - this logic handles R/W
 | ||||||
|  |   // including subwords. Brief explanation on signals:
 | ||||||
|  |   //
 | ||||||
|  |   // readMask: bitmask of bits to read / write, left-shifted to align with
 | ||||||
|  |   // nearest 64-bit boundary - examples
 | ||||||
|  |   //    HSIZE = 0 -> readMask = 11111111
 | ||||||
|  |   //    HSIZE = 1 -> readMask = 1111111111111111
 | ||||||
|  |   //
 | ||||||
|  |   // In the linux boot, the processor spends the first ~5 instructions in
 | ||||||
|  |   // bootram, before jr jumps to main RAM
 | ||||||
|  | 
 | ||||||
|   logic [`XLEN-1:0] RAM[('h8000000 >> 3):0]; |   logic [`XLEN-1:0] RAM[('h8000000 >> 3):0]; | ||||||
|   logic [`XLEN-1:0] bootram[('h2000 >> 3):0]; |   logic [`XLEN-1:0] bootram[('h2000 >> 3):0]; | ||||||
|   logic [`XLEN-1:0] readRAM, readPC; |   logic [`XLEN-1:0] readRAM, readPC; | ||||||
| @ -175,7 +186,7 @@ module testbench_busybear(); | |||||||
|   always @(HWDATA or HADDR or HSIZE or HWRITE or dut.hart.MemRWM[1]) begin |   always @(HWDATA or HADDR or HSIZE or HWRITE or dut.hart.MemRWM[1]) begin | ||||||
|     if ((HWRITE || dut.hart.MemRWM[1]) && (HADDR >= 'h80000000 && HADDR <= 'h87FFFFFF)) begin |     if ((HWRITE || dut.hart.MemRWM[1]) && (HADDR >= 'h80000000 && HADDR <= 'h87FFFFFF)) begin | ||||||
|       if (HWRITE) begin |       if (HWRITE) begin | ||||||
|         RAM[RAMAdr] = (RAM[RAMAdr] & (~readMask)) | ((HWDATA << 8 * HADDR[2:0]) & readMask); |         RAM[RAMAdr] = (RAM[RAMAdr] & (~readMask)) | ((HWDATA << 8 * HADDR[2:0]) & readMask); // aligns write data for correct subword size
 | ||||||
|       end else begin |       end else begin | ||||||
|         readRAM = RAM[RAMAdr] & readMask; |         readRAM = RAM[RAMAdr] & readMask; | ||||||
|       end |       end | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user