mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	closer, but the wally32/64priv tests are failing.
This commit is contained in:
		
							parent
							
								
									98147e116a
								
							
						
					
					
						commit
						c000366d3e
					
				@ -116,16 +116,14 @@ module plic_apb import cvw::*;  #(parameter cvw_t P) (
 | 
				
			|||||||
      if (memwrite)
 | 
					      if (memwrite)
 | 
				
			||||||
        casez(entry)
 | 
					        casez(entry)
 | 
				
			||||||
          24'h0000??: intPriority[entry[7:2]] <= #1 Din[2:0];
 | 
					          24'h0000??: intPriority[entry[7:2]] <= #1 Din[2:0];
 | 
				
			||||||
          `ifdef PLIC_NUM_SRC_LT_32 // eventually switch to a generate for loop so as to deprecate PLIC_NUM_SRC_LT_32 and allow up to 1023 sources
 | 
					          24'h002000: begin if (P.PLIC_NUM_SRC < 32) intEn[0][P.PLIC_NUM_SRC:1]          <= #1 Din[P.PLIC_NUM_SRC:1];
 | 
				
			||||||
          24'h002000: intEn[0][P.PLIC_NUM_SRC:1]          <= #1 Din[P.PLIC_NUM_SRC:1];
 | 
					          else                     intEn[0][31:1]          <= #1 Din[31:1];
 | 
				
			||||||
          24'h002080: intEn[1][P.PLIC_NUM_SRC:1]          <= #1 Din[P.PLIC_NUM_SRC:1];
 | 
					          end
 | 
				
			||||||
          `endif
 | 
					          24'h002080: begin if (P.PLIC_NUM_SRC < 32) intEn[1][P.PLIC_NUM_SRC:1]          <= #1 Din[P.PLIC_NUM_SRC:1];
 | 
				
			||||||
          `ifndef PLIC_NUM_SRC_LT_32
 | 
					                            else                     intEn[1][31:1]          <= #1 Din[31:1];
 | 
				
			||||||
          24'h002000: intEn[0][31:1]          <= #1 Din[31:1];
 | 
					          end
 | 
				
			||||||
          24'h002004: intEn[0][P.PLIC_NUM_SRC:32]         <= #1 Din[P.PLIC_NUM_SRC-32:0];
 | 
					          24'h002004: if (P.PLIC_NUM_SRC >= 32) intEn[0][P.PLIC_NUM_SRC:32]         <= #1 Din[31:0];
 | 
				
			||||||
          24'h002080: intEn[1][31:1]          <= #1 Din[31:1];
 | 
					          24'h002084: if (P.PLIC_NUM_SRC >= 32) intEn[1][P.PLIC_NUM_SRC:32]         <= #1 Din[31:0];
 | 
				
			||||||
          24'h002084: intEn[1][P.PLIC_NUM_SRC:32]         <= #1 Din[P.PLIC_NUM_SRC-32:0];
 | 
					 | 
				
			||||||
          `endif
 | 
					 | 
				
			||||||
          24'h200000: intThreshold[0]         <= #1 Din[2:0];
 | 
					          24'h200000: intThreshold[0]         <= #1 Din[2:0];
 | 
				
			||||||
          24'h200004: intInProgress           <= #1 intInProgress & ~(One << (Din[5:0]-1)); // lower "InProgress" to signify completion 
 | 
					          24'h200004: intInProgress           <= #1 intInProgress & ~(One << (Din[5:0]-1)); // lower "InProgress" to signify completion 
 | 
				
			||||||
          24'h201000: intThreshold[1]         <= #1 Din[2:0];
 | 
					          24'h201000: intThreshold[1]         <= #1 Din[2:0];
 | 
				
			||||||
