forked from Github_Repos/cvw
		
	Fix compile errors from const not actually being constant (why does Verilog do this)
This commit is contained in:
		
							parent
							
								
									4410944049
								
							
						
					
					
						commit
						a51257abca
					
				
							
								
								
									
										12
									
								
								wally-pipelined/src/cache/dmapped.sv
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								wally-pipelined/src/cache/dmapped.sv
									
									
									
									
										vendored
									
									
								
							@ -43,13 +43,13 @@ module rodirectmapped #(parameter LINESIZE = 256, parameter NUMLINES = 512, para
 | 
			
		||||
    output logic                DataValid
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
    integer TAGWIDTH    = `XLEN-$clog2(NUMLINES)-$clog2(LINESIZE);
 | 
			
		||||
    integer SETWIDTH    = $clog2(NUMLINES);
 | 
			
		||||
    integer OFFSETWIDTH = $clog2(LINESIZE/8);
 | 
			
		||||
    localparam integer SETWIDTH    = $clog2(NUMLINES);
 | 
			
		||||
    localparam integer OFFSETWIDTH = $clog2(LINESIZE/8);
 | 
			
		||||
    localparam integer TAGWIDTH    = `XLEN-SETWIDTH-OFFSETWIDTH;
 | 
			
		||||
 | 
			
		||||
    logic [NUMLINES-1:0][WORDSIZE-1:0]  LineOutputs;
 | 
			
		||||
    logic [NUMLINES-1:0]                ValidOutputs;
 | 
			
		||||
    logic [NUMLINES-1:0][TAGSIZE-1:0]   TagOutputs;
 | 
			
		||||
    logic [NUMLINES-1:0][TAGWIDTH-1:0]  TagOutputs;
 | 
			
		||||
    logic [OFFSETWIDTH-1:0]             WordSelect;
 | 
			
		||||
    logic [`XLEN-1:0]                   ReadPAdr;
 | 
			
		||||
    logic [SETWIDTH-1:0]                ReadSet, WriteSet;
 | 
			
		||||
@ -70,14 +70,14 @@ module rodirectmapped #(parameter LINESIZE = 256, parameter NUMLINES = 512, para
 | 
			
		||||
    genvar i;
 | 
			
		||||
    generate
 | 
			
		||||
        for (i=0; i < NUMLINES; i++) begin
 | 
			
		||||
            rocacheline #(LINESIZE, TAGSIZE, WORDSIZE) lines[NUMLINES](
 | 
			
		||||
            rocacheline #(LINESIZE, TAGWIDTH, WORDSIZE) lines (
 | 
			
		||||
                .*,
 | 
			
		||||
                .WriteEnable(WriteEnable & (WriteSet == i)),
 | 
			
		||||
                .WriteData(WriteLine),
 | 
			
		||||
                .WriteTag(WriteTag),
 | 
			
		||||
                .DataWord(LineOutputs[i]),
 | 
			
		||||
                .DataTag(TagOutputs[i]),
 | 
			
		||||
                .DataValid(ValidOutputs[i]),
 | 
			
		||||
                .DataValid(ValidOutputs[i])
 | 
			
		||||
            );
 | 
			
		||||
        end
 | 
			
		||||
    endgenerate
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										18
									
								
								wally-pipelined/src/cache/line.sv
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								wally-pipelined/src/cache/line.sv
									
									
									
									
										vendored
									
									
								
							@ -44,17 +44,25 @@ module rocacheline #(parameter LINESIZE = 256, parameter TAGSIZE = 32, parameter
 | 
			
		||||
    output logic                            DataValid
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
    logic [LINESIZE-1:0] DataLine;
 | 
			
		||||
    logic [$clog2(LINESIZE/8)-1:0] AlignedWordSelect;
 | 
			
		||||
    localparam integer OFFSETSIZE = $clog2(LINESIZE/8);
 | 
			
		||||
    localparam integer NUMWORDS = LINESIZE/WORDSIZE;
 | 
			
		||||
 | 
			
		||||
    logic [NUMWORDS-1:0][WORDSIZE-1:0]  DataLinesIn, DataLinesOut;
 | 
			
		||||
 | 
			
		||||
    flopenr #(1)        ValidBitFlop(clk, reset, WriteEnable | flush, ~flush, DataValid);
 | 
			
		||||
    flopenr #(TAGSIZE)  TagFlop(clk, reset, WriteEnable, WriteTag, DataTag);
 | 
			
		||||
    flopenr #(LINESIZE) LineFlop(clk, reset, WriteEnable, WriteData, DataLine);
 | 
			
		||||
 | 
			
		||||
    genvar i;
 | 
			
		||||
    generate
 | 
			
		||||
        for (i=0; i < NUMWORDS; i++) begin
 | 
			
		||||
            assign DataLinesIn[i] = WriteData[NUMWORDS*i+WORDSIZE-1:NUMWORDS*i];
 | 
			
		||||
            flopenr #(LINESIZE) LineFlop(clk, reset, WriteEnable, DataLinesIn[i], DataLinesOut[i]);
 | 
			
		||||
        end
 | 
			
		||||
    endgenerate
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    always_comb begin
 | 
			
		||||
        assign AlignedWordSelect = {WordSelect[$clog2(LINESIZE/8)-1:$clog2(WORDSIZE)], {$clog2(WORDSIZE){'b0}}};
 | 
			
		||||
        assign DataWord = DataLine[WORDSIZE+AlignedWordSelect-1:AlignedWordSelect];
 | 
			
		||||
        assign DataWord = DataLinesOut[WordSelect[OFFSETSIZE-1:$clog2(WORDSIZE)]];
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
endmodule
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user