You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
microwatt/simplebus_host.v

1320 lines
33 KiB
Verilog

/* Generated by Yosys 0.15+31 (git sha1 a502570c2, gcc 11.2.1 -fPIC -Os) */
module bridge(wb__dat_w, wb__dat_r, wb__sel, wb__cyc, wb__stb, wb__we, wb__ack, rst, clk, csr__addr, csr__r_stb, csr__w_stb, csr__w_data, csr__r_data, wb__adr);
reg \$auto$verilog_backend.cc:2083:dump_module$1 = 0;
wire \$1 ;
wire \$11 ;
wire \$13 ;
wire \$15 ;
wire \$17 ;
wire \$3 ;
wire \$5 ;
wire \$7 ;
wire \$9 ;
input clk;
wire clk;
output csr__addr;
wire csr__addr;
input [31:0] csr__r_data;
wire [31:0] csr__r_data;
output csr__r_stb;
reg csr__r_stb;
output [31:0] csr__w_data;
reg [31:0] csr__w_data;
output csr__w_stb;
reg csr__w_stb;
reg cycle = 1'h0;
reg \cycle$next ;
input rst;
wire rst;
output wb__ack;
reg wb__ack = 1'h0;
reg \wb__ack$next ;
input wb__adr;
wire wb__adr;
input wb__cyc;
wire wb__cyc;
output [31:0] wb__dat_r;
reg [31:0] wb__dat_r = 32'd0;
reg [31:0] \wb__dat_r$next ;
input [31:0] wb__dat_w;
wire [31:0] wb__dat_w;
input wb__sel;
wire wb__sel;
input wb__stb;
wire wb__stb;
input wb__we;
wire wb__we;
assign \$9 = wb__cyc & wb__stb;
assign \$11 = wb__sel & wb__we;
assign \$13 = wb__cyc & wb__stb;
assign \$15 = wb__cyc & wb__stb;
assign \$17 = wb__cyc & wb__stb;
always @(posedge clk)
cycle <= \cycle$next ;
assign \$1 = wb__cyc & wb__stb;
always @(posedge clk)
wb__dat_r <= \wb__dat_r$next ;
always @(posedge clk)
wb__ack <= \wb__ack$next ;
assign \$3 = ~ wb__we;
assign \$5 = wb__sel & \$3 ;
assign \$7 = wb__cyc & wb__stb;
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$1 ) begin end
csr__r_stb = 1'h0;
casez (\$1 )
1'h1:
casez (cycle)
1'h0:
csr__r_stb = \$5 ;
endcase
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$1 ) begin end
csr__w_data = 32'd0;
casez (\$7 )
1'h1:
casez (cycle)
1'h0:
csr__w_data = wb__dat_w;
endcase
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$1 ) begin end
csr__w_stb = 1'h0;
casez (\$9 )
1'h1:
casez (cycle)
1'h0:
csr__w_stb = \$11 ;
endcase
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$1 ) begin end
\cycle$next = cycle;
casez (\$13 )
1'h1:
casez (cycle)
1'h0:
\cycle$next = 1'h1;
endcase
endcase
casez (wb__ack)
1'h1:
\cycle$next = 1'h0;
endcase
casez (rst)
1'h1:
\cycle$next = 1'h0;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$1 ) begin end
\wb__dat_r$next = wb__dat_r;
casez (\$15 )
1'h1:
(* full_case = 32'd1 *)
casez (cycle)
1'h0:
/* empty */;
default:
\wb__dat_r$next = csr__r_data;
endcase
endcase
casez (rst)
1'h1:
\wb__dat_r$next = 32'd0;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$1 ) begin end
\wb__ack$next = wb__ack;
casez (\$17 )
1'h1:
(* full_case = 32'd1 *)
casez (cycle)
1'h0:
/* empty */;
default:
\wb__ack$next = 1'h1;
endcase
endcase
casez (wb__ack)
1'h1:
\wb__ack$next = 1'h0;
endcase
casez (rst)
1'h1:
\wb__ack$next = 1'h0;
endcase
end
assign csr__addr = wb__adr;
endmodule
module mux(bus_out, parity_out, clk_out, enabled, wb__adr, wb__dat_w, wb__sel, wb__cyc, wb__stb, wb__we, wb__dat_r, wb__ack, wb__stall, wb_ctrl__adr, wb_ctrl__dat_w, wb_ctrl__sel, wb_ctrl__cyc, wb_ctrl__stb, wb_ctrl__we, wb_ctrl__dat_r, wb_ctrl__ack
, wb_ctrl_stall, rst, clk, bus_in);
reg \$auto$verilog_backend.cc:2083:dump_module$2 = 0;
wire [8:0] \$1 ;
wire \$10 ;
wire [4:0] \$100 ;
wire \$102 ;
wire [4:0] \$104 ;
wire [4:0] \$105 ;
wire \$107 ;
wire [4:0] \$109 ;
wire [4:0] \$110 ;
wire \$112 ;
wire \$114 ;
wire [4:0] \$116 ;
wire [4:0] \$117 ;
wire \$119 ;
wire \$12 ;
wire \$120 ;
wire \$14 ;
wire \$16 ;
wire \$18 ;
wire [8:0] \$2 ;
wire \$20 ;
wire \$22 ;
wire \$24 ;
wire \$26 ;
wire \$28 ;
wire \$30 ;
wire \$32 ;
wire \$34 ;
wire \$36 ;
wire \$38 ;
wire \$4 ;
wire \$40 ;
wire \$42 ;
wire \$44 ;
wire \$46 ;
wire \$48 ;
wire \$50 ;
wire [34:0] \$52 ;
wire [31:0] \$53 ;
wire [31:0] \$57 ;
wire [31:0] \$59 ;
wire \$6 ;
wire \$61 ;
wire [31:0] \$63 ;
wire \$65 ;
wire [31:0] \$67 ;
wire [63:0] \$69 ;
wire [63:0] \$71 ;
wire \$73 ;
wire [63:0] \$75 ;
wire \$77 ;
wire \$79 ;
wire \$8 ;
wire \$81 ;
wire \$83 ;
wire \$85 ;
wire \$87 ;
wire \$89 ;
wire \$91 ;
wire [34:0] \$93 ;
wire [31:0] \$94 ;
wire \$97 ;
wire [4:0] \$99 ;
reg [31:0] addr = 32'd0;
reg [31:0] \addr$next ;
wire bridge_wb__ack;
wire bridge_wb__adr;
wire bridge_wb__cyc;
wire [31:0] bridge_wb__dat_r;
wire [31:0] bridge_wb__dat_w;
wire bridge_wb__sel;
wire bridge_wb__stb;
wire bridge_wb__we;
input [7:0] bus_in;
wire [7:0] bus_in;
output [7:0] bus_out;
reg [7:0] bus_out = 8'h00;
reg [7:0] \bus_out$next ;
input clk;
wire clk;
output clk_out;
reg clk_out;
wire clk_strobe;
reg [7:0] clock_counter = 8'h00;
reg [7:0] \clock_counter$next ;
wire [2:0] clock_divisor;
wire clock_strobe;
reg [31:0] \config = 32'd1;
reg [31:0] \config$next ;
reg [3:0] count = 4'h0;
reg [3:0] \count$next ;
reg [63:0] data = 64'h0000000000000000;
reg [63:0] \data$next ;
output enabled;
wire enabled;
wire is_read;
wire is_write;
wire [31:0] mux_config_csr__r_data;
wire [31:0] mux_config_csr__w_data;
wire mux_config_csr__w_stb;
wire mux_csr__addr;
wire [31:0] mux_csr__r_data;
wire mux_csr__r_stb;
wire [31:0] mux_csr__w_data;
wire mux_csr__w_stb;
wire [31:0] mux_status_csr__r_data;
wire [31:0] mux_status_csr__w_data;
wire mux_status_csr__w_stb;
output parity_out;
wire parity_out;
reg prev_clk = 1'h0;
reg \prev_clk$next ;
input rst;
wire rst;
reg [34:0] s;
reg [34:0] \s$56 ;
reg [7:0] sel = 8'h00;
reg [7:0] \sel$next ;
(* enum_base_type = "StateEnum" *)
(* enum_value_0000 = "IDLE" *)
(* enum_value_0001 = "WRITE_CMD" *)
(* enum_value_0010 = "READ_CMD" *)
(* enum_value_0011 = "WRITE_ADDR" *)
(* enum_value_0100 = "READ_ADDR" *)
(* enum_value_0101 = "WRITE_SEL" *)
(* enum_value_0110 = "READ_SEL" *)
(* enum_value_0111 = "WRITE_DATA" *)
(* enum_value_1000 = "READ_DATA" *)
(* enum_value_1001 = "WRITE_ACK" *)
(* enum_value_1010 = "READ_ACK" *)
(* enum_value_1011 = "WISHBONE_ACK" *)
reg [3:0] state = 4'h0;
reg [3:0] \state$next ;
reg [31:0] status = 32'd0;
reg [31:0] \status$next ;
output wb__ack;
reg wb__ack = 1'h0;
reg \wb__ack$next ;
input [28:0] wb__adr;
wire [28:0] wb__adr;
input wb__cyc;
wire wb__cyc;
output [63:0] wb__dat_r;
wire [63:0] wb__dat_r;
input [63:0] wb__dat_w;
wire [63:0] wb__dat_w;
input [7:0] wb__sel;
wire [7:0] wb__sel;
output wb__stall;
reg wb__stall;
input wb__stb;
wire wb__stb;
input wb__we;
wire wb__we;
output wb_ctrl__ack;
wire wb_ctrl__ack;
input [29:0] wb_ctrl__adr;
wire [29:0] wb_ctrl__adr;
input wb_ctrl__cyc;
wire wb_ctrl__cyc;
output [31:0] wb_ctrl__dat_r;
wire [31:0] wb_ctrl__dat_r;
input [31:0] wb_ctrl__dat_w;
wire [31:0] wb_ctrl__dat_w;
input [3:0] wb_ctrl__sel;
wire [3:0] wb_ctrl__sel;
input wb_ctrl__stb;
wire wb_ctrl__stb;
input wb_ctrl__we;
wire wb_ctrl__we;
output wb_ctrl_stall;
reg wb_ctrl_stall;
assign \$100 = count - 1'h1;
assign \$102 = | count;
assign \$105 = count - 1'h1;
assign \$107 = | count;
assign \$10 = clock_divisor == 2'h3;
assign \$110 = count - 1'h1;
assign \$112 = bus_in == 8'h82;
assign \$114 = | count;
assign \$117 = count - 1'h1;
assign \$120 = ^ bus_out;
assign \$119 = ~ \$120 ;
always @(posedge clk)
clock_counter <= \clock_counter$next ;
always @(posedge clk)
prev_clk <= \prev_clk$next ;
always @(posedge clk)
bus_out <= \bus_out$next ;
always @(posedge clk)
wb__ack <= \wb__ack$next ;
always @(posedge clk)
addr <= \addr$next ;
always @(posedge clk)
data <= \data$next ;
always @(posedge clk)
sel <= \sel$next ;
assign \$12 = clock_divisor == 3'h4;
always @(posedge clk)
state <= \state$next ;
always @(posedge clk)
count <= \count$next ;
always @(posedge clk)
\config <= \config$next ;
always @(posedge clk)
status <= \status$next ;
assign \$14 = clock_divisor == 3'h5;
assign \$16 = clock_divisor == 3'h6;
assign \$18 = clock_divisor == 3'h7;
assign \$20 = ~ prev_clk;
assign \$22 = \$20 & clk_out;
assign \$24 = wb__stb & wb__cyc;
assign \$26 = \$24 & wb__we;
assign \$28 = wb__stb & wb__cyc;
assign \$2 = clock_counter + 1'h1;
assign \$30 = ~ wb__we;
assign \$32 = \$28 & \$30 ;
assign \$34 = ~ wb__cyc;
assign \$36 = ~ wb__ack;
assign \$38 = ~ wb_ctrl__cyc;
assign \$40 = ~ wb_ctrl__ack;
assign \$42 = | count;
assign \$44 = | count;
assign \$46 = | count;
assign \$48 = bus_in == 8'h83;
assign \$4 = ! clock_divisor;
assign \$50 = | count;
assign \$52 = + \$53 ;
assign \$57 = + addr[31:8];
assign \$59 = + addr[31:8];
assign \$61 = | count;
assign \$63 = + addr[31:8];
assign \$65 = | count;
assign \$67 = + addr[31:8];
assign \$6 = clock_divisor == 1'h1;
assign \$69 = + data[63:8];
assign \$71 = + data[63:8];
assign \$73 = | count;
assign \$75 = + data[63:8];
assign \$77 = bus_in == 8'h82;
assign \$79 = | count;
assign \$81 = | count;
assign \$83 = | count;
assign \$85 = | count;
assign \$87 = bus_in == 8'h83;
assign \$8 = clock_divisor == 2'h2;
assign \$89 = bus_in == 8'h82;
assign \$91 = | count;
assign \$93 = + \$94 ;
assign \$97 = | count;
bridge bridge (
.clk(clk),
.csr__addr(mux_csr__addr),
.csr__r_data(mux_csr__r_data),
.csr__r_stb(mux_csr__r_stb),
.csr__w_data(mux_csr__w_data),
.csr__w_stb(mux_csr__w_stb),
.rst(rst),
.wb__ack(bridge_wb__ack),
.wb__adr(bridge_wb__adr),
.wb__cyc(bridge_wb__cyc),
.wb__dat_r(bridge_wb__dat_r),
.wb__dat_w(bridge_wb__dat_w),
.wb__sel(bridge_wb__sel),
.wb__stb(bridge_wb__stb),
.wb__we(bridge_wb__we)
);
\mux$1 mux (
.clk(clk),
.config_csr__r_data(mux_config_csr__r_data),
.config_csr__w_data(mux_config_csr__w_data),
.config_csr__w_stb(mux_config_csr__w_stb),
.csr__addr(mux_csr__addr),
.csr__r_data(mux_csr__r_data),
.csr__r_stb(mux_csr__r_stb),
.csr__w_data(mux_csr__w_data),
.csr__w_stb(mux_csr__w_stb),
.rst(rst),
.status_csr__r_data(mux_status_csr__r_data),
.status_csr__w_data(mux_status_csr__w_data),
.status_csr__w_stb(mux_status_csr__w_stb)
);
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
(* full_case = 32'd1 *)
casez (\$34 )
1'h1:
wb__stall = 1'h0;
default:
wb__stall = \$36 ;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
(* full_case = 32'd1 *)
casez (\$38 )
1'h1:
wb_ctrl_stall = 1'h0;
default:
wb_ctrl_stall = \$40 ;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
\bus_out$next = bus_out;
casez (state)
4'h0:
begin
\bus_out$next = 8'h00;
casez (clock_strobe)
1'h1:
casez ({ is_read, is_write })
2'b?1:
\bus_out$next = 8'h03;
2'b1?:
\bus_out$next = 8'h02;
endcase
endcase
end
4'h1:
casez (clock_strobe)
1'h1:
\bus_out$next = addr[7:0];
endcase
4'h2:
casez (clock_strobe)
1'h1:
\bus_out$next = addr[7:0];
endcase
4'h3:
casez (clock_strobe)
1'h1:
(* full_case = 32'd1 *)
casez (\$42 )
1'h1:
\bus_out$next = addr[7:0];
default:
\bus_out$next = sel;
endcase
endcase
4'h4:
casez (clock_strobe)
1'h1:
(* full_case = 32'd1 *)
casez (\$44 )
1'h1:
\bus_out$next = addr[7:0];
default:
\bus_out$next = sel;
endcase
endcase
4'h5:
casez (clock_strobe)
1'h1:
\bus_out$next = data[7:0];
endcase
4'h6:
casez (clock_strobe)
1'h1:
\bus_out$next = 8'h00;
endcase
4'h7:
casez (clock_strobe)
1'h1:
(* full_case = 32'd1 *)
casez (\$46 )
1'h1:
\bus_out$next = data[7:0];
default:
\bus_out$next = 8'h00;
endcase
endcase
endcase
casez (rst)
1'h1:
\bus_out$next = 8'h00;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
\wb__ack$next = wb__ack;
casez (state)
4'h0:
\wb__ack$next = 1'h0;
4'h1:
/* empty */;
4'h2:
/* empty */;
4'h3:
/* empty */;
4'h4:
/* empty */;
4'h5:
/* empty */;
4'h6:
/* empty */;
4'h7:
/* empty */;
4'h9:
casez (clock_strobe)
1'h1:
casez (\$48 )
1'h1:
\wb__ack$next = 1'h1;
endcase
endcase
4'ha:
/* empty */;
4'h8:
casez (clock_strobe)
1'h1:
(* full_case = 32'd1 *)
casez (\$50 )
1'h1:
/* empty */;
default:
\wb__ack$next = 1'h1;
endcase
endcase
4'hb:
\wb__ack$next = 1'h0;
endcase
casez (rst)
1'h1:
\wb__ack$next = 1'h0;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
s = 35'h000000000;
casez (state)
4'h0:
casez (clock_strobe)
1'h1:
casez ({ is_read, is_write })
2'b?1:
s = \$52 ;
endcase
endcase
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
\addr$next = addr;
casez (state)
4'h0:
casez (clock_strobe)
1'h1:
casez ({ is_read, is_write })
2'b?1:
\addr$next = s[31:0];
2'b1?:
\addr$next = \s$56 [31:0];
endcase
endcase
4'h1:
casez (clock_strobe)
1'h1:
\addr$next = \$57 ;
endcase
4'h2:
casez (clock_strobe)
1'h1:
\addr$next = \$59 ;
endcase
4'h3:
casez (clock_strobe)
1'h1:
casez (\$61 )
1'h1:
\addr$next = \$63 ;
endcase
endcase
4'h4:
casez (clock_strobe)
1'h1:
casez (\$65 )
1'h1:
\addr$next = \$67 ;
endcase
endcase
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
\data$next = data;
casez (state)
4'h0:
casez (clock_strobe)
1'h1:
casez ({ is_read, is_write })
2'b?1:
\data$next = wb__dat_w;
endcase
endcase
4'h1:
/* empty */;
4'h2:
/* empty */;
4'h3:
/* empty */;
4'h4:
/* empty */;
4'h5:
casez (clock_strobe)
1'h1:
\data$next = \$69 ;
endcase
4'h6:
casez (clock_strobe)
1'h1:
\data$next = \$71 ;
endcase
4'h7:
casez (clock_strobe)
1'h1:
casez (\$73 )
1'h1:
\data$next = \$75 ;
endcase
endcase
4'h9:
/* empty */;
4'ha:
casez (clock_strobe)
1'h1:
casez (\$77 )
1'h1:
\data$next = 64'h0000000000000000;
endcase
endcase
4'h8:
casez (clock_strobe)
1'h1:
casez (\$79 )
1'h1:
\data$next = { bus_in, data[63:8] };
endcase
endcase
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
\sel$next = sel;
casez (state)
4'h0:
casez (clock_strobe)
1'h1:
casez ({ is_read, is_write })
2'b?1:
\sel$next = wb__sel;
endcase
endcase
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
\state$next = state;
casez (state)
4'h0:
casez (clock_strobe)
1'h1:
casez ({ is_read, is_write })
2'b?1:
\state$next = 4'h1;
2'b1?:
\state$next = 4'h2;
endcase
endcase
4'h1:
casez (clock_strobe)
1'h1:
\state$next = 4'h3;
endcase
4'h2:
casez (clock_strobe)
1'h1:
\state$next = 4'h4;
endcase
4'h3:
casez (clock_strobe)
1'h1:
(* full_case = 32'd1 *)
casez (\$81 )
1'h1:
/* empty */;
default:
\state$next = 4'h5;
endcase
endcase
4'h4:
casez (clock_strobe)
1'h1:
(* full_case = 32'd1 *)
casez (\$83 )
1'h1:
/* empty */;
default:
\state$next = 4'h6;
endcase
endcase
4'h5:
casez (clock_strobe)
1'h1:
\state$next = 4'h7;
endcase
4'h6:
casez (clock_strobe)
1'h1:
\state$next = 4'ha;
endcase
4'h7:
casez (clock_strobe)
1'h1:
(* full_case = 32'd1 *)
casez (\$85 )
1'h1:
/* empty */;
default:
\state$next = 4'h9;
endcase
endcase
4'h9:
casez (clock_strobe)
1'h1:
casez (\$87 )
1'h1:
\state$next = 4'hb;
endcase
endcase
4'ha:
casez (clock_strobe)
1'h1:
casez (\$89 )
1'h1:
\state$next = 4'h8;
endcase
endcase
4'h8:
casez (clock_strobe)
1'h1:
(* full_case = 32'd1 *)
casez (\$91 )
1'h1:
/* empty */;
default:
\state$next = 4'hb;
endcase
endcase
4'hb:
\state$next = 4'h0;
endcase
casez (rst)
1'h1:
\state$next = 4'h0;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
\s$56 = 35'h000000000;
casez (state)
4'h0:
casez (clock_strobe)
1'h1:
casez ({ is_read, is_write })
2'b?1:
/* empty */;
2'b1?:
\s$56 = \$93 ;
endcase
endcase
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
\clock_counter$next = \$2 [7:0];
casez (rst)
1'h1:
\clock_counter$next = 8'h00;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
\count$next = count;
casez (state)
4'h0:
/* empty */;
4'h1:
casez (clock_strobe)
1'h1:
\count$next = 4'h3;
endcase
4'h2:
casez (clock_strobe)
1'h1:
\count$next = 4'h3;
endcase
4'h3:
casez (clock_strobe)
1'h1:
casez (\$97 )
1'h1:
\count$next = \$100 [3:0];
endcase
endcase
4'h4:
casez (clock_strobe)
1'h1:
casez (\$102 )
1'h1:
\count$next = \$105 [3:0];
endcase
endcase
4'h5:
casez (clock_strobe)
1'h1:
\count$next = 4'h7;
endcase
4'h6:
casez (clock_strobe)
1'h1:
\count$next = 4'h7;
endcase
4'h7:
casez (clock_strobe)
1'h1:
casez (\$107 )
1'h1:
\count$next = \$110 [3:0];
endcase
endcase
4'h9:
/* empty */;
4'ha:
casez (clock_strobe)
1'h1:
casez (\$112 )
1'h1:
\count$next = 4'h8;
endcase
endcase
4'h8:
casez (clock_strobe)
1'h1:
casez (\$114 )
1'h1:
\count$next = \$117 [3:0];
endcase
endcase
endcase
casez (rst)
1'h1:
\count$next = 4'h0;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
clk_out = 1'h0;
casez (\$4 )
1'h1:
clk_out = clock_counter[0];
endcase
casez (\$6 )
1'h1:
clk_out = clock_counter[1];
endcase
casez (\$8 )
1'h1:
clk_out = clock_counter[2];
endcase
casez (\$10 )
1'h1:
clk_out = clock_counter[3];
endcase
casez (\$12 )
1'h1:
clk_out = clock_counter[4];
endcase
casez (\$14 )
1'h1:
clk_out = clock_counter[5];
endcase
casez (\$16 )
1'h1:
clk_out = clock_counter[6];
endcase
casez (\$18 )
1'h1:
clk_out = clock_counter[7];
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
\config$next = \config ;
casez (mux_config_csr__w_stb)
1'h1:
\config$next = mux_config_csr__w_data;
endcase
casez (rst)
1'h1:
\config$next = 32'd1;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
\status$next = status;
casez (mux_status_csr__w_stb)
1'h1:
\status$next = mux_status_csr__w_data;
endcase
casez (rst)
1'h1:
\status$next = 32'd0;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$2 ) begin end
\prev_clk$next = clk_out;
casez (rst)
1'h1:
\prev_clk$next = 1'h0;
endcase
end
assign \$1 = \$2 ;
assign \$99 = \$100 ;
assign \$104 = \$105 ;
assign \$109 = \$110 ;
assign \$116 = \$117 ;
assign mux_status_csr__r_data = status;
assign mux_config_csr__r_data = \config ;
assign wb_ctrl__ack = bridge_wb__ack;
assign bridge_wb__we = wb_ctrl__we;
assign bridge_wb__stb = wb_ctrl__stb;
assign bridge_wb__cyc = wb_ctrl__cyc;
assign bridge_wb__sel = wb_ctrl__sel[0];
assign wb_ctrl__dat_r = bridge_wb__dat_r;
assign bridge_wb__dat_w = wb_ctrl__dat_w;
assign bridge_wb__adr = wb_ctrl__adr[0];
assign parity_out = \$119 ;
assign is_read = \$32 ;
assign is_write = \$26 ;
assign wb__dat_r = data;
assign clk_strobe = clock_strobe;
assign clock_strobe = \$22 ;
assign enabled = \config [3];
assign clock_divisor = \config [2:0];
assign \$53 = { wb__adr, 3'h0 };
assign \$94 = { wb__adr, 3'h0 };
endmodule
module \mux$1 (status_csr__r_data, config_csr__w_stb, config_csr__w_data, status_csr__w_stb, status_csr__w_data, rst, clk, csr__addr, csr__r_stb, csr__w_stb, csr__w_data, csr__r_data, config_csr__r_data);
reg \$auto$verilog_backend.cc:2083:dump_module$3 = 0;
wire [1:0] \$1 ;
wire [31:0] \$11 ;
wire [31:0] \$13 ;
wire [1:0] \$2 ;
wire [1:0] \$4 ;
wire [1:0] \$5 ;
wire [31:0] \$7 ;
wire [31:0] \$9 ;
input clk;
wire clk;
input [31:0] config_csr__r_data;
wire [31:0] config_csr__r_data;
reg config_csr__r_stb;
reg [31:0] config_csr__shadow = 32'd0;
reg [31:0] \config_csr__shadow$next ;
reg config_csr__shadow_en = 1'h0;
reg \config_csr__shadow_en$next ;
output [31:0] config_csr__w_data;
wire [31:0] config_csr__w_data;
output config_csr__w_stb;
reg config_csr__w_stb = 1'h0;
reg \config_csr__w_stb$next ;
input csr__addr;
wire csr__addr;
output [31:0] csr__r_data;
wire [31:0] csr__r_data;
input csr__r_stb;
wire csr__r_stb;
input [31:0] csr__w_data;
wire [31:0] csr__w_data;
input csr__w_stb;
wire csr__w_stb;
input rst;
wire rst;
input [31:0] status_csr__r_data;
wire [31:0] status_csr__r_data;
reg status_csr__r_stb;
reg [31:0] status_csr__shadow = 32'd0;
reg [31:0] \status_csr__shadow$next ;
reg status_csr__shadow_en = 1'h0;
reg \status_csr__shadow_en$next ;
output [31:0] status_csr__w_data;
wire [31:0] status_csr__w_data;
output status_csr__w_stb;
reg status_csr__w_stb = 1'h0;
reg \status_csr__w_stb$next ;
assign \$9 = 1'h0 | \$7 ;
assign \$11 = status_csr__shadow_en ? status_csr__shadow : 32'd0;
assign \$13 = \$9 | \$11 ;
always @(posedge clk)
config_csr__shadow_en <= \config_csr__shadow_en$next ;
always @(posedge clk)
config_csr__w_stb <= \config_csr__w_stb$next ;
always @(posedge clk)
config_csr__shadow <= \config_csr__shadow$next ;
always @(posedge clk)
status_csr__shadow_en <= \status_csr__shadow_en$next ;
always @(posedge clk)
status_csr__w_stb <= \status_csr__w_stb$next ;
always @(posedge clk)
status_csr__shadow <= \status_csr__shadow$next ;
assign \$7 = config_csr__shadow_en ? config_csr__shadow : 32'd0;
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$3 ) begin end
\config_csr__shadow_en$next = 1'h0;
casez (csr__addr)
1'h0:
\config_csr__shadow_en$next = \$2 [0];
endcase
casez (rst)
1'h1:
\config_csr__shadow_en$next = 1'h0;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$3 ) begin end
\config_csr__w_stb$next = 1'h0;
casez (csr__addr)
1'h0:
\config_csr__w_stb$next = csr__w_stb;
endcase
casez (rst)
1'h1:
\config_csr__w_stb$next = 1'h0;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$3 ) begin end
config_csr__r_stb = 1'h0;
casez (csr__addr)
1'h0:
config_csr__r_stb = csr__r_stb;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$3 ) begin end
\config_csr__shadow$next = config_csr__shadow;
casez (csr__addr)
1'h0:
begin
casez (csr__r_stb)
1'h1:
\config_csr__shadow$next = config_csr__r_data;
endcase
casez (csr__w_stb)
1'h1:
\config_csr__shadow$next = csr__w_data;
endcase
end
endcase
casez (rst)
1'h1:
\config_csr__shadow$next = 32'd0;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$3 ) begin end
\status_csr__shadow_en$next = 1'h0;
casez (csr__addr)
1'h1:
\status_csr__shadow_en$next = \$5 [0];
endcase
casez (rst)
1'h1:
\status_csr__shadow_en$next = 1'h0;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$3 ) begin end
\status_csr__w_stb$next = 1'h0;
casez (csr__addr)
1'h1:
\status_csr__w_stb$next = csr__w_stb;
endcase
casez (rst)
1'h1:
\status_csr__w_stb$next = 1'h0;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$3 ) begin end
status_csr__r_stb = 1'h0;
casez (csr__addr)
1'h1:
status_csr__r_stb = csr__r_stb;
endcase
end
always @* begin
if (\$auto$verilog_backend.cc:2083:dump_module$3 ) begin end
\status_csr__shadow$next = status_csr__shadow;
casez (csr__addr)
1'h1:
begin
casez (csr__r_stb)
1'h1:
\status_csr__shadow$next = status_csr__r_data;
endcase
casez (csr__w_stb)
1'h1:
\status_csr__shadow$next = csr__w_data;
endcase
end
endcase
casez (rst)
1'h1:
\status_csr__shadow$next = 32'd0;
endcase
end
assign \$1 = \$2 ;
assign \$4 = \$5 ;
assign csr__r_data = \$13 ;
assign status_csr__w_data = status_csr__shadow;
assign config_csr__w_data = config_csr__shadow;
assign \$2 = { 1'h0, csr__r_stb };
assign \$5 = { 1'h0, csr__r_stb };
endmodule
module simplebus_host(bus_in, parity_in, bus_out, parity_out, enabled, wb_adr, wb_dat_w, wb_dat_r, wb_sel, wb_cyc, wb_stb, wb_we, wb_ack, wb_stall, wb_ctrl_adr, wb_ctrl_dat_w, wb_ctrl_dat_r, wb_ctrl_sel, wb_ctrl_cyc, wb_ctrl_stb, wb_ctrl_we
, wb_ctrl_ack, wb_ctrl_stall, clk, rst, clk_out);
input [7:0] bus_in;
wire [7:0] bus_in;
output [7:0] bus_out;
wire [7:0] bus_out;
input clk;
wire clk;
output clk_out;
wire clk_out;
output enabled;
wire enabled;
wire [7:0] mux_bus_in;
wire [7:0] mux_bus_out;
wire mux_clk_out;
wire mux_enabled;
wire mux_parity_out;
wire mux_wb__ack;
wire [28:0] mux_wb__adr;
wire mux_wb__cyc;
wire [63:0] mux_wb__dat_r;
wire [63:0] mux_wb__dat_w;
wire [7:0] mux_wb__sel;
wire mux_wb__stall;
wire mux_wb__stb;
wire mux_wb__we;
wire mux_wb_ctrl__ack;
wire [29:0] mux_wb_ctrl__adr;
wire mux_wb_ctrl__cyc;
wire [31:0] mux_wb_ctrl__dat_r;
wire [31:0] mux_wb_ctrl__dat_w;
wire [3:0] mux_wb_ctrl__sel;
wire mux_wb_ctrl__stb;
wire mux_wb_ctrl__we;
wire mux_wb_ctrl_stall;
input parity_in;
wire parity_in;
wire \parity_in$1 ;
output parity_out;
wire parity_out;
input rst;
wire rst;
output wb_ack;
wire wb_ack;
input [28:0] wb_adr;
wire [28:0] wb_adr;
output wb_ctrl_ack;
wire wb_ctrl_ack;
input [29:0] wb_ctrl_adr;
wire [29:0] wb_ctrl_adr;
input wb_ctrl_cyc;
wire wb_ctrl_cyc;
output [31:0] wb_ctrl_dat_r;
wire [31:0] wb_ctrl_dat_r;
input [31:0] wb_ctrl_dat_w;
wire [31:0] wb_ctrl_dat_w;
input [3:0] wb_ctrl_sel;
wire [3:0] wb_ctrl_sel;
output wb_ctrl_stall;
wire wb_ctrl_stall;
input wb_ctrl_stb;
wire wb_ctrl_stb;
input wb_ctrl_we;
wire wb_ctrl_we;
input wb_cyc;
wire wb_cyc;
output [63:0] wb_dat_r;
wire [63:0] wb_dat_r;
input [63:0] wb_dat_w;
wire [63:0] wb_dat_w;
input [7:0] wb_sel;
wire [7:0] wb_sel;
output wb_stall;
wire wb_stall;
input wb_stb;
wire wb_stb;
input wb_we;
wire wb_we;
mux mux (
.bus_in(mux_bus_in),
.bus_out(mux_bus_out),
.clk(clk),
.clk_out(mux_clk_out),
.enabled(mux_enabled),
.parity_out(mux_parity_out),
.rst(rst),
.wb__ack(mux_wb__ack),
.wb__adr(mux_wb__adr),
.wb__cyc(mux_wb__cyc),
.wb__dat_r(mux_wb__dat_r),
.wb__dat_w(mux_wb__dat_w),
.wb__sel(mux_wb__sel),
.wb__stall(mux_wb__stall),
.wb__stb(mux_wb__stb),
.wb__we(mux_wb__we),
.wb_ctrl__ack(mux_wb_ctrl__ack),
.wb_ctrl__adr(mux_wb_ctrl__adr),
.wb_ctrl__cyc(mux_wb_ctrl__cyc),
.wb_ctrl__dat_r(mux_wb_ctrl__dat_r),
.wb_ctrl__dat_w(mux_wb_ctrl__dat_w),
.wb_ctrl__sel(mux_wb_ctrl__sel),
.wb_ctrl__stb(mux_wb_ctrl__stb),
.wb_ctrl__we(mux_wb_ctrl__we),
.wb_ctrl_stall(mux_wb_ctrl_stall)
);
assign wb_ctrl_stall = mux_wb_ctrl_stall;
assign wb_ctrl_ack = mux_wb_ctrl__ack;
assign wb_ctrl_dat_r = mux_wb_ctrl__dat_r;
assign mux_wb_ctrl__we = wb_ctrl_we;
assign mux_wb_ctrl__stb = wb_ctrl_stb;
assign mux_wb_ctrl__cyc = wb_ctrl_cyc;
assign mux_wb_ctrl__sel = wb_ctrl_sel;
assign mux_wb_ctrl__dat_w = wb_ctrl_dat_w;
assign mux_wb_ctrl__adr = wb_ctrl_adr;
assign wb_stall = mux_wb__stall;
assign wb_ack = mux_wb__ack;
assign wb_dat_r = mux_wb__dat_r;
assign mux_wb__we = wb_we;
assign mux_wb__stb = wb_stb;
assign mux_wb__cyc = wb_cyc;
assign mux_wb__sel = wb_sel;
assign mux_wb__dat_w = wb_dat_w;
assign mux_wb__adr = wb_adr;
assign enabled = mux_enabled;
assign clk_out = mux_clk_out;
assign parity_out = mux_parity_out;
assign bus_out = mux_bus_out;
assign \parity_in$1 = parity_in;
assign mux_bus_in = bus_in;
endmodule