@ -136,19 +134,18 @@ module plic_apb import cvw::*;  #(parameter cvw_t P) (
 | 
				
			|||||||
        casez(entry)
 | 
					        casez(entry)
 | 
				
			||||||
          24'h000000: Dout <= #1 32'b0;  // there is no intPriority[0]
 | 
					          24'h000000: Dout <= #1 32'b0;  // there is no intPriority[0]
 | 
				
			||||||
          24'h0000??: Dout <= #1 {29'b0,intPriority[entry[7:2]]};      
 | 
					          24'h0000??: Dout <= #1 {29'b0,intPriority[entry[7:2]]};      
 | 
				
			||||||
          `ifdef PLIC_NUM_SRC_LT_32
 | 
					          24'h001000: begin if (P.PLIC_NUM_SRC < 32) Dout <= #1 {{(31-P.PLIC_NUM_SRC){1'b0}},intPending,1'b0};
 | 
				
			||||||
          24'h001000: Dout <= #1 {{(31-P.PLIC_NUM_SRC){1'b0}},intPending,1'b0};
 | 
					          else Dout <= #1 {intPending[31:1],1'b0};
 | 
				
			||||||
          24'h002000: Dout <= #1 {{(31-P.PLIC_NUM_SRC){1'b0}},intEn[0],1'b0};
 | 
					          end
 | 
				
			||||||
          24'h002080: Dout <= #1 {{(31-P.PLIC_NUM_SRC){1'b0}},intEn[1],1'b0};
 | 
					          24'h002000: begin if (P.PLIC_NUM_SRC < 32) Dout <= #1 {{(31-P.PLIC_NUM_SRC){1'b0}},intEn[0],1'b0};
 | 
				
			||||||
          `endif
 | 
					          else Dout <= #1 {intEn[0][31:1],1'b0};
 | 
				
			||||||
          `ifndef PLIC_NUM_SRC_LT_32
 | 
					          end
 | 
				
			||||||
          24'h001000: Dout <= #1 {intPending[31:1],1'b0};
 | 
					          24'h002080: begin if (P.PLIC_NUM_SRC < 32) Dout <= #1 {{(31-P.PLIC_NUM_SRC){1'b0}},intEn[1],1'b0};
 | 
				
			||||||
          24'h001004: Dout <= #1 {{(63-P.PLIC_NUM_SRC){1'b0}},intPending[P.PLIC_NUM_SRC:32]};
 | 
					          else  Dout <= #1 {intEn[0][31:1],1'b0};
 | 
				
			||||||
          24'h002000: Dout <= #1 {intEn[0][31:1],1'b0};
 | 
					          end
 | 
				
			||||||
          24'h002004: Dout <= #1 {{(63-P.PLIC_NUM_SRC){1'b0}},intEn[0][P.PLIC_NUM_SRC:32]};
 | 
					          24'h001004: if (P.PLIC_NUM_SRC >= 32) Dout <= #1 {{(63-P.PLIC_NUM_SRC){1'b0}},intPending[P.PLIC_NUM_SRC:32]};
 | 
				
			||||||
          24'h002080: Dout <= #1 {intEn[0][31:1],1'b0};
 | 
					          24'h002004: if (P.PLIC_NUM_SRC >= 32) Dout <= #1 {{(63-P.PLIC_NUM_SRC){1'b0}},intEn[0][P.PLIC_NUM_SRC:32]};
 | 
				
			||||||
          24'h002084: Dout <= #1 {{(63-P.PLIC_NUM_SRC){1'b0}},intEn[1][P.PLIC_NUM_SRC:32]};
 | 
					          24'h002084: if (P.PLIC_NUM_SRC >= 32) Dout <= #1 {{(63-P.PLIC_NUM_SRC){1'b0}},intEn[1][P.PLIC_NUM_SRC:32]};
 | 
				
			||||||
          `endif
 | 
					 | 
				
			||||||
          24'h200000: Dout <= #1 {29'b0,intThreshold[0]};
 | 
					          24'h200000: Dout <= #1 {29'b0,intThreshold[0]};
 | 
				
			||||||
          24'h200004: begin
 | 
					          24'h200004: begin
 | 
				
			||||||
            Dout <= #1 {26'b0,intClaim[0]};
 | 
					            Dout <= #1 {26'b0,intClaim[0]};
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user