blob: bef804f35ede36817618642b4315526d42ac2170 [file] [log] [blame]
/* Generated by Yosys 0.9+3743 (git sha1 UNKNOWN, clang 7.0.1-8+deb10u2 -fPIC -Os) */
module plru_1(clk, rst, acc, acc_en, lru);
wire _0_;
wire _1_;
wire _2_;
wire _3_;
input acc;
input acc_en;
input clk;
output lru;
input rst;
reg [1:0] tree;
assign _0_ = ~ acc;
assign _1_ = acc_en ? _0_ : tree[1];
assign _2_ = rst ? 1'h0 : tree[0];
assign _3_ = rst ? 1'h0 : _1_;
always @(posedge clk)
tree <= { _3_, _2_ };
assign lru = tree[1];
endmodule
module cache_ram_4_64_1489f923c4dca729178b3e3233458550d8dddf29(clk, rd_en, rd_addr, wr_sel, wr_addr, wr_data, rd_data);
wire [127:0] _00_;
wire [7:0] _01_;
wire [127:0] _02_;
wire [7:0] _03_;
wire [127:0] _04_;
wire [7:0] _05_;
wire [127:0] _06_;
wire [7:0] _07_;
wire [127:0] _08_;
wire [7:0] _09_;
wire [127:0] _10_;
wire [7:0] _11_;
wire [127:0] _12_;
wire [7:0] _13_;
wire [127:0] _14_;
wire [7:0] _15_;
input clk;
input [3:0] rd_addr;
output [63:0] rd_data;
input rd_en;
input [3:0] wr_addr;
input [63:0] wr_data;
input [7:0] wr_sel;
reg [7:0] \$mem$\20409 [15:0];
reg [7:0] \$mem$\20410 [15:0];
reg [7:0] \$mem$\20411 [15:0];
reg [7:0] \$mem$\20412 [15:0];
reg [7:0] \$mem$\20413 [15:0];
reg [7:0] \$mem$\20414 [15:0];
reg [7:0] \$mem$\20415 [15:0];
reg [7:0] \$mem$\20416 [15:0];
(* ram_style = "block" *)
reg [7:0] \20409 [15:0];
reg [7:0] _16_;
always @(posedge clk) begin
if (rd_en) _16_ <= \20409 [rd_addr];
if (wr_sel[0]) \20409 [wr_addr] <= wr_data[7:0];
end
assign _01_ = _16_;
(* ram_style = "block" *)
reg [7:0] \20410 [15:0];
reg [7:0] _17_;
always @(posedge clk) begin
if (rd_en) _17_ <= \20410 [rd_addr];
if (wr_sel[1]) \20410 [wr_addr] <= wr_data[15:8];
end
assign _03_ = _17_;
(* ram_style = "block" *)
reg [7:0] \20411 [15:0];
reg [7:0] _18_;
always @(posedge clk) begin
if (rd_en) _18_ <= \20411 [rd_addr];
if (wr_sel[2]) \20411 [wr_addr] <= wr_data[23:16];
end
assign _05_ = _18_;
(* ram_style = "block" *)
reg [7:0] \20412 [15:0];
reg [7:0] _19_;
always @(posedge clk) begin
if (rd_en) _19_ <= \20412 [rd_addr];
if (wr_sel[3]) \20412 [wr_addr] <= wr_data[31:24];
end
assign _07_ = _19_;
(* ram_style = "block" *)
reg [7:0] \20413 [15:0];
reg [7:0] _20_;
always @(posedge clk) begin
if (rd_en) _20_ <= \20413 [rd_addr];
if (wr_sel[4]) \20413 [wr_addr] <= wr_data[39:32];
end
assign _09_ = _20_;
(* ram_style = "block" *)
reg [7:0] \20414 [15:0];
reg [7:0] _21_;
always @(posedge clk) begin
if (rd_en) _21_ <= \20414 [rd_addr];
if (wr_sel[5]) \20414 [wr_addr] <= wr_data[47:40];
end
assign _11_ = _21_;
(* ram_style = "block" *)
reg [7:0] \20415 [15:0];
reg [7:0] _22_;
always @(posedge clk) begin
if (rd_en) _22_ <= \20415 [rd_addr];
if (wr_sel[6]) \20415 [wr_addr] <= wr_data[55:48];
end
assign _13_ = _22_;
(* ram_style = "block" *)
reg [7:0] \20416 [15:0];
reg [7:0] _23_;
always @(posedge clk) begin
if (rd_en) _23_ <= \20416 [rd_addr];
if (wr_sel[7]) \20416 [wr_addr] <= wr_data[63:56];
end
assign _15_ = _23_;
assign rd_data = { _15_, _13_, _11_, _09_, _07_, _05_, _03_, _01_ };
endmodule
module icache(
`ifdef USE_POWER_PINS
vccd1, vssd1,
`endif
clk, rst, i_in, m_in, stall_in, flush_in, inval_in, wishbone_in, i_out, stall_out, wishbone_out);
`ifdef USE_POWER_PINS
inout vccd1;
inout vssd1;
`endif
wire _000_;
wire _001_;
wire _002_;
wire _003_;
wire _004_;
wire _005_;
wire _006_;
wire _007_;
wire _008_;
wire _009_;
wire [1:0] _010_;
wire _011_;
wire [1:0] _012_;
wire _013_;
wire _014_;
wire _015_;
wire [1:0] _016_;
wire [1:0] _017_;
wire _018_;
wire _019_;
wire [1:0] _020_;
wire [1:0] _021_;
wire [3:0] _022_;
wire [3:0] _023_;
wire [3:0] _024_;
wire _025_;
wire _026_;
wire _027_;
wire _028_;
wire _029_;
wire _030_;
wire _031_;
wire _032_;
wire _033_;
wire _034_;
wire _035_;
wire _036_;
wire _037_;
wire _038_;
wire _039_;
wire _040_;
wire [2:0] _041_;
wire _042_;
wire _043_;
wire _044_;
wire _045_;
wire _046_;
wire _047_;
wire _048_;
wire _049_;
wire _050_;
wire _051_;
wire _052_;
wire _053_;
wire _054_;
wire [2:0] _055_;
wire _056_;
wire _057_;
wire _058_;
wire _059_;
wire _060_;
wire _061_;
wire _062_;
wire _063_;
wire _064_;
wire _065_;
wire _066_;
wire _067_;
wire _068_;
wire _069_;
wire _070_;
wire _071_;
wire _072_;
wire _073_;
wire _074_;
wire _075_;
wire _076_;
wire _077_;
wire _078_;
wire _079_;
wire _080_;
wire _081_;
wire [64:0] _082_;
reg [66:0] _083_;
wire [3:0] _084_;
wire _085_;
wire [2:0] _086_;
wire [33:0] _087_;
wire [1:0] _088_;
wire [58:0] _089_;
wire _090_;
wire _091_;
wire _092_;
wire _093_;
wire _094_;
wire _095_;
wire [199:0] _096_;
wire _097_;
wire _098_;
wire _099_;
wire [199:0] _100_;
wire [199:0] _101_;
wire [3:0] _102_;
wire [1:0] _103_;
wire _104_;
wire _105_;
wire _106_;
wire _107_;
wire _108_;
wire _109_;
wire _110_;
wire _111_;
wire [2:0] _112_;
wire [31:0] _113_;
wire _114_;
wire _115_;
wire [2:0] _116_;
wire _117_;
wire _118_;
wire _119_;
wire _120_;
wire _121_;
wire [3:0] _122_;
wire [1:0] _123_;
wire _124_;
wire [2:0] _125_;
wire _126_;
wire _127_;
wire _128_;
wire [3:0] _129_;
wire [7:0] _130_;
wire _131_;
wire _132_;
wire _133_;
wire [199:0] _134_;
wire [3:0] _135_;
wire [1:0] _136_;
wire [31:0] _137_;
wire _138_;
wire _139_;
wire _140_;
wire _141_;
wire [3:0] _142_;
wire [53:0] _143_;
wire _144_;
wire _145_;
wire _146_;
wire _147_;
wire _148_;
wire _149_;
wire _150_;
wire _151_;
wire [199:0] _152_;
wire [3:0] _153_;
wire [33:0] _154_;
wire [71:0] _155_;
wire [1:0] _156_;
wire _157_;
wire [67:0] _158_;
wire _159_;
wire _160_;
wire _161_;
wire _162_;
wire _163_;
wire _164_;
wire _165_;
wire _166_;
reg [177:0] _167_;
wire [255:0] _168_;
wire [63:0] _169_;
wire [199:0] _170_;
wire [49:0] _171_;
wire _172_;
wire _173_;
wire _174_;
wire _175_;
wire _176_;
wire _177_;
wire _178_;
wire _179_;
wire _180_;
wire _181_;
wire _182_;
wire _183_;
wire _184_;
wire _185_;
wire _186_;
wire _187_;
wire _188_;
wire _189_;
wire _190_;
wire _191_;
wire _192_;
wire _193_;
wire _194_;
wire _195_;
wire _196_;
wire [99:0] _197_;
wire _198_;
wire _199_;
wire _200_;
wire _201_;
wire [99:0] _202_;
wire _203_;
wire [63:0] _204_;
wire [31:0] _205_;
wire _206_;
wire _207_;
wire _208_;
wire _209_;
wire _210_;
wire _211_;
wire _212_;
wire _213_;
wire _214_;
wire _215_;
wire [99:0] _216_;
wire _217_;
wire [99:0] _218_;
wire [99:0] _219_;
wire [99:0] _220_;
wire _221_;
wire [99:0] _222_;
wire [99:0] _223_;
wire _224_;
wire _225_;
wire _226_;
wire _227_;
wire _228_;
wire _229_;
wire _230_;
wire _231_;
wire _232_;
wire _233_;
wire _234_;
wire _235_;
wire _236_;
wire _237_;
wire _238_;
wire _239_;
wire _240_;
wire _241_;
wire _242_;
wire _243_;
wire _244_;
wire _245_;
wire _246_;
wire _247_;
wire _248_;
wire _249_;
wire _250_;
wire _251_;
wire _252_;
wire _253_;
wire _254_;
wire _255_;
wire _256_;
wire _257_;
wire _258_;
wire _259_;
wire _260_;
wire _261_;
wire _262_;
wire _263_;
wire _264_;
wire _265_;
wire _266_;
wire access_ok;
reg [199:0] cache_tags;
reg [3:0] cache_valids;
input clk;
wire eaa_priv;
input flush_in;
input [69:0] i_in;
output [98:0] i_out;
input inval_in;
reg [3:0] itlb_valids;
input [130:0] m_in;
wire \maybe_plrus.plrus:0.plru_acc_en ;
wire \maybe_plrus.plrus:0.plru_out ;
wire \maybe_plrus.plrus:1.plru_acc_en ;
wire \maybe_plrus.plrus:1.plru_out ;
wire priv_fault;
wire ra_valid;
wire \rams:0.do_read ;
wire \rams:0.do_write ;
wire [63:0] \rams:0.dout ;
wire [63:0] \rams:0.wr_dat ;
wire \rams:1.do_read ;
wire \rams:1.do_write ;
wire [63:0] \rams:1.dout ;
wire [63:0] \rams:1.wr_dat ;
wire [55:0] real_addr;
wire replace_way;
wire req_hit_way;
wire req_is_hit;
wire req_is_miss;
input rst;
input stall_in;
output stall_out;
wire [1:0] tlb_req_index;
wire use_previous;
input [65:0] wishbone_in;
output [106:0] wishbone_out;
reg [63:0] \$mem$\8207 [3:0];
reg [49:0] \$mem$\8210 [3:0];
(* ram_style = "distributed" *)
reg [63:0] \8207 [3:0];
always @(posedge clk) begin
if (_032_) \8207 [_017_] <= m_in[130:67];
end
assign _169_ = \8207 [tlb_req_index];
(* ram_style = "distributed" *)
reg [49:0] \8210 [3:0];
always @(posedge clk) begin
if (_028_) \8210 [_017_] <= m_in[66:17];
end
assign _171_ = \8210 [tlb_req_index];
assign _257_ = _012_[0] ? itlb_valids[1] : itlb_valids[0];
assign _258_ = _041_[0] ? _167_[170] : _167_[169];
assign _259_ = _041_[0] ? _167_[174] : _167_[173];
assign _260_ = _055_[0] ? _167_[170] : _167_[169];
assign _261_ = _055_[0] ? _167_[174] : _167_[173];
assign _262_ = _012_[0] ? itlb_valids[3] : itlb_valids[2];
assign _263_ = _041_[0] ? _167_[172] : _167_[171];
assign _264_ = _041_[0] ? _167_[176] : _167_[175];
assign _265_ = _055_[0] ? _167_[172] : _167_[171];
assign _266_ = _055_[0] ? _167_[176] : _167_[175];
assign _172_ = _012_[1] ? _262_ : _257_;
assign _194_ = _041_[1] ? _263_ : _258_;
assign _195_ = _041_[1] ? _264_ : _259_;
assign _199_ = _055_[1] ? _265_ : _260_;
assign _200_ = _055_[1] ? _266_ : _261_;
assign _000_ = ~ _167_[164];
assign \rams:0.wr_dat = _000_ ? wishbone_in[63:0] : { wishbone_in[39:32], wishbone_in[47:40], wishbone_in[55:48], wishbone_in[63:56], wishbone_in[7:0], wishbone_in[15:8], wishbone_in[23:16], wishbone_in[31:24] };
assign _001_ = stall_in | use_previous;
assign \rams:0.do_read = ~ _001_;
assign _002_ = { 31'h00000000, replace_way } == 32'd0;
assign _003_ = wishbone_in[64] & _002_;
assign \rams:0.do_write = _003_ ? 1'h1 : 1'h0;
assign _004_ = ~ _167_[164];
assign \rams:1.wr_dat = _004_ ? wishbone_in[63:0] : { wishbone_in[39:32], wishbone_in[47:40], wishbone_in[55:48], wishbone_in[63:56], wishbone_in[7:0], wishbone_in[15:8], wishbone_in[23:16], wishbone_in[31:24] };
assign _005_ = stall_in | use_previous;
assign \rams:1.do_read = ~ _005_;
assign _006_ = { 31'h00000000, replace_way } == 32'd1;
assign _007_ = wishbone_in[64] & _006_;
assign \rams:1.do_write = _007_ ? 1'h1 : 1'h0;
assign _008_ = { 31'h00000000, _083_[7] } == 32'd0;
assign \maybe_plrus.plrus:0.plru_acc_en = _008_ ? _083_[66] : 1'h0;
assign _009_ = { 31'h00000000, _083_[7] } == 32'd1;
assign \maybe_plrus.plrus:1.plru_acc_en = _009_ ? _083_[66] : 1'h0;
assign _010_ = i_in[19:18] ^ i_in[21:20];
assign tlb_req_index = _010_ ^ i_in[23:22];
assign _011_ = _171_ == i_in[69:20];
assign _012_ = 2'h3 - tlb_req_index;
assign _013_ = _011_ ? _172_ : 1'h0;
assign eaa_priv = i_in[1] ? _169_[3] : 1'h1;
assign real_addr = i_in[1] ? { _169_[55:12], i_in[17:6] } : i_in[61:6];
assign ra_valid = i_in[1] ? _013_ : 1'h1;
assign _014_ = ~ i_in[2];
assign priv_fault = eaa_priv & _014_;
assign _015_ = ~ priv_fault;
assign access_ok = ra_valid & _015_;
assign _016_ = m_in[16:15] ^ m_in[18:17];
assign _017_ = _016_ ^ m_in[20:19];
assign _018_ = m_in[1] & m_in[2];
assign _019_ = rst | _018_;
assign _020_ = 2'h3 - _017_;
assign _021_ = 2'h3 - _017_;
assign _022_ = m_in[0] ? { _192_, _191_, _190_, _189_ } : itlb_valids;
assign _023_ = m_in[1] ? { _182_, _181_, _180_, _179_ } : _022_;
assign _024_ = _019_ ? 4'h0 : _023_;
always @(posedge clk)
itlb_valids <= _024_;
assign _025_ = ~ _019_;
assign _026_ = ~ m_in[1];
assign _027_ = _025_ & _026_;
assign _028_ = _027_ & m_in[0];
assign _029_ = ~ _019_;
assign _030_ = ~ m_in[1];
assign _031_ = _029_ & _030_;
assign _032_ = _031_ & m_in[0];
assign _033_ = i_in[8] != 1'h0;
assign _034_ = i_in[5] & _083_[66];
assign use_previous = _033_ ? _034_ : 1'h0;
assign _035_ = 1'h1 - i_in[12];
assign _036_ = _167_[1:0] == 2'h2;
assign _037_ = { 31'h00000000, i_in[12] } == { 31'h00000000, _167_[110] };
assign _038_ = _036_ & _037_;
assign _039_ = 32'd0 == { 31'h00000000, _167_[109] };
assign _040_ = _038_ & _039_;
assign _041_ = 3'h7 - i_in[11:9];
assign _042_ = _040_ & _196_;
assign _043_ = _193_ | _042_;
assign _044_ = i_in[0] & _043_;
assign _045_ = 1'h1 - i_in[12];
assign _046_ = _197_[49:0] == { i_in[3], real_addr[55:7] };
assign _047_ = _046_ ? 1'h1 : 1'h0;
assign _048_ = _044_ ? _047_ : 1'h0;
assign _049_ = 1'h1 - i_in[12];
assign _050_ = _167_[1:0] == 2'h2;
assign _051_ = { 31'h00000000, i_in[12] } == { 31'h00000000, _167_[110] };
assign _052_ = _050_ & _051_;
assign _053_ = 32'd1 == { 31'h00000000, _167_[109] };
assign _054_ = _052_ & _053_;
assign _055_ = 3'h7 - i_in[11:9];
assign _056_ = _054_ & _201_;
assign _057_ = _198_ | _056_;
assign _058_ = i_in[0] & _057_;
assign _059_ = 1'h1 - i_in[12];
assign _060_ = _202_[99:50] == { i_in[3], real_addr[55:7] };
assign _061_ = _063_ ? 1'h1 : _048_;
assign _062_ = _060_ ? 1'h1 : 1'h0;
assign _063_ = _058_ & _060_;
assign req_hit_way = _058_ ? _062_ : 1'h0;
assign _064_ = i_in[0] & access_ok;
assign _065_ = ~ flush_in;
assign _066_ = _064_ & _065_;
assign _067_ = ~ rst;
assign _068_ = _066_ & _067_;
assign _069_ = ~ _061_;
assign req_is_hit = _068_ ? _061_ : 1'h0;
assign req_is_miss = _068_ ? _069_ : 1'h0;
assign _070_ = _167_[1:0] == 2'h1;
assign _071_ = 1'h1 - _167_[110];
assign replace_way = _070_ ? _203_ : _167_[109];
assign _072_ = 1'h1 - _083_[0];
assign _073_ = _061_ & access_ok;
assign _074_ = ~ _073_;
assign _075_ = stall_in | use_previous;
assign _076_ = rst | flush_in;
assign _077_ = _076_ ? 1'h0 : _083_[66];
assign _078_ = req_is_hit ? req_hit_way : _083_[0];
assign _079_ = _075_ ? _083_[0] : _078_;
assign _080_ = _075_ ? _077_ : req_is_hit;
assign _081_ = ~ stall_in;
assign _082_ = _081_ ? { i_in[4], i_in[69:6] } : _083_[65:1];
always @(posedge clk)
_083_ <= { _080_, _082_, _079_ };
assign _084_ = inval_in ? 4'h0 : cache_valids;
assign _085_ = inval_in ? 1'h0 : _167_[165];
assign _086_ = real_addr[5:3] - 3'h1;
assign _087_ = req_is_miss ? { real_addr[31:3], 5'h01 } : _167_[33:0];
assign _088_ = req_is_miss ? 2'h3 : _167_[107:106];
assign _089_ = req_is_miss ? { _086_, 1'h1, i_in[3], real_addr[55:3], i_in[12] } : { _167_[168:166], _085_, _167_[164:110] };
assign _090_ = _167_[1:0] == 2'h0;
assign _091_ = _167_[1:0] == 2'h1;
assign _092_ = 1'h1 - i_in[12];
assign _093_ = 32'd0 == { 31'h00000000, replace_way };
assign _094_ = 1'h1 - _167_[110];
assign _095_ = 1'h1 - _167_[110];
assign _096_ = _093_ ? { _219_, _218_ } : cache_tags;
assign _097_ = 32'd1 == { 31'h00000000, replace_way };
assign _098_ = 1'h1 - _167_[110];
assign _099_ = 1'h1 - _167_[110];
assign _100_ = _097_ ? { _223_, _222_ } : _096_;
assign _101_ = _091_ ? _100_ : cache_tags;
assign _102_ = _091_ ? { _215_, _214_, _213_, _212_ } : _084_;
assign _103_ = _091_ ? 2'h2 : _167_[1:0];
assign _104_ = _091_ ? replace_way : _167_[109];
assign _105_ = ~ _167_[107];
assign _106_ = ~ wishbone_in[65];
assign _107_ = ~ _105_;
assign _108_ = _106_ & _107_;
assign _109_ = _167_[7:5] == _167_[168:166];
assign _110_ = _114_ ? 1'h0 : _167_[107];
assign _111_ = _115_ ? 1'h1 : _105_;
assign _112_ = _167_[7:5] + 3'h1;
assign _113_ = _108_ ? { _167_[33:8], _112_, _167_[4:2] } : _167_[33:2];
assign _114_ = _108_ & _109_;
assign _115_ = _108_ & _109_;
assign _116_ = 3'h7 - _167_[113:111];
assign _117_ = _167_[113:111] == _167_[168:166];
assign _118_ = _111_ & _117_;
assign _119_ = 1'h1 - _167_[110];
assign _120_ = ~ inval_in;
assign _121_ = _167_[165] & _120_;
assign _122_ = _126_ ? { _256_, _255_, _254_, _253_ } : _102_;
assign _123_ = _127_ ? 2'h0 : _103_;
assign _124_ = _128_ ? 1'h0 : _167_[106];
assign _125_ = _167_[113:111] + 3'h1;
assign _126_ = wishbone_in[64] & _118_;
assign _127_ = wishbone_in[64] & _118_;
assign _128_ = wishbone_in[64] & _118_;
assign _129_ = wishbone_in[64] ? { _167_[114], _125_ } : _167_[114:111];
assign _130_ = wishbone_in[64] ? { _246_, _245_, _244_, _243_, _242_, _241_, _240_, _239_ } : _167_[176:169];
assign _131_ = _167_[1:0] == 2'h1;
assign _132_ = _167_[1:0] == 2'h2;
assign _133_ = _131_ | _132_;
function [199:0] \8094 ;
input [199:0] a;
input [399:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8094 = b[199:0];
2'b1?:
\8094 = b[399:200];
default:
\8094 = a;
endcase
endfunction
assign _134_ = \8094 (200'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, { _101_, cache_tags }, { _133_, _090_ });
function [3:0] \8096 ;
input [3:0] a;
input [7:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8096 = b[3:0];
2'b1?:
\8096 = b[7:4];
default:
\8096 = a;
endcase
endfunction
assign _135_ = \8096 (4'hx, { _122_, _084_ }, { _133_, _090_ });
function [1:0] \8099 ;
input [1:0] a;
input [3:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8099 = b[1:0];
2'b1?:
\8099 = b[3:2];
default:
\8099 = a;
endcase
endfunction
assign _136_ = \8099 (2'hx, { _123_, _087_[1:0] }, { _133_, _090_ });
function [31:0] \8102 ;
input [31:0] a;
input [63:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8102 = b[31:0];
2'b1?:
\8102 = b[63:32];
default:
\8102 = a;
endcase
endfunction
assign _137_ = \8102 (32'hxxxxxxxx, { _113_, _087_[33:2] }, { _133_, _090_ });
function [0:0] \8105 ;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8105 = b[0:0];
2'b1?:
\8105 = b[1:1];
default:
\8105 = a;
endcase
endfunction
assign _138_ = \8105 (1'hx, { _124_, _088_[0] }, { _133_, _090_ });
function [0:0] \8108 ;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8108 = b[0:0];
2'b1?:
\8108 = b[1:1];
default:
\8108 = a;
endcase
endfunction
assign _139_ = \8108 (1'hx, { _110_, _088_[1] }, { _133_, _090_ });
function [0:0] \8111 ;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8111 = b[0:0];
2'b1?:
\8111 = b[1:1];
default:
\8111 = a;
endcase
endfunction
assign _140_ = \8111 (1'hx, { _104_, _167_[109] }, { _133_, _090_ });
function [0:0] \8115 ;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8115 = b[0:0];
2'b1?:
\8115 = b[1:1];
default:
\8115 = a;
endcase
endfunction
assign _141_ = \8115 (1'hx, { _167_[110], _089_[0] }, { _133_, _090_ });
function [3:0] \8118 ;
input [3:0] a;
input [7:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8118 = b[3:0];
2'b1?:
\8118 = b[7:4];
default:
\8118 = a;
endcase
endfunction
assign _142_ = \8118 (4'hx, { _129_, _089_[4:1] }, { _133_, _090_ });
function [53:0] \8124 ;
input [53:0] a;
input [107:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8124 = b[53:0];
2'b1?:
\8124 = b[107:54];
default:
\8124 = a;
endcase
endfunction
assign _143_ = \8124 (54'hxxxxxxxxxxxxxx, { _167_[168:166], _085_, _167_[164:115], _089_[58:5] }, { _133_, _090_ });
function [0:0] \8127 ;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8127 = b[0:0];
2'b1?:
\8127 = b[1:1];
default:
\8127 = a;
endcase
endfunction
assign _144_ = \8127 (1'hx, { _130_[0], 1'h0 }, { _133_, _090_ });
function [0:0] \8130 ;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8130 = b[0:0];
2'b1?:
\8130 = b[1:1];
default:
\8130 = a;
endcase
endfunction
assign _145_ = \8130 (1'hx, { _130_[1], 1'h0 }, { _133_, _090_ });
function [0:0] \8133 ;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8133 = b[0:0];
2'b1?:
\8133 = b[1:1];
default:
\8133 = a;
endcase
endfunction
assign _146_ = \8133 (1'hx, { _130_[2], 1'h0 }, { _133_, _090_ });
function [0:0] \8136 ;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8136 = b[0:0];
2'b1?:
\8136 = b[1:1];
default:
\8136 = a;
endcase
endfunction
assign _147_ = \8136 (1'hx, { _130_[3], 1'h0 }, { _133_, _090_ });
function [0:0] \8139 ;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8139 = b[0:0];
2'b1?:
\8139 = b[1:1];
default:
\8139 = a;
endcase
endfunction
assign _148_ = \8139 (1'hx, { _130_[4], 1'h0 }, { _133_, _090_ });
function [0:0] \8142 ;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8142 = b[0:0];
2'b1?:
\8142 = b[1:1];
default:
\8142 = a;
endcase
endfunction
assign _149_ = \8142 (1'hx, { _130_[5], 1'h0 }, { _133_, _090_ });
function [0:0] \8145 ;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8145 = b[0:0];
2'b1?:
\8145 = b[1:1];
default:
\8145 = a;
endcase
endfunction
assign _150_ = \8145 (1'hx, { _130_[6], 1'h0 }, { _133_, _090_ });
function [0:0] \8148 ;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* parallel_case *)
casez (s)
2'b?1:
\8148 = b[0:0];
2'b1?:
\8148 = b[1:1];
default:
\8148 = a;
endcase
endfunction
assign _151_ = \8148 (1'hx, { _130_[7], 1'h0 }, { _133_, _090_ });
assign _152_ = rst ? cache_tags : _134_;
assign _153_ = rst ? 4'h0 : _135_;
assign _154_ = rst ? 34'h000000000 : { _137_, _136_ };
assign _155_ = rst ? 72'hff0000000000000000 : _167_[105:34];
assign _156_ = rst ? 2'h0 : { _139_, _138_ };
assign _157_ = rst ? 1'h0 : _167_[108];
assign _158_ = rst ? _167_[176:109] : { _151_, _150_, _149_, _148_, _147_, _146_, _145_, _144_, _143_, _142_, _141_, _140_ };
assign _159_ = rst | flush_in;
assign _160_ = _159_ | m_in[0];
assign _161_ = ~ access_ok;
assign _162_ = i_in[0] & _161_;
assign _163_ = ~ stall_in;
assign _164_ = _162_ & _163_;
assign _165_ = _164_ ? 1'h1 : _167_[177];
assign _166_ = _160_ ? 1'h0 : _165_;
always @(posedge clk)
cache_tags <= _152_;
always @(posedge clk)
cache_valids <= _153_;
always @(posedge clk)
_167_ <= { _166_, _158_, _157_, _156_, _155_, _154_ };
assign _173_ = ~ _020_[1];
assign _174_ = ~ _020_[0];
assign _175_ = _173_ & _174_;
assign _176_ = _173_ & _020_[0];
assign _177_ = _020_[1] & _174_;
assign _178_ = _020_[1] & _020_[0];
assign _179_ = _175_ ? 1'h0 : itlb_valids[0];
assign _180_ = _176_ ? 1'h0 : itlb_valids[1];
assign _181_ = _177_ ? 1'h0 : itlb_valids[2];
assign _182_ = _178_ ? 1'h0 : itlb_valids[3];
assign _183_ = ~ _021_[1];
assign _184_ = ~ _021_[0];
assign _185_ = _183_ & _184_;
assign _186_ = _183_ & _021_[0];
assign _187_ = _021_[1] & _184_;
assign _188_ = _021_[1] & _021_[0];
assign _189_ = _185_ ? 1'h1 : itlb_valids[0];
assign _190_ = _186_ ? 1'h1 : itlb_valids[1];
assign _191_ = _187_ ? 1'h1 : itlb_valids[2];
assign _192_ = _188_ ? 1'h1 : itlb_valids[3];
assign _193_ = _035_ ? cache_valids[2] : cache_valids[0];
assign _196_ = _041_[2] ? _195_ : _194_;
assign _197_ = _045_ ? cache_tags[199:100] : cache_tags[99:0];
assign _198_ = _049_ ? cache_valids[3] : cache_valids[1];
assign _201_ = _055_[2] ? _200_ : _199_;
assign _202_ = _059_ ? cache_tags[199:100] : cache_tags[99:0];
assign _203_ = _071_ ? \maybe_plrus.plrus:0.plru_out : \maybe_plrus.plrus:1.plru_out ;
assign _204_ = _072_ ? \rams:0.dout : \rams:1.dout ;
assign _205_ = _083_[3] ? _204_[63:32] : _204_[31:0];
assign _206_ = ~ _092_;
assign _207_ = ~ replace_way;
assign _208_ = _206_ & _207_;
assign _209_ = _206_ & replace_way;
assign _210_ = _092_ & _207_;
assign _211_ = _092_ & replace_way;
assign _212_ = _208_ ? 1'h0 : _084_[0];
assign _213_ = _209_ ? 1'h0 : _084_[1];
assign _214_ = _210_ ? 1'h0 : _084_[2];
assign _215_ = _211_ ? 1'h0 : _084_[3];
assign _216_ = _094_ ? cache_tags[199:100] : cache_tags[99:0];
assign _217_ = ~ _095_;
assign _218_ = _217_ ? { _216_[99:50], _167_[164:115] } : cache_tags[99:0];
assign _219_ = _095_ ? { _216_[99:50], _167_[164:115] } : cache_tags[199:100];
assign _220_ = _098_ ? cache_tags[199:100] : cache_tags[99:0];
assign _221_ = ~ _099_;
assign _222_ = _221_ ? { _167_[164:115], _220_[49:0] } : _096_[99:0];
assign _223_ = _099_ ? { _167_[164:115], _220_[49:0] } : _096_[199:100];
assign _224_ = ~ _116_[2];
assign _225_ = ~ _116_[1];
assign _226_ = _224_ & _225_;
assign _227_ = _224_ & _116_[1];
assign _228_ = _116_[2] & _225_;
assign _229_ = _116_[2] & _116_[1];
assign _230_ = ~ _116_[0];
assign _231_ = _226_ & _230_;
assign _232_ = _226_ & _116_[0];
assign _233_ = _227_ & _230_;
assign _234_ = _227_ & _116_[0];
assign _235_ = _228_ & _230_;
assign _236_ = _228_ & _116_[0];
assign _237_ = _229_ & _230_;
assign _238_ = _229_ & _116_[0];
assign _239_ = _231_ ? 1'h1 : _167_[169];
assign _240_ = _232_ ? 1'h1 : _167_[170];
assign _241_ = _233_ ? 1'h1 : _167_[171];
assign _242_ = _234_ ? 1'h1 : _167_[172];
assign _243_ = _235_ ? 1'h1 : _167_[173];
assign _244_ = _236_ ? 1'h1 : _167_[174];
assign _245_ = _237_ ? 1'h1 : _167_[175];
assign _246_ = _238_ ? 1'h1 : _167_[176];
assign _247_ = ~ _119_;
assign _248_ = ~ replace_way;
assign _249_ = _247_ & _248_;
assign _250_ = _247_ & replace_way;
assign _251_ = _119_ & _248_;
assign _252_ = _119_ & replace_way;
assign _253_ = _249_ ? _121_ : _102_[0];
assign _254_ = _250_ ? _121_ : _102_[1];
assign _255_ = _251_ ? _121_ : _102_[2];
assign _256_ = _252_ ? _121_ : _102_[3];
plru_1 \maybe_plrus.plrus:0.plru (
.acc(_083_[0]),
.acc_en(\maybe_plrus.plrus:0.plru_acc_en ),
.clk(clk),
.lru(\maybe_plrus.plrus:0.plru_out ),
.rst(rst)
);
plru_1 \maybe_plrus.plrus:1.plru (
.acc(_083_[0]),
.acc_en(\maybe_plrus.plrus:1.plru_acc_en ),
.clk(clk),
.lru(\maybe_plrus.plrus:1.plru_out ),
.rst(rst)
);
cache_ram_4_64_1489f923c4dca729178b3e3233458550d8dddf29 \rams:0.way (
.clk(clk),
.rd_addr(i_in[12:9]),
.rd_data(\rams:0.dout ),
.rd_en(\rams:0.do_read ),
.wr_addr(_167_[114:111]),
.wr_data(\rams:0.wr_dat ),
.wr_sel({ \rams:0.do_write , \rams:0.do_write , \rams:0.do_write , \rams:0.do_write , \rams:0.do_write , \rams:0.do_write , \rams:0.do_write , \rams:0.do_write })
);
cache_ram_4_64_1489f923c4dca729178b3e3233458550d8dddf29 \rams:1.way (
.clk(clk),
.rd_addr(i_in[12:9]),
.rd_data(\rams:1.dout ),
.rd_en(\rams:1.do_read ),
.wr_addr(_167_[114:111]),
.wr_data(\rams:1.wr_dat ),
.wr_sel({ \rams:1.do_write , \rams:1.do_write , \rams:1.do_write , \rams:1.do_write , \rams:1.do_write , \rams:1.do_write , \rams:1.do_write , \rams:1.do_write })
);
assign i_out = { _205_, _083_[64:1], _167_[177], _083_[65], _083_[66] };
assign stall_out = _074_;
assign wishbone_out = _167_[108:2];
endmodule