@@ -201,10 +201,11 @@ module cva6_shared_tlb #(
201201 endgenerate
202202
203203 if (CVA6Cfg.RVH ) // THIS UPDATES THE EXTRA BITS OF VPN IN SV39x4
204- assign vpn_d[CVA6Cfg.PtLevels][(CVA6Cfg.VpnLen % CVA6Cfg.PtLevels) - 1 : 0 ] = ((| v_st_enbl[1 ][HYP_EXT : 0 ]) && itlb_access_i && ~ itlb_hit_i && ~ dtlb_access_i) ? //
205- itlb_vaddr_i[CVA6Cfg.VpnLen- 1 : CVA6Cfg.VpnLen- (CVA6Cfg.VpnLen% CVA6Cfg.PtLevels)] : //
204+ assign vpn_d[CVA6Cfg.PtLevels] = ((| v_st_enbl[1 ][HYP_EXT : 0 ]) && itlb_access_i && ~ itlb_hit_i && ~ dtlb_access_i) ? //
205+ {{ (((CVA6Cfg.VpnLen / CVA6Cfg.PtLevels) - (CVA6Cfg.VpnLen % CVA6Cfg.PtLevels))) { 1'b0 }} , itlb_vaddr_i[CVA6Cfg.VpnLen- 1 : CVA6Cfg.VpnLen- (CVA6Cfg.VpnLen% CVA6Cfg.PtLevels)]} : //
206206 (((| v_st_enbl[0 ][HYP_EXT : 0 ]) && dtlb_access_i && ~ dtlb_hit_i) ? //
207- dtlb_vaddr_i[CVA6Cfg.VpnLen- 1 : CVA6Cfg.VpnLen- (CVA6Cfg.VpnLen% CVA6Cfg.PtLevels)] : vpn_q[CVA6Cfg.PtLevels][(CVA6Cfg.VpnLen% CVA6Cfg.PtLevels)- 1 : 0 ]);
207+ {{ (((CVA6Cfg.VpnLen/ CVA6Cfg.PtLevels)- (CVA6Cfg.VpnLen% CVA6Cfg.PtLevels))){ 1'b0 }} , dtlb_vaddr_i[CVA6Cfg.VpnLen- 1 : CVA6Cfg.VpnLen- (CVA6Cfg.VpnLen% CVA6Cfg.PtLevels)]} : //
208+ {{ (((CVA6Cfg.VpnLen/ CVA6Cfg.PtLevels)- (CVA6Cfg.VpnLen% CVA6Cfg.PtLevels))){ 1'b0 }} , vpn_q[CVA6Cfg.PtLevels][(CVA6Cfg.VpnLen% CVA6Cfg.PtLevels)- 1 : 0 ]} );
208209
209210 // /////////////////////////////////////////////////////
210211 // tag comparison, hit generation
@@ -411,7 +412,10 @@ module cva6_shared_tlb #(
411412 end
412413 if (CVA6Cfg.RVH ) begin : gen_shared_tag_hyp
413414 // THIS UPDATES THE EXTRA BITS OF VPN IN SV39x4
414- assign shared_tag_wr.vpn[CVA6Cfg.PtLevels][(CVA6Cfg.VpnLen% CVA6Cfg.PtLevels)- 1 : 0 ] = shared_tlb_update_i.vpn[CVA6Cfg.VpnLen- 1 : CVA6Cfg.VpnLen- (CVA6Cfg.VpnLen% CVA6Cfg.PtLevels)];
415+ assign shared_tag_wr.vpn[CVA6Cfg.PtLevels] = {
416+ { (((CVA6Cfg.VpnLen / CVA6Cfg.PtLevels) - (CVA6Cfg.VpnLen % CVA6Cfg.PtLevels))) { 1'b0 }} ,
417+ shared_tlb_update_i.vpn[CVA6Cfg.VpnLen- 1 : CVA6Cfg.VpnLen- (CVA6Cfg.VpnLen% CVA6Cfg.PtLevels)]
418+ } ;
415419 end
416420 endgenerate
417421
@@ -503,6 +507,8 @@ module cva6_shared_tlb #(
503507 );
504508 assign pte[i][a] = pte_cva6_t ' (pte_rd_data[i][a]);
505509 end
510+ end else begin
511+ assign shared_tag_rd[i] = '0 ;
506512 end
507513 end
508514endmodule
0 commit comments