| /* 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 |