Skip to content

Instantly share code, notes, and snippets.

@joennlae
Created March 17, 2023 10:16
Show Gist options
  • Save joennlae/35baf335b0124caf75869ab3e5edce33 to your computer and use it in GitHub Desktop.
Save joennlae/35baf335b0124caf75869ab3e5edce33 to your computer and use it in GitHub Desktop.
Baby Iguana Yosys
// Compiled by morty-0.9.0 / 2023-03-16 10:49:40.527983167 +01:00
// Copyright 2019 ETH Zurich and University of Bologna.
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
module tc_clk_and2 (
input logic clk0_i,
input logic clk1_i,
output logic clk_o
);
assign clk_o = clk0_i & clk1_i;
endmodule
module tc_clk_buffer (
input logic clk_i,
output logic clk_o
);
assign clk_o = clk_i;
endmodule
// Description: Behavioral model of an integrated clock-gating cell (ICG)
module tc_clk_gating #(
/// This paramaeter is a hint for tool/technology specific mappings of this
/// tech_cell. It indicates wether this particular clk gate instance is
/// required for functional correctness or just instantiated for power
/// savings. If IS_FUNCTIONAL == 0, technology specific mappings might
/// replace this cell with a feedthrough connection without any gating.
parameter bit IS_FUNCTIONAL = 1'b1
)(
input logic clk_i,
input logic en_i,
input logic test_en_i,
output logic clk_o
);
logic clk_en;
always_latch begin
if (clk_i == 1'b0) clk_en <= en_i | test_en_i;
end
assign clk_o = clk_i & clk_en;
endmodule
module tc_clk_inverter (
input logic clk_i,
output logic clk_o
);
assign clk_o = ~clk_i;
endmodule
// Warning: Typical clock mux cells of a technologies std cell library ARE NOT
// GLITCH FREE!! The only difference to a regular multiplexer cell is that they
// feature balanced rise- and fall-times. In other words: SWITCHING FROM ONE
// CLOCK TO THE OTHER CAN INTRODUCE GLITCHES. ALSO, GLITCHES ON THE SELECT LINE
// DIRECTLY TRANSLATE TO GLITCHES ON THE OUTPUT CLOCK!! This cell is only
// intended to be used for quasi-static switching between clocks when one of the
// clocks is anyway inactive or if the downstream logic remains gated or in
// reset state during the transition phase. If you need dynamic switching
// between arbitrary input clocks without introducing glitches, have a look at
// the clk_mux_glitch_free cell in the pulp-platform/common_cells repository.
module tc_clk_mux2 (
input logic clk0_i,
input logic clk1_i,
input logic clk_sel_i,
output logic clk_o
);
assign clk_o = (clk_sel_i) ? clk1_i : clk0_i;
endmodule
module tc_clk_xor2 (
input logic clk0_i,
input logic clk1_i,
output logic clk_o
);
assign clk_o = clk0_i ^ clk1_i;
endmodule
module tc_clk_or2 (
input logic clk0_i,
input logic clk1_i,
output logic clk_o
);
assign clk_o = clk0_i | clk1_i;
endmodule
module tc_clk_delay #(
parameter int unsigned Delay = 300ps
) (
input logic in_i,
output logic out_o
);
// pragma translate_off
// pragma translate_on
endmodule
// Copyright 2018 ETH Zurich and University of Bologna.
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
// Author: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
module fifo_v3 #(
parameter bit FALL_THROUGH = 1'b0, // fifo is in fall-through mode
parameter int unsigned DATA_WIDTH = 32, // default data width if the fifo is of type logic
parameter int unsigned DEPTH = 8, // depth can be arbitrary from 0 to 2**32
parameter type dtype = logic [DATA_WIDTH-1:0],
// DO NOT OVERWRITE THIS PARAMETER
parameter int unsigned ADDR_DEPTH = (DEPTH > 1) ? $clog2(DEPTH) : 1
)(
input logic clk_i, // Clock
input logic rst_ni, // Asynchronous reset active low
input logic flush_i, // flush the queue
input logic testmode_i, // test_mode to bypass clock gating
// status flags
output logic full_o, // queue is full
output logic empty_o, // queue is empty
output logic [ADDR_DEPTH-1:0] usage_o, // fill pointer
// as long as the queue is not full we can push new data
input dtype data_i, // data to push into the queue
input logic push_i, // data is valid and can be pushed to the queue
// as long as the queue is not empty we can pop new elements
output dtype data_o, // output data
input logic pop_i // pop head from queue
);
// local parameter
// FIFO depth - handle the case of pass-through, synthesizer will do constant propagation
localparam int unsigned FifoDepth = (DEPTH > 0) ? DEPTH : 1;
// clock gating control
logic gate_clock;
// pointer to the read and write section of the queue
logic [ADDR_DEPTH - 1:0] read_pointer_n, read_pointer_q, write_pointer_n, write_pointer_q;
// keep a counter to keep track of the current queue status
// this integer will be truncated by the synthesis tool
logic [ADDR_DEPTH:0] status_cnt_n, status_cnt_q;
// actual memory
dtype [FifoDepth - 1:0] mem_n, mem_q;
assign usage_o = status_cnt_q[ADDR_DEPTH-1:0];
if (DEPTH == 0) begin : gen_pass_through
assign empty_o = ~push_i;
assign full_o = ~pop_i;
end else begin : gen_fifo
assign full_o = (status_cnt_q == FifoDepth[ADDR_DEPTH:0]);
assign empty_o = (status_cnt_q == 0) & ~(FALL_THROUGH & push_i);
end
// status flags
// read and write queue logic
always_comb begin : read_write_comb
// default assignment
read_pointer_n = read_pointer_q;
write_pointer_n = write_pointer_q;
status_cnt_n = status_cnt_q;
data_o = (DEPTH == 0) ? data_i : mem_q[read_pointer_q];
mem_n = mem_q;
gate_clock = 1'b1;
// push a new element to the queue
if (push_i && ~full_o) begin
// push the data onto the queue
mem_n[write_pointer_q] = data_i;
// un-gate the clock, we want to write something
gate_clock = 1'b0;
// increment the write counter
if (write_pointer_q == FifoDepth[ADDR_DEPTH-1:0] - 1)
write_pointer_n = '0;
else
write_pointer_n = write_pointer_q + 1;
// increment the overall counter
status_cnt_n = status_cnt_q + 1;
end
if (pop_i && ~empty_o) begin
// read from the queue is a default assignment
// but increment the read pointer...
if (read_pointer_n == FifoDepth[ADDR_DEPTH-1:0] - 1)
read_pointer_n = '0;
else
read_pointer_n = read_pointer_q + 1;
// ... and decrement the overall count
status_cnt_n = status_cnt_q - 1;
end
// keep the count pointer stable if we push and pop at the same time
if (push_i && pop_i && ~full_o && ~empty_o)
status_cnt_n = status_cnt_q;
// FIFO is in pass through mode -> do not change the pointers
if (FALL_THROUGH && (status_cnt_q == 0) && push_i) begin
data_o = data_i;
if (pop_i) begin
status_cnt_n = status_cnt_q;
read_pointer_n = read_pointer_q;
write_pointer_n = write_pointer_q;
end
end
end
// sequential process
always_ff @(posedge clk_i or negedge rst_ni) begin
if(~rst_ni) begin
read_pointer_q <= '0;
write_pointer_q <= '0;
status_cnt_q <= '0;
end else begin
if (flush_i) begin
read_pointer_q <= '0;
write_pointer_q <= '0;
status_cnt_q <= '0;
end else begin
read_pointer_q <= read_pointer_n;
write_pointer_q <= write_pointer_n;
status_cnt_q <= status_cnt_n;
end
end
end
always_ff @(posedge clk_i or negedge rst_ni) begin
if(~rst_ni) begin
mem_q <= '0;
end else if (!gate_clock) begin
mem_q <= mem_n;
end
end
// pragma translate_off
// pragma translate_on
endmodule // fifo_v3
// Copyright 2021 ETH Zurich and University of Bologna.
//
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
//
// Fabian Schuiki <fschuiki@iis.ee.ethz.ch>
/// A register with handshakes that completely cuts any combinational paths
/// between the input and output. This spill register can be flushed.
module spill_register_flushable #(
parameter type T = logic,
parameter bit Bypass = 1'b0 // make this spill register transparent
) (
input logic clk_i ,
input logic rst_ni ,
input logic valid_i ,
input logic flush_i ,
output logic ready_o ,
input T data_i ,
output logic valid_o ,
input logic ready_i ,
output T data_o
);
if (Bypass) begin : gen_bypass
assign valid_o = valid_i;
assign ready_o = ready_i;
assign data_o = data_i;
end else begin : gen_spill_reg
// The A register.
T a_data_q;
logic a_full_q;
logic a_fill, a_drain;
always_ff @(posedge clk_i or negedge rst_ni) begin : ps_a_data
if (!rst_ni)
a_data_q <= '0;
else if (a_fill)
a_data_q <= data_i;
end
always_ff @(posedge clk_i or negedge rst_ni) begin : ps_a_full
if (!rst_ni)
a_full_q <= 0;
else if (a_fill || a_drain)
a_full_q <= a_fill;
end
// The B register.
T b_data_q;
logic b_full_q;
logic b_fill, b_drain;
always_ff @(posedge clk_i or negedge rst_ni) begin : ps_b_data
if (!rst_ni)
b_data_q <= '0;
else if (b_fill)
b_data_q <= a_data_q;
end
always_ff @(posedge clk_i or negedge rst_ni) begin : ps_b_full
if (!rst_ni)
b_full_q <= 0;
else if (b_fill || b_drain)
b_full_q <= b_fill;
end
// Fill the A register when the A or B register is empty. Drain the A register
// whenever it is full and being filled, or if a flush is requested.
assign a_fill = valid_i && ready_o && (!flush_i);
assign a_drain = (a_full_q && !b_full_q) || flush_i;
// Fill the B register whenever the A register is drained, but the downstream
// circuit is not ready. Drain the B register whenever it is full and the
// downstream circuit is ready, or if a flush is requested.
assign b_fill = a_drain && (!ready_i) && (!flush_i);
assign b_drain = (b_full_q && ready_i) || flush_i;
// We can accept input as long as register B is not full.
// Note: flush_i and valid_i must not be high at the same time,
// otherwise an invalid handshake may occur
assign ready_o = !a_full_q || !b_full_q;
// The unit provides output as long as one of the registers is filled.
assign valid_o = a_full_q | b_full_q;
// We empty the spill register before the slice register.
assign data_o = b_full_q ? b_data_q : a_data_q;
// pragma translate_off
// pragma translate_on
end
endmodule
// Copyright 2018 ETH Zurich and University of Bologna.
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
// Antonio Pullini <pullinia@iis.ee.ethz.ch>
module sync #(
parameter int unsigned STAGES = 2,
parameter bit ResetValue = 1'b0
) (
input logic clk_i,
input logic rst_ni,
input logic serial_i,
output logic serial_o
);
(* dont_touch = "true" *)
(* async_reg = "true" *)
logic [STAGES-1:0] reg_q;
always_ff @(posedge clk_i, negedge rst_ni) begin
if (!rst_ni) begin
reg_q <= {STAGES{ResetValue}};
end else begin
reg_q <= {reg_q[STAGES-2:0], serial_i};
end
end
assign serial_o = reg_q[STAGES-1];
endmodule
//-----------------------------------------------------------------------------
// Copyright (C) 2022 ETH Zurich, University of Bologna
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
// SPDX-License-Identifier: SHL-0.51
//-----------------------------------------------------------------------------
//
// Author: Manuel Eggimann <meggimann@iis.ee.ethz.ch>
//
// Contains common defintions for the CDC Clear Synchronization Circuitry
package cdc_reset_ctrlr_pkg;
typedef enum logic[1:0] {
CLEAR_PHASE_IDLE,
CLEAR_PHASE_ISOLATE,
CLEAR_PHASE_CLEAR,
CLEAR_PHASE_POST_CLEAR
} clear_seq_phase_e;
endpackage : cdc_reset_ctrlr_pkg
// Copyright 2018 ETH Zurich and University of Bologna.
//
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
//
// Manuel Eggimann <meggimann@iis.ee.ethz.ch>
/// A 4-phase clock domain crossing. While this is less efficient than a 2-phase
/// CDC, it doesn't suffer from the same issues during one sided resets since
/// the IDLE state doesn't alternate with every transaction.
///
/// Parameters: T - The type of the data to transmit through the CDC.
///
/// Decoupled - If decoupled is disabled, the 4phase cdc will not consume the
/// src item until the handshake with the other side is completed. This
/// increases the latency of the first transaction but has no effect on
/// throughput. However, critical paths might be slightly longer. Use this mode
/// if you want to ensure that there are no in-flight transactions within the
/// CDC.
///
/// SEND_RESET_MSG - If send reset msg is enabled, the 4phase cdc starts sending
/// the RESET_MSG within its' asynchronous reset state. This can be usefull if
/// we need to transmit a message to the other side of the CDC immediately
/// during an async reset even if there is no clock available. This mode is
/// required for proper functionality of the cdc_reset_ctrlr module.
///
/// CONSTRAINT: Requires max_delay of min_period(src_clk_i, dst_clk_i) through
/// the paths async_req, async_ack, async_data.
/* verilator lint_off DECLFILENAME */
module cdc_4phase #(
parameter type T = logic,
parameter bit DECOUPLED = 1'b1,
parameter bit SEND_RESET_MSG = 1'b0,
parameter T RESET_MSG = T'('0)
)(
input logic src_rst_ni,
input logic src_clk_i,
input T src_data_i,
input logic src_valid_i,
output logic src_ready_o,
input logic dst_rst_ni,
input logic dst_clk_i,
output T dst_data_o,
output logic dst_valid_o,
input logic dst_ready_i
);
// Asynchronous handshake signals.
(* dont_touch = "true" *) logic async_req;
(* dont_touch = "true" *) logic async_ack;
(* dont_touch = "true" *) T async_data;
// The sender in the source domain.
cdc_4phase_src #(
.T(T),
.DECOUPLED(DECOUPLED),
.SEND_RESET_MSG(SEND_RESET_MSG),
.RESET_MSG(RESET_MSG)
) i_src (
.rst_ni ( src_rst_ni ),
.clk_i ( src_clk_i ),
.data_i ( src_data_i ),
.valid_i ( src_valid_i ),
.ready_o ( src_ready_o ),
.async_req_o ( async_req ),
.async_ack_i ( async_ack ),
.async_data_o ( async_data )
);
// The receiver in the destination domain.
cdc_4phase_dst #(.T(T), .DECOUPLED(DECOUPLED)) i_dst (
.rst_ni ( dst_rst_ni ),
.clk_i ( dst_clk_i ),
.data_o ( dst_data_o ),
.valid_o ( dst_valid_o ),
.ready_i ( dst_ready_i ),
.async_req_i ( async_req ),
.async_ack_o ( async_ack ),
.async_data_i ( async_data )
);
endmodule
/// Half of the 4-phase clock domain crossing located in the source domain.
module cdc_4phase_src #(
parameter type T = logic,
parameter int unsigned SYNC_STAGES = 2,
parameter bit DECOUPLED = 1'b1,
parameter bit SEND_RESET_MSG = 1'b0,
parameter T RESET_MSG = T'('0)
)(
input logic rst_ni,
input logic clk_i,
input T data_i,
input logic valid_i,
output logic ready_o,
output logic async_req_o,
input logic async_ack_i,
output T async_data_o
);
(* dont_touch = "true" *)
logic req_src_d, req_src_q;
(* dont_touch = "true" *)
T data_src_d, data_src_q;
(* dont_touch = "true" *)
logic ack_synced;
typedef enum logic[1:0] {IDLE, WAIT_ACK_ASSERT, WAIT_ACK_DEASSERT} state_e;
state_e state_d, state_q;
// Synchronize the async ACK
sync #(
.STAGES(SYNC_STAGES)
) i_sync(
.clk_i,
.rst_ni,
.serial_i( async_ack_i ),
.serial_o( ack_synced )
);
// FSM for the 4-phase handshake
always_comb begin
state_d = state_q;
req_src_d = 1'b0;
data_src_d = data_src_q;
ready_o = 1'b0;
case (state_q)
IDLE: begin
// If decoupling is disabled, defer assertion of ready until the
// handshake with the dst is completed
if (DECOUPLED) begin
ready_o = 1'b1;
end else begin
ready_o = 1'b0;
end
// Sample a new item when the valid signal is asserted.
if (valid_i) begin
data_src_d = data_i;
req_src_d = 1'b1;
state_d = WAIT_ACK_ASSERT;
end
end
WAIT_ACK_ASSERT: begin
req_src_d = 1'b1;
if (ack_synced == 1'b1) begin
req_src_d = 1'b0;
state_d = WAIT_ACK_DEASSERT;
end
end
WAIT_ACK_DEASSERT: begin
if (ack_synced == 1'b0) begin
state_d = IDLE;
if (!DECOUPLED) begin
ready_o = 1'b1;
end
end
end
default: begin
state_d = IDLE;
end
endcase
end
always_ff @(posedge clk_i, negedge rst_ni) begin
if (!rst_ni) begin
state_q <= IDLE;
end else begin
state_q <= state_d;
end
end
// Sample the data and the request signal to filter combinational glitches
always_ff @(posedge clk_i or negedge rst_ni) begin
if (!rst_ni) begin
if (SEND_RESET_MSG) begin
req_src_q <= 1'b1;
data_src_q <= RESET_MSG;
end else begin
req_src_q <= 1'b0;
data_src_q <= T'('0);
end
end else begin
req_src_q <= req_src_d;
data_src_q <= data_src_d;
end
end
// Async output assignments.
assign async_req_o = req_src_q;
assign async_data_o = data_src_q;
endmodule
/// Half of the 4-phase clock domain crossing located in the destination
/// domain.
module cdc_4phase_dst #(
parameter type T = logic,
parameter int unsigned SYNC_STAGES = 2,
parameter bit DECOUPLED = 1
)(
input logic rst_ni,
input logic clk_i,
output T data_o,
output logic valid_o,
input logic ready_i,
input logic async_req_i,
output logic async_ack_o,
input T async_data_i
);
(* dont_touch = "true" *)
logic ack_dst_d, ack_dst_q;
(* dont_touch = "true" *)
logic req_synced;
logic data_valid;
logic output_ready;
typedef enum logic[1:0] {IDLE, WAIT_DOWNSTREAM_ACK, WAIT_REQ_DEASSERT} state_e;
state_e state_d, state_q;
//Synchronize the request
sync #(
.STAGES(SYNC_STAGES)
) i_sync(
.clk_i,
.rst_ni,
.serial_i( async_req_i ),
.serial_o( req_synced )
);
// FSM for the 4-phase handshake
always_comb begin
state_d = state_q;
data_valid = 1'b0;
ack_dst_d = 1'b0;
case (state_q)
IDLE: begin
// Sample the data upon a new request and transition to the next state
if (req_synced == 1'b1) begin
data_valid = 1'b1;
if (output_ready == 1'b1) begin
state_d = WAIT_REQ_DEASSERT;
end else begin
state_d = WAIT_DOWNSTREAM_ACK;
end
end
end
WAIT_DOWNSTREAM_ACK: begin
data_valid = 1'b1;
if (output_ready == 1'b1) begin
state_d = WAIT_REQ_DEASSERT;
ack_dst_d = 1'b1;
end
end
WAIT_REQ_DEASSERT: begin
ack_dst_d = 1'b1;
if (req_synced == 1'b0) begin
ack_dst_d = 1'b0;
state_d = IDLE;
end
end
default: begin
state_d = IDLE;
end
endcase
end
always_ff @(posedge clk_i, negedge rst_ni) begin
if (!rst_ni) begin
state_q <= IDLE;
end else begin
state_q <= state_d;
end
end
// Filter glitches on ack signal before sending it through the asynchronous channel
always_ff @(posedge clk_i, negedge rst_ni) begin
if (!rst_ni) begin
ack_dst_q <= 1'b0;
end else begin
ack_dst_q <= ack_dst_d;
end
end
if (DECOUPLED) begin : gen_decoupled
// Decouple the output from the asynchronous data bus without introducing
// additional latency by inserting a spill register
spill_register #(
.T(T),
.Bypass(1'b0)
) i_spill_register (
.clk_i,
.rst_ni,
.valid_i(data_valid),
.ready_o(output_ready),
.data_i(async_data_i),
.valid_o,
.ready_i,
.data_o
);
end else begin : gen_not_decoupled
assign valid_o = data_valid;
assign output_ready = ready_i;
assign data_o = async_data_i;
end
// Output assignments.
assign async_ack_o = ack_dst_q;
endmodule
/* verilator lint_on DECLFILENAME */
// Copyright 2018 ETH Zurich and University of Bologna.
//
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
//
// Fabian Schuiki <fschuiki@iis.ee.ethz.ch>
/// Wrapper around the flushable spill register to maintain back-ward
/// compatibility.
module spill_register #(
parameter type T = logic,
parameter bit Bypass = 1'b0 // make this spill register transparent
) (
input logic clk_i ,
input logic rst_ni ,
input logic valid_i ,
output logic ready_o ,
input T data_i ,
output logic valid_o ,
input logic ready_i ,
output T data_o
);
spill_register_flushable #(
.T(T),
.Bypass(Bypass)
) spill_register_flushable_i (
.clk_i,
.rst_ni,
.valid_i,
.flush_i(1'b0),
.ready_o,
.data_i,
.valid_o,
.ready_i,
.data_o
);
endmodule
//-----------------------------------------------------------------------------
// Title : CDC Clear Signaling Synchronization
// -----------------------------------------------------------------------------
// File : cdc_clear_propagator.sv Author : Manuel Eggimann
// <meggimann@iis.ee.ethz.ch> Created : 22.12.2021
// -----------------------------------------------------------------------------
// Description :
//
// This module is mainly used internally to synchronize the clear requests
// between both sides of a CDC module. It aims to solve the problem of
// initiating a CDC clear, reset one-sidedly without running into
// reset-domain-crossing issues and breaking CDC protocol assumption.
//
// Problem Formulation:
//
// CDC implementations usually face the issue that one side of the CDC must not
// be cleared without clearing the other side. E.g. clearing the write-pointer
// without clearing the read-pointer in a gray-counting CDC FIFO results in an
// invalid fill-state an may cause spurious transactions of invalid data to be
// propagated accross the CDC. A similar effect is caused in 2-phase CDC
// implementations.
//
// A naive mitigation technique would be to reset both domains asynchronously
// with the same reset signal. This will cause intra-clock domain RDC issues
// since the asynchronous clear event (assertion of the reset signal) might
// happen close to the active edge of the CDC's periphery and thus might induce
// metastability. A better, but still flawed approach would be to naively
// synchronize assertion AND deassertion (the usual rst sync only synchronize
// deassertion) of the resets into the respective other domain. However, this
// might cause the classic issue of fast-to-slow clock domain crossing where the
// clear signal is not asserted long enough to be captured by the receiving
// side. The common mitigation strategy is to use a feedback acknowledge signal
// to handshake the reset request into the other domain. One even more peculiar
// corner case this approach might suffer is the scenario where the synchronized
// clear signal arrives at the other side of the CDC within or even worse after
// the same clock cylce that the other domain crossing signals (e.g. read/write
// pointers) are cleared. In this scenario, multiple signals change within the
// same clock cycle and due to metastability we cannot be sure, that the other
// side of the CDC sees the reset assertion before the first bits of e.g. the
// write/read pointer start to switch to their reset state. Care must also be
// taken to handle the corner cases where both sides are reset simultaneously or
// the case where one side leaves reset earlier than the other.
//
// How this Module Works
//
// This module has two interfaces, the 'a' side and the 'b' side. Each side can
// be triggered using the a/b_clear_i signal or (optionally) by the asynchronous
// a/b_rst_ni. Once e.g. 'a' is triggered it will initiate a clear sequence that
// first asserts an 'a_isolate_o' signal, waits until the external circuitry
// acknowledges isolation using the 'a_isolate_ack_i'. Then the module asserts
// the 'a_clear_o' signals before some cycles later, the isolate signal is
// deasserted. This sequence ensures that no transactions can arrive to the CDC
// while the state is cleared. Now the important part is, that those four phases
// (asser isolate, assert clear, deassert clear, deassert isolate) are mirrored
// on the other side ('b') in lock-step. The cdc_reset_ctrlr module uses a
// dedicated 4-phase handshaking CDC to transmit the current phase of the clear
// sequence to the other domain. We use a 4-phase rather than a 2-phase CDC to
// avoid the issues of one-sided async reset that might trigger spurious
// transactions. Furthermore, the 4-phase CDC within this module is operated in
// a special mode: DECOUPLED=0 ensures that there are no in-flight transactions.
// The src side only consumes the item once the destination side acknowledged
// the receiption. This property is required to transition through the phases in
// lock-step. Furthermore, (SEND_RESET_MSG=1) will cause the src side of the
// 4-phase CDC to immediately initiate the isolation phase in the dst domain
// upon asynchronous reset regardless how long the async reset stays asserted or
// whether the source clock is gated. Both sides of this module independently
// generate the sequence signals as an initiator (triggered by the clear_i or
// rst_ni signal) or receiver (trigerred for the other side). The or-ed version
// of initiator and receiver are used to generate the actual a/b_isolate_o and
// a/b_clear_o signal. That way, it doesn't matter wheter both sides
// simulatenously trigger a clear sequence, proper sequencing is still
// guaranteed.
//
// The time it takes to complete an entire clear sequence can be bounded as follows:
//
// t_clear <= 20*T+16*SYNC_STAGES*T, with T=max(T_a, T_b) (clock periods of src and dst)
//
// How to Use the Module
//
// Instantiate the module within your CDC and connect a/b_clk_i, the
// asyncrhonous a/b_rst_ni and the synchronous a/b_clear_i signals. The 'a' and
// 'b' port are entirely symetric so it doesn't matter whether you connect src
// to 'a' or 'b'. If you enable support for async reset
// (CLEAR_ON_ASYNC_RESET==1), parametrize the number of synchronization stages
// (for metastability resolution) to be strictly less than the latency of the
// CDC. E.g. if your CDC uses 3 (the minimum) sync stages, parametrize this
// module with SYNC_STAGES < 2! Your CDC must implement a src/dst_clear_i port
// that SYNCHRONOUSLY clears all FFs on the respective side. Connect the CDC's
// src/dst_clear ports to this module's a/b_clear_o port. Once the a/b_isolate_o
// signal is asserted, the respective CDC side (src/dst) must be isolated from
// the outside world (i.e. must no longer accept any transaction on the src side
// and cease presenting or even withdrawing data on the dst side). Once your CDC
// side is isolated (depending on protocol this might take several cycles),
// assert the a/b_isolate_ack_i signal.
//
// -----------------------------------------------------------------------------
// Copyright (C) 2021 ETH Zurich, University of Bologna Copyright and related
// rights are licensed under the Solderpad Hardware License, Version 0.51 (the
// "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law or
// agreed to in writing, software, hardware and materials distributed under this
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
// OF ANY KIND, either express or implied. See the License for the specific
// language governing permissions and limitations under the License.
// SPDX-License-Identifier: SHL-0.51
// -----------------------------------------------------------------------------
module cdc_reset_ctrlr
import cdc_reset_ctrlr_pkg::*;
#(
/// The number of synchronization stages to use for the
/// clear signal request/acknowledge. Must be less than the
/// number of sync stages used in the CDC.
parameter int unsigned SYNC_STAGES = 2,
/// Whether an asynchronous reset shall cause a clear
/// request to be sent to the other side.
parameter logic CLEAR_ON_ASYNC_RESET = 1'b1
)(
// Side A (both sides are symmetric)
input logic a_clk_i,
input logic a_rst_ni,
input logic a_clear_i,
output logic a_clear_o,
input logic a_clear_ack_i,
output logic a_isolate_o,
input logic a_isolate_ack_i,
// Side B (both sides are symmetric)
input logic b_clk_i,
input logic b_rst_ni,
input logic b_clear_i,
output logic b_clear_o,
input logic b_clear_ack_i,
output logic b_isolate_o,
input logic b_isolate_ack_i
);
(* dont_touch = "true" *)
logic async_a2b_req, async_b2a_ack;
(* dont_touch = "true" *)
clear_seq_phase_e async_a2b_next_phase;
(* dont_touch = "true" *)
logic async_b2a_req, async_a2b_ack;
(* dont_touch = "true" *)
clear_seq_phase_e async_b2a_next_phase;
cdc_reset_ctrlr_half #(
.SYNC_STAGES ( SYNC_STAGES ),
.CLEAR_ON_ASYNC_RESET ( CLEAR_ON_ASYNC_RESET )
) i_cdc_reset_ctrlr_half_a (
.clk_i ( a_clk_i ),
.rst_ni ( a_rst_ni ),
.clear_i ( a_clear_i ),
.clear_o ( a_clear_o ),
.clear_ack_i ( a_clear_ack_i ),
.isolate_o ( a_isolate_o ),
.isolate_ack_i ( a_isolate_ack_i ),
(* async *) .async_next_phase_o ( async_a2b_next_phase ),
(* async *) .async_req_o ( async_a2b_req ),
(* async *) .async_ack_i ( async_b2a_ack ),
(* async *) .async_next_phase_i ( async_b2a_next_phase ),
(* async *) .async_req_i ( async_b2a_req ),
(* async *) .async_ack_o ( async_a2b_ack )
);
cdc_reset_ctrlr_half #(
.SYNC_STAGES ( SYNC_STAGES ),
.CLEAR_ON_ASYNC_RESET ( CLEAR_ON_ASYNC_RESET )
) i_cdc_reset_ctrlr_half_b (
.clk_i ( b_clk_i ),
.rst_ni ( b_rst_ni ),
.clear_i ( b_clear_i ),
.clear_o ( b_clear_o ),
.clear_ack_i ( b_clear_ack_i ),
.isolate_o ( b_isolate_o ),
.isolate_ack_i ( b_isolate_ack_i ),
(* async *) .async_next_phase_o ( async_b2a_next_phase ),
(* async *) .async_req_o ( async_b2a_req ),
(* async *) .async_ack_i ( async_a2b_ack ),
(* async *) .async_next_phase_i ( async_a2b_next_phase ),
(* async *) .async_req_i ( async_a2b_req ),
(* async *) .async_ack_o ( async_b2a_ack )
);
endmodule
module cdc_reset_ctrlr_half
import cdc_reset_ctrlr_pkg::*;
#(
/// The number of synchronization stages to use for the
/// clear signal request/acknowledge. Must be less than
/// the number of sync stages used in the CDC
parameter int unsigned SYNC_STAGES = 2,
/// Whether an asynchronous reset shall cause a clear
/// request to be sent to the other side.
parameter logic CLEAR_ON_ASYNC_RESET = 1'b1
)(
// Synchronous side
input logic clk_i,
input logic rst_ni,
input logic clear_i,
output logic isolate_o,
input logic isolate_ack_i,
output logic clear_o,
input logic clear_ack_i,
// Asynchronous clear sequence hanshaking
output clear_seq_phase_e async_next_phase_o,
output logic async_req_o,
input logic async_ack_i,
input clear_seq_phase_e async_next_phase_i,
input logic async_req_i,
output logic async_ack_o
);
// How this module works:
// The module is split into two parts. The initiator part consists of an FSM
// that is triggered by the clear_i signal and transitions through reset
// sequence. During those transitions, the `initiator_isolate_out` and
// `initiator_clear_out` signals are asserted appropriately.
// The receiver part receives the state transitions from the other clock
// domain (initiator part of the `cdc_reset_ctrlr_half` instance in the other
// clock domain) and asserts the `receiver_isolate_out` and
// `receiver_clear_out` appropriately (considering the `isolate_ack_i`
// signal).
// In both, the initiator and the receiver part, the respective FSM
// transitions through 4 phases. In the ISOLATE phase, the isolate signal is
// asserted and the connected CDCs are expected to block all further
// interactions with the outside world and acknowledge the isolation with the
// isolate_ack_i signal. In the CLEAR phase, the clear signal is asserted
// which resets the internal state of the CDC while keeping the isolate signal
// asserted. In the POST_CLEAR phase, the clear signal is deasserted. Finally,
// when returning to the IDLE phase, the isolate signal is deasserted to
// continue normal operation. The FSM uses a dedicated 4-phase handshaking CDC
// to transition between the phases in lock-step and transmits the current
// state to the other domain to avoid issues if the other domain is reset
// asynchronously while a clear procedure is pending.
//---------------------- Initiator Side ----------------------
// Sends clear sequence state transitions to the other side.
typedef enum logic[3:0] {
IDLE,
ISOLATE,
WAIT_ISOLATE_PHASE_ACK,
WAIT_ISOLATE_ACK,
CLEAR,
WAIT_CLEAR_PHASE_ACK,
WAIT_CLEAR_ACK,
POST_CLEAR,
FINISHED
} initiator_state_e;
initiator_state_e initiator_state_d, initiator_state_q;
// The current phase of the clear sequence, sent to the other side using a
// 4-phase CDC
clear_seq_phase_e initiator_clear_seq_phase;
logic initiator_phase_transition_req;
logic initiator_phase_transition_ack;
logic initiator_isolate_out;
logic initiator_clear_out;
always_comb begin
initiator_state_d = initiator_state_q;
initiator_phase_transition_req = 1'b0;
initiator_isolate_out = 1'b0;
initiator_clear_out = 1'b0;
initiator_clear_seq_phase = CLEAR_PHASE_IDLE;
case (initiator_state_q)
IDLE: begin
if (clear_i) begin
initiator_state_d = ISOLATE;
end
end
ISOLATE: begin
initiator_phase_transition_req = 1'b1;
initiator_clear_seq_phase = CLEAR_PHASE_ISOLATE;
initiator_isolate_out = 1'b1;
initiator_clear_out = 1'b0;
if (initiator_phase_transition_ack && isolate_ack_i) begin
initiator_state_d = CLEAR;
end else if (initiator_phase_transition_ack) begin
initiator_state_d = WAIT_ISOLATE_ACK;
end else if (isolate_ack_i) begin
initiator_state_d = WAIT_ISOLATE_PHASE_ACK;
end
end
WAIT_ISOLATE_ACK: begin
initiator_isolate_out = 1'b1;
initiator_clear_out = 1'b0;
initiator_clear_seq_phase = CLEAR_PHASE_ISOLATE;
if (isolate_ack_i) begin
initiator_state_d = CLEAR;
end
end
WAIT_ISOLATE_PHASE_ACK: begin
initiator_phase_transition_req = 1'b1;
initiator_clear_seq_phase = CLEAR_PHASE_ISOLATE;
initiator_isolate_out = 1'b1;
initiator_clear_out = 1'b0;
if (initiator_phase_transition_ack) begin
initiator_state_d = CLEAR;
end
end
CLEAR: begin
initiator_isolate_out = 1'b1;
initiator_clear_out = 1'b1;
initiator_phase_transition_req = 1'b1;
initiator_clear_seq_phase = CLEAR_PHASE_CLEAR;
if (initiator_phase_transition_ack && clear_ack_i) begin
initiator_state_d = POST_CLEAR;
end else if (initiator_phase_transition_ack) begin
initiator_state_d = WAIT_CLEAR_ACK;
end else if (clear_ack_i) begin
initiator_state_d = WAIT_CLEAR_PHASE_ACK;
end
end
WAIT_CLEAR_ACK: begin
initiator_isolate_out = 1'b1;
initiator_clear_out = 1'b1;
initiator_clear_seq_phase = CLEAR_PHASE_CLEAR;
if (clear_ack_i) begin
initiator_state_d = POST_CLEAR;
end
end
WAIT_CLEAR_PHASE_ACK: begin
initiator_phase_transition_req = 1'b1;
initiator_clear_seq_phase = CLEAR_PHASE_CLEAR;
initiator_isolate_out = 1'b1;
initiator_clear_out = 1'b1;
if (initiator_phase_transition_ack) begin
initiator_state_d = POST_CLEAR;
end
end
POST_CLEAR: begin
initiator_isolate_out = 1'b1;
initiator_clear_out = 1'b0;
initiator_phase_transition_req = 1'b1;
initiator_clear_seq_phase = CLEAR_PHASE_POST_CLEAR;
if (initiator_phase_transition_ack) begin
initiator_state_d = FINISHED;
end
end
FINISHED: begin
initiator_isolate_out = 1'b1;
initiator_clear_out = 1'b0;
initiator_phase_transition_req = 1'b1;
initiator_clear_seq_phase = CLEAR_PHASE_IDLE;
if (initiator_phase_transition_ack) begin
initiator_state_d = IDLE;
end
end
default: begin
initiator_state_d = ISOLATE;
end
endcase
end
always_ff @(posedge clk_i, negedge rst_ni) begin
if (!rst_ni) begin
if (CLEAR_ON_ASYNC_RESET) begin
initiator_state_q <= ISOLATE; // Start in the ISOLATE state which is
// the first state of a clear sequence.
end else begin
initiator_state_q <= IDLE;
end
end else begin
initiator_state_q <= initiator_state_d;
end
end
// Initiator CDC SRC
// We use 4 phase handshaking. That way it doesn't matter if one side is
// sudenly reset asynchronously. With a 2phase CDC, one-sided async resets might
// introduce spurios transactions.
cdc_4phase_src #(
.T(clear_seq_phase_e),
.SYNC_STAGES(2),
.DECOUPLED(0), // Important! The CDC must not be in decoupled mode.
// Otherwise we will proceed to the next state without
// waiting for the new state to arrive on the other side.
.SEND_RESET_MSG(CLEAR_ON_ASYNC_RESET), // Send the ISOLATE phase request immediately on async
// reset if async reset synchronization is enabled.
.RESET_MSG(CLEAR_PHASE_ISOLATE)
) i_state_transition_cdc_src(
.clk_i,
.rst_ni,
.data_i(initiator_clear_seq_phase),
.valid_i(initiator_phase_transition_req),
.ready_o(initiator_phase_transition_ack),
.async_req_o,
.async_ack_i,
.async_data_o(async_next_phase_o)
);
//---------------------- Receiver Side ----------------------
// This part of the circuit receives clear sequence state transitions from the
// other side.
clear_seq_phase_e receiver_phase_q;
clear_seq_phase_e receiver_next_phase;
logic receiver_phase_req, receiver_phase_ack;
logic receiver_isolate_out;
logic receiver_clear_out;
cdc_4phase_dst #(
.T(clear_seq_phase_e),
.SYNC_STAGES(2),
.DECOUPLED(0) // Important! The CDC must not be in decoupled mode. Otherwise
// we will proceed to the next state without waiting for the
// new state to arrive on the other side.
) i_state_transition_cdc_dst(
.clk_i,
.rst_ni,
.data_o(receiver_next_phase),
.valid_o(receiver_phase_req),
.ready_i(receiver_phase_ack),
.async_req_i,
.async_ack_o,
.async_data_i(async_next_phase_i)
);
always_ff @(posedge clk_i, negedge rst_ni) begin
if (!rst_ni) begin
receiver_phase_q <= CLEAR_PHASE_IDLE;
end else if (receiver_phase_req && receiver_phase_ack) begin
receiver_phase_q <= receiver_next_phase;
end
end
always_comb begin
receiver_isolate_out = 1'b0;
receiver_clear_out = 1'b0;
receiver_phase_ack = 1'b0;
// If there is a new phase requestd, checkout which one it is and act accordingly
if (receiver_phase_req) begin
case (receiver_next_phase)
CLEAR_PHASE_IDLE: begin
receiver_clear_out = 1'b0;
receiver_isolate_out = 1'b0;
receiver_phase_ack = 1'b1;
end
CLEAR_PHASE_ISOLATE: begin
receiver_clear_out = 1'b0;
receiver_isolate_out = 1'b1;
// Wait for the isolate to be acknowledged before ack'ing the phase
receiver_phase_ack = isolate_ack_i;
end
CLEAR_PHASE_CLEAR: begin
receiver_clear_out = 1'b1;
receiver_isolate_out = 1'b1;
// Wait for the clear to be acknowledged before ack'ing the phase
receiver_phase_ack = clear_ack_i;
end
CLEAR_PHASE_POST_CLEAR: begin
receiver_clear_out = 1'b0;
receiver_isolate_out = 1'b1;
receiver_phase_ack = 1'b1;
end
default: begin
receiver_clear_out = 1'b0;
receiver_isolate_out = 1'b0;
receiver_phase_ack = 1'b0;
end
endcase
end else begin
// No phase change is requested for the moment. Act according to the
// current phase signal
case (receiver_phase_q)
CLEAR_PHASE_IDLE: begin
receiver_clear_out = 1'b0;
receiver_isolate_out = 1'b0;
end
CLEAR_PHASE_ISOLATE: begin
receiver_clear_out = 1'b0;
receiver_isolate_out = 1'b1;
end
CLEAR_PHASE_CLEAR: begin
receiver_clear_out = 1'b1;
receiver_isolate_out = 1'b1;
end
CLEAR_PHASE_POST_CLEAR: begin
receiver_clear_out = 1'b0;
receiver_isolate_out = 1'b1;
end
default: begin
receiver_clear_out = 1'b0;
receiver_isolate_out = 1'b0;
receiver_phase_ack = 1'b0;
end
endcase
end
end
// Output Assignment
// The clear and isolate signal are the OR combination of the receiver and
// initiator's clear/isolate signal. This ensures that the correct sequence is
// followed even if both sides are cleared independently at roughly the same
// time.
assign clear_o = initiator_clear_out || receiver_clear_out;
assign isolate_o = initiator_isolate_out || receiver_isolate_out;
endmodule : cdc_reset_ctrlr_half
// Copyright 2018 ETH Zurich and University of Bologna.
//
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
//
// Fabian Schuiki <fschuiki@iis.ee.ethz.ch> (original CDC)
// Manuel Eggimann <meggiman@iis.ee.ethz.ch> (clearability feature)
/// A two-phase clock domain crossing.
///
/// CONSTRAINT: Requires max_delay of min_period(src_clk_i, dst_clk_i) through
/// the paths async_req, async_ack, async_data.
///
///
/// Reset Behavior:
///
/// In contrast to the cdc_2phase version without clear signal, this module
/// supports one-sided warm resets (asynchronously and synchronously). The way
/// this is implemented is described in more detail in the cdc_reset_ctrlr
/// module. To summarize a synchronous clear request i.e. src/dst_clear_i will
/// cause the respective other clock domain to reset as well without introducing
/// any spurious transactions. This is acomplished by an internal module
/// (cdc_reset_ctrlr) that starts a reset sequence on both sides of the CDC in
/// lock-step that first isolates the CDC from the outside world and then resets
/// it. The reset sequencer provides the following behavior:
/// 1. There are no spurious invalid or duplicated transactions regardless how
/// the individual sides are reset (can also happen roughly simultaneosly)
/// 2. The CDC becomes unready at the src side in the next cycle after
/// synchronous reset request until the reset sequence is completed. A currently
/// pending transactions might still complete (if the dst accepts at the
/// exact time the reset is request on the src die).
/// 3. During the reset sequence the dst might withdraw the valid signal. This
/// might violate higher level protocols. If you need this feature you would
/// have to path the existing implementation to wait with the isolate_ack
/// assertion until all open handshakes were acknowledged.
/// 4. If the parameter CLEAR_ON_ASYNC_RESET is enabled, the same behavior as
/// above is also valid for asynchronous resets on either side. However, this
/// increases the minimum number of synchronization stages (SYNC_STAGES
/// parameter) from 2 to 3 (read the cdc_reset_ctrlr header to figure out
/// why).
///
///
/* verilator lint_off DECLFILENAME */
// Copyright 2018, 2021 ETH Zurich and University of Bologna.
//
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
// SPDX-License-Identifier: SHL-0.51
//
// Author: Stefan Mach <smach@iis.ee.ethz.ch>
// Description: Common register defines for RTL designs
// Abridged Summary of available FF macros:
// `FF: asynchronous active-low reset
// `FFAR: asynchronous active-high reset
// `FFARN: [deprecated] asynchronous active-low reset
// `FFSR: synchronous active-high reset
// `FFSRN: synchronous active-low reset
// `FFNR: without reset
// `FFL: load-enable and asynchronous active-low reset
// `FFLAR: load-enable and asynchronous active-high reset
// `FFLARN: [deprecated] load-enable and asynchronous active-low reset
// `FFLARNC: load-enable and asynchronous active-low reset and synchronous active-high clear
// `FFLSR: load-enable and synchronous active-high reset
// `FFLSRN: load-enable and synchronous active-low reset
// `FFLNR: load-enable without reset
// Flip-Flop with asynchronous active-low reset
// __q: Q output of FF
// __d: D input of FF
// __reset_value: value assigned upon reset
// (__clk: clock input)
// (__arst_n: asynchronous reset, active-low)
// Flip-Flop with asynchronous active-high reset
// __q: Q output of FF
// __d: D input of FF
// __reset_value: value assigned upon reset
// __clk: clock input
// __arst: asynchronous reset, active-high
// DEPRECATED - use `FF instead
// Flip-Flop with asynchronous active-low reset
// __q: Q output of FF
// __d: D input of FF
// __reset_value: value assigned upon reset
// __clk: clock input
// __arst_n: asynchronous reset, active-low
// Flip-Flop with synchronous active-high reset
// __q: Q output of FF
// __d: D input of FF
// __reset_value: value assigned upon reset
// __clk: clock input
// __reset_clk: reset input, active-high
// Flip-Flop with synchronous active-low reset
// __q: Q output of FF
// __d: D input of FF
// __reset_value: value assigned upon reset
// __clk: clock input
// __reset_n_clk: reset input, active-low
// Always-enable Flip-Flop without reset
// __q: Q output of FF
// __d: D input of FF
// __clk: clock input
// Flip-Flop with load-enable and asynchronous active-low reset (implicit clock and reset)
// __q: Q output of FF
// __d: D input of FF
// __load: load d value into FF
// __reset_value: value assigned upon reset
// (__clk: clock input)
// (__arst_n: asynchronous reset, active-low)
// Flip-Flop with load-enable and asynchronous active-high reset
// __q: Q output of FF
// __d: D input of FF
// __load: load d value into FF
// __reset_value: value assigned upon reset
// __clk: clock input
// __arst: asynchronous reset, active-high
// DEPRECATED - use `FFL instead
// Flip-Flop with load-enable and asynchronous active-low reset
// __q: Q output of FF
// __d: D input of FF
// __load: load d value into FF
// __reset_value: value assigned upon reset
// __clk: clock input
// __arst_n: asynchronous reset, active-low
// Flip-Flop with load-enable and synchronous active-high reset
// __q: Q output of FF
// __d: D input of FF
// __load: load d value into FF
// __reset_value: value assigned upon reset
// __clk: clock input
// __reset_clk: reset input, active-high
// Flip-Flop with load-enable and synchronous active-low reset
// __q: Q output of FF
// __d: D input of FF
// __load: load d value into FF
// __reset_value: value assigned upon reset
// __clk: clock input
// __reset_n_clk: reset input, active-low
// Flip-Flop with load-enable and asynchronous active-low reset and synchronous clear
// __q: Q output of FF
// __d: D input of FF
// __load: load d value into FF
// __clear: assign reset value into FF
// __reset_value: value assigned upon reset
// __clk: clock input
// __arst_n: asynchronous reset, active-low
// Load-enable Flip-Flop without reset
// __q: Q output of FF
// __d: D input of FF
// __load: load d value into FF
// __clk: clock input
module cdc_2phase_clearable #(
parameter type T = logic,
parameter int unsigned SYNC_STAGES = 3,
parameter int CLEAR_ON_ASYNC_RESET = 1
)(
input logic src_rst_ni,
input logic src_clk_i,
input logic src_clear_i,
output logic src_clear_pending_o,
input T src_data_i,
input logic src_valid_i,
output logic src_ready_o,
input logic dst_rst_ni,
input logic dst_clk_i,
input logic dst_clear_i,
output logic dst_clear_pending_o,
output T dst_data_o,
output logic dst_valid_o,
input logic dst_ready_i
);
logic s_src_clear_req;
logic s_src_clear_ack_q;
logic s_src_ready;
logic s_src_isolate_req;
logic s_src_isolate_ack_q;
logic s_dst_clear_req;
logic s_dst_clear_ack_q;
logic s_dst_valid;
logic s_dst_isolate_req;
logic s_dst_isolate_ack_q;
// Asynchronous handshake signals between the CDCs
(* dont_touch = "true" *) logic async_req;
(* dont_touch = "true" *) logic async_ack;
(* dont_touch = "true" *) T async_data;
if (CLEAR_ON_ASYNC_RESET) begin : gen_elaboration_assertion
if (SYNC_STAGES < 3)
$error("The clearable 2-phase CDC with async reset",
"synchronization requires at least 3 synchronizer stages for the FIFO.");
end else begin : gen_elaboration_assertion
if (SYNC_STAGES < 2) begin : gen_elaboration_assertion
$error("A minimum of 2 synchronizer stages is required for proper functionality.");
end
end
// The sender in the source domain.
cdc_2phase_src_clearable #(
.T ( T ),
.SYNC_STAGES ( SYNC_STAGES )
) i_src (
.rst_ni ( src_rst_ni ),
.clk_i ( src_clk_i ),
.clear_i ( s_src_clear_req ),
.data_i ( src_data_i ),
.valid_i ( src_valid_i & !s_src_isolate_req ),
.ready_o ( s_src_ready ),
.async_req_o ( async_req ),
.async_ack_i ( async_ack ),
.async_data_o ( async_data )
);
assign src_ready_o = s_src_ready & !s_src_isolate_req;
// The receiver in the destination domain.
cdc_2phase_dst_clearable #(
.T ( T ),
.SYNC_STAGES ( SYNC_STAGES )
) i_dst (
.rst_ni ( dst_rst_ni ),
.clk_i ( dst_clk_i ),
.clear_i ( s_dst_clear_req ),
.data_o ( dst_data_o ),
.valid_o ( s_dst_valid ),
.ready_i ( dst_ready_i & !s_dst_isolate_req ),
.async_req_i ( async_req ),
.async_ack_o ( async_ack ),
.async_data_i ( async_data )
);
assign dst_valid_o = s_dst_valid & !s_dst_isolate_req;
// Synchronize the clear and reset signaling in both directions (see header of
// the cdc_reset_ctrlr module for more details.)
cdc_reset_ctrlr #(
.SYNC_STAGES(SYNC_STAGES-1)
) i_cdc_reset_ctrlr (
.a_clk_i ( src_clk_i ),
.a_rst_ni ( src_rst_ni ),
.a_clear_i ( src_clear_i ),
.a_clear_o ( s_src_clear_req ),
.a_clear_ack_i ( s_src_clear_ack_q ),
.a_isolate_o ( s_src_isolate_req ),
.a_isolate_ack_i ( s_src_isolate_ack_q ),
.b_clk_i ( dst_clk_i ),
.b_rst_ni ( dst_rst_ni ),
.b_clear_i ( dst_clear_i ),
.b_clear_o ( s_dst_clear_req ),
.b_clear_ack_i ( s_dst_clear_ack_q ),
.b_isolate_o ( s_dst_isolate_req ),
.b_isolate_ack_i ( s_dst_isolate_ack_q )
);
// Just delay the isolate request by one cycle. We can ensure isolation within
// one cycle by just deasserting valid and ready signals on both sides of the CDC.
always_ff @(posedge src_clk_i, negedge src_rst_ni) begin
if (!src_rst_ni) begin
s_src_isolate_ack_q <= 1'b0;
s_src_clear_ack_q <= 1'b0;
end else begin
s_src_isolate_ack_q <= s_src_isolate_req;
s_src_clear_ack_q <= s_src_clear_req;
end
end
always_ff @(posedge dst_clk_i, negedge dst_rst_ni) begin
if (!dst_rst_ni) begin
s_dst_isolate_ack_q <= 1'b0;
s_dst_clear_ack_q <= 1'b0;
end else begin
s_dst_isolate_ack_q <= s_dst_isolate_req;
s_dst_clear_ack_q <= s_dst_clear_req;
end
end
assign src_clear_pending_o = s_src_isolate_req; // The isolate signal stays
// asserted during the whole
// clear sequence.
assign dst_clear_pending_o = s_dst_isolate_req;
endmodule
/// Half of the two-phase clock domain crossing located in the source domain.
module cdc_2phase_src_clearable #(
parameter type T = logic,
parameter int unsigned SYNC_STAGES = 2
) (
input logic rst_ni,
input logic clk_i,
input logic clear_i,
input T data_i,
input logic valid_i,
output logic ready_o,
output logic async_req_o,
input logic async_ack_i,
output T async_data_o
);
(* dont_touch = "true" *)
logic req_src_d, req_src_q, ack_synced;
(* dont_touch = "true" *)
T data_src_d, data_src_q;
// Synchronize the async ACK
sync #(
.STAGES(SYNC_STAGES)
) i_sync(
.clk_i,
.rst_ni,
.serial_i( async_ack_i ),
.serial_o( ack_synced )
);
// If we receive the clear signal clear the content of the request flip-flop
// and the data register
always_comb begin
data_src_d = data_src_q;
req_src_d = req_src_q;
if (clear_i) begin
req_src_d = 1'b0;
// The req_src and data_src registers change when a new data item is accepted.
end else if (valid_i && ready_o) begin
req_src_d = ~req_src_q;
data_src_d = data_i;
end
end
always_ff @(posedge (clk_i)) begin
data_src_q <= (data_src_d);
end
always_ff @(posedge clk_i or negedge rst_ni) begin
if (!rst_ni) begin
req_src_q <= 0;
end else begin
req_src_q <= req_src_d;
end
end
// Output assignments.
assign ready_o = (req_src_q == ack_synced);
assign async_req_o = req_src_q;
assign async_data_o = data_src_q;
// Assertions
endmodule
/// Half of the two-phase clock domain crossing located in the destination
/// domain.
module cdc_2phase_dst_clearable #(
parameter type T = logic,
parameter int unsigned SYNC_STAGES = 2
)(
input logic rst_ni,
input logic clk_i,
input logic clear_i,
output T data_o,
output logic valid_o,
input logic ready_i,
input logic async_req_i,
output logic async_ack_o,
input T async_data_i
);
(* dont_touch = "true" *)
(* async_reg = "true" *)
logic ack_dst_d, ack_dst_q, req_synced, req_synced_q1;
(* dont_touch = "true" *)
T data_dst_d, data_dst_q;
//Synchronize the request
sync #(
.STAGES(SYNC_STAGES)
) i_sync(
.clk_i,
.rst_ni,
.serial_i( async_req_i ),
.serial_o( req_synced )
);
// The ack_dst register changes when a new data item is accepted.
always_comb begin
ack_dst_d = ack_dst_q;
if (clear_i) begin
ack_dst_d = 1'b0;
end else if (valid_o && ready_i) begin
ack_dst_d = ~ack_dst_q;
end
end
// The data_dst register samples when a new data item is presented. This is
// indicated by a transition in the req_synced line.
always_comb begin
data_dst_d = data_dst_q;
if (req_synced != req_synced_q1 && !valid_o) begin
data_dst_d = async_data_i;
end
end
always_ff @(posedge (clk_i)) begin
data_dst_q <= (data_dst_d);
end
always_ff @(posedge clk_i or negedge rst_ni) begin
if (!rst_ni) begin
ack_dst_q <= 0;
req_synced_q1 <= 1'b0;
end else begin
ack_dst_q <= ack_dst_d;
// The req_synced_q1 is the delayed version of the synchronized req_synced
// used to detect transitions in the request.
req_synced_q1 <= req_synced;
end
end
// Output assignments.
assign valid_o = (ack_dst_q != req_synced_q1);
assign data_o = data_dst_q;
assign async_ack_o = ack_dst_q;
endmodule
/* verilator lint_on DECLFILENAME */
// Copyright 2018 ETH Zurich and University of Bologna.
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
// Author: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
module fifo_v2 #(
parameter bit FALL_THROUGH = 1'b0, // fifo is in fall-through mode
parameter int unsigned DATA_WIDTH = 32, // default data width if the fifo is of type logic
parameter int unsigned DEPTH = 8, // depth can be arbitrary from 0 to 2**32
parameter int unsigned ALM_EMPTY_TH = 1, // almost empty threshold (when to assert alm_empty_o)
parameter int unsigned ALM_FULL_TH = 1, // almost full threshold (when to assert alm_full_o)
parameter type dtype = logic [DATA_WIDTH-1:0],
// DO NOT OVERWRITE THIS PARAMETER
parameter int unsigned ADDR_DEPTH = (DEPTH > 1) ? $clog2(DEPTH) : 1
)(
input logic clk_i, // Clock
input logic rst_ni, // Asynchronous reset active low
input logic flush_i, // flush the queue
input logic testmode_i, // test_mode to bypass clock gating
// status flags
output logic full_o, // queue is full
output logic empty_o, // queue is empty
output logic alm_full_o, // FIFO fillstate >= the specified threshold
output logic alm_empty_o, // FIFO fillstate <= the specified threshold
// as long as the queue is not full we can push new data
input dtype data_i, // data to push into the queue
input logic push_i, // data is valid and can be pushed to the queue
// as long as the queue is not empty we can pop new elements
output dtype data_o, // output data
input logic pop_i // pop head from queue
);
logic [ADDR_DEPTH-1:0] usage;
// generate threshold parameters
if (DEPTH == 0) begin
assign alm_full_o = 1'b0; // that signal does not make any sense in a FIFO of depth 0
assign alm_empty_o = 1'b0; // that signal does not make any sense in a FIFO of depth 0
end else begin
assign alm_full_o = (usage >= ALM_FULL_TH[ADDR_DEPTH-1:0]);
assign alm_empty_o = (usage <= ALM_EMPTY_TH[ADDR_DEPTH-1:0]);
end
fifo_v3 #(
.FALL_THROUGH ( FALL_THROUGH ),
.DATA_WIDTH ( DATA_WIDTH ),
.DEPTH ( DEPTH ),
.dtype ( dtype )
) i_fifo_v3 (
.clk_i,
.rst_ni,
.flush_i,
.testmode_i,
.full_o,
.empty_o,
.usage_o (usage),
.data_i,
.push_i,
.data_o,
.pop_i
);
// pragma translate_off
// pragma translate_on
endmodule // fifo_v2
// Copyright (c) 2014-2020 ETH Zurich, University of Bologna
//
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
//
// Authors:
// - Andreas Kurth <akurth@iis.ee.ethz.ch>
// - Florian Zaruba <zarubaf@iis.ee.ethz.ch>
// - Wolfgang Roenninger <wroennin@iis.ee.ethz.ch>
// - Fabian Schuiki <fschuiki@iis.ee.ethz.ch>
// - Matheus Cavalcante <matheusd@iis.ee.ethz.ch>
//! AXI Package
/// Contains all necessary type definitions, constants, and generally useful functions.
package axi_pkg;
/// AXI Transaction Burst Width.
parameter int unsigned BurstWidth = 32'd2;
/// AXI Transaction Response Width.
parameter int unsigned RespWidth = 32'd2;
/// AXI Transaction Cacheability Width.
parameter int unsigned CacheWidth = 32'd4;
/// AXI Transaction Protection Width.
parameter int unsigned ProtWidth = 32'd3;
/// AXI Transaction Quality of Service Width.
parameter int unsigned QosWidth = 32'd4;
/// AXI Transaction Region Width.
parameter int unsigned RegionWidth = 32'd4;
/// AXI Transaction Length Width.
parameter int unsigned LenWidth = 32'd8;
/// AXI Transaction Size Width.
parameter int unsigned SizeWidth = 32'd3;
/// AXI Lock Width.
parameter int unsigned LockWidth = 32'd1;
/// AXI5 Atomic Operation Width.
parameter int unsigned AtopWidth = 32'd6;
/// AXI5 Non-Secure Address Identifier.
parameter int unsigned NsaidWidth = 32'd4;
/// AXI Transaction Burst Width.
typedef logic [BurstWidth-1:0] burst_t;
/// AXI Transaction Response Type.
typedef logic [RespWidth-1:0] resp_t;
/// AXI Transaction Cacheability Type.
typedef logic [CacheWidth-1:0] cache_t;
/// AXI Transaction Protection Type.
typedef logic [ProtWidth-1:0] prot_t;
/// AXI Transaction Quality of Service Type.
typedef logic [QosWidth-1:0] qos_t;
/// AXI Transaction Region Type.
typedef logic [RegionWidth-1:0] region_t;
/// AXI Transaction Length Type.
typedef logic [LenWidth-1:0] len_t;
/// AXI Transaction Size Type.
typedef logic [SizeWidth-1:0] size_t;
/// AXI5 Atomic Operation Type.
typedef logic [AtopWidth-1:0] atop_t; // atomic operations
/// AXI5 Non-Secure Address Identifier.
typedef logic [NsaidWidth-1:0] nsaid_t;
/// In a fixed burst:
/// - The address is the same for every transfer in the burst.
/// - The byte lanes that are valid are constant for all beats in the burst. However, within
/// those byte lanes, the actual bytes that have `wstrb` asserted can differ for each beat in
/// the burst.
/// This burst type is used for repeated accesses to the same location such as when loading or
/// emptying a FIFO.
localparam BURST_FIXED = 2'b00;
/// In an incrementing burst, the address for each transfer in the burst is an increment of the
/// address for the previous transfer. The increment value depends on the size of the transfer.
/// For example, the address for each transfer in a burst with a size of 4 bytes is the previous
/// address plus four.
/// This burst type is used for accesses to normal sequential memory.
localparam BURST_INCR = 2'b01;
/// A wrapping burst is similar to an incrementing burst, except that the address wraps around to
/// a lower address if an upper address limit is reached.
/// The following restrictions apply to wrapping bursts:
/// - The start address must be aligned to the size of each transfer.
/// - The length of the burst must be 2, 4, 8, or 16 transfers.
localparam BURST_WRAP = 2'b10;
/// Normal access success. Indicates that a normal access has been successful. Can also indicate
/// that an exclusive access has failed.
localparam RESP_OKAY = 2'b00;
/// Exclusive access okay. Indicates that either the read or write portion of an exclusive access
/// has been successful.
localparam RESP_EXOKAY = 2'b01;
/// Slave error. Used when the access has reached the slave successfully, but the slave wishes to
/// return an error condition to the originating master.
localparam RESP_SLVERR = 2'b10;
/// Decode error. Generated, typically by an interconnect component, to indicate that there is no
/// slave at the transaction address.
localparam RESP_DECERR = 2'b11;
/// When this bit is asserted, the interconnect, or any component, can delay the transaction
/// reaching its final destination for any number of cycles.
localparam CACHE_BUFFERABLE = 4'b0001;
/// When HIGH, Modifiable indicates that the characteristics of the transaction can be modified.
/// When Modifiable is LOW, the transaction is Non-modifiable.
localparam CACHE_MODIFIABLE = 4'b0010;
/// When this bit is asserted, read allocation of the transaction is recommended but is not
/// mandatory.
localparam CACHE_RD_ALLOC = 4'b0100;
/// When this bit is asserted, write allocation of the transaction is recommended but is not
/// mandatory.
localparam CACHE_WR_ALLOC = 4'b1000;
/// Maximum number of bytes per burst, as specified by `size` (see Table A3-2).
function automatic shortint unsigned num_bytes(size_t size);
return 1 << size;
endfunction
/// An overly long address type.
/// It lets us define functions that work generically for shorter addresses. We rely on the
/// synthesizer to optimize the unused bits away.
typedef logic [127:0] largest_addr_t;
/// Aligned address of burst (see A3-51).
function automatic largest_addr_t aligned_addr(largest_addr_t addr, size_t size);
return (addr >> size) << size;
endfunction
/// Warp boundary of a `BURST_WRAP` transfer (see A3-51).
/// This is the lowest address accessed within a wrapping burst.
/// This address is aligned to the size and length of the burst.
/// The length of a `BURST_WRAP` has to be 2, 4, 8, or 16 transfers.
function automatic largest_addr_t wrap_boundary (largest_addr_t addr, size_t size, len_t len);
largest_addr_t wrap_addr;
// pragma translate_off
// pragma translate_on
// In A3-51 the wrap boundary is defined as:
// `Wrap_Boundary = (INT(Start_Address / (Number_Bytes × Burst_Length))) ×
// (Number_Bytes × Burst_Length)`
// Whereas the aligned address is defined as:
// `Aligned_Address = (INT(Start_Address / Number_Bytes)) × Number_Bytes`
// This leads to the wrap boundary using the same calculation as the aligned address, difference
// being the additional dependency on the burst length. The addition in the case statement
// is equal to the multiplication with `Burst_Length` as a shift (used by `aligned_addr`) is
// equivalent with multiplication and division by a power of two, which conveniently are the
// only allowed values for `len` of a `BURST_WRAP`.
unique case (len)
4'b1 : wrap_addr = (addr >> (unsigned'(size) + 1)) << (unsigned'(size) + 1); // multiply `Number_Bytes` by `2`
4'b11 : wrap_addr = (addr >> (unsigned'(size) + 2)) << (unsigned'(size) + 2); // multiply `Number_Bytes` by `4`
4'b111 : wrap_addr = (addr >> (unsigned'(size) + 3)) << (unsigned'(size) + 3); // multiply `Number_Bytes` by `8`
4'b1111 : wrap_addr = (addr >> (unsigned'(size) + 4)) << (unsigned'(size) + 4); // multiply `Number_Bytes` by `16`
default : wrap_addr = '0;
endcase
return wrap_addr;
endfunction
/// Address of beat (see A3-51).
function automatic largest_addr_t
beat_addr(largest_addr_t addr, size_t size, len_t len, burst_t burst, shortint unsigned i_beat);
largest_addr_t ret_addr = addr;
largest_addr_t wrp_bond = '0;
if (burst == BURST_WRAP) begin
// do not trigger the function if there is no wrapping burst, to prevent assumptions firing
wrp_bond = wrap_boundary(addr, size, len);
end
if (i_beat != 0 && burst != BURST_FIXED) begin
// From A3-51:
// For an INCR burst, and for a WRAP burst for which the address has not wrapped, this
// equation determines the address of any transfer after the first transfer in a burst:
// `Address_N = Aligned_Address + (N – 1) × Number_Bytes` (N counts from 1 to len!)
ret_addr = aligned_addr(addr, size) + i_beat * num_bytes(size);
// From A3-51:
// For a WRAP burst, if Address_N = Wrap_Boundary + (Number_Bytes × Burst_Length), then:
// * Use this equation for the current transfer:
// `Address_N = Wrap_Boundary`
// * Use this equation for any subsequent transfers:
// `Address_N = Start_Address + ((N – 1) × Number_Bytes) – (Number_Bytes × Burst_Length)`
// This means that the address calculation of a `BURST_WRAP` fundamentally works the same
// as for a `BURST_INC`, the difference is when the calculated address increments
// over the wrap threshold, the address wraps around by subtracting the accessed address
// space from the normal `BURST_INCR` address. The lower wrap boundary is equivalent to
// The wrap trigger condition minus the container size (`num_bytes(size) * (len + 1)`).
if (burst == BURST_WRAP && ret_addr >= wrp_bond + (num_bytes(size) * (len + 1))) begin
ret_addr = ret_addr - (num_bytes(size) * (len + 1));
end
end
return ret_addr;
endfunction
/// Index of lowest byte in beat (see A3-51).
function automatic shortint unsigned
beat_lower_byte(largest_addr_t addr, size_t size, len_t len, burst_t burst,
shortint unsigned strobe_width, shortint unsigned i_beat);
largest_addr_t _addr = beat_addr(addr, size, len, burst, i_beat);
return _addr - (_addr / strobe_width) * strobe_width;
endfunction
/// Index of highest byte in beat (see A3-51).
function automatic shortint unsigned
beat_upper_byte(largest_addr_t addr, size_t size, len_t len, burst_t burst,
shortint unsigned strobe_width, shortint unsigned i_beat);
if (i_beat == 0) begin
return aligned_addr(addr, size) + (num_bytes(size) - 1) - (addr / strobe_width) * strobe_width;
end else begin
return beat_lower_byte(addr, size, len, burst, strobe_width, i_beat) + num_bytes(size) - 1;
end
endfunction
/// Is the bufferable bit set?
function automatic logic bufferable(cache_t cache);
return |(cache & CACHE_BUFFERABLE);
endfunction
/// Is the modifiable bit set?
function automatic logic modifiable(cache_t cache);
return |(cache & CACHE_MODIFIABLE);
endfunction
/// Memory Type.
typedef enum logic [3:0] {
DEVICE_NONBUFFERABLE,
DEVICE_BUFFERABLE,
NORMAL_NONCACHEABLE_NONBUFFERABLE,
NORMAL_NONCACHEABLE_BUFFERABLE,
WTHRU_NOALLOCATE,
WTHRU_RALLOCATE,
WTHRU_WALLOCATE,
WTHRU_RWALLOCATE,
WBACK_NOALLOCATE,
WBACK_RALLOCATE,
WBACK_WALLOCATE,
WBACK_RWALLOCATE
} mem_type_t;
/// Create an `AR_CACHE` field from a `mem_type_t` type.
function automatic logic [3:0] get_arcache(mem_type_t mtype);
unique case (mtype)
DEVICE_NONBUFFERABLE : return 4'b0000;
DEVICE_BUFFERABLE : return 4'b0001;
NORMAL_NONCACHEABLE_NONBUFFERABLE : return 4'b0010;
NORMAL_NONCACHEABLE_BUFFERABLE : return 4'b0011;
WTHRU_NOALLOCATE : return 4'b1010;
WTHRU_RALLOCATE : return 4'b1110;
WTHRU_WALLOCATE : return 4'b1010;
WTHRU_RWALLOCATE : return 4'b1110;
WBACK_NOALLOCATE : return 4'b1011;
WBACK_RALLOCATE : return 4'b1111;
WBACK_WALLOCATE : return 4'b1011;
WBACK_RWALLOCATE : return 4'b1111;
endcase // mtype
endfunction
/// Create an `AW_CACHE` field from a `mem_type_t` type.
function automatic logic [3:0] get_awcache(mem_type_t mtype);
unique case (mtype)
DEVICE_NONBUFFERABLE : return 4'b0000;
DEVICE_BUFFERABLE : return 4'b0001;
NORMAL_NONCACHEABLE_NONBUFFERABLE : return 4'b0010;
NORMAL_NONCACHEABLE_BUFFERABLE : return 4'b0011;
WTHRU_NOALLOCATE : return 4'b0110;
WTHRU_RALLOCATE : return 4'b0110;
WTHRU_WALLOCATE : return 4'b1110;
WTHRU_RWALLOCATE : return 4'b1110;
WBACK_NOALLOCATE : return 4'b0111;
WBACK_RALLOCATE : return 4'b0111;
WBACK_WALLOCATE : return 4'b1111;
WBACK_RWALLOCATE : return 4'b1111;
endcase // mtype
endfunction
/// RESP precedence: DECERR > SLVERR > OKAY > EXOKAY. This is not defined in the AXI standard but
/// depends on the implementation. We consistently use the precedence above. Rationale:
/// - EXOKAY means an exclusive access was successful, whereas OKAY means it was not. Thus, if
/// OKAY and EXOKAY are to be merged, OKAY precedes because the exclusive access was not fully
/// successful.
/// - Both DECERR and SLVERR mean (part of) a transaction were unsuccessful, whereas OKAY means an
/// entire transaction was successful. Thus both DECERR and SLVERR precede OKAY.
/// - DECERR means (part of) a transactions could not be routed to a slave component, whereas
/// SLVERR means the transaction reached a slave component but lead to an error condition there.
/// Thus DECERR precedes SLVERR because DECERR happens earlier in the handling of a transaction.
function automatic resp_t resp_precedence(resp_t resp_a, resp_t resp_b);
unique case (resp_a)
RESP_OKAY: begin
// Any response except EXOKAY precedes OKAY.
if (resp_b == RESP_EXOKAY) begin
return resp_a;
end else begin
return resp_b;
end
end
RESP_EXOKAY: begin
// Any response precedes EXOKAY.
return resp_b;
end
RESP_SLVERR: begin
// Only DECERR precedes SLVERR.
if (resp_b == RESP_DECERR) begin
return resp_b;
end else begin
return resp_a;
end
end
RESP_DECERR: begin
// No response precedes DECERR.
return resp_a;
end
endcase
endfunction
/// AW Width: Returns the width of the AW channel payload
function automatic int unsigned aw_width(int unsigned addr_width, int unsigned id_width,
int unsigned user_width );
// Sum the individual bit widths of the signals
return (id_width + addr_width + LenWidth + SizeWidth + BurstWidth + LockWidth + CacheWidth +
ProtWidth + QosWidth + RegionWidth + AtopWidth + user_width );
endfunction
/// W Width: Returns the width of the W channel payload
function automatic int unsigned w_width(int unsigned data_width, int unsigned user_width );
// Sum the individual bit widths of the signals
return (data_width + data_width / 32'd8 + 32'd1 + user_width);
// ^- StrobeWidth ^- LastWidth
endfunction
/// B Width: Returns the width of the B channel payload
function automatic int unsigned b_width(int unsigned id_width, int unsigned user_width );
// Sum the individual bit widths of the signals
return (id_width + RespWidth + user_width);
endfunction
/// AR Width: Returns the width of the AR channel payload
function automatic int unsigned ar_width(int unsigned addr_width, int unsigned id_width,
int unsigned user_width );
// Sum the individual bit widths of the signals
return (id_width + addr_width + LenWidth + SizeWidth + BurstWidth + LockWidth + CacheWidth +
ProtWidth + QosWidth + RegionWidth + user_width );
endfunction
/// R Width: Returns the width of the R channel payload
function automatic int unsigned r_width(int unsigned data_width, int unsigned id_width,
int unsigned user_width );
// Sum the individual bit widths of the signals
return (id_width + data_width + RespWidth + 32'd1 + user_width);
// ^- LastWidth
endfunction
/// Request Width: Returns the width of the request channel
function automatic int unsigned req_width(int unsigned addr_width, int unsigned data_width,
int unsigned id_width, int unsigned aw_user_width,
int unsigned ar_user_width, int unsigned w_user_width );
// Sum the individual bit widths of the signals and their handshakes
// v- valids
return (aw_width(addr_width, id_width, aw_user_width) + 32'd1 +
w_width(data_width, w_user_width) + 32'd1 +
ar_width(addr_width, id_width, ar_user_width) + 32'd1 + 32'd1 + 32'd1 );
// ^- R, ^- B ready
endfunction
/// Response Width: Returns the width of the response channel
function automatic int unsigned rsp_width(int unsigned data_width, int unsigned id_width,
int unsigned r_user_width, int unsigned b_user_width );
// Sum the individual bit widths of the signals and their handshakes
// v- valids
return (r_width(data_width, id_width, r_user_width) + 32'd1 +
b_width(id_width, b_user_width) + 32'd1 + 32'd1 + 32'd1 + 32'd1);
// ^- AW, ^- AR, ^- W ready
endfunction
// ATOP[5:0]
/// - Sends a single data value with an address.
/// - The target swaps the value at the addressed location with the data value that is supplied in
/// the transaction.
/// - The original data value at the addressed location is returned.
/// - Outbound data size is 1, 2, 4, or 8 bytes.
/// - Inbound data size is the same as the outbound data size.
localparam ATOP_ATOMICSWAP = 6'b110000;
/// - Sends two data values, the compare value and the swap value, to the addressed location.
/// The compare and swap values are of equal size.
/// - The data value at the addressed location is checked against the compare value:
/// - If the values match, the swap value is written to the addressed location.
/// - If the values do not match, the swap value is not written to the addressed location.
/// - The original data value at the addressed location is returned.
/// - Outbound data size is 2, 4, 8, 16, or 32 bytes.
/// - Inbound data size is half of the outbound data size because the outbound data contains both
/// compare and swap values, whereas the inbound data has only the original data value.
localparam ATOP_ATOMICCMP = 6'b110001;
// ATOP[5:4]
/// Perform no atomic operation.
localparam ATOP_NONE = 2'b00;
/// - Sends a single data value with an address and the atomic operation to be performed.
/// - The target performs the operation using the sent data and value at the addressed location as
/// operands.
/// - The result is stored in the address location.
/// - A single response is given without data.
/// - Outbound data size is 1, 2, 4, or 8 bytes.
localparam ATOP_ATOMICSTORE = 2'b01;
/// Sends a single data value with an address and the atomic operation to be performed.
/// - The original data value at the addressed location is returned.
/// - The target performs the operation using the sent data and value at the addressed location as
/// operands.
/// - The result is stored in the address location.
/// - Outbound data size is 1, 2, 4, or 8 bytes.
/// - Inbound data size is the same as the outbound data size.
localparam ATOP_ATOMICLOAD = 2'b10;
// ATOP[3]
/// For AtomicStore and AtomicLoad transactions `AWATOP[3]` indicates the endianness that is
/// required for the atomic operation. The value of `AWATOP[3]` applies to arithmetic operations
/// only and is ignored for bitwise logical operations.
/// When deasserted, this bit indicates that the operation is little-endian.
localparam ATOP_LITTLE_END = 1'b0;
/// When asserted, this bit indicates that the operation is big-endian.
localparam ATOP_BIG_END = 1'b1;
// ATOP[2:0]
/// The value in memory is added to the sent data and the result stored in memory.
localparam ATOP_ADD = 3'b000;
/// Every set bit in the sent data clears the corresponding bit of the data in memory.
localparam ATOP_CLR = 3'b001;
/// Bitwise exclusive OR of the sent data and value in memory.
localparam ATOP_EOR = 3'b010;
/// Every set bit in the sent data sets the corresponding bit of the data in memory.
localparam ATOP_SET = 3'b011;
/// The value stored in memory is the maximum of the existing value and sent data. This operation
/// assumes signed data.
localparam ATOP_SMAX = 3'b100;
/// The value stored in memory is the minimum of the existing value and sent data. This operation
/// assumes signed data.
localparam ATOP_SMIN = 3'b101;
/// The value stored in memory is the maximum of the existing value and sent data. This operation
/// assumes unsigned data.
localparam ATOP_UMAX = 3'b110;
/// The value stored in memory is the minimum of the existing value and sent data. This operation
/// assumes unsigned data.
localparam ATOP_UMIN = 3'b111;
// ATOP[5] == 1'b1 indicated that an atomic transaction has a read response
// Ussage eg: if (req_i.aw.atop[axi_pkg::ATOP_R_RESP]) begin
localparam ATOP_R_RESP = 32'd5;
// `xbar_latency_e` and `xbar_cfg_t` are documented in `doc/axi_xbar.md`.
/// Slice on Demux AW channel.
localparam logic [9:0] DemuxAw = (1 << 9);
/// Slice on Demux W channel.
localparam logic [9:0] DemuxW = (1 << 8);
/// Slice on Demux B channel.
localparam logic [9:0] DemuxB = (1 << 7);
/// Slice on Demux AR channel.
localparam logic [9:0] DemuxAr = (1 << 6);
/// Slice on Demux R channel.
localparam logic [9:0] DemuxR = (1 << 5);
/// Slice on Mux AW channel.
localparam logic [9:0] MuxAw = (1 << 4);
/// Slice on Mux W channel.
localparam logic [9:0] MuxW = (1 << 3);
/// Slice on Mux B channel.
localparam logic [9:0] MuxB = (1 << 2);
/// Slice on Mux AR channel.
localparam logic [9:0] MuxAr = (1 << 1);
/// Slice on Mux R channel.
localparam logic [9:0] MuxR = (1 << 0);
/// Latency configuration for `axi_xbar`.
typedef enum logic [9:0] {
NO_LATENCY = 10'b000_00_000_00,
CUT_SLV_AX = DemuxAw | DemuxAr,
CUT_MST_AX = MuxAw | MuxAr,
CUT_ALL_AX = DemuxAw | DemuxAr | MuxAw | MuxAr,
CUT_SLV_PORTS = DemuxAw | DemuxW | DemuxB | DemuxAr | DemuxR,
CUT_MST_PORTS = MuxAw | MuxW | MuxB | MuxAr | MuxR,
CUT_ALL_PORTS = 10'b111_11_111_11
} xbar_latency_e;
/// Configuration for `axi_xbar`.
typedef struct packed {
/// Number of slave ports of the crossbar.
/// This many master modules are connected to it.
int unsigned NoSlvPorts;
/// Number of master ports of the crossbar.
/// This many slave modules are connected to it.
int unsigned NoMstPorts;
/// Maximum number of open transactions each master connected to the crossbar can have in
/// flight at the same time.
int unsigned MaxMstTrans;
/// Maximum number of open transactions each slave connected to the crossbar can have in
/// flight at the same time.
int unsigned MaxSlvTrans;
/// Determine if the internal FIFOs of the crossbar are instantiated in fallthrough mode.
/// 0: No fallthrough
/// 1: Fallthrough
bit FallThrough;
/// The Latency mode of the xbar. This determines if the channels on the ports have
/// a spill register instantiated.
/// Example configurations are provided with the enum `xbar_latency_e`.
xbar_latency_e LatencyMode;
/// This is the number of `axi_multicut` stages instantiated in the line cross of the channels.
/// Having multiple stages can potentially add a large number of FFs!
int unsigned PipelineStages;
/// AXI ID width of the salve ports. The ID width of the master ports is determined
/// Automatically. See `axi_mux` for details.
int unsigned AxiIdWidthSlvPorts;
/// The used ID portion to determine if a different salve is used for the same ID.
/// See `axi_demux` for details.
int unsigned AxiIdUsedSlvPorts;
/// Are IDs unique?
bit UniqueIds;
/// AXI4+ATOP address field width.
int unsigned AxiAddrWidth;
/// AXI4+ATOP data field width.
int unsigned AxiDataWidth;
/// The number of address rules defined for routing of the transactions.
/// Each master port can have multiple rules, should have however at least one.
/// If a transaction can not be routed the xbar will answer with an `axi_pkg::RESP_DECERR`.
int unsigned NoAddrRules;
} xbar_cfg_t;
/// Commonly used rule types for `axi_xbar` (64-bit addresses).
typedef struct packed {
int unsigned idx;
logic [63:0] start_addr;
logic [63:0] end_addr;
} xbar_rule_64_t;
/// Commonly used rule types for `axi_xbar` (32-bit addresses).
typedef struct packed {
int unsigned idx;
logic [31:0] start_addr;
logic [31:0] end_addr;
} xbar_rule_32_t;
endpackage
/* Copyright 2018 ETH Zurich and University of Bologna.
* Copyright and related rights are licensed under the Solderpad Hardware
* License, Version 0.51 (the “License”); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
* or agreed to in writing, software, hardware and materials distributed under
* this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* File: dm_pkg.sv
* Author: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
* Date: 30.6.2018
*
* Description: Debug-module package, contains common system definitions.
*
*/
package dm;
localparam logic [3:0] DbgVersion013 = 4'h2;
// size of program buffer in junks of 32-bit words
localparam logic [4:0] ProgBufSize = 5'h8;
// amount of data count registers implemented
localparam logic [3:0] DataCount = 4'h2;
// address to which a hart should jump when it was requested to halt
localparam logic [63:0] HaltAddress = 64'h800;
localparam logic [63:0] ResumeAddress = HaltAddress + 8;
localparam logic [63:0] ExceptionAddress = HaltAddress + 16;
// address where data0-15 is shadowed or if shadowed in a CSR
// address of the first CSR used for shadowing the data
localparam logic [11:0] DataAddr = 12'h380; // we are aligned with Rocket here
// debug registers
typedef enum logic [7:0] {
Data0 = 8'h04,
Data1 = 8'h05,
Data2 = 8'h06,
Data3 = 8'h07,
Data4 = 8'h08,
Data5 = 8'h09,
Data6 = 8'h0A,
Data7 = 8'h0B,
Data8 = 8'h0C,
Data9 = 8'h0D,
Data10 = 8'h0E,
Data11 = 8'h0F,
DMControl = 8'h10,
DMStatus = 8'h11, // r/o
Hartinfo = 8'h12,
HaltSum1 = 8'h13,
HAWindowSel = 8'h14,
HAWindow = 8'h15,
AbstractCS = 8'h16,
Command = 8'h17,
AbstractAuto = 8'h18,
DevTreeAddr0 = 8'h19,
DevTreeAddr1 = 8'h1A,
DevTreeAddr2 = 8'h1B,
DevTreeAddr3 = 8'h1C,
NextDM = 8'h1D,
ProgBuf0 = 8'h20,
ProgBuf1 = 8'h21,
ProgBuf2 = 8'h22,
ProgBuf3 = 8'h23,
ProgBuf4 = 8'h24,
ProgBuf5 = 8'h25,
ProgBuf6 = 8'h26,
ProgBuf7 = 8'h27,
ProgBuf8 = 8'h28,
ProgBuf9 = 8'h29,
ProgBuf10 = 8'h2A,
ProgBuf11 = 8'h2B,
ProgBuf12 = 8'h2C,
ProgBuf13 = 8'h2D,
ProgBuf14 = 8'h2E,
ProgBuf15 = 8'h2F,
AuthData = 8'h30,
HaltSum2 = 8'h34,
HaltSum3 = 8'h35,
SBAddress3 = 8'h37,
SBCS = 8'h38,
SBAddress0 = 8'h39,
SBAddress1 = 8'h3A,
SBAddress2 = 8'h3B,
SBData0 = 8'h3C,
SBData1 = 8'h3D,
SBData2 = 8'h3E,
SBData3 = 8'h3F,
HaltSum0 = 8'h40
} dm_csr_e;
// debug causes
localparam logic [2:0] CauseBreakpoint = 3'h1;
localparam logic [2:0] CauseTrigger = 3'h2;
localparam logic [2:0] CauseRequest = 3'h3;
localparam logic [2:0] CauseSingleStep = 3'h4;
typedef struct packed {
logic [31:23] zero1;
logic impebreak;
logic [21:20] zero0;
logic allhavereset;
logic anyhavereset;
logic allresumeack;
logic anyresumeack;
logic allnonexistent;
logic anynonexistent;
logic allunavail;
logic anyunavail;
logic allrunning;
logic anyrunning;
logic allhalted;
logic anyhalted;
logic authenticated;
logic authbusy;
logic hasresethaltreq;
logic devtreevalid;
logic [3:0] version;
} dmstatus_t;
typedef struct packed {
logic haltreq;
logic resumereq;
logic hartreset;
logic ackhavereset;
logic zero1;
logic hasel;
logic [25:16] hartsello;
logic [15:6] hartselhi;
logic [5:4] zero0;
logic setresethaltreq;
logic clrresethaltreq;
logic ndmreset;
logic dmactive;
} dmcontrol_t;
typedef struct packed {
logic [31:24] zero1;
logic [23:20] nscratch;
logic [19:17] zero0;
logic dataaccess;
logic [15:12] datasize;
logic [11:0] dataaddr;
} hartinfo_t;
typedef enum logic [2:0] {
CmdErrNone, CmdErrBusy, CmdErrNotSupported,
CmdErrorException, CmdErrorHaltResume,
CmdErrorBus, CmdErrorOther = 7
} cmderr_e;
typedef struct packed {
logic [31:29] zero3;
logic [28:24] progbufsize;
logic [23:13] zero2;
logic busy;
logic zero1;
cmderr_e cmderr;
logic [7:4] zero0;
logic [3:0] datacount;
} abstractcs_t;
typedef enum logic [7:0] {
AccessRegister = 8'h0,
QuickAccess = 8'h1,
AccessMemory = 8'h2
} cmd_e;
typedef struct packed {
cmd_e cmdtype;
logic [23:0] control;
} command_t;
typedef struct packed {
logic [31:16] autoexecprogbuf;
logic [15:12] zero0;
logic [11:0] autoexecdata;
} abstractauto_t;
typedef struct packed {
logic zero1;
logic [22:20] aarsize;
logic aarpostincrement;
logic postexec;
logic transfer;
logic write;
logic [15:0] regno;
} ac_ar_cmd_t;
// DTM
typedef enum logic [1:0] {
DTM_NOP = 2'h0,
DTM_READ = 2'h1,
DTM_WRITE = 2'h2
} dtm_op_e;
typedef enum logic [1:0] {
DTM_SUCCESS = 2'h0,
DTM_ERR = 2'h2,
DTM_BUSY = 2'h3
} dtm_op_status_e;
typedef struct packed {
logic [31:29] sbversion;
logic [28:23] zero0;
logic sbbusyerror;
logic sbbusy;
logic sbreadonaddr;
logic [19:17] sbaccess;
logic sbautoincrement;
logic sbreadondata;
logic [14:12] sberror;
logic [11:5] sbasize;
logic sbaccess128;
logic sbaccess64;
logic sbaccess32;
logic sbaccess16;
logic sbaccess8;
} sbcs_t;
typedef struct packed {
logic [6:0] addr;
dtm_op_e op;
logic [31:0] data;
} dmi_req_t;
typedef struct packed {
logic [31:0] data;
logic [1:0] resp;
} dmi_resp_t;
typedef struct packed {
logic [31:18] zero1;
logic dmihardreset;
logic dmireset;
logic zero0;
logic [14:12] idle;
logic [11:10] dmistat;
logic [9:4] abits;
logic [3:0] version;
} dtmcs_t;
// privilege levels
typedef enum logic[1:0] {
PRIV_LVL_M = 2'b11,
PRIV_LVL_S = 2'b01,
PRIV_LVL_U = 2'b00
} priv_lvl_t;
// debugregs in core
typedef struct packed {
logic [31:28] xdebugver;
logic [27:16] zero2;
logic ebreakm;
logic zero1;
logic ebreaks;
logic ebreaku;
logic stepie;
logic stopcount;
logic stoptime;
logic [8:6] cause;
logic zero0;
logic mprven;
logic nmip;
logic step;
priv_lvl_t prv;
} dcsr_t;
// CSRs
typedef enum logic [11:0] {
// Floating-Point CSRs
CSR_FFLAGS = 12'h001,
CSR_FRM = 12'h002,
CSR_FCSR = 12'h003,
CSR_FTRAN = 12'h800,
// Supervisor Mode CSRs
CSR_SSTATUS = 12'h100,
CSR_SIE = 12'h104,
CSR_STVEC = 12'h105,
CSR_SCOUNTEREN = 12'h106,
CSR_SSCRATCH = 12'h140,
CSR_SEPC = 12'h141,
CSR_SCAUSE = 12'h142,
CSR_STVAL = 12'h143,
CSR_SIP = 12'h144,
CSR_SATP = 12'h180,
// Machine Mode CSRs
CSR_MSTATUS = 12'h300,
CSR_MISA = 12'h301,
CSR_MEDELEG = 12'h302,
CSR_MIDELEG = 12'h303,
CSR_MIE = 12'h304,
CSR_MTVEC = 12'h305,
CSR_MCOUNTEREN = 12'h306,
CSR_MSCRATCH = 12'h340,
CSR_MEPC = 12'h341,
CSR_MCAUSE = 12'h342,
CSR_MTVAL = 12'h343,
CSR_MIP = 12'h344,
CSR_PMPCFG0 = 12'h3A0,
CSR_PMPADDR0 = 12'h3B0,
CSR_MVENDORID = 12'hF11,
CSR_MARCHID = 12'hF12,
CSR_MIMPID = 12'hF13,
CSR_MHARTID = 12'hF14,
CSR_MCYCLE = 12'hB00,
CSR_MINSTRET = 12'hB02,
CSR_DCACHE = 12'h701,
CSR_ICACHE = 12'h700,
CSR_TSELECT = 12'h7A0,
CSR_TDATA1 = 12'h7A1,
CSR_TDATA2 = 12'h7A2,
CSR_TDATA3 = 12'h7A3,
CSR_TINFO = 12'h7A4,
// Debug CSR
CSR_DCSR = 12'h7b0,
CSR_DPC = 12'h7b1,
CSR_DSCRATCH0 = 12'h7b2, // optional
CSR_DSCRATCH1 = 12'h7b3, // optional
// Counters and Timers
CSR_CYCLE = 12'hC00,
CSR_TIME = 12'hC01,
CSR_INSTRET = 12'hC02
} csr_reg_t;
// SBA state
typedef enum logic [2:0] {
Idle,
Read,
Write,
WaitRead,
WaitWrite
} sba_state_e;
// Instruction Generation Helpers
function automatic logic [31:0] jal (logic [4:0] rd,
logic [20:0] imm);
// OpCode Jal
return {imm[20], imm[10:1], imm[11], imm[19:12], rd, 7'h6f};
endfunction
function automatic logic [31:0] jalr (logic [4:0] rd,
logic [4:0] rs1,
logic [11:0] offset);
// OpCode Jal
return {offset[11:0], rs1, 3'b0, rd, 7'h67};
endfunction
function automatic logic [31:0] andi (logic [4:0] rd,
logic [4:0] rs1,
logic [11:0] imm);
// OpCode andi
return {imm[11:0], rs1, 3'h7, rd, 7'h13};
endfunction
function automatic logic [31:0] slli (logic [4:0] rd,
logic [4:0] rs1,
logic [5:0] shamt);
// OpCode slli
return {6'b0, shamt[5:0], rs1, 3'h1, rd, 7'h13};
endfunction
function automatic logic [31:0] srli (logic [4:0] rd,
logic [4:0] rs1,
logic [5:0] shamt);
// OpCode srli
return {6'b0, shamt[5:0], rs1, 3'h5, rd, 7'h13};
endfunction
function automatic logic [31:0] load (logic [2:0] size,
logic [4:0] dest,
logic [4:0] base,
logic [11:0] offset);
// OpCode Load
return {offset[11:0], base, size, dest, 7'h03};
endfunction
function automatic logic [31:0] auipc (logic [4:0] rd,
logic [20:0] imm);
// OpCode Auipc
return {imm[20], imm[10:1], imm[11], imm[19:12], rd, 7'h17};
endfunction
function automatic logic [31:0] store (logic [2:0] size,
logic [4:0] src,
logic [4:0] base,
logic [11:0] offset);
// OpCode Store
return {offset[11:5], src, base, size, offset[4:0], 7'h23};
endfunction
function automatic logic [31:0] float_load (logic [2:0] size,
logic [4:0] dest,
logic [4:0] base,
logic [11:0] offset);
// OpCode Load
return {offset[11:0], base, size, dest, 7'b00_001_11};
endfunction
function automatic logic [31:0] float_store (logic [2:0] size,
logic [4:0] src,
logic [4:0] base,
logic [11:0] offset);
// OpCode Store
return {offset[11:5], src, base, size, offset[4:0], 7'b01_001_11};
endfunction
function automatic logic [31:0] csrw (csr_reg_t csr,
logic [4:0] rs1);
// CSRRW, rd, OpCode System
return {csr, rs1, 3'h1, 5'h0, 7'h73};
endfunction
function automatic logic [31:0] csrr (csr_reg_t csr,
logic [4:0] dest);
// rs1, CSRRS, rd, OpCode System
return {csr, 5'h0, 3'h2, dest, 7'h73};
endfunction
function automatic logic [31:0] branch(logic [4:0] src2,
logic [4:0] src1,
logic [2:0] funct3,
logic [11:0] offset);
// OpCode Branch
return {offset[11], offset[9:4], src2, src1, funct3,
offset[3:0], offset[10], 7'b11_000_11};
endfunction
function automatic logic [31:0] ebreak ();
return 32'h00100073;
endfunction
function automatic logic [31:0] wfi ();
return 32'h10500073;
endfunction
function automatic logic [31:0] nop ();
return 32'h00000013;
endfunction
function automatic logic [31:0] illegal ();
return 32'h00000000;
endfunction
endpackage : dm
/* Copyright 2018 ETH Zurich and University of Bologna.
* Copyright and related rights are licensed under the Solderpad Hardware
* License, Version 0.51 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
* or agreed to in writing, software, hardware and materials distributed under
* this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* File: $filename.v
*
* Description: Auto-generated bootrom
*/
// Auto-generated code
module debug_rom (
input logic clk_i,
input logic req_i,
input logic [63:0] addr_i,
output logic [63:0] rdata_o
);
localparam int unsigned RomSize = 20;
logic [RomSize-1:0][63:0] mem;
assign mem = {
64'h7b200073_7b202473,
64'h7b302573_10852823,
64'hf1402473_a79ff06f,
64'h7b202473_7b302573,
64'h10052423_00100073,
64'h7b202473_7b302573,
64'h10052c23_00c51513,
64'h00c55513_00000517,
64'hfd5ff06f_fa0418e3,
64'h00247413_40044403,
64'h00a40433_f1402473,
64'h02041c63_00147413,
64'h40044403_00a40433,
64'h10852023_f1402473,
64'h00c51513_00c55513,
64'h00000517_7b351073,
64'h7b241073_0ff0000f,
64'h00000013_0500006f,
64'h00000013_0840006f,
64'h00000013_0180006f
};
logic [$clog2(RomSize)-1:0] addr_q;
always_ff @(posedge clk_i) begin
if (req_i) begin
addr_q <= addr_i[$clog2(RomSize)-1+3:3];
end
end
// this prevents spurious Xes from propagating into
// the speculative fetch stage of the core
always_comb begin : p_outmux
rdata_o = '0;
if (addr_q < $clog2(RomSize)'(RomSize)) begin
rdata_o = mem[addr_q];
end
end
endmodule
/* Copyright 2018 ETH Zurich and University of Bologna.
* Copyright and related rights are licensed under the Solderpad Hardware
* License, Version 0.51 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
* or agreed to in writing, software, hardware and materials distributed under
* this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* File: $filename.v
*
* Description: Auto-generated bootrom
*/
// Auto-generated code
module debug_rom_one_scratch (
input logic clk_i,
input logic req_i,
input logic [63:0] addr_i,
output logic [63:0] rdata_o
);
localparam int unsigned RomSize = 14;
logic [RomSize-1:0][63:0] mem;
assign mem = {
64'h7b200073_7b202473,
64'h10802823_f1402473,
64'haa5ff06f_7b202473,
64'h10002423_00100073,
64'h7b202473_10002c23,
64'hfddff06f_fc0414e3,
64'h00247413_40044403,
64'hf1402473_02041263,
64'h00147413_40044403,
64'h10802023_f1402473,
64'h7b241073_0ff0000f,
64'h00000013_0380006f,
64'h00000013_0580006f,
64'h00000013_0180006f
};
logic [$clog2(RomSize)-1:0] addr_q;
always_ff @(posedge clk_i) begin
if (req_i) begin
addr_q <= addr_i[$clog2(RomSize)-1+3:3];
end
end
// this prevents spurious Xes from propagating into
// the speculative fetch stage of the core
always_comb begin : p_outmux
rdata_o = '0;
if (addr_q < $clog2(RomSize)'(RomSize)) begin
rdata_o = mem[addr_q];
end
end
endmodule
/* Copyright 2018 ETH Zurich and University of Bologna.
* Copyright and related rights are licensed under the Solderpad Hardware
* License, Version 0.51 (the “License”); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
* or agreed to in writing, software, hardware and materials distributed under
* this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* File: dm_csrs.sv
* Author: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
* Date: 30.6.2018
*
* Description: Debug CSRs. Communication over Debug Transport Module (DTM)
*/
module dm_csrs #(
parameter int unsigned NrHarts = 1,
parameter int unsigned BusWidth = 32,
parameter logic [NrHarts-1:0] SelectableHarts = {NrHarts{1'b1}}
) (
input logic clk_i, // Clock
input logic rst_ni, // Asynchronous reset active low
input logic testmode_i,
input logic dmi_rst_ni, // sync. DTM reset,
// active-low
input logic dmi_req_valid_i,
output logic dmi_req_ready_o,
input dm::dmi_req_t dmi_req_i,
// every request needs a response one cycle later
output logic dmi_resp_valid_o,
input logic dmi_resp_ready_i,
output dm::dmi_resp_t dmi_resp_o,
// global ctrl
output logic ndmreset_o, // non-debug module reset active-high
output logic dmactive_o, // 1 -> debug-module is active,
// 0 -> synchronous re-set
// hart status
input dm::hartinfo_t [NrHarts-1:0] hartinfo_i, // static hartinfo
input logic [NrHarts-1:0] halted_i, // hart is halted
input logic [NrHarts-1:0] unavailable_i, // e.g.: powered down
input logic [NrHarts-1:0] resumeack_i, // hart acknowledged resume request
// hart control
output logic [19:0] hartsel_o, // hartselect to ctrl module
output logic [NrHarts-1:0] haltreq_o, // request to halt a hart
output logic [NrHarts-1:0] resumereq_o, // request hart to resume
output logic clear_resumeack_o,
output logic cmd_valid_o, // debugger writing to cmd field
output dm::command_t cmd_o, // abstract command
input logic cmderror_valid_i, // an error occurred
input dm::cmderr_e cmderror_i, // this error occurred
input logic cmdbusy_i, // cmd is currently busy executing
output logic [dm::ProgBufSize-1:0][31:0] progbuf_o, // to system bus
output logic [dm::DataCount-1:0][31:0] data_o,
input logic [dm::DataCount-1:0][31:0] data_i,
input logic data_valid_i,
// system bus access module (SBA)
output logic [BusWidth-1:0] sbaddress_o,
input logic [BusWidth-1:0] sbaddress_i,
output logic sbaddress_write_valid_o,
// control signals in
output logic sbreadonaddr_o,
output logic sbautoincrement_o,
output logic [2:0] sbaccess_o,
// data out
output logic sbreadondata_o,
output logic [BusWidth-1:0] sbdata_o,
output logic sbdata_read_valid_o,
output logic sbdata_write_valid_o,
// read data in
input logic [BusWidth-1:0] sbdata_i,
input logic sbdata_valid_i,
// control signals
input logic sbbusy_i,
input logic sberror_valid_i, // bus error occurred
input logic [2:0] sberror_i // bus error occurred
);
// the amount of bits we need to represent all harts
localparam int unsigned HartSelLen = (NrHarts == 1) ? 1 : $clog2(NrHarts);
localparam int unsigned NrHartsAligned = 2**HartSelLen;
dm::dtm_op_e dtm_op;
assign dtm_op = dm::dtm_op_e'(dmi_req_i.op);
logic resp_queue_full;
logic resp_queue_empty;
logic resp_queue_push;
logic resp_queue_pop;
localparam dm::dm_csr_e DataEnd = dm::dm_csr_e'(dm::Data0 + {4'h0, dm::DataCount} - 8'h1);
localparam dm::dm_csr_e ProgBufEnd = dm::dm_csr_e'(dm::ProgBuf0 + {4'h0, dm::ProgBufSize} - 8'h1);
logic [31:0] haltsum0, haltsum1, haltsum2, haltsum3;
logic [((NrHarts-1)/2**5 + 1) * 32 - 1 : 0] halted;
logic [(NrHarts-1)/2**5:0][31:0] halted_reshaped0;
logic [(NrHarts-1)/2**10:0][31:0] halted_reshaped1;
logic [(NrHarts-1)/2**15:0][31:0] halted_reshaped2;
logic [((NrHarts-1)/2**10+1)*32-1:0] halted_flat1;
logic [((NrHarts-1)/2**15+1)*32-1:0] halted_flat2;
logic [31:0] halted_flat3;
// haltsum0
logic [14:0] hartsel_idx0;
always_comb begin : p_haltsum0
halted = '0;
haltsum0 = '0;
hartsel_idx0 = hartsel_o[19:5];
halted[NrHarts-1:0] = halted_i;
halted_reshaped0 = halted;
if (hartsel_idx0 < 15'((NrHarts-1)/2**5+1)) begin
haltsum0 = halted_reshaped0[hartsel_idx0];
end
end
// haltsum1
logic [9:0] hartsel_idx1;
always_comb begin : p_reduction1
halted_flat1 = '0;
haltsum1 = '0;
hartsel_idx1 = hartsel_o[19:10];
for (int unsigned k = 0; k < (NrHarts-1)/2**5+1; k++) begin
halted_flat1[k] = |halted_reshaped0[k];
end
halted_reshaped1 = halted_flat1;
if (hartsel_idx1 < 10'(((NrHarts-1)/2**10+1))) begin
haltsum1 = halted_reshaped1[hartsel_idx1];
end
end
// haltsum2
logic [4:0] hartsel_idx2;
always_comb begin : p_reduction2
halted_flat2 = '0;
haltsum2 = '0;
hartsel_idx2 = hartsel_o[19:15];
for (int unsigned k = 0; k < (NrHarts-1)/2**10+1; k++) begin
halted_flat2[k] = |halted_reshaped1[k];
end
halted_reshaped2 = halted_flat2;
if (hartsel_idx2 < 5'(((NrHarts-1)/2**15+1))) begin
haltsum2 = halted_reshaped2[hartsel_idx2];
end
end
// haltsum3
always_comb begin : p_reduction3
halted_flat3 = '0;
for (int unsigned k = 0; k < NrHarts/2**15+1; k++) begin
halted_flat3[k] = |halted_reshaped2[k];
end
haltsum3 = halted_flat3;
end
dm::dmstatus_t dmstatus;
dm::dmcontrol_t dmcontrol_d, dmcontrol_q;
dm::abstractcs_t abstractcs;
dm::cmderr_e cmderr_d, cmderr_q;
dm::command_t command_d, command_q;
logic cmd_valid_d, cmd_valid_q;
dm::abstractauto_t abstractauto_d, abstractauto_q;
dm::sbcs_t sbcs_d, sbcs_q;
logic [63:0] sbaddr_d, sbaddr_q;
logic [63:0] sbdata_d, sbdata_q;
logic [NrHarts-1:0] havereset_d, havereset_q;
// program buffer
logic [dm::ProgBufSize-1:0][31:0] progbuf_d, progbuf_q;
logic [dm::DataCount-1:0][31:0] data_d, data_q;
logic [HartSelLen-1:0] selected_hart;
dm::dmi_resp_t resp_queue_inp;
assign dmi_resp_valid_o = ~resp_queue_empty;
assign dmi_req_ready_o = ~resp_queue_full;
assign resp_queue_push = dmi_req_valid_i & dmi_req_ready_o;
// SBA
assign sbautoincrement_o = sbcs_q.sbautoincrement;
assign sbreadonaddr_o = sbcs_q.sbreadonaddr;
assign sbreadondata_o = sbcs_q.sbreadondata;
assign sbaccess_o = sbcs_q.sbaccess;
assign sbdata_o = sbdata_q[BusWidth-1:0];
assign sbaddress_o = sbaddr_q[BusWidth-1:0];
assign hartsel_o = {dmcontrol_q.hartselhi, dmcontrol_q.hartsello};
// needed to avoid lint warnings
logic [NrHartsAligned-1:0] havereset_d_aligned, havereset_q_aligned,
resumeack_aligned, unavailable_aligned,
halted_aligned;
assign resumeack_aligned = NrHartsAligned'(resumeack_i);
assign unavailable_aligned = NrHartsAligned'(unavailable_i);
assign halted_aligned = NrHartsAligned'(halted_i);
assign havereset_d = NrHarts'(havereset_d_aligned);
assign havereset_q_aligned = NrHartsAligned'(havereset_q);
dm::hartinfo_t [NrHartsAligned-1:0] hartinfo_aligned;
always_comb begin : p_hartinfo_align
hartinfo_aligned = '0;
hartinfo_aligned[NrHarts-1:0] = hartinfo_i;
end
// helper variables
dm::dm_csr_e dm_csr_addr;
dm::sbcs_t sbcs;
dm::abstractcs_t a_abstractcs;
logic [3:0] autoexecdata_idx; // 0 == Data0 ... 11 == Data11
// Get the data index, i.e. 0 for dm::Data0 up to 11 for dm::Data11
assign dm_csr_addr = dm::dm_csr_e'({1'b0, dmi_req_i.addr});
// Xilinx Vivado 2020.1 does not allow subtraction of two enums; do the subtraction with logic
// types instead.
assign autoexecdata_idx = 4'({dm_csr_addr} - {dm::Data0});
always_comb begin : csr_read_write
// --------------------
// Static Values (R/O)
// --------------------
// dmstatus
dmstatus = '0;
dmstatus.version = dm::DbgVersion013;
// no authentication implemented
dmstatus.authenticated = 1'b1;
// we do not support halt-on-reset sequence
dmstatus.hasresethaltreq = 1'b0;
// TODO(zarubaf) things need to change here if we implement the array mask
dmstatus.allhavereset = havereset_q_aligned[selected_hart];
dmstatus.anyhavereset = havereset_q_aligned[selected_hart];
dmstatus.allresumeack = resumeack_aligned[selected_hart];
dmstatus.anyresumeack = resumeack_aligned[selected_hart];
dmstatus.allunavail = unavailable_aligned[selected_hart];
dmstatus.anyunavail = unavailable_aligned[selected_hart];
// as soon as we are out of the legal Hart region tell the debugger
// that there are only non-existent harts
dmstatus.allnonexistent = logic'(32'(hartsel_o) > (NrHarts - 1));
dmstatus.anynonexistent = logic'(32'(hartsel_o) > (NrHarts - 1));
// We are not allowed to be in multiple states at once. This is a to
// make the running/halted and unavailable states exclusive.
dmstatus.allhalted = halted_aligned[selected_hart] & ~unavailable_aligned[selected_hart];
dmstatus.anyhalted = halted_aligned[selected_hart] & ~unavailable_aligned[selected_hart];
dmstatus.allrunning = ~halted_aligned[selected_hart] & ~unavailable_aligned[selected_hart];
dmstatus.anyrunning = ~halted_aligned[selected_hart] & ~unavailable_aligned[selected_hart];
// abstractcs
abstractcs = '0;
abstractcs.datacount = dm::DataCount;
abstractcs.progbufsize = dm::ProgBufSize;
abstractcs.busy = cmdbusy_i;
abstractcs.cmderr = cmderr_q;
// abstractautoexec
abstractauto_d = abstractauto_q;
abstractauto_d.zero0 = '0;
// default assignments
havereset_d_aligned = NrHartsAligned'(havereset_q);
dmcontrol_d = dmcontrol_q;
cmderr_d = cmderr_q;
command_d = command_q;
progbuf_d = progbuf_q;
data_d = data_q;
sbcs_d = sbcs_q;
sbaddr_d = 64'(sbaddress_i);
sbdata_d = sbdata_q;
resp_queue_inp.data = 32'h0;
resp_queue_inp.resp = dm::DTM_SUCCESS;
cmd_valid_d = 1'b0;
sbaddress_write_valid_o = 1'b0;
sbdata_read_valid_o = 1'b0;
sbdata_write_valid_o = 1'b0;
clear_resumeack_o = 1'b0;
// helper variables
sbcs = '0;
a_abstractcs = '0;
// reads
if (dmi_req_ready_o && dmi_req_valid_i && dtm_op == dm::DTM_READ) begin
unique case (dm_csr_addr) inside
[(dm::Data0):DataEnd]: begin
resp_queue_inp.data = data_q[$clog2(dm::DataCount)'(autoexecdata_idx)];
if (!cmdbusy_i) begin
// check whether we need to re-execute the command (just give a cmd_valid)
cmd_valid_d = abstractauto_q.autoexecdata[autoexecdata_idx];
// An abstract command was executing while one of the data registers was read
end else begin
resp_queue_inp.resp = dm::DTM_BUSY;
if (cmderr_q == dm::CmdErrNone) begin
cmderr_d = dm::CmdErrBusy;
end
end
end
dm::DMControl: resp_queue_inp.data = dmcontrol_q;
dm::DMStatus: resp_queue_inp.data = dmstatus;
dm::Hartinfo: resp_queue_inp.data = hartinfo_aligned[selected_hart];
dm::AbstractCS: resp_queue_inp.data = abstractcs;
dm::AbstractAuto: resp_queue_inp.data = abstractauto_q;
// command is read-only
dm::Command: resp_queue_inp.data = '0;
[(dm::ProgBuf0):ProgBufEnd]: begin
resp_queue_inp.data = progbuf_q[dmi_req_i.addr[$clog2(dm::ProgBufSize)-1:0]];
if (!cmdbusy_i) begin
// check whether we need to re-execute the command (just give a cmd_valid)
// range of autoexecprogbuf is 31:16
cmd_valid_d = abstractauto_q.autoexecprogbuf[{1'b1, dmi_req_i.addr[3:0]}];
// An abstract command was executing while one of the progbuf registers was read
end else begin
resp_queue_inp.resp = dm::DTM_BUSY;
if (cmderr_q == dm::CmdErrNone) begin
cmderr_d = dm::CmdErrBusy;
end
end
end
dm::HaltSum0: resp_queue_inp.data = haltsum0;
dm::HaltSum1: resp_queue_inp.data = haltsum1;
dm::HaltSum2: resp_queue_inp.data = haltsum2;
dm::HaltSum3: resp_queue_inp.data = haltsum3;
dm::SBCS: begin
resp_queue_inp.data = sbcs_q;
end
dm::SBAddress0: begin
resp_queue_inp.data = sbaddr_q[31:0];
end
dm::SBAddress1: begin
resp_queue_inp.data = sbaddr_q[63:32];
end
dm::SBData0: begin
// access while the SBA was busy
if (sbbusy_i || sbcs_q.sbbusyerror) begin
sbcs_d.sbbusyerror = 1'b1;
resp_queue_inp.resp = dm::DTM_BUSY;
end else begin
sbdata_read_valid_o = (sbcs_q.sberror == '0);
resp_queue_inp.data = sbdata_q[31:0];
end
end
dm::SBData1: begin
// access while the SBA was busy
if (sbbusy_i || sbcs_q.sbbusyerror) begin
sbcs_d.sbbusyerror = 1'b1;
resp_queue_inp.resp = dm::DTM_BUSY;
end else begin
resp_queue_inp.data = sbdata_q[63:32];
end
end
default:;
endcase
end
// write
if (dmi_req_ready_o && dmi_req_valid_i && dtm_op == dm::DTM_WRITE) begin
unique case (dm_csr_addr) inside
[(dm::Data0):DataEnd]: begin
if (dm::DataCount > 0) begin
// attempts to write them while busy is set does not change their value
if (!cmdbusy_i) begin
data_d[dmi_req_i.addr[$clog2(dm::DataCount)-1:0]] = dmi_req_i.data;
// check whether we need to re-execute the command (just give a cmd_valid)
cmd_valid_d = abstractauto_q.autoexecdata[autoexecdata_idx];
//An abstract command was executing while one of the data registers was written
end else begin
resp_queue_inp.resp = dm::DTM_BUSY;
if (cmderr_q == dm::CmdErrNone) begin
cmderr_d = dm::CmdErrBusy;
end
end
end
end
dm::DMControl: begin
dmcontrol_d = dmi_req_i.data;
// clear the havreset of the selected hart
if (dmcontrol_d.ackhavereset) begin
havereset_d_aligned[selected_hart] = 1'b0;
end
end
dm::DMStatus:; // write are ignored to R/O register
dm::Hartinfo:; // hartinfo is R/O
// only command error is write-able
dm::AbstractCS: begin // W1C
// Gets set if an abstract command fails. The bits in this
// field remain set until they are cleared by writing 1 to
// them. No abstract command is started until the value is
// reset to 0.
a_abstractcs = dm::abstractcs_t'(dmi_req_i.data);
// reads during abstract command execution are not allowed
if (!cmdbusy_i) begin
cmderr_d = dm::cmderr_e'(~a_abstractcs.cmderr & cmderr_q);
end else begin
resp_queue_inp.resp = dm::DTM_BUSY;
if (cmderr_q == dm::CmdErrNone) begin
cmderr_d = dm::CmdErrBusy;
end
end
end
dm::Command: begin
// writes are ignored if a command is already busy
if (!cmdbusy_i) begin
cmd_valid_d = 1'b1;
command_d = dm::command_t'(dmi_req_i.data);
// if there was an attempted to write during a busy execution
// and the cmderror field is zero set the busy error
end else begin
resp_queue_inp.resp = dm::DTM_BUSY;
if (cmderr_q == dm::CmdErrNone) begin
cmderr_d = dm::CmdErrBusy;
end
end
end
dm::AbstractAuto: begin
// this field can only be written legally when there is no command executing
if (!cmdbusy_i) begin
abstractauto_d = 32'h0;
abstractauto_d.autoexecdata = 12'(dmi_req_i.data[dm::DataCount-1:0]);
abstractauto_d.autoexecprogbuf = 16'(dmi_req_i.data[dm::ProgBufSize-1+16:16]);
end else begin
resp_queue_inp.resp = dm::DTM_BUSY;
if (cmderr_q == dm::CmdErrNone) begin
cmderr_d = dm::CmdErrBusy;
end
end
end
[(dm::ProgBuf0):ProgBufEnd]: begin
// attempts to write them while busy is set does not change their value
if (!cmdbusy_i) begin
progbuf_d[dmi_req_i.addr[$clog2(dm::ProgBufSize)-1:0]] = dmi_req_i.data;
// check whether we need to re-execute the command (just give a cmd_valid)
// this should probably throw an error if executed during another command
// was busy
// range of autoexecprogbuf is 31:16
cmd_valid_d = abstractauto_q.autoexecprogbuf[{1'b1, dmi_req_i.addr[3:0]}];
//An abstract command was executing while one of the progbuf registers was written
end else begin
resp_queue_inp.resp = dm::DTM_BUSY;
if (cmderr_q == dm::CmdErrNone) begin
cmderr_d = dm::CmdErrBusy;
end
end
end
dm::SBCS: begin
// access while the SBA was busy
if (sbbusy_i) begin
sbcs_d.sbbusyerror = 1'b1;
resp_queue_inp.resp = dm::DTM_BUSY;
end else begin
sbcs = dm::sbcs_t'(dmi_req_i.data);
sbcs_d = sbcs;
// R/W1C
sbcs_d.sbbusyerror = sbcs_q.sbbusyerror & (~sbcs.sbbusyerror);
sbcs_d.sberror = sbcs_q.sberror & {3{~(sbcs.sberror == 3'd1)}};
end
end
dm::SBAddress0: begin
// access while the SBA was busy
if (sbbusy_i || sbcs_q.sbbusyerror) begin
sbcs_d.sbbusyerror = 1'b1;
resp_queue_inp.resp = dm::DTM_BUSY;
end else begin
sbaddr_d[31:0] = dmi_req_i.data;
sbaddress_write_valid_o = (sbcs_q.sberror == '0);
end
end
dm::SBAddress1: begin
// access while the SBA was busy
if (sbbusy_i || sbcs_q.sbbusyerror) begin
sbcs_d.sbbusyerror = 1'b1;
resp_queue_inp.resp = dm::DTM_BUSY;
end else begin
sbaddr_d[63:32] = dmi_req_i.data;
end
end
dm::SBData0: begin
// access while the SBA was busy
if (sbbusy_i || sbcs_q.sbbusyerror) begin
sbcs_d.sbbusyerror = 1'b1;
resp_queue_inp.resp = dm::DTM_BUSY;
end else begin
sbdata_d[31:0] = dmi_req_i.data;
sbdata_write_valid_o = (sbcs_q.sberror == '0);
end
end
dm::SBData1: begin
// access while the SBA was busy
if (sbbusy_i || sbcs_q.sbbusyerror) begin
sbcs_d.sbbusyerror = 1'b1;
resp_queue_inp.resp = dm::DTM_BUSY;
end else begin
sbdata_d[63:32] = dmi_req_i.data;
end
end
default:;
endcase
end
// hart threw a command error and has precedence over bus writes
if (cmderror_valid_i) begin
cmderr_d = cmderror_i;
end
// update data registers
if (data_valid_i) begin
data_d = data_i;
end
// set the havereset flag when we did a ndmreset
if (ndmreset_o) begin
havereset_d_aligned[NrHarts-1:0] = '1;
end
// -------------
// System Bus
// -------------
// set bus error
if (sberror_valid_i) begin
sbcs_d.sberror = sberror_i;
end
// update read data
if (sbdata_valid_i) begin
sbdata_d = 64'(sbdata_i);
end
// dmcontrol
// TODO(zarubaf) we currently do not implement the hartarry mask
dmcontrol_d.hasel = 1'b0;
// we do not support resetting an individual hart
dmcontrol_d.hartreset = 1'b0;
dmcontrol_d.setresethaltreq = 1'b0;
dmcontrol_d.clrresethaltreq = 1'b0;
dmcontrol_d.zero1 = '0;
dmcontrol_d.zero0 = '0;
// Non-writeable, clear only
dmcontrol_d.ackhavereset = 1'b0;
if (!dmcontrol_q.resumereq && dmcontrol_d.resumereq) begin
clear_resumeack_o = 1'b1;
end
if (dmcontrol_q.resumereq && resumeack_i) begin
dmcontrol_d.resumereq = 1'b0;
end
// static values for dcsr
sbcs_d.sbversion = 3'd1;
sbcs_d.sbbusy = sbbusy_i;
sbcs_d.sbasize = $bits(sbcs_d.sbasize)'(BusWidth);
sbcs_d.sbaccess128 = logic'(BusWidth >= 32'd128);
sbcs_d.sbaccess64 = logic'(BusWidth >= 32'd64);
sbcs_d.sbaccess32 = logic'(BusWidth >= 32'd32);
sbcs_d.sbaccess16 = logic'(BusWidth >= 32'd16);
sbcs_d.sbaccess8 = logic'(BusWidth >= 32'd8);
end
// output multiplexer
always_comb begin : p_outmux
selected_hart = hartsel_o[HartSelLen-1:0];
// default assignment
haltreq_o = '0;
resumereq_o = '0;
if (selected_hart <= HartSelLen'(NrHarts-1)) begin
haltreq_o[selected_hart] = dmcontrol_q.haltreq;
resumereq_o[selected_hart] = dmcontrol_q.resumereq;
end
end
assign dmactive_o = dmcontrol_q.dmactive;
assign cmd_o = command_q;
assign cmd_valid_o = cmd_valid_q;
assign progbuf_o = progbuf_q;
assign data_o = data_q;
assign resp_queue_pop = dmi_resp_ready_i & ~resp_queue_empty;
assign ndmreset_o = dmcontrol_q.ndmreset;
// response FIFO
fifo_v2 #(
.dtype ( logic [$bits(dmi_resp_o)-1:0] ),
.DEPTH ( 2 )
) i_fifo (
.clk_i,
.rst_ni,
.flush_i ( ~dmi_rst_ni ), // Flush the queue if the DTM is
// reset
.testmode_i ( testmode_i ),
.full_o ( resp_queue_full ),
.empty_o ( resp_queue_empty ),
.alm_full_o ( ),
.alm_empty_o ( ),
.data_i ( resp_queue_inp ),
.push_i ( resp_queue_push ),
.data_o ( dmi_resp_o ),
.pop_i ( resp_queue_pop )
);
always_ff @(posedge clk_i or negedge rst_ni) begin : p_regs
// PoR
if (!rst_ni) begin
dmcontrol_q <= '0;
// this is the only write-able bit during reset
cmderr_q <= dm::CmdErrNone;
command_q <= '0;
cmd_valid_q <= '0;
abstractauto_q <= '0;
progbuf_q <= '0;
data_q <= '0;
sbcs_q <= '{default: '0, sbaccess: 3'd2};
sbaddr_q <= '0;
sbdata_q <= '0;
havereset_q <= '1;
end else begin
havereset_q <= SelectableHarts & havereset_d;
// synchronous re-set of debug module, active-low, except for dmactive
if (!dmcontrol_q.dmactive) begin
dmcontrol_q.haltreq <= '0;
dmcontrol_q.resumereq <= '0;
dmcontrol_q.hartreset <= '0;
dmcontrol_q.ackhavereset <= '0;
dmcontrol_q.zero1 <= '0;
dmcontrol_q.hasel <= '0;
dmcontrol_q.hartsello <= '0;
dmcontrol_q.hartselhi <= '0;
dmcontrol_q.zero0 <= '0;
dmcontrol_q.setresethaltreq <= '0;
dmcontrol_q.clrresethaltreq <= '0;
dmcontrol_q.ndmreset <= '0;
// this is the only write-able bit during reset
dmcontrol_q.dmactive <= dmcontrol_d.dmactive;
cmderr_q <= dm::CmdErrNone;
command_q <= '0;
cmd_valid_q <= '0;
abstractauto_q <= '0;
progbuf_q <= '0;
data_q <= '0;
sbcs_q <= '{default: '0, sbaccess: 3'd2};
sbaddr_q <= '0;
sbdata_q <= '0;
end else begin
dmcontrol_q <= dmcontrol_d;
cmderr_q <= cmderr_d;
command_q <= command_d;
cmd_valid_q <= cmd_valid_d;
abstractauto_q <= abstractauto_d;
progbuf_q <= progbuf_d;
data_q <= data_d;
sbcs_q <= sbcs_d;
sbaddr_q <= sbaddr_d;
sbdata_q <= sbdata_d;
end
end
end
endmodule : dm_csrs
/* Copyright 2018 ETH Zurich and University of Bologna.
* Copyright and related rights are licensed under the Solderpad Hardware
* License, Version 0.51 (the “License”); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
* or agreed to in writing, software, hardware and materials distributed under
* this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* File: dm_mem.sv
* Author: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
* Date: 11.7.2018
*
* Description: Memory module for execution-based debug clients
*
*/
module dm_mem #(
parameter int unsigned NrHarts = 1,
parameter int unsigned BusWidth = 32,
parameter logic [NrHarts-1:0] SelectableHarts = {NrHarts{1'b1}},
parameter int unsigned DmBaseAddress = '0
) (
input logic clk_i, // Clock
input logic rst_ni, // debug module reset
output logic [NrHarts-1:0] debug_req_o,
input logic ndmreset_i,
input logic [19:0] hartsel_i,
// from Ctrl and Status register
input logic [NrHarts-1:0] haltreq_i,
input logic [NrHarts-1:0] resumereq_i,
input logic clear_resumeack_i,
// state bits
output logic [NrHarts-1:0] halted_o, // hart acknowledge halt
output logic [NrHarts-1:0] resuming_o, // hart is resuming
input logic [dm::ProgBufSize-1:0][31:0] progbuf_i, // program buffer to expose
input logic [dm::DataCount-1:0][31:0] data_i, // data in
output logic [dm::DataCount-1:0][31:0] data_o, // data out
output logic data_valid_o, // data out is valid
// abstract command interface
input logic cmd_valid_i,
input dm::command_t cmd_i,
output logic cmderror_valid_o,
output dm::cmderr_e cmderror_o,
output logic cmdbusy_o,
// data interface
// SRAM interface
input logic req_i,
input logic we_i,
input logic [BusWidth-1:0] addr_i,
input logic [BusWidth-1:0] wdata_i,
input logic [BusWidth/8-1:0] be_i,
output logic [BusWidth-1:0] rdata_o
);
localparam int unsigned DbgAddressBits = 12;
localparam int unsigned HartSelLen = (NrHarts == 1) ? 1 : $clog2(NrHarts);
localparam int unsigned NrHartsAligned = 2**HartSelLen;
localparam int unsigned MaxAar = (BusWidth == 64) ? 4 : 3;
localparam bit HasSndScratch = (DmBaseAddress != 0);
// Depending on whether we are at the zero page or not we either use `x0` or `x10/a0`
localparam logic [4:0] LoadBaseAddr = (DmBaseAddress == 0) ? 5'd0 : 5'd10;
localparam logic [DbgAddressBits-1:0] DataBaseAddr = (dm::DataAddr);
localparam logic [DbgAddressBits-1:0] DataEndAddr = (dm::DataAddr + 4*dm::DataCount - 1);
localparam logic [DbgAddressBits-1:0] ProgBufBaseAddr = (dm::DataAddr - 4*dm::ProgBufSize);
localparam logic [DbgAddressBits-1:0] ProgBufEndAddr = (dm::DataAddr - 1);
localparam logic [DbgAddressBits-1:0] AbstractCmdBaseAddr = (ProgBufBaseAddr - 4*10);
localparam logic [DbgAddressBits-1:0] AbstractCmdEndAddr = (ProgBufBaseAddr - 1);
localparam logic [DbgAddressBits-1:0] WhereToAddr = 'h300;
localparam logic [DbgAddressBits-1:0] FlagsBaseAddr = 'h400;
localparam logic [DbgAddressBits-1:0] FlagsEndAddr = 'h7FF;
localparam logic [DbgAddressBits-1:0] HaltedAddr = 'h100;
localparam logic [DbgAddressBits-1:0] GoingAddr = 'h108;
localparam logic [DbgAddressBits-1:0] ResumingAddr = 'h110;
localparam logic [DbgAddressBits-1:0] ExceptionAddr = 'h118;
logic [dm::ProgBufSize/2-1:0][63:0] progbuf;
logic [7:0][63:0] abstract_cmd;
logic [NrHarts-1:0] halted_d, halted_q;
logic [NrHarts-1:0] resuming_d, resuming_q;
logic resume, go, going;
logic exception;
logic unsupported_command;
logic [63:0] rom_rdata;
logic [63:0] rdata_d, rdata_q;
logic word_enable32_q;
// this is needed to avoid lint warnings related to array indexing
// resize hartsel to valid range
logic [HartSelLen-1:0] hartsel, wdata_hartsel;
assign hartsel = hartsel_i[HartSelLen-1:0];
assign wdata_hartsel = wdata_i[HartSelLen-1:0];
logic [NrHartsAligned-1:0] resumereq_aligned, haltreq_aligned,
halted_d_aligned, halted_q_aligned,
halted_aligned, resumereq_wdata_aligned,
resuming_d_aligned, resuming_q_aligned;
assign resumereq_aligned = NrHartsAligned'(resumereq_i);
assign haltreq_aligned = NrHartsAligned'(haltreq_i);
assign resumereq_wdata_aligned = NrHartsAligned'(resumereq_i);
assign halted_q_aligned = NrHartsAligned'(halted_q);
assign halted_d = NrHarts'(halted_d_aligned);
assign resuming_q_aligned = NrHartsAligned'(resuming_q);
assign resuming_d = NrHarts'(resuming_d_aligned);
// distinguish whether we need to forward data from the ROM or the FSM
// latch the address for this
logic fwd_rom_d, fwd_rom_q;
dm::ac_ar_cmd_t ac_ar;
// Abstract Command Access Register
assign ac_ar = dm::ac_ar_cmd_t'(cmd_i.control);
assign debug_req_o = haltreq_i;
assign halted_o = halted_q;
assign resuming_o = resuming_q;
// reshape progbuf
assign progbuf = progbuf_i;
typedef enum logic [1:0] { Idle, Go, Resume, CmdExecuting } state_e;
state_e state_d, state_q;
// hart ctrl queue
always_comb begin : p_hart_ctrl_queue
cmderror_valid_o = 1'b0;
cmderror_o = dm::CmdErrNone;
state_d = state_q;
go = 1'b0;
resume = 1'b0;
cmdbusy_o = 1'b1;
unique case (state_q)
Idle: begin
cmdbusy_o = 1'b0;
if (cmd_valid_i && halted_q_aligned[hartsel] && !unsupported_command) begin
// give the go signal
state_d = Go;
end else if (cmd_valid_i) begin
// hart must be halted for all requests
cmderror_valid_o = 1'b1;
cmderror_o = dm::CmdErrorHaltResume;
end
// CSRs want to resume, the request is ignored when the hart is
// requested to halt or it didn't clear the resuming_q bit before
if (resumereq_aligned[hartsel] && !resuming_q_aligned[hartsel] &&
!haltreq_aligned[hartsel] && halted_q_aligned[hartsel]) begin
state_d = Resume;
end
end
Go: begin
// we are already busy here since we scheduled the execution of a program
cmdbusy_o = 1'b1;
go = 1'b1;
// the thread is now executing the command, track its state
if (going) begin
state_d = CmdExecuting;
end
end
Resume: begin
cmdbusy_o = 1'b1;
resume = 1'b1;
if (resuming_q_aligned[hartsel]) begin
state_d = Idle;
end
end
CmdExecuting: begin
cmdbusy_o = 1'b1;
go = 1'b0;
// wait until the hart has halted again
if (halted_aligned[hartsel]) begin
state_d = Idle;
end
end
default: ;
endcase
// only signal once that cmd is unsupported so that we can clear cmderr
// in subsequent writes to abstractcs
if (unsupported_command && cmd_valid_i) begin
cmderror_valid_o = 1'b1;
cmderror_o = dm::CmdErrNotSupported;
end
if (exception) begin
cmderror_valid_o = 1'b1;
cmderror_o = dm::CmdErrorException;
end
if (ndmreset_i) begin
// Clear state of hart and its control signals when it is being reset.
state_d = Idle;
go = 1'b0;
resume = 1'b0;
end
end
// word mux for 32bit and 64bit buses
logic [63:0] word_mux;
assign word_mux = (fwd_rom_q) ? rom_rdata : rdata_q;
if (BusWidth == 64) begin : gen_word_mux64
assign rdata_o = word_mux;
end else begin : gen_word_mux32
assign rdata_o = (word_enable32_q) ? word_mux[32 +: 32] : word_mux[0 +: 32];
end
// read/write logic
logic [dm::DataCount-1:0][31:0] data_bits;
logic [7:0][7:0] rdata;
always_comb begin : p_rw_logic
halted_d_aligned = NrHartsAligned'(halted_q);
resuming_d_aligned = NrHartsAligned'(resuming_q);
rdata_d = rdata_q;
data_bits = data_i;
rdata = '0;
// write data in csr register
data_valid_o = 1'b0;
exception = 1'b0;
halted_aligned = '0;
going = 1'b0;
// The resume ack signal is lowered when the resume request is deasserted
if (clear_resumeack_i) begin
resuming_d_aligned[hartsel] = 1'b0;
end
// we've got a new request
if (req_i) begin
// this is a write
if (we_i) begin
unique case (addr_i[DbgAddressBits-1:0]) inside
HaltedAddr: begin
halted_aligned[wdata_hartsel] = 1'b1;
halted_d_aligned[wdata_hartsel] = 1'b1;
end
GoingAddr: begin
going = 1'b1;
end
ResumingAddr: begin
// clear the halted flag as the hart resumed execution
halted_d_aligned[wdata_hartsel] = 1'b0;
// set the resuming flag which needs to be cleared by the debugger
resuming_d_aligned[wdata_hartsel] = 1'b1;
end
// an exception occurred during execution
ExceptionAddr: exception = 1'b1;
// core can write data registers
[DataBaseAddr:DataEndAddr]: begin
data_valid_o = 1'b1;
for (int dc = 0; dc < dm::DataCount; dc++) begin
if ((addr_i[DbgAddressBits-1:2] - DataBaseAddr[DbgAddressBits-1:2]) == dc) begin
for (int i = 0; i < $bits(be_i); i++) begin
if (be_i[i]) begin
if (i>3) begin // for upper 32bit data write (only used for BusWidth == 64)
if ((dc+1) < dm::DataCount) begin // ensure we write to an implemented data register
data_bits[dc+1][(i-4)*8+:8] = wdata_i[i*8+:8];
end
end else begin // for lower 32bit data write
data_bits[dc][i*8+:8] = wdata_i[i*8+:8];
end
end
end
end
end
end
default ;
endcase
// this is a read
end else begin
unique case (addr_i[DbgAddressBits-1:0]) inside
// variable ROM content
WhereToAddr: begin
// variable jump to abstract cmd, program_buffer or resume
if (resumereq_wdata_aligned[wdata_hartsel]) begin
rdata_d = {32'b0, dm::jal('0, 21'(dm::ResumeAddress[11:0])-21'(WhereToAddr))};
end
// there is a command active so jump there
if (cmdbusy_o) begin
// transfer not set is shortcut to the program buffer if postexec is set
// keep this statement narrow to not catch invalid commands
if (cmd_i.cmdtype == dm::AccessRegister &&
!ac_ar.transfer && ac_ar.postexec) begin
rdata_d = {32'b0, dm::jal('0, 21'(ProgBufBaseAddr)-21'(WhereToAddr))};
// this is a legit abstract cmd -> execute it
end else begin
rdata_d = {32'b0, dm::jal('0, 21'(AbstractCmdBaseAddr)-21'(WhereToAddr))};
end
end
end
[DataBaseAddr:DataEndAddr]: begin
rdata_d = {
data_i[$clog2(dm::DataCount)'(((addr_i[DbgAddressBits-1:3] - DataBaseAddr[DbgAddressBits-1:3]) << 1) + 1'b1)],
data_i[$clog2(dm::DataCount)'(((addr_i[DbgAddressBits-1:3] - DataBaseAddr[DbgAddressBits-1:3]) << 1))]
};
end
[ProgBufBaseAddr:ProgBufEndAddr]: begin
rdata_d = progbuf[$clog2(dm::ProgBufSize)'(addr_i[DbgAddressBits-1:3] -
ProgBufBaseAddr[DbgAddressBits-1:3])];
end
// two slots for abstract command
[AbstractCmdBaseAddr:AbstractCmdEndAddr]: begin
// return the correct address index
rdata_d = abstract_cmd[3'(addr_i[DbgAddressBits-1:3] -
AbstractCmdBaseAddr[DbgAddressBits-1:3])];
end
// harts are polling for flags here
[FlagsBaseAddr:FlagsEndAddr]: begin
// release the corresponding hart
if (({addr_i[DbgAddressBits-1:3], 3'b0} - FlagsBaseAddr[DbgAddressBits-1:0]) ==
(DbgAddressBits'(hartsel) & {{(DbgAddressBits-3){1'b1}}, 3'b0})) begin
rdata[DbgAddressBits'(hartsel) & DbgAddressBits'(3'b111)] = {6'b0, resume, go};
end
rdata_d = rdata;
end
default: ;
endcase
end
end
if (ndmreset_i) begin
// When harts are reset, they are neither halted nor resuming.
halted_d_aligned = '0;
resuming_d_aligned = '0;
end
data_o = data_bits;
end
always_comb begin : p_abstract_cmd_rom
// this abstract command is currently unsupported
unsupported_command = 1'b0;
// default memory
// if ac_ar.transfer is not set then we can take a shortcut to the program buffer
abstract_cmd[0][31:0] = dm::illegal();
// load debug module base address into a0, this is shared among all commands
abstract_cmd[0][63:32] = HasSndScratch ? dm::auipc(5'd10, '0) : dm::nop();
// clr lowest 12b -> DM base offset
abstract_cmd[1][31:0] = HasSndScratch ? dm::srli(5'd10, 5'd10, 6'd12) : dm::nop();
abstract_cmd[1][63:32] = HasSndScratch ? dm::slli(5'd10, 5'd10, 6'd12) : dm::nop();
abstract_cmd[2][31:0] = dm::nop();
abstract_cmd[2][63:32] = dm::nop();
abstract_cmd[3][31:0] = dm::nop();
abstract_cmd[3][63:32] = dm::nop();
abstract_cmd[4][31:0] = HasSndScratch ? dm::csrr(dm::CSR_DSCRATCH1, 5'd10) : dm::nop();
abstract_cmd[4][63:32] = dm::ebreak();
abstract_cmd[7:5] = '0;
// this depends on the command being executed
unique case (cmd_i.cmdtype)
// --------------------
// Access Register
// --------------------
dm::AccessRegister: begin
if (32'(ac_ar.aarsize) < MaxAar && ac_ar.transfer && ac_ar.write) begin
// store a0 in dscratch1
abstract_cmd[0][31:0] = HasSndScratch ? dm::csrw(dm::CSR_DSCRATCH1, 5'd10) : dm::nop();
// this range is reserved
if (ac_ar.regno[15:14] != '0) begin
abstract_cmd[0][31:0] = dm::ebreak(); // we leave asap
unsupported_command = 1'b1;
// A0 access needs to be handled separately, as we use A0 to load
// the DM address offset need to access DSCRATCH1 in this case
end else if (HasSndScratch && ac_ar.regno[12] && (!ac_ar.regno[5]) &&
(ac_ar.regno[4:0] == 5'd10)) begin
// store s0 in dscratch
abstract_cmd[2][31:0] = dm::csrw(dm::CSR_DSCRATCH0, 5'd8);
// load from data register
abstract_cmd[2][63:32] = dm::load(ac_ar.aarsize, 5'd8, LoadBaseAddr, dm::DataAddr);
// and store it in the corresponding CSR
abstract_cmd[3][31:0] = dm::csrw(dm::CSR_DSCRATCH1, 5'd8);
// restore s0 again from dscratch
abstract_cmd[3][63:32] = dm::csrr(dm::CSR_DSCRATCH0, 5'd8);
// GPR/FPR access
end else if (ac_ar.regno[12]) begin
// determine whether we want to access the floating point register or not
if (ac_ar.regno[5]) begin
abstract_cmd[2][31:0] =
dm::float_load(ac_ar.aarsize, ac_ar.regno[4:0], LoadBaseAddr, dm::DataAddr);
end else begin
abstract_cmd[2][31:0] =
dm::load(ac_ar.aarsize, ac_ar.regno[4:0], LoadBaseAddr, dm::DataAddr);
end
// CSR access
end else begin
// data register to CSR
// store s0 in dscratch
abstract_cmd[2][31:0] = dm::csrw(dm::CSR_DSCRATCH0, 5'd8);
// load from data register
abstract_cmd[2][63:32] = dm::load(ac_ar.aarsize, 5'd8, LoadBaseAddr, dm::DataAddr);
// and store it in the corresponding CSR
abstract_cmd[3][31:0] = dm::csrw(dm::csr_reg_t'(ac_ar.regno[11:0]), 5'd8);
// restore s0 again from dscratch
abstract_cmd[3][63:32] = dm::csrr(dm::CSR_DSCRATCH0, 5'd8);
end
end else if (32'(ac_ar.aarsize) < MaxAar && ac_ar.transfer && !ac_ar.write) begin
// store a0 in dscratch1
abstract_cmd[0][31:0] = HasSndScratch ?
dm::csrw(dm::CSR_DSCRATCH1, LoadBaseAddr) :
dm::nop();
// this range is reserved
if (ac_ar.regno[15:14] != '0) begin
abstract_cmd[0][31:0] = dm::ebreak(); // we leave asap
unsupported_command = 1'b1;
// A0 access needs to be handled separately, as we use A0 to load
// the DM address offset need to access DSCRATCH1 in this case
end else if (HasSndScratch && ac_ar.regno[12] && (!ac_ar.regno[5]) &&
(ac_ar.regno[4:0] == 5'd10)) begin
// store s0 in dscratch
abstract_cmd[2][31:0] = dm::csrw(dm::CSR_DSCRATCH0, 5'd8);
// read value from CSR into s0
abstract_cmd[2][63:32] = dm::csrr(dm::CSR_DSCRATCH1, 5'd8);
// and store s0 into data section
abstract_cmd[3][31:0] = dm::store(ac_ar.aarsize, 5'd8, LoadBaseAddr, dm::DataAddr);
// restore s0 again from dscratch
abstract_cmd[3][63:32] = dm::csrr(dm::CSR_DSCRATCH0, 5'd8);
// GPR/FPR access
end else if (ac_ar.regno[12]) begin
// determine whether we want to access the floating point register or not
if (ac_ar.regno[5]) begin
abstract_cmd[2][31:0] =
dm::float_store(ac_ar.aarsize, ac_ar.regno[4:0], LoadBaseAddr, dm::DataAddr);
end else begin
abstract_cmd[2][31:0] =
dm::store(ac_ar.aarsize, ac_ar.regno[4:0], LoadBaseAddr, dm::DataAddr);
end
// CSR access
end else begin
// CSR register to data
// store s0 in dscratch
abstract_cmd[2][31:0] = dm::csrw(dm::CSR_DSCRATCH0, 5'd8);
// read value from CSR into s0
abstract_cmd[2][63:32] = dm::csrr(dm::csr_reg_t'(ac_ar.regno[11:0]), 5'd8);
// and store s0 into data section
abstract_cmd[3][31:0] = dm::store(ac_ar.aarsize, 5'd8, LoadBaseAddr, dm::DataAddr);
// restore s0 again from dscratch
abstract_cmd[3][63:32] = dm::csrr(dm::CSR_DSCRATCH0, 5'd8);
end
end else if (32'(ac_ar.aarsize) >= MaxAar || ac_ar.aarpostincrement == 1'b1) begin
// this should happend when e.g. ac_ar.aarsize >= MaxAar
// Openocd will try to do an access with aarsize=64 bits
// first before falling back to 32 bits.
abstract_cmd[0][31:0] = dm::ebreak(); // we leave asap
unsupported_command = 1'b1;
end
// Check whether we need to execute the program buffer. When we
// get an unsupported command we really should abort instead of
// still trying to execute the program buffer, makes it easier
// for the debugger to recover
if (ac_ar.postexec && !unsupported_command) begin
// issue a nop, we will automatically run into the program buffer
abstract_cmd[4][63:32] = dm::nop();
end
end
// not supported at the moment
// dm::QuickAccess:;
// dm::AccessMemory:;
default: begin
abstract_cmd[0][31:0] = dm::ebreak();
unsupported_command = 1'b1;
end
endcase
end
logic [63:0] rom_addr;
assign rom_addr = 64'(addr_i);
// Depending on whether the debug module is located
// at the zero page we can instantiate a simplified version
// which only requires one scratch register per hart.
// For all other cases we need to set aside
// two registers per hart, hence we also need
// two scratch registers.
if (HasSndScratch) begin : gen_rom_snd_scratch
debug_rom i_debug_rom (
.clk_i,
.req_i,
.addr_i ( rom_addr ),
.rdata_o ( rom_rdata )
);
end else begin : gen_rom_one_scratch
// It uses the zero register (`x0`) as the base
// for its loads. The zero register does not need to
// be saved.
debug_rom_one_scratch i_debug_rom (
.clk_i,
.req_i,
.addr_i ( rom_addr ),
.rdata_o ( rom_rdata )
);
end
// ROM starts at the HaltAddress of the core e.g.: it immediately jumps to
// the ROM base address
assign fwd_rom_d = logic'(addr_i[DbgAddressBits-1:0] >= dm::HaltAddress[DbgAddressBits-1:0]);
always_ff @(posedge clk_i or negedge rst_ni) begin : p_regs
if (!rst_ni) begin
fwd_rom_q <= 1'b0;
rdata_q <= '0;
state_q <= Idle;
word_enable32_q <= 1'b0;
end else begin
fwd_rom_q <= fwd_rom_d;
rdata_q <= rdata_d;
state_q <= state_d;
word_enable32_q <= addr_i[2];
end
end
always_ff @(posedge clk_i or negedge rst_ni) begin
if (!rst_ni) begin
halted_q <= 1'b0;
resuming_q <= 1'b0;
end else begin
halted_q <= SelectableHarts & halted_d;
resuming_q <= SelectableHarts & resuming_d;
end
end
endmodule : dm_mem
/* Copyright 2018 ETH Zurich and University of Bologna.
* Copyright and related rights are licensed under the Solderpad Hardware
* License, Version 0.51 (the “License”); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
* or agreed to in writing, software, hardware and materials distributed under
* this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* File: axi_riscv_debug_module.sv
* Author: Andreas Traber <atraber@iis.ee.ethz.ch>
* Author: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
*
* Description: Clock domain crossings for JTAG to DMI very heavily based
* on previous work by Andreas Traber for the PULP project.
* This is mainly a wrapper around the existing CDCs.
*/
module dmi_cdc (
// JTAG side (master side)
input logic tck_i,
input logic trst_ni,
input dm::dmi_req_t jtag_dmi_req_i,
output logic jtag_dmi_ready_o,
input logic jtag_dmi_valid_i,
input logic jtag_dmi_cdc_clear_i, // Synchronous clear signal.
// Triggers reset sequencing
// accross CDC
output dm::dmi_resp_t jtag_dmi_resp_o,
output logic jtag_dmi_valid_o,
input logic jtag_dmi_ready_i,
// core side (slave side)
input logic clk_i,
input logic rst_ni,
output logic core_dmi_rst_no,
output dm::dmi_req_t core_dmi_req_o,
output logic core_dmi_valid_o,
input logic core_dmi_ready_i,
input dm::dmi_resp_t core_dmi_resp_i,
output logic core_dmi_ready_o,
input logic core_dmi_valid_i
);
logic core_clear_pending;
cdc_2phase_clearable #(.T(dm::dmi_req_t)) i_cdc_req (
.src_rst_ni ( trst_ni ),
.src_clear_i ( jtag_dmi_cdc_clear_i ),
.src_clk_i ( tck_i ),
.src_clear_pending_o(), // Not used
.src_data_i ( jtag_dmi_req_i ),
.src_valid_i ( jtag_dmi_valid_i ),
.src_ready_o ( jtag_dmi_ready_o ),
.dst_rst_ni ( rst_ni ),
.dst_clear_i ( 1'b0 ), // No functional reset from core side
// used (only async).
.dst_clear_pending_o( core_clear_pending ), // use the clear pending signal
// to synchronously clear the
// response FIFO in the dm_top
// csrs
.dst_clk_i ( clk_i ),
.dst_data_o ( core_dmi_req_o ),
.dst_valid_o ( core_dmi_valid_o ),
.dst_ready_i ( core_dmi_ready_i )
);
cdc_2phase_clearable #(.T(dm::dmi_resp_t)) i_cdc_resp (
.src_rst_ni ( rst_ni ),
.src_clear_i ( 1'b0 ), // No functional reset from core side
// used (only async ).
.src_clear_pending_o(), // Not used
.src_clk_i ( clk_i ),
.src_data_i ( core_dmi_resp_i ),
.src_valid_i ( core_dmi_valid_i ),
.src_ready_o ( core_dmi_ready_o ),
.dst_rst_ni ( trst_ni ),
.dst_clear_i ( jtag_dmi_cdc_clear_i ),
.dst_clear_pending_o(), //Not used
.dst_clk_i ( tck_i ),
.dst_data_o ( jtag_dmi_resp_o ),
.dst_valid_o ( jtag_dmi_valid_o ),
.dst_ready_i ( jtag_dmi_ready_i )
);
// We need to flush the DMI response FIFO in DM top using the core clock
// synchronous clear signal core_dmi_rst_no. We repurpose the clear
// pending signal in the core clock domain by generating a 1 cycle pulse from
// it.
logic core_clear_pending_q;
logic core_dmi_rst_nq;
logic clear_pending_rise_edge_detect;
assign clear_pending_rise_edge_detect = !core_clear_pending_q && core_clear_pending;
always_ff @(posedge clk_i, negedge rst_ni) begin
if (!rst_ni) begin
core_dmi_rst_nq <= 1'b1;
core_clear_pending_q <= 1'b0;
end else begin
core_dmi_rst_nq <= ~clear_pending_rise_edge_detect; // active-low!
core_clear_pending_q <= core_clear_pending;
end
end
assign core_dmi_rst_no = core_dmi_rst_nq;
endmodule : dmi_cdc
/* Copyright 2018 ETH Zurich and University of Bologna.
* Copyright and related rights are licensed under the Solderpad Hardware
* License, Version 0.51 (the “License”); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
* or agreed to in writing, software, hardware and materials distributed under
* this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* File: dmi_jtag_tap.sv
* Author: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
* Date: 19.7.2018
*
* Description: JTAG TAP for DMI (according to debug spec 0.13)
*
*/
module dmi_jtag_tap #(
parameter int unsigned IrLength = 5,
// JTAG IDCODE Value
parameter logic [31:0] IdcodeValue = 32'h00000001
// xxxx version
// xxxxxxxxxxxxxxxx part number
// xxxxxxxxxxx manufacturer id
// 1 required by standard
) (
input logic tck_i, // JTAG test clock pad
input logic tms_i, // JTAG test mode select pad
input logic trst_ni, // JTAG test reset pad
input logic td_i, // JTAG test data input pad
output logic td_o, // JTAG test data output pad
output logic tdo_oe_o, // Data out output enable
input logic testmode_i,
// JTAG is interested in writing the DTM CSR register
output logic tck_o,
// Synchronous reset of the dmi module triggered by JTAG TAP
output logic dmi_clear_o,
output logic update_o,
output logic capture_o,
output logic shift_o,
output logic tdi_o,
output logic dtmcs_select_o,
input logic dtmcs_tdo_i,
// we want to access DMI register
output logic dmi_select_o,
input logic dmi_tdo_i
);
typedef enum logic [3:0] {
TestLogicReset, RunTestIdle, SelectDrScan,
CaptureDr, ShiftDr, Exit1Dr, PauseDr, Exit2Dr,
UpdateDr, SelectIrScan, CaptureIr, ShiftIr,
Exit1Ir, PauseIr, Exit2Ir, UpdateIr
} tap_state_e;
tap_state_e tap_state_q, tap_state_d;
logic update_dr, shift_dr, capture_dr;
typedef enum logic [IrLength-1:0] {
BYPASS0 = 'h0,
IDCODE = 'h1,
DTMCSR = 'h10,
DMIACCESS = 'h11,
BYPASS1 = 'h1f
} ir_reg_e;
// ----------------
// IR logic
// ----------------
// shift register
logic [IrLength-1:0] jtag_ir_shift_d, jtag_ir_shift_q;
// IR register -> this gets captured from shift register upon update_ir
ir_reg_e jtag_ir_d, jtag_ir_q;
logic capture_ir, shift_ir, update_ir, test_logic_reset; // pause_ir
always_comb begin : p_jtag
jtag_ir_shift_d = jtag_ir_shift_q;
jtag_ir_d = jtag_ir_q;
// IR shift register
if (shift_ir) begin
jtag_ir_shift_d = {td_i, jtag_ir_shift_q[IrLength-1:1]};
end
// capture IR register
if (capture_ir) begin
jtag_ir_shift_d = IrLength'(4'b0101);
end
// update IR register
if (update_ir) begin
jtag_ir_d = ir_reg_e'(jtag_ir_shift_q);
end
if (test_logic_reset) begin
// Bring all TAP state to the initial value.
jtag_ir_shift_d = '0;
jtag_ir_d = IDCODE;
end
end
always_ff @(posedge tck_i, negedge trst_ni) begin : p_jtag_ir_reg
if (!trst_ni) begin
jtag_ir_shift_q <= '0;
jtag_ir_q <= IDCODE;
end else begin
jtag_ir_shift_q <= jtag_ir_shift_d;
jtag_ir_q <= jtag_ir_d;
end
end
// ----------------
// TAP DR Regs
// ----------------
// - Bypass
// - IDCODE
// - DTM CS
logic [31:0] idcode_d, idcode_q;
logic idcode_select;
logic bypass_select;
logic bypass_d, bypass_q; // this is a 1-bit register
always_comb begin
idcode_d = idcode_q;
bypass_d = bypass_q;
if (capture_dr) begin
if (idcode_select) idcode_d = IdcodeValue;
if (bypass_select) bypass_d = 1'b0;
end
if (shift_dr) begin
if (idcode_select) idcode_d = {td_i, 31'(idcode_q >> 1)};
if (bypass_select) bypass_d = td_i;
end
if (test_logic_reset) begin
// Bring all TAP state to the initial value.
idcode_d = IdcodeValue;
bypass_d = 1'b0;
end
end
// ----------------
// Data reg select
// ----------------
always_comb begin : p_data_reg_sel
dmi_select_o = 1'b0;
dtmcs_select_o = 1'b0;
idcode_select = 1'b0;
bypass_select = 1'b0;
unique case (jtag_ir_q)
BYPASS0: bypass_select = 1'b1;
IDCODE: idcode_select = 1'b1;
DTMCSR: dtmcs_select_o = 1'b1;
DMIACCESS: dmi_select_o = 1'b1;
BYPASS1: bypass_select = 1'b1;
default: bypass_select = 1'b1;
endcase
end
// ----------------
// Output select
// ----------------
logic tdo_mux;
always_comb begin : p_out_sel
// we are shifting out the IR register
if (shift_ir) begin
tdo_mux = jtag_ir_shift_q[0];
// here we are shifting the DR register
end else begin
unique case (jtag_ir_q)
IDCODE: tdo_mux = idcode_q[0]; // Reading ID code
DTMCSR: tdo_mux = dtmcs_tdo_i; // Read from DTMCS TDO
DMIACCESS: tdo_mux = dmi_tdo_i; // Read from DMI TDO
default: tdo_mux = bypass_q; // BYPASS instruction
endcase
end
end
// ----------------
// DFT
// ----------------
logic tck_n, tck_ni;
tc_clk_inverter i_tck_inv (
.clk_i ( tck_i ),
.clk_o ( tck_ni )
);
tc_clk_mux2 i_dft_tck_mux (
.clk0_i ( tck_ni ),
.clk1_i ( tck_i ), // bypass the inverted clock for testing
.clk_sel_i ( testmode_i ),
.clk_o ( tck_n )
);
// TDO changes state at negative edge of TCK
always_ff @(posedge tck_n, negedge trst_ni) begin : p_tdo_regs
if (!trst_ni) begin
td_o <= 1'b0;
tdo_oe_o <= 1'b0;
end else begin
td_o <= tdo_mux;
tdo_oe_o <= (shift_ir | shift_dr);
end
end
// ----------------
// TAP FSM
// ----------------
// Determination of next state; purely combinatorial
always_comb begin : p_tap_fsm
test_logic_reset = 1'b0;
capture_dr = 1'b0;
shift_dr = 1'b0;
update_dr = 1'b0;
capture_ir = 1'b0;
shift_ir = 1'b0;
// pause_ir = 1'b0; unused
update_ir = 1'b0;
unique case (tap_state_q)
TestLogicReset: begin
tap_state_d = (tms_i) ? TestLogicReset : RunTestIdle;
test_logic_reset = 1'b1;
end
RunTestIdle: begin
tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle;
end
// DR Path
SelectDrScan: begin
tap_state_d = (tms_i) ? SelectIrScan : CaptureDr;
end
CaptureDr: begin
capture_dr = 1'b1;
tap_state_d = (tms_i) ? Exit1Dr : ShiftDr;
end
ShiftDr: begin
shift_dr = 1'b1;
tap_state_d = (tms_i) ? Exit1Dr : ShiftDr;
end
Exit1Dr: begin
tap_state_d = (tms_i) ? UpdateDr : PauseDr;
end
PauseDr: begin
tap_state_d = (tms_i) ? Exit2Dr : PauseDr;
end
Exit2Dr: begin
tap_state_d = (tms_i) ? UpdateDr : ShiftDr;
end
UpdateDr: begin
update_dr = 1'b1;
tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle;
end
// IR Path
SelectIrScan: begin
tap_state_d = (tms_i) ? TestLogicReset : CaptureIr;
end
// In this controller state, the shift register bank in the
// Instruction Register parallel loads a pattern of fixed values on
// the rising edge of TCK. The last two significant bits must always
// be "01".
CaptureIr: begin
capture_ir = 1'b1;
tap_state_d = (tms_i) ? Exit1Ir : ShiftIr;
end
// In this controller state, the instruction register gets connected
// between TDI and TDO, and the captured pattern gets shifted on
// each rising edge of TCK. The instruction available on the TDI
// pin is also shifted in to the instruction register.
ShiftIr: begin
shift_ir = 1'b1;
tap_state_d = (tms_i) ? Exit1Ir : ShiftIr;
end
Exit1Ir: begin
tap_state_d = (tms_i) ? UpdateIr : PauseIr;
end
PauseIr: begin
// pause_ir = 1'b1; // unused
tap_state_d = (tms_i) ? Exit2Ir : PauseIr;
end
Exit2Ir: begin
tap_state_d = (tms_i) ? UpdateIr : ShiftIr;
end
// In this controller state, the instruction in the instruction
// shift register is latched to the latch bank of the Instruction
// Register on every falling edge of TCK. This instruction becomes
// the current instruction once it is latched.
UpdateIr: begin
update_ir = 1'b1;
tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle;
end
default: ; // can't actually happen since case is full
endcase
end
always_ff @(posedge tck_i or negedge trst_ni) begin : p_regs
if (!trst_ni) begin
tap_state_q <= RunTestIdle;
idcode_q <= IdcodeValue;
bypass_q <= 1'b0;
end else begin
tap_state_q <= tap_state_d;
idcode_q <= idcode_d;
bypass_q <= bypass_d;
end
end
// Pass through JTAG signals to debug custom DR logic.
// In case of a single TAP those are just feed-through.
assign tck_o = tck_i;
assign tdi_o = td_i;
assign update_o = update_dr;
assign shift_o = shift_dr;
assign capture_o = capture_dr;
assign dmi_clear_o = test_logic_reset;
endmodule : dmi_jtag_tap
/* Copyright 2018 ETH Zurich and University of Bologna.
* Copyright and related rights are licensed under the Solderpad Hardware
* License, Version 0.51 (the “License”); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
* or agreed to in writing, software, hardware and materials distributed under
* this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* File: dm_sba.sv
* Author: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
* Date: 1.8.2018
*
* Description: System Bus Access Module
*
*/
module dm_sba #(
parameter int unsigned BusWidth = 32,
parameter bit ReadByteEnable = 1
) (
input logic clk_i, // Clock
input logic rst_ni,
input logic dmactive_i, // synchronous reset active low
output logic master_req_o,
output logic [BusWidth-1:0] master_add_o,
output logic master_we_o,
output logic [BusWidth-1:0] master_wdata_o,
output logic [BusWidth/8-1:0] master_be_o,
input logic master_gnt_i,
input logic master_r_valid_i,
input logic master_r_err_i,
input logic master_r_other_err_i, // *other_err_i has priority over *err_i
input logic [BusWidth-1:0] master_r_rdata_i,
input logic [BusWidth-1:0] sbaddress_i,
input logic sbaddress_write_valid_i,
// control signals in
input logic sbreadonaddr_i,
output logic [BusWidth-1:0] sbaddress_o,
input logic sbautoincrement_i,
input logic [2:0] sbaccess_i,
// data in
input logic sbreadondata_i,
input logic [BusWidth-1:0] sbdata_i,
input logic sbdata_read_valid_i,
input logic sbdata_write_valid_i,
// read data out
output logic [BusWidth-1:0] sbdata_o,
output logic sbdata_valid_o,
// control signals
output logic sbbusy_o,
output logic sberror_valid_o, // bus error occurred
output logic [2:0] sberror_o // bus error occurred
);
localparam int BeIdxWidth = $clog2(BusWidth/8);
dm::sba_state_e state_d, state_q;
logic [BusWidth-1:0] address;
logic req;
logic gnt;
logic we;
logic [BusWidth/8-1:0] be;
logic [BusWidth/8-1:0] be_mask;
logic [BeIdxWidth-1:0] be_idx;
assign sbbusy_o = logic'(state_q != dm::Idle);
always_comb begin : p_be_mask
be_mask = '0;
// generate byte enable mask
unique case (sbaccess_i)
3'b000: begin
be_mask[be_idx] = '1;
end
3'b001: begin
be_mask[int'({be_idx[$high(be_idx):1], 1'b0}) +: 2] = '1;
end
3'b010: begin
if (BusWidth == 32'd64) be_mask[int'({be_idx[$high(be_idx)], 2'h0}) +: 4] = '1;
else be_mask = '1;
end
3'b011: be_mask = '1;
default: ;
endcase
end
logic [BusWidth-1:0] sbaccess_mask;
assign sbaccess_mask = {BusWidth{1'b1}} << sbaccess_i;
logic addr_incr_en;
logic [BusWidth-1:0] addr_incr;
assign addr_incr = (addr_incr_en) ? (BusWidth'(1'b1) << sbaccess_i) : '0;
assign sbaddress_o = sbaddress_i + addr_incr;
always_comb begin : p_fsm
req = 1'b0;
address = sbaddress_i;
we = 1'b0;
be = '0;
be_idx = sbaddress_i[BeIdxWidth-1:0];
sberror_o = '0;
sberror_valid_o = 1'b0;
addr_incr_en = 1'b0;
state_d = state_q;
unique case (state_q)
dm::Idle: begin
// debugger requested a read
if (sbaddress_write_valid_i && sbreadonaddr_i) state_d = dm::Read;
// debugger requested a write
if (sbdata_write_valid_i) state_d = dm::Write;
// perform another read
if (sbdata_read_valid_i && sbreadondata_i) state_d = dm::Read;
end
dm::Read: begin
req = 1'b1;
if (ReadByteEnable) be = be_mask;
if (gnt) state_d = dm::WaitRead;
end
dm::Write: begin
req = 1'b1;
we = 1'b1;
be = be_mask;
if (gnt) state_d = dm::WaitWrite;
end
dm::WaitRead: begin
if (sbdata_valid_o) begin
state_d = dm::Idle;
// auto-increment address
addr_incr_en = sbautoincrement_i;
// check whether an "other" error has been encountered.
if (master_r_other_err_i) begin
sberror_valid_o = 1'b1;
sberror_o = 3'd7;
// check whether there was a bus error (== bad address).
end else if (master_r_err_i) begin
sberror_valid_o = 1'b1;
sberror_o = 3'd2;
end
end
end
dm::WaitWrite: begin
if (sbdata_valid_o) begin
state_d = dm::Idle;
// auto-increment address
addr_incr_en = sbautoincrement_i;
// check whether an "other" error has been encountered.
if (master_r_other_err_i) begin
sberror_valid_o = 1'b1;
sberror_o = 3'd7;
// check whether there was a bus error (== bad address).
end else if (master_r_err_i) begin
sberror_valid_o = 1'b1;
sberror_o = 3'd2;
end
end
end
default: state_d = dm::Idle; // catch parasitic state
endcase
// handle error case
if (32'(sbaccess_i) > BeIdxWidth && state_q != dm::Idle) begin
req = 1'b0;
state_d = dm::Idle;
sberror_valid_o = 1'b1;
sberror_o = 3'd4; // unsupported size was requested
end
//if sbaccess_i lsbs of address are not 0 - report misalignment error
if (|(sbaddress_i & ~sbaccess_mask) && state_q != dm::Idle) begin
req = 1'b0;
state_d = dm::Idle;
sberror_valid_o = 1'b1;
sberror_o = 3'd3; // alignment error
end
// further error handling should go here ...
end
always_ff @(posedge clk_i or negedge rst_ni) begin : p_regs
if (!rst_ni) begin
state_q <= dm::Idle;
end else begin
state_q <= state_d;
end
end
logic [BeIdxWidth-1:0] be_idx_masked;
assign be_idx_masked = be_idx & BeIdxWidth'(sbaccess_mask);
assign master_req_o = req;
assign master_add_o = address[BusWidth-1:0];
assign master_we_o = we;
assign master_wdata_o = sbdata_i[BusWidth-1:0] << (8 * be_idx_masked);
assign master_be_o = be[BusWidth/8-1:0];
assign gnt = master_gnt_i;
assign sbdata_valid_o = master_r_valid_i;
assign sbdata_o = master_r_rdata_i[BusWidth-1:0] >> (8 * be_idx_masked);
endmodule : dm_sba
/* Copyright 2018 ETH Zurich and University of Bologna.
* Copyright and related rights are licensed under the Solderpad Hardware
* License, Version 0.51 (the “License”); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
* or agreed to in writing, software, hardware and materials distributed under
* this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* File: dm_top.sv
* Author: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
* Date: 30.6.2018
*
* Description: Top-level of debug module (DM). This is an AXI-Slave.
* DTM protocol is equal to SiFives debug protocol to leverage
* SW infrastructure re-use. As of version 0.13
*/
module dm_top #(
parameter int unsigned NrHarts = 1,
parameter int unsigned BusWidth = 32,
parameter int unsigned DmBaseAddress = 'h1000, // default to non-zero page
// Bitmask to select physically available harts for systems
// that don't use hart numbers in a contiguous fashion.
parameter logic [NrHarts-1:0] SelectableHarts = {NrHarts{1'b1}},
// toggle new behavior to drive master_be_o during a read
parameter bit ReadByteEnable = 1
) (
input logic clk_i, // clock
// asynchronous reset active low, connect PoR here, not the system reset
input logic rst_ni,
input logic testmode_i,
output logic ndmreset_o, // non-debug module reset
output logic dmactive_o, // debug module is active
output logic [NrHarts-1:0] debug_req_o, // async debug request
// communicate whether the hart is unavailable (e.g.: power down)
input logic [NrHarts-1:0] unavailable_i,
input dm::hartinfo_t [NrHarts-1:0] hartinfo_i,
input logic slave_req_i,
input logic slave_we_i,
input logic [BusWidth-1:0] slave_addr_i,
input logic [BusWidth/8-1:0] slave_be_i,
input logic [BusWidth-1:0] slave_wdata_i,
output logic [BusWidth-1:0] slave_rdata_o,
output logic master_req_o,
output logic [BusWidth-1:0] master_add_o,
output logic master_we_o,
output logic [BusWidth-1:0] master_wdata_o,
output logic [BusWidth/8-1:0] master_be_o,
input logic master_gnt_i,
input logic master_r_valid_i,
input logic master_r_err_i,
input logic master_r_other_err_i, // *other_err_i has priority over *err_i
input logic [BusWidth-1:0] master_r_rdata_i,
// Connection to DTM - compatible to RocketChip Debug Module
input logic dmi_rst_ni, // Synchronous clear request from
// the DTM to clear the DMI response
// FIFO.
input logic dmi_req_valid_i,
output logic dmi_req_ready_o,
input dm::dmi_req_t dmi_req_i,
output logic dmi_resp_valid_o,
input logic dmi_resp_ready_i,
output dm::dmi_resp_t dmi_resp_o
);
// Debug CSRs
logic [NrHarts-1:0] halted;
// logic [NrHarts-1:0] running;
logic [NrHarts-1:0] resumeack;
logic [NrHarts-1:0] haltreq;
logic [NrHarts-1:0] resumereq;
logic clear_resumeack;
logic cmd_valid;
dm::command_t cmd;
logic cmderror_valid;
dm::cmderr_e cmderror;
logic cmdbusy;
logic [dm::ProgBufSize-1:0][31:0] progbuf;
logic [dm::DataCount-1:0][31:0] data_csrs_mem;
logic [dm::DataCount-1:0][31:0] data_mem_csrs;
logic data_valid;
logic ndmreset;
logic [19:0] hartsel;
// System Bus Access Module
logic [BusWidth-1:0] sbaddress_csrs_sba;
logic [BusWidth-1:0] sbaddress_sba_csrs;
logic sbaddress_write_valid;
logic sbreadonaddr;
logic sbautoincrement;
logic [2:0] sbaccess;
logic sbreadondata;
logic [BusWidth-1:0] sbdata_write;
logic sbdata_read_valid;
logic sbdata_write_valid;
logic [BusWidth-1:0] sbdata_read;
logic sbdata_valid;
logic sbbusy;
logic sberror_valid;
logic [2:0] sberror;
assign ndmreset_o = ndmreset;
dm_csrs #(
.NrHarts(NrHarts),
.BusWidth(BusWidth),
.SelectableHarts(SelectableHarts)
) i_dm_csrs (
.clk_i,
.rst_ni,
.testmode_i,
.dmi_rst_ni,
.dmi_req_valid_i,
.dmi_req_ready_o,
.dmi_req_i,
.dmi_resp_valid_o,
.dmi_resp_ready_i,
.dmi_resp_o,
.ndmreset_o ( ndmreset ),
.dmactive_o,
.hartsel_o ( hartsel ),
.hartinfo_i,
.halted_i ( halted ),
.unavailable_i,
.resumeack_i ( resumeack ),
.haltreq_o ( haltreq ),
.resumereq_o ( resumereq ),
.clear_resumeack_o ( clear_resumeack ),
.cmd_valid_o ( cmd_valid ),
.cmd_o ( cmd ),
.cmderror_valid_i ( cmderror_valid ),
.cmderror_i ( cmderror ),
.cmdbusy_i ( cmdbusy ),
.progbuf_o ( progbuf ),
.data_i ( data_mem_csrs ),
.data_valid_i ( data_valid ),
.data_o ( data_csrs_mem ),
.sbaddress_o ( sbaddress_csrs_sba ),
.sbaddress_i ( sbaddress_sba_csrs ),
.sbaddress_write_valid_o ( sbaddress_write_valid ),
.sbreadonaddr_o ( sbreadonaddr ),
.sbautoincrement_o ( sbautoincrement ),
.sbaccess_o ( sbaccess ),
.sbreadondata_o ( sbreadondata ),
.sbdata_o ( sbdata_write ),
.sbdata_read_valid_o ( sbdata_read_valid ),
.sbdata_write_valid_o ( sbdata_write_valid ),
.sbdata_i ( sbdata_read ),
.sbdata_valid_i ( sbdata_valid ),
.sbbusy_i ( sbbusy ),
.sberror_valid_i ( sberror_valid ),
.sberror_i ( sberror )
);
dm_sba #(
.BusWidth(BusWidth),
.ReadByteEnable(ReadByteEnable)
) i_dm_sba (
.clk_i,
.rst_ni,
.dmactive_i ( dmactive_o ),
.master_req_o,
.master_add_o,
.master_we_o,
.master_wdata_o,
.master_be_o,
.master_gnt_i,
.master_r_valid_i,
.master_r_err_i,
.master_r_other_err_i,
.master_r_rdata_i,
.sbaddress_i ( sbaddress_csrs_sba ),
.sbaddress_o ( sbaddress_sba_csrs ),
.sbaddress_write_valid_i ( sbaddress_write_valid ),
.sbreadonaddr_i ( sbreadonaddr ),
.sbautoincrement_i ( sbautoincrement ),
.sbaccess_i ( sbaccess ),
.sbreadondata_i ( sbreadondata ),
.sbdata_i ( sbdata_write ),
.sbdata_read_valid_i ( sbdata_read_valid ),
.sbdata_write_valid_i ( sbdata_write_valid ),
.sbdata_o ( sbdata_read ),
.sbdata_valid_o ( sbdata_valid ),
.sbbusy_o ( sbbusy ),
.sberror_valid_o ( sberror_valid ),
.sberror_o ( sberror )
);
dm_mem #(
.NrHarts(NrHarts),
.BusWidth(BusWidth),
.SelectableHarts(SelectableHarts),
.DmBaseAddress(DmBaseAddress)
) i_dm_mem (
.clk_i,
.rst_ni,
.debug_req_o,
.ndmreset_i ( ndmreset ),
.hartsel_i ( hartsel ),
.haltreq_i ( haltreq ),
.resumereq_i ( resumereq ),
.clear_resumeack_i ( clear_resumeack ),
.halted_o ( halted ),
.resuming_o ( resumeack ),
.cmd_valid_i ( cmd_valid ),
.cmd_i ( cmd ),
.cmderror_valid_o ( cmderror_valid ),
.cmderror_o ( cmderror ),
.cmdbusy_o ( cmdbusy ),
.progbuf_i ( progbuf ),
.data_i ( data_csrs_mem ),
.data_o ( data_mem_csrs ),
.data_valid_o ( data_valid ),
.req_i ( slave_req_i ),
.we_i ( slave_we_i ),
.addr_i ( slave_addr_i ),
.wdata_i ( slave_wdata_i ),
.be_i ( slave_be_i ),
.rdata_o ( slave_rdata_o )
);
endmodule : dm_top
/* Copyright 2018 ETH Zurich and University of Bologna.
* Copyright and related rights are licensed under the Solderpad Hardware
* License, Version 0.51 (the “License”); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
* or agreed to in writing, software, hardware and materials distributed under
* this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* File: axi_riscv_debug_module.sv
* Author: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
* Date: 19.7.2018
*
* Description: JTAG DMI (debug module interface)
*
*/
module dmi_jtag #(
parameter logic [31:0] IdcodeValue = 32'h00000001
) (
input logic clk_i, // DMI Clock
input logic rst_ni, // Asynchronous reset active low
input logic testmode_i,
// active-low glitch free reset signal. Is asserted for one dmi clock cycle
// (clk_i) whenever the dmi_jtag is reset (POR or functional reset).
output logic dmi_rst_no,
output dm::dmi_req_t dmi_req_o,
output logic dmi_req_valid_o,
input logic dmi_req_ready_i,
input dm::dmi_resp_t dmi_resp_i,
output logic dmi_resp_ready_o,
input logic dmi_resp_valid_i,
input logic tck_i, // JTAG test clock pad
input logic tms_i, // JTAG test mode select pad
input logic trst_ni, // JTAG test reset pad
input logic td_i, // JTAG test data input pad
output logic td_o, // JTAG test data output pad
output logic tdo_oe_o // Data out output enable
);
typedef enum logic [1:0] {
DMINoError = 2'h0, DMIReservedError = 2'h1,
DMIOPFailed = 2'h2, DMIBusy = 2'h3
} dmi_error_e;
dmi_error_e error_d, error_q;
logic tck;
logic jtag_dmi_clear; // Synchronous reset of DMI triggered by TestLogicReset in
// jtag TAP
logic dmi_clear; // Functional (warm) reset of the entire DMI
logic update;
logic capture;
logic shift;
logic tdi;
logic dtmcs_select;
assign dmi_clear = jtag_dmi_clear || (dtmcs_select && update && dtmcs_q.dmihardreset);
// -------------------------------
// Debug Module Control and Status
// -------------------------------
dm::dtmcs_t dtmcs_d, dtmcs_q;
always_comb begin
dtmcs_d = dtmcs_q;
if (capture) begin
if (dtmcs_select) begin
dtmcs_d = '{
zero1 : '0,
dmihardreset : 1'b0,
dmireset : 1'b0,
zero0 : '0,
idle : 3'd1, // 1: Enter Run-Test/Idle and leave it immediately
dmistat : error_q, // 0: No error, 2: Op failed, 3: too fast
abits : 6'd7, // The size of address in dmi
version : 4'd1 // Version described in spec version 0.13 (and later?)
};
end
end
if (shift) begin
if (dtmcs_select) dtmcs_d = {tdi, 31'(dtmcs_q >> 1)};
end
end
always_ff @(posedge tck or negedge trst_ni) begin
if (!trst_ni) begin
dtmcs_q <= '0;
end else begin
dtmcs_q <= dtmcs_d;
end
end
// ----------------------------
// DMI (Debug Module Interface)
// ----------------------------
logic dmi_select;
logic dmi_tdo;
dm::dmi_req_t dmi_req;
logic dmi_req_ready;
logic dmi_req_valid;
dm::dmi_resp_t dmi_resp;
logic dmi_resp_valid;
logic dmi_resp_ready;
typedef struct packed {
logic [6:0] address;
logic [31:0] data;
logic [1:0] op;
} dmi_t;
typedef enum logic [2:0] { Idle, Read, WaitReadValid, Write, WaitWriteValid } state_e;
state_e state_d, state_q;
logic [$bits(dmi_t)-1:0] dr_d, dr_q;
logic [6:0] address_d, address_q;
logic [31:0] data_d, data_q;
dmi_t dmi;
assign dmi = dmi_t'(dr_q);
assign dmi_req.addr = address_q;
assign dmi_req.data = data_q;
assign dmi_req.op = (state_q == Write) ? dm::DTM_WRITE : dm::DTM_READ;
// We will always be ready to accept the data we requested.
assign dmi_resp_ready = 1'b1;
logic error_dmi_busy;
logic error_dmi_op_failed;
always_comb begin : p_fsm
error_dmi_busy = 1'b0;
error_dmi_op_failed = 1'b0;
// default assignments
state_d = state_q;
address_d = address_q;
data_d = data_q;
error_d = error_q;
dmi_req_valid = 1'b0;
if (dmi_clear) begin
state_d = Idle;
data_d = '0;
error_d = DMINoError;
address_d = '0;
end else begin
unique case (state_q)
Idle: begin
// make sure that no error is sticky
if (dmi_select && update && (error_q == DMINoError)) begin
// save address and value
address_d = dmi.address;
data_d = dmi.data;
if (dm::dtm_op_e'(dmi.op) == dm::DTM_READ) begin
state_d = Read;
end else if (dm::dtm_op_e'(dmi.op) == dm::DTM_WRITE) begin
state_d = Write;
end
// else this is a nop and we can stay here
end
end
Read: begin
dmi_req_valid = 1'b1;
if (dmi_req_ready) begin
state_d = WaitReadValid;
end
end
WaitReadValid: begin
// load data into register and shift out
if (dmi_resp_valid) begin
unique case (dmi_resp.resp)
dm::DTM_SUCCESS: begin
data_d = dmi_resp.data;
end
dm::DTM_ERR: begin
data_d = 32'hDEAD_BEEF;
error_dmi_op_failed = 1'b1;
end
dm::DTM_BUSY: begin
data_d = 32'hB051_B051;
error_dmi_busy = 1'b1;
end
default: begin
data_d = 32'hBAAD_C0DE;
end
endcase
state_d = Idle;
end
end
Write: begin
dmi_req_valid = 1'b1;
// request sent, wait for response before going back to idle
if (dmi_req_ready) begin
state_d = WaitWriteValid;
end
end
WaitWriteValid: begin
// got a valid answer go back to idle
if (dmi_resp_valid) begin
unique case (dmi_resp.resp)
dm::DTM_ERR: error_dmi_op_failed = 1'b1;
dm::DTM_BUSY: error_dmi_busy = 1'b1;
default: ;
endcase
state_d = Idle;
end
end
default: begin
// just wait for idle here
if (dmi_resp_valid) begin
state_d = Idle;
end
end
endcase
// update means we got another request but we didn't finish
// the one in progress, this state is sticky
if (update && state_q != Idle) begin
error_dmi_busy = 1'b1;
end
// if capture goes high while we are in the read state
// or in the corresponding wait state we are not giving back a valid word
// -> throw an error
if (capture && state_q inside {Read, WaitReadValid}) begin
error_dmi_busy = 1'b1;
end
if (error_dmi_busy && error_q == DMINoError) begin
error_d = DMIBusy;
end
if (error_dmi_op_failed && error_q == DMINoError) begin
error_d = DMIOPFailed;
end
// clear sticky error flag
if (update && dtmcs_q.dmireset && dtmcs_select) begin
error_d = DMINoError;
end
end
end
// shift register
assign dmi_tdo = dr_q[0];
always_comb begin : p_shift
dr_d = dr_q;
if (dmi_clear) begin
dr_d = '0;
end else begin
if (capture) begin
if (dmi_select) begin
if (error_q == DMINoError && !error_dmi_busy) begin
dr_d = {address_q, data_q, DMINoError};
// DMI was busy, report an error
end else if (error_q == DMIBusy || error_dmi_busy) begin
dr_d = {address_q, data_q, DMIBusy};
end
end
end
if (shift) begin
if (dmi_select) begin
dr_d = {tdi, dr_q[$bits(dr_q)-1:1]};
end
end
end
end
always_ff @(posedge tck or negedge trst_ni) begin
if (!trst_ni) begin
dr_q <= '0;
state_q <= Idle;
address_q <= '0;
data_q <= '0;
error_q <= DMINoError;
end else begin
dr_q <= dr_d;
state_q <= state_d;
address_q <= address_d;
data_q <= data_d;
error_q <= error_d;
end
end
// ---------
// TAP
// ---------
dmi_jtag_tap #(
.IrLength (5),
.IdcodeValue(IdcodeValue)
) i_dmi_jtag_tap (
.tck_i,
.tms_i,
.trst_ni,
.td_i,
.td_o,
.tdo_oe_o,
.testmode_i,
.tck_o ( tck ),
.dmi_clear_o ( jtag_dmi_clear ),
.update_o ( update ),
.capture_o ( capture ),
.shift_o ( shift ),
.tdi_o ( tdi ),
.dtmcs_select_o ( dtmcs_select ),
.dtmcs_tdo_i ( dtmcs_q[0] ),
.dmi_select_o ( dmi_select ),
.dmi_tdo_i ( dmi_tdo )
);
// ---------
// CDC
// ---------
dmi_cdc i_dmi_cdc (
// JTAG side (master side)
.tck_i ( tck ),
.trst_ni ( trst_ni ),
.jtag_dmi_cdc_clear_i ( dmi_clear ),
.jtag_dmi_req_i ( dmi_req ),
.jtag_dmi_ready_o ( dmi_req_ready ),
.jtag_dmi_valid_i ( dmi_req_valid ),
.jtag_dmi_resp_o ( dmi_resp ),
.jtag_dmi_valid_o ( dmi_resp_valid ),
.jtag_dmi_ready_i ( dmi_resp_ready ),
// core side
.clk_i,
.rst_ni,
.core_dmi_rst_no ( dmi_rst_no ),
.core_dmi_req_o ( dmi_req_o ),
.core_dmi_valid_o ( dmi_req_valid_o ),
.core_dmi_ready_i ( dmi_req_ready_i ),
.core_dmi_resp_i ( dmi_resp_i ),
.core_dmi_ready_o ( dmi_resp_ready_o ),
.core_dmi_valid_i ( dmi_resp_valid_i )
);
endmodule : dmi_jtag
// Copyright 2021 Thales DIS design services SAS
//
// Licensed under the Solderpad Hardware Licence, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// SPDX-License-Identifier: Apache-2.0 WITH SHL-2.0
// You may obtain a copy of the License at https://solderpad.org/licenses/
//
// Original Author: Jean-Roch COULON (jean-roch.coulon@thalesgroup.com)
package cva6_config_pkg;
localparam CVA6ConfigXlen = 64;
localparam CVA6ConfigFpuEn = 1;
localparam CVA6ConfigF16En = 0;
localparam CVA6ConfigF16AltEn = 0;
localparam CVA6ConfigF8En = 0;
localparam CVA6ConfigFVecEn = 0;
localparam CVA6ConfigCvxifEn = 1;
localparam CVA6ConfigCExtEn = 1;
localparam CVA6ConfigAExtEn = 1;
localparam CVA6ConfigFetchUserEn = 0;
localparam CVA6ConfigFetchUserWidth = CVA6ConfigXlen;
localparam CVA6ConfigDataUserEn = 0;
localparam CVA6ConfigDataUserWidth = CVA6ConfigXlen;
localparam CVA6ConfigRenameEn = 0;
endpackage
/* Copyright 2018 ETH Zurich and University of Bologna.
* Copyright and related rights are licensed under the Solderpad Hardware
* License, Version 0.51 (the “License”); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
* or agreed to in writing, software, hardware and materials distributed under
* this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* File: riscv_pkg.sv
* Author: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
* Date: 30.6.2017
*
* Description: Common RISC-V definitions.
*/
package riscv;
// ----------------------
// Import cva6 config from cva6_config_pkg
// ----------------------
localparam XLEN = cva6_config_pkg::CVA6ConfigXlen;
localparam FPU_EN = cva6_config_pkg::CVA6ConfigFpuEn;
// ----------------------
// Data and Address length
// ----------------------
typedef enum logic [3:0] {
ModeOff = 0,
ModeSv32 = 1,
ModeSv39 = 8,
ModeSv48 = 9,
ModeSv57 = 10,
ModeSv64 = 11
} vm_mode_t;
// Warning: When using STD_CACHE, configuration must be PLEN=56 and VLEN=64
// Warning: VLEN must be superior or equal to PLEN
localparam VLEN = (XLEN == 32) ? 32 : 64; // virtual address length
localparam PLEN = (XLEN == 32) ? 34 : 56; // physical address length
localparam IS_XLEN32 = (XLEN == 32) ? 1'b1 : 1'b0;
localparam IS_XLEN64 = (XLEN == 32) ? 1'b0 : 1'b1;
localparam ModeW = (XLEN == 32) ? 1 : 4;
localparam ASIDW = (XLEN == 32) ? 9 : 16;
localparam PPNW = (XLEN == 32) ? 22 : 44;
localparam vm_mode_t MODE_SV = (XLEN == 32) ? ModeSv32 : ModeSv39;
localparam SV = (MODE_SV == ModeSv32) ? 32 : 39;
localparam VPN2 = (VLEN-31 < 8) ? VLEN-31 : 8;
localparam XLEN_ALIGN_BYTES = $clog2(XLEN/8);
typedef logic [XLEN-1:0] xlen_t;
// --------------------
// Privilege Spec
// --------------------
typedef enum logic[1:0] {
PRIV_LVL_M = 2'b11,
PRIV_LVL_S = 2'b01,
PRIV_LVL_U = 2'b00
} priv_lvl_t;
// type which holds xlen
typedef enum logic [1:0] {
XLEN_32 = 2'b01,
XLEN_64 = 2'b10,
XLEN_128 = 2'b11
} xlen_e;
typedef enum logic [1:0] {
Off = 2'b00,
Initial = 2'b01,
Clean = 2'b10,
Dirty = 2'b11
} xs_t;
typedef struct packed {
logic sd; // signal dirty state - read-only
logic [62:36] wpri4; // writes preserved reads ignored
xlen_e sxl; // variable supervisor mode xlen - hardwired to zero
xlen_e uxl; // variable user mode xlen - hardwired to zero
logic [8:0] wpri3; // writes preserved reads ignored
logic tsr; // trap sret
logic tw; // time wait
logic tvm; // trap virtual memory
logic mxr; // make executable readable
logic sum; // permit supervisor user memory access
logic mprv; // modify privilege - privilege level for ld/st
xs_t xs; // extension register - hardwired to zero
xs_t fs; // floating point extension register
priv_lvl_t mpp; // holds the previous privilege mode up to machine
logic [1:0] wpri2; // writes preserved reads ignored
logic spp; // holds the previous privilege mode up to supervisor
logic mpie; // machine interrupts enable bit active prior to trap
logic wpri1; // writes preserved reads ignored
logic spie; // supervisor interrupts enable bit active prior to trap
logic upie; // user interrupts enable bit active prior to trap - hardwired to zero
logic mie; // machine interrupts enable
logic wpri0; // writes preserved reads ignored
logic sie; // supervisor interrupts enable
logic uie; // user interrupts enable - hardwired to zero
} status_rv_t;
typedef struct packed {
logic [ModeW-1:0] mode;
logic [ASIDW-1:0] asid;
logic [PPNW-1:0] ppn;
} satp_t;
// --------------------
// Instruction Types
// --------------------
typedef struct packed {
logic [31:25] funct7;
logic [24:20] rs2;
logic [19:15] rs1;
logic [14:12] funct3;
logic [11:7] rd;
logic [6:0] opcode;
} rtype_t;
typedef struct packed {
logic [31:27] rs3;
logic [26:25] funct2;
logic [24:20] rs2;
logic [19:15] rs1;
logic [14:12] funct3;
logic [11:7] rd;
logic [6:0] opcode;
} r4type_t;
typedef struct packed {
logic [31:27] funct5;
logic [26:25] fmt;
logic [24:20] rs2;
logic [19:15] rs1;
logic [14:12] rm;
logic [11:7] rd;
logic [6:0] opcode;
} rftype_t; // floating-point
typedef struct packed {
logic [31:30] funct2;
logic [29:25] vecfltop;
logic [24:20] rs2;
logic [19:15] rs1;
logic [14:14] repl;
logic [13:12] vfmt;
logic [11:7] rd;
logic [6:0] opcode;
} rvftype_t; // vectorial floating-point
typedef struct packed {
logic [31:20] imm;
logic [19:15] rs1;
logic [14:12] funct3;
logic [11:7] rd;
logic [6:0] opcode;
} itype_t;
typedef struct packed {
logic [31:25] imm;
logic [24:20] rs2;
logic [19:15] rs1;
logic [14:12] funct3;
logic [11:7] imm0;
logic [6:0] opcode;
} stype_t;
typedef struct packed {
logic [31:12] imm;
logic [11:7] rd;
logic [6:0] opcode;
} utype_t;
// atomic instructions
typedef struct packed {
logic [31:27] funct5;
logic aq;
logic rl;
logic [24:20] rs2;
logic [19:15] rs1;
logic [14:12] funct3;
logic [11:7] rd;
logic [6:0] opcode;
} atype_t;
typedef union packed {
logic [31:0] instr;
rtype_t rtype;
r4type_t r4type;
rftype_t rftype;
rvftype_t rvftype;
itype_t itype;
stype_t stype;
utype_t utype;
atype_t atype;
} instruction_t;
// --------------------
// Opcodes
// --------------------
// RV32/64G listings:
// Quadrant 0
localparam OpcodeLoad = 7'b00_000_11;
localparam OpcodeLoadFp = 7'b00_001_11;
localparam OpcodeCustom0 = 7'b00_010_11;
localparam OpcodeMiscMem = 7'b00_011_11;
localparam OpcodeOpImm = 7'b00_100_11;
localparam OpcodeAuipc = 7'b00_101_11;
localparam OpcodeOpImm32 = 7'b00_110_11;
// Quadrant 1
localparam OpcodeStore = 7'b01_000_11;
localparam OpcodeStoreFp = 7'b01_001_11;
localparam OpcodeCustom1 = 7'b01_010_11;
localparam OpcodeAmo = 7'b01_011_11;
localparam OpcodeOp = 7'b01_100_11;
localparam OpcodeLui = 7'b01_101_11;
localparam OpcodeOp32 = 7'b01_110_11;
// Quadrant 2
localparam OpcodeMadd = 7'b10_000_11;
localparam OpcodeMsub = 7'b10_001_11;
localparam OpcodeNmsub = 7'b10_010_11;
localparam OpcodeNmadd = 7'b10_011_11;
localparam OpcodeOpFp = 7'b10_100_11;
localparam OpcodeRsrvd1 = 7'b10_101_11;
localparam OpcodeCustom2 = 7'b10_110_11;
// Quadrant 3
localparam OpcodeBranch = 7'b11_000_11;
localparam OpcodeJalr = 7'b11_001_11;
localparam OpcodeRsrvd2 = 7'b11_010_11;
localparam OpcodeJal = 7'b11_011_11;
localparam OpcodeSystem = 7'b11_100_11;
localparam OpcodeRsrvd3 = 7'b11_101_11;
localparam OpcodeCustom3 = 7'b11_110_11;
// RV64C/RV32C listings:
// Quadrant 0
localparam OpcodeC0 = 2'b00;
localparam OpcodeC0Addi4spn = 3'b000;
localparam OpcodeC0Fld = 3'b001;
localparam OpcodeC0Lw = 3'b010;
localparam OpcodeC0Ld = 3'b011;
localparam OpcodeC0Rsrvd = 3'b100;
localparam OpcodeC0Fsd = 3'b101;
localparam OpcodeC0Sw = 3'b110;
localparam OpcodeC0Sd = 3'b111;
// Quadrant 1
localparam OpcodeC1 = 2'b01;
localparam OpcodeC1Addi = 3'b000;
localparam OpcodeC1Addiw = 3'b001; //for RV64I only
localparam OpcodeC1Jal = 3'b001; //for RV32I only
localparam OpcodeC1Li = 3'b010;
localparam OpcodeC1LuiAddi16sp = 3'b011;
localparam OpcodeC1MiscAlu = 3'b100;
localparam OpcodeC1J = 3'b101;
localparam OpcodeC1Beqz = 3'b110;
localparam OpcodeC1Bnez = 3'b111;
// Quadrant 2
localparam OpcodeC2 = 2'b10;
localparam OpcodeC2Slli = 3'b000;
localparam OpcodeC2Fldsp = 3'b001;
localparam OpcodeC2Lwsp = 3'b010;
localparam OpcodeC2Ldsp = 3'b011;
localparam OpcodeC2JalrMvAdd = 3'b100;
localparam OpcodeC2Fsdsp = 3'b101;
localparam OpcodeC2Swsp = 3'b110;
localparam OpcodeC2Sdsp = 3'b111;
// ----------------------
// Virtual Memory
// ----------------------
// memory management, pte for sv39
typedef struct packed {
logic [9:0] reserved;
logic [44-1:0] ppn; // PPN length for
logic [1:0] rsw;
logic d;
logic a;
logic g;
logic u;
logic x;
logic w;
logic r;
logic v;
} pte_t;
// memory management, pte for sv32
typedef struct packed {
logic [22-1:0] ppn; // PPN length for
logic [1:0] rsw;
logic d;
logic a;
logic g;
logic u;
logic x;
logic w;
logic r;
logic v;
} pte_sv32_t;
// ----------------------
// Exception Cause Codes
// ----------------------
localparam logic [XLEN-1:0] INSTR_ADDR_MISALIGNED = 0;
localparam logic [XLEN-1:0] INSTR_ACCESS_FAULT = 1; // Illegal access as governed by PMPs and PMAs
localparam logic [XLEN-1:0] ILLEGAL_INSTR = 2;
localparam logic [XLEN-1:0] BREAKPOINT = 3;
localparam logic [XLEN-1:0] LD_ADDR_MISALIGNED = 4;
localparam logic [XLEN-1:0] LD_ACCESS_FAULT = 5; // Illegal access as governed by PMPs and PMAs
localparam logic [XLEN-1:0] ST_ADDR_MISALIGNED = 6;
localparam logic [XLEN-1:0] ST_ACCESS_FAULT = 7; // Illegal access as governed by PMPs and PMAs
localparam logic [XLEN-1:0] ENV_CALL_UMODE = 8; // environment call from user mode
localparam logic [XLEN-1:0] ENV_CALL_SMODE = 9; // environment call from supervisor mode
localparam logic [XLEN-1:0] ENV_CALL_MMODE = 11; // environment call from machine mode
localparam logic [XLEN-1:0] INSTR_PAGE_FAULT = 12; // Instruction page fault
localparam logic [XLEN-1:0] LOAD_PAGE_FAULT = 13; // Load page fault
localparam logic [XLEN-1:0] STORE_PAGE_FAULT = 15; // Store page fault
localparam logic [XLEN-1:0] DEBUG_REQUEST = 24; // Debug request
localparam int unsigned IRQ_S_SOFT = 1;
localparam int unsigned IRQ_M_SOFT = 3;
localparam int unsigned IRQ_S_TIMER = 5;
localparam int unsigned IRQ_M_TIMER = 7;
localparam int unsigned IRQ_S_EXT = 9;
localparam int unsigned IRQ_M_EXT = 11;
localparam logic [XLEN-1:0] MIP_SSIP = 1 << IRQ_S_SOFT;
localparam logic [XLEN-1:0] MIP_MSIP = 1 << IRQ_M_SOFT;
localparam logic [XLEN-1:0] MIP_STIP = 1 << IRQ_S_TIMER;
localparam logic [XLEN-1:0] MIP_MTIP = 1 << IRQ_M_TIMER;
localparam logic [XLEN-1:0] MIP_SEIP = 1 << IRQ_S_EXT;
localparam logic [XLEN-1:0] MIP_MEIP = 1 << IRQ_M_EXT;
localparam logic [XLEN-1:0] S_SW_INTERRUPT = (1 << (XLEN-1)) | IRQ_S_SOFT;
localparam logic [XLEN-1:0] M_SW_INTERRUPT = (1 << (XLEN-1)) | IRQ_M_SOFT;
localparam logic [XLEN-1:0] S_TIMER_INTERRUPT = (1 << (XLEN-1)) | IRQ_S_TIMER;
localparam logic [XLEN-1:0] M_TIMER_INTERRUPT = (1 << (XLEN-1)) | IRQ_M_TIMER;
localparam logic [XLEN-1:0] S_EXT_INTERRUPT = (1 << (XLEN-1)) | IRQ_S_EXT;
localparam logic [XLEN-1:0] M_EXT_INTERRUPT = (1 << (XLEN-1)) | IRQ_M_EXT;
// -----
// CSRs
// -----
typedef enum logic [11:0] {
// Floating-Point CSRs
CSR_FFLAGS = 12'h001,
CSR_FRM = 12'h002,
CSR_FCSR = 12'h003,
CSR_FTRAN = 12'h800,
// Supervisor Mode CSRs
CSR_SSTATUS = 12'h100,
CSR_SIE = 12'h104,
CSR_STVEC = 12'h105,
CSR_SCOUNTEREN = 12'h106,
CSR_SSCRATCH = 12'h140,
CSR_SEPC = 12'h141,
CSR_SCAUSE = 12'h142,
CSR_STVAL = 12'h143,
CSR_SIP = 12'h144,
CSR_SATP = 12'h180,
// Machine Mode CSRs
CSR_MSTATUS = 12'h300,
CSR_MISA = 12'h301,
CSR_MEDELEG = 12'h302,
CSR_MIDELEG = 12'h303,
CSR_MIE = 12'h304,
CSR_MTVEC = 12'h305,
CSR_MCOUNTEREN = 12'h306,
CSR_MSCRATCH = 12'h340,
CSR_MEPC = 12'h341,
CSR_MCAUSE = 12'h342,
CSR_MTVAL = 12'h343,
CSR_MIP = 12'h344,
CSR_PMPCFG0 = 12'h3A0,
CSR_PMPCFG1 = 12'h3A1,
CSR_PMPCFG2 = 12'h3A2,
CSR_PMPCFG3 = 12'h3A3,
CSR_PMPADDR0 = 12'h3B0,
CSR_PMPADDR1 = 12'h3B1,
CSR_PMPADDR2 = 12'h3B2,
CSR_PMPADDR3 = 12'h3B3,
CSR_PMPADDR4 = 12'h3B4,
CSR_PMPADDR5 = 12'h3B5,
CSR_PMPADDR6 = 12'h3B6,
CSR_PMPADDR7 = 12'h3B7,
CSR_PMPADDR8 = 12'h3B8,
CSR_PMPADDR9 = 12'h3B9,
CSR_PMPADDR10 = 12'h3BA,
CSR_PMPADDR11 = 12'h3BB,
CSR_PMPADDR12 = 12'h3BC,
CSR_PMPADDR13 = 12'h3BD,
CSR_PMPADDR14 = 12'h3BE,
CSR_PMPADDR15 = 12'h3BF,
CSR_MVENDORID = 12'hF11,
CSR_MARCHID = 12'hF12,
CSR_MIMPID = 12'hF13,
CSR_MHARTID = 12'hF14,
CSR_MCYCLE = 12'hB00,
CSR_MCYCLEH = 12'hB80,
CSR_MINSTRET = 12'hB02,
CSR_MINSTRETH = 12'hB82,
// Performance counters (Machine Mode)
CSR_ML1_ICACHE_MISS = 12'hB03, // L1 Instr Cache Miss
CSR_ML1_DCACHE_MISS = 12'hB04, // L1 Data Cache Miss
CSR_MITLB_MISS = 12'hB05, // ITLB Miss
CSR_MDTLB_MISS = 12'hB06, // DTLB Miss
CSR_MLOAD = 12'hB07, // Loads
CSR_MSTORE = 12'hB08, // Stores
CSR_MEXCEPTION = 12'hB09, // Taken exceptions
CSR_MEXCEPTION_RET = 12'hB0A, // Exception return
CSR_MBRANCH_JUMP = 12'hB0B, // Software change of PC
CSR_MCALL = 12'hB0C, // Procedure call
CSR_MRET = 12'hB0D, // Procedure Return
CSR_MMIS_PREDICT = 12'hB0E, // Branch mis-predicted
CSR_MSB_FULL = 12'hB0F, // Scoreboard full
CSR_MIF_EMPTY = 12'hB10, // instruction fetch queue empty
CSR_MHPM_COUNTER_17 = 12'hB11, // reserved
CSR_MHPM_COUNTER_18 = 12'hB12, // reserved
CSR_MHPM_COUNTER_19 = 12'hB13, // reserved
CSR_MHPM_COUNTER_20 = 12'hB14, // reserved
CSR_MHPM_COUNTER_21 = 12'hB15, // reserved
CSR_MHPM_COUNTER_22 = 12'hB16, // reserved
CSR_MHPM_COUNTER_23 = 12'hB17, // reserved
CSR_MHPM_COUNTER_24 = 12'hB18, // reserved
CSR_MHPM_COUNTER_25 = 12'hB19, // reserved
CSR_MHPM_COUNTER_26 = 12'hB1A, // reserved
CSR_MHPM_COUNTER_27 = 12'hB1B, // reserved
CSR_MHPM_COUNTER_28 = 12'hB1C, // reserved
CSR_MHPM_COUNTER_29 = 12'hB1D, // reserved
CSR_MHPM_COUNTER_30 = 12'hB1E, // reserved
CSR_MHPM_COUNTER_31 = 12'hB1F, // reserved
// Cache Control (platform specifc)
CSR_DCACHE = 12'h701,
CSR_ICACHE = 12'h700,
// Triggers
CSR_TSELECT = 12'h7A0,
CSR_TDATA1 = 12'h7A1,
CSR_TDATA2 = 12'h7A2,
CSR_TDATA3 = 12'h7A3,
CSR_TINFO = 12'h7A4,
// Debug CSR
CSR_DCSR = 12'h7b0,
CSR_DPC = 12'h7b1,
CSR_DSCRATCH0 = 12'h7b2, // optional
CSR_DSCRATCH1 = 12'h7b3, // optional
// Counters and Timers (User Mode - R/O Shadows)
CSR_CYCLE = 12'hC00,
CSR_CYCLEH = 12'hC80,
CSR_TIME = 12'hC01,
CSR_TIMEH = 12'hC81,
CSR_INSTRET = 12'hC02,
CSR_INSTRETH = 12'hC82,
// Performance counters (User Mode - R/O Shadows)
CSR_L1_ICACHE_MISS = 12'hC03, // L1 Instr Cache Miss
CSR_L1_DCACHE_MISS = 12'hC04, // L1 Data Cache Miss
CSR_ITLB_MISS = 12'hC05, // ITLB Miss
CSR_DTLB_MISS = 12'hC06, // DTLB Miss
CSR_LOAD = 12'hC07, // Loads
CSR_STORE = 12'hC08, // Stores
CSR_EXCEPTION = 12'hC09, // Taken exceptions
CSR_EXCEPTION_RET = 12'hC0A, // Exception return
CSR_BRANCH_JUMP = 12'hC0B, // Software change of PC
CSR_CALL = 12'hC0C, // Procedure call
CSR_RET = 12'hC0D, // Procedure Return
CSR_MIS_PREDICT = 12'hC0E, // Branch mis-predicted
CSR_SB_FULL = 12'hC0F, // Scoreboard full
CSR_IF_EMPTY = 12'hC10, // instruction fetch queue empty
CSR_HPM_COUNTER_17 = 12'hC11, // reserved
CSR_HPM_COUNTER_18 = 12'hC12, // reserved
CSR_HPM_COUNTER_19 = 12'hC13, // reserved
CSR_HPM_COUNTER_20 = 12'hC14, // reserved
CSR_HPM_COUNTER_21 = 12'hC15, // reserved
CSR_HPM_COUNTER_22 = 12'hC16, // reserved
CSR_HPM_COUNTER_23 = 12'hC17, // reserved
CSR_HPM_COUNTER_24 = 12'hC18, // reserved
CSR_HPM_COUNTER_25 = 12'hC19, // reserved
CSR_HPM_COUNTER_26 = 12'hC1A, // reserved
CSR_HPM_COUNTER_27 = 12'hC1B, // reserved
CSR_HPM_COUNTER_28 = 12'hC1C, // reserved
CSR_HPM_COUNTER_29 = 12'hC1D, // reserved
CSR_HPM_COUNTER_30 = 12'hC1E, // reserved
CSR_HPM_COUNTER_31 = 12'hC1F // reserved
} csr_reg_t;
localparam logic [63:0] SSTATUS_UIE = 'h00000001;
localparam logic [63:0] SSTATUS_SIE = 'h00000002;
localparam logic [63:0] SSTATUS_SPIE = 'h00000020;
localparam logic [63:0] SSTATUS_SPP = 'h00000100;
localparam logic [63:0] SSTATUS_FS = 'h00006000;
localparam logic [63:0] SSTATUS_XS = 'h00018000;
localparam logic [63:0] SSTATUS_SUM = 'h00040000;
localparam logic [63:0] SSTATUS_MXR = 'h00080000;
localparam logic [63:0] SSTATUS_UPIE = 'h00000010;
localparam logic [63:0] SSTATUS_UXL = 64'h0000000300000000;
localparam logic [63:0] SSTATUS_SD = {IS_XLEN64, 31'h00000000, ~IS_XLEN64, 31'h00000000};
localparam logic [63:0] MSTATUS_UIE = 'h00000001;
localparam logic [63:0] MSTATUS_SIE = 'h00000002;
localparam logic [63:0] MSTATUS_HIE = 'h00000004;
localparam logic [63:0] MSTATUS_MIE = 'h00000008;
localparam logic [63:0] MSTATUS_UPIE = 'h00000010;
localparam logic [63:0] MSTATUS_SPIE = 'h00000020;
localparam logic [63:0] MSTATUS_HPIE = 'h00000040;
localparam logic [63:0] MSTATUS_MPIE = 'h00000080;
localparam logic [63:0] MSTATUS_SPP = 'h00000100;
localparam logic [63:0] MSTATUS_HPP = 'h00000600;
localparam logic [63:0] MSTATUS_MPP = 'h00001800;
localparam logic [63:0] MSTATUS_FS = 'h00006000;
localparam logic [63:0] MSTATUS_XS = 'h00018000;
localparam logic [63:0] MSTATUS_MPRV = 'h00020000;
localparam logic [63:0] MSTATUS_SUM = 'h00040000;
localparam logic [63:0] MSTATUS_MXR = 'h00080000;
localparam logic [63:0] MSTATUS_TVM = 'h00100000;
localparam logic [63:0] MSTATUS_TW = 'h00200000;
localparam logic [63:0] MSTATUS_TSR = 'h00400000;
localparam logic [63:0] MSTATUS_UXL = {30'h0000000, IS_XLEN64, IS_XLEN64, 32'h00000000};
localparam logic [63:0] MSTATUS_SXL = {28'h0000000, IS_XLEN64, IS_XLEN64, 34'h00000000};
localparam logic [63:0] MSTATUS_SD = {IS_XLEN64, 31'h00000000, ~IS_XLEN64, 31'h00000000};
typedef enum logic [2:0] {
CSRRW = 3'h1,
CSRRS = 3'h2,
CSRRC = 3'h3,
CSRRWI = 3'h5,
CSRRSI = 3'h6,
CSRRCI = 3'h7
} csr_op_t;
// decoded CSR address
typedef struct packed {
logic [1:0] rw;
priv_lvl_t priv_lvl;
logic [7:0] address;
} csr_addr_t;
typedef union packed {
csr_reg_t address;
csr_addr_t csr_decode;
} csr_t;
// Floating-Point control and status register (32-bit!)
typedef struct packed {
logic [31:15] reserved; // reserved for L extension, return 0 otherwise
logic [6:0] fprec; // div/sqrt precision control
logic [2:0] frm; // float rounding mode
logic [4:0] fflags; // float exception flags
} fcsr_t;
// PMP
typedef enum logic [1:0] {
OFF = 2'b00,
TOR = 2'b01,
NA4 = 2'b10,
NAPOT = 2'b11
} pmp_addr_mode_t;
// PMP Access Type
typedef enum logic [2:0] {
ACCESS_NONE = 3'b000,
ACCESS_READ = 3'b001,
ACCESS_WRITE = 3'b010,
ACCESS_EXEC = 3'b100
} pmp_access_t;
typedef struct packed {
logic x;
logic w;
logic r;
} pmpcfg_access_t;
// packed struct of a PMP configuration register (8bit)
typedef struct packed {
logic locked; // lock this configuration
logic [1:0] reserved;
pmp_addr_mode_t addr_mode; // Off, TOR, NA4, NAPOT
pmpcfg_access_t access_type;
} pmpcfg_t;
// -----
// Debug
// -----
typedef struct packed {
logic [31:28] xdebugver;
logic [27:16] zero2;
logic ebreakm;
logic zero1;
logic ebreaks;
logic ebreaku;
logic stepie;
logic stopcount;
logic stoptime;
logic [8:6] cause;
logic zero0;
logic mprven;
logic nmip;
logic step;
priv_lvl_t prv;
} dcsr_t;
// Instruction Generation *incomplete*
function automatic logic [31:0] jal (logic[4:0] rd, logic [20:0] imm);
// OpCode Jal
return {imm[20], imm[10:1], imm[11], imm[19:12], rd, 7'h6f};
endfunction
function automatic logic [31:0] jalr (logic[4:0] rd, logic[4:0] rs1, logic [11:0] offset);
// OpCode Jal
return {offset[11:0], rs1, 3'b0, rd, 7'h67};
endfunction
function automatic logic [31:0] andi (logic[4:0] rd, logic[4:0] rs1, logic [11:0] imm);
// OpCode andi
return {imm[11:0], rs1, 3'h7, rd, 7'h13};
endfunction
function automatic logic [31:0] slli (logic[4:0] rd, logic[4:0] rs1, logic [5:0] shamt);
// OpCode slli
return {6'b0, shamt[5:0], rs1, 3'h1, rd, 7'h13};
endfunction
function automatic logic [31:0] srli (logic[4:0] rd, logic[4:0] rs1, logic [5:0] shamt);
// OpCode srli
return {6'b0, shamt[5:0], rs1, 3'h5, rd, 7'h13};
endfunction
function automatic logic [31:0] load (logic [2:0] size, logic[4:0] dest, logic[4:0] base, logic [11:0] offset);
// OpCode Load
return {offset[11:0], base, size, dest, 7'h03};
endfunction
function automatic logic [31:0] auipc (logic[4:0] rd, logic [20:0] imm);
// OpCode Auipc
return {imm[20], imm[10:1], imm[11], imm[19:12], rd, 7'h17};
endfunction
function automatic logic [31:0] store (logic [2:0] size, logic[4:0] src, logic[4:0] base, logic [11:0] offset);
// OpCode Store
return {offset[11:5], src, base, size, offset[4:0], 7'h23};
endfunction
function automatic logic [31:0] float_load (logic [2:0] size, logic[4:0] dest, logic[4:0] base, logic [11:0] offset);
// OpCode Load
return {offset[11:0], base, size, dest, 7'b00_001_11};
endfunction
function automatic logic [31:0] float_store (logic [2:0] size, logic[4:0] src, logic[4:0] base, logic [11:0] offset);
// OpCode Store
return {offset[11:5], src, base, size, offset[4:0], 7'b01_001_11};
endfunction
function automatic logic [31:0] csrw (csr_reg_t csr, logic[4:0] rs1);
// CSRRW, rd, OpCode System
return {csr, rs1, 3'h1, 5'h0, 7'h73};
endfunction
function automatic logic [31:0] csrr (csr_reg_t csr, logic [4:0] dest);
// rs1, CSRRS, rd, OpCode System
return {csr, 5'h0, 3'h2, dest, 7'h73};
endfunction
function automatic logic [31:0] branch(logic [4:0] src2, logic [4:0] src1, logic [2:0] funct3, logic [11:0] offset);
// OpCode Branch
return {offset[11], offset[9:4], src2, src1, funct3, offset[3:0], offset[10], 7'b11_000_11};
endfunction
function automatic logic [31:0] ebreak ();
return 32'h00100073;
endfunction
function automatic logic [31:0] wfi ();
return 32'h10500073;
endfunction
function automatic logic [31:0] nop ();
return 32'h00000013;
endfunction
function automatic logic [31:0] illegal ();
return 32'h00000000;
endfunction
// trace log compatible to spikes commit log feature
// pragma translate_off
function string spikeCommitLog(logic [63:0] pc, priv_lvl_t priv_lvl, logic [31:0] instr, logic [4:0] rd, logic [63:0] result, logic rd_fpr);
string rd_s;
string instr_word;
automatic string rf_s = rd_fpr ? "f" : "x";
if (instr[1:0] != 2'b11) begin
instr_word = $sformatf("(0x%h)", instr[15:0]);
end else begin
instr_word = $sformatf("(0x%h)", instr);
end
if (rd < 10) rd_s = $sformatf("%s %0d", rf_s, rd);
else rd_s = $sformatf("%s%0d", rf_s, rd);
if (rd_fpr || rd != 0) begin
// 0 0x0000000080000118 (0xeecf8f93) x31 0x0000000080004000
return $sformatf("%d 0x%h %s %s 0x%h\n", priv_lvl, pc, instr_word, rd_s, result);
end else begin
// 0 0x000000008000019c (0x0040006f)
return $sformatf("%d 0x%h %s\n", priv_lvl, pc, instr_word);
end
endfunction
typedef struct {
byte priv;
longint unsigned pc;
byte is_fp;
byte rd;
longint unsigned data;
int unsigned instr;
byte was_exception;
} commit_log_t;
// pragma translate_on
endpackage
/* Copyright 2018 ETH Zurich and University of Bologna.
* Copyright and related rights are licensed under the Solderpad Hardware
* License, Version 0.51 (the “License”); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
* or agreed to in writing, software, hardware and materials distributed under
* this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* File: ariane_pkg.sv
* Author: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
* Date: 8.4.2017
*
* Description: Contains all the necessary defines for Ariane
* in one package.
*/
// this is needed to propagate the
// configuration in case Ariane is
// instantiated in OpenPiton
package ariane_pkg;
// ---------------
// Global Config
// ---------------
// This is the new user config interface system. If you need to parameterize something
// within Ariane add a field here and assign a default value to the config. Please make
// sure to add a propper parameter check to the `check_cfg` function.
localparam NrMaxRules = 16;
typedef struct packed {
int RASDepth;
int BTBEntries;
int BHTEntries;
// PMAs
int unsigned NrNonIdempotentRules; // Number of non idempotent rules
logic [NrMaxRules-1:0][63:0] NonIdempotentAddrBase; // base which needs to match
logic [NrMaxRules-1:0][63:0] NonIdempotentLength; // bit mask which bits to consider when matching the rule
int unsigned NrExecuteRegionRules; // Number of regions which have execute property
logic [NrMaxRules-1:0][63:0] ExecuteRegionAddrBase; // base which needs to match
logic [NrMaxRules-1:0][63:0] ExecuteRegionLength; // bit mask which bits to consider when matching the rule
int unsigned NrCachedRegionRules; // Number of regions which have cached property
logic [NrMaxRules-1:0][63:0] CachedRegionAddrBase; // base which needs to match
logic [NrMaxRules-1:0][63:0] CachedRegionLength; // bit mask which bits to consider when matching the rule
// cache config
bit Axi64BitCompliant; // set to 1 when using in conjunction with 64bit AXI bus adapter
bit SwapEndianess; // set to 1 to swap endianess inside L1.5 openpiton adapter
//
logic [63:0] DmBaseAddress; // offset of the debug module
int unsigned NrPMPEntries; // Number of PMP entries
} ariane_cfg_t;
localparam ariane_cfg_t ArianeDefaultConfig = '{
RASDepth: 2,
BTBEntries: 32,
BHTEntries: 128,
// idempotent region
NrNonIdempotentRules: 2,
NonIdempotentAddrBase: {64'b0, 64'b0},
NonIdempotentLength: {64'b0, 64'b0},
NrExecuteRegionRules: 3,
// DRAM, Boot ROM, Debug Module
ExecuteRegionAddrBase: {64'h8000_0000, 64'h1_0000, 64'h0},
ExecuteRegionLength: {64'h40000000, 64'h10000, 64'h1000},
// cached region
NrCachedRegionRules: 1,
CachedRegionAddrBase: {64'h8000_0000},
CachedRegionLength: {64'h40000000},
// cache config
Axi64BitCompliant: 1'b1,
SwapEndianess: 1'b0,
// debug
DmBaseAddress: 64'h0,
NrPMPEntries: 8
};
// Function being called to check parameters
function automatic void check_cfg (ariane_cfg_t Cfg);
// pragma translate_off
// pragma translate_on
endfunction
function automatic logic range_check(logic[63:0] base, logic[63:0] len, logic[63:0] address);
// if len is a power of two, and base is properly aligned, this check could be simplified
return (address >= base) && (address < (65'(base)+len));
endfunction : range_check
function automatic logic is_inside_nonidempotent_regions (ariane_cfg_t Cfg, logic[63:0] address);
logic[NrMaxRules-1:0] pass;
pass = '0;
for (int unsigned k = 0; k < Cfg.NrNonIdempotentRules; k++) begin
pass[k] = range_check(Cfg.NonIdempotentAddrBase[k], Cfg.NonIdempotentLength[k], address);
end
return |pass;
endfunction : is_inside_nonidempotent_regions
function automatic logic is_inside_execute_regions (ariane_cfg_t Cfg, logic[63:0] address);
// if we don't specify any region we assume everything is accessible
logic[NrMaxRules-1:0] pass;
pass = '0;
for (int unsigned k = 0; k < Cfg.NrExecuteRegionRules; k++) begin
pass[k] = range_check(Cfg.ExecuteRegionAddrBase[k], Cfg.ExecuteRegionLength[k], address);
end
return |pass;
endfunction : is_inside_execute_regions
function automatic logic is_inside_cacheable_regions (ariane_cfg_t Cfg, logic[63:0] address);
automatic logic[NrMaxRules-1:0] pass;
pass = '0;
for (int unsigned k = 0; k < Cfg.NrCachedRegionRules; k++) begin
pass[k] = range_check(Cfg.CachedRegionAddrBase[k], Cfg.CachedRegionLength[k], address);
end
return |pass;
endfunction : is_inside_cacheable_regions
// TODO: Slowly move those parameters to the new system.
localparam NR_SB_ENTRIES = 8; // number of scoreboard entries
localparam TRANS_ID_BITS = $clog2(NR_SB_ENTRIES); // depending on the number of scoreboard entries we need that many bits
// to uniquely identify the entry in the scoreboard
localparam ASID_WIDTH = (riscv::XLEN == 64) ? 16 : 1;
localparam BITS_SATURATION_COUNTER = 2;
localparam NR_COMMIT_PORTS = 2;
localparam ENABLE_RENAME = cva6_config_pkg::CVA6ConfigRenameEn;
localparam ISSUE_WIDTH = 1;
// amount of pipeline registers inserted for load/store return path
// this can be tuned to trade-off IPC vs. cycle time
localparam int unsigned NR_LOAD_PIPE_REGS = 1;
localparam int unsigned NR_STORE_PIPE_REGS = 0;
// depth of store-buffers, this needs to be a power of two
localparam int unsigned DEPTH_SPEC = 4;
// in this case we can use a small commit queue since we have a write buffer in the dcache
// we could in principle do without the commit queue in this case, but the timing degrades if we do that due
// to longer paths into the commit stage
localparam int unsigned DEPTH_COMMIT = 4;
localparam bit RVC = cva6_config_pkg::CVA6ConfigCExtEn; // Is C extension configuration
// Floating-point extensions configuration
localparam bit RVF = (riscv::IS_XLEN64 | riscv::IS_XLEN32) & riscv::FPU_EN; // Is F extension enabled for both 32 Bit and 64 bit CPU
localparam bit RVD = (riscv::IS_XLEN64 ? 1:0) & riscv::FPU_EN; // Is D extension enabled for only 64 bit CPU
localparam bit RVA = cva6_config_pkg::CVA6ConfigAExtEn; // Is A extension enabled
// Transprecision floating-point extensions configuration
localparam bit XF16 = cva6_config_pkg::CVA6ConfigF16En; // Is half-precision float extension (Xf16) enabled
localparam bit XF16ALT = cva6_config_pkg::CVA6ConfigF16AltEn; // Is alternative half-precision float extension (Xf16alt) enabled
localparam bit XF8 = cva6_config_pkg::CVA6ConfigF8En; // Is quarter-precision float extension (Xf8) enabled
localparam bit XFVEC = cva6_config_pkg::CVA6ConfigFVecEn; // Is vectorial float extension (Xfvec) enabled
// Transprecision float unit
localparam int unsigned LAT_COMP_FP32 = 'd2;
localparam int unsigned LAT_COMP_FP64 = 'd3;
localparam int unsigned LAT_COMP_FP16 = 'd1;
localparam int unsigned LAT_COMP_FP16ALT = 'd1;
localparam int unsigned LAT_COMP_FP8 = 'd1;
localparam int unsigned LAT_DIVSQRT = 'd2;
localparam int unsigned LAT_NONCOMP = 'd1;
localparam int unsigned LAT_CONV = 'd2;
// --------------------------------------
// vvvv Don't change these by hand! vvvv
localparam bit FP_PRESENT = RVF | RVD | XF16 | XF16ALT | XF8;
// Length of widest floating-point format
localparam FLEN = RVD ? 64 : // D ext.
RVF ? 32 : // F ext.
XF16 ? 16 : // Xf16 ext.
XF16ALT ? 16 : // Xf16alt ext.
XF8 ? 8 : // Xf8 ext.
1; // Unused in case of no FP
localparam bit NSX = XF16 | XF16ALT | XF8 | XFVEC; // Are non-standard extensions present?
localparam bit RVFVEC = RVF & XFVEC & FLEN>32; // FP32 vectors available if vectors and larger fmt enabled
localparam bit XF16VEC = XF16 & XFVEC & FLEN>16; // FP16 vectors available if vectors and larger fmt enabled
localparam bit XF16ALTVEC = XF16ALT & XFVEC & FLEN>16; // FP16ALT vectors available if vectors and larger fmt enabled
localparam bit XF8VEC = XF8 & XFVEC & FLEN>8; // FP8 vectors available if vectors and larger fmt enabled
// ^^^^ until here ^^^^
// ---------------------
localparam riscv::xlen_t ARIANE_MARCHID = {{riscv::XLEN-32{1'b0}}, 32'd3};
localparam riscv::xlen_t ISA_CODE = (RVA << 0) // A - Atomic Instructions extension
| (RVC << 2) // C - Compressed extension
| (RVD << 3) // D - Double precsision floating-point extension
| (RVF << 5) // F - Single precsision floating-point extension
| (1 << 8) // I - RV32I/64I/128I base ISA
| (1 << 12) // M - Integer Multiply/Divide extension
| (0 << 13) // N - User level interrupts supported
| (1 << 18) // S - Supervisor mode implemented
| (1 << 20) // U - User mode implemented
| (NSX << 23) // X - Non-standard extensions present
| ((riscv::XLEN == 64 ? 2 : 1) << riscv::XLEN-2); // MXL
// 32 registers + 1 bit for re-naming = 6
localparam REG_ADDR_SIZE = 6;
localparam bit CVXIF_PRESENT = cva6_config_pkg::CVA6ConfigCvxifEn;
// when cvx interface is present, use an additional writeback port
localparam NR_WB_PORTS = CVXIF_PRESENT ? 5 : 4;
// Read ports for general purpose register files
localparam NR_RGPR_PORTS = 2;
typedef logic [(NR_RGPR_PORTS == 3 ? riscv::XLEN : FLEN)-1:0] rs3_len_t;
// static debug hartinfo
localparam dm::hartinfo_t DebugHartInfo = '{
zero1: '0,
nscratch: 2, // Debug module needs at least two scratch regs
zero0: '0,
dataaccess: 1'b1, // data registers are memory mapped in the debugger
datasize: dm::DataCount,
dataaddr: dm::DataAddr
};
// enables a commit log which matches spikes commit log format for easier trace comparison
localparam bit ENABLE_SPIKE_COMMIT_LOG = 1'b1;
// ------------- Dangerouse -------------
// if set to zero a flush will not invalidate the cache-lines, in a single core environment
// where coherence is not necessary this can improve performance. This needs to be switched on
// when more than one core is in a system
localparam logic INVALIDATE_ON_FLUSH = 1'b1;
localparam bit ENABLE_CYCLE_COUNT = 1'b1;
localparam bit ENABLE_WFI = 1'b1;
localparam bit ZERO_TVAL = 1'b0;
// read mask for SSTATUS over MMSTATUS
localparam logic [63:0] SMODE_STATUS_WRITE_MASK = riscv::SSTATUS_SIE
| riscv::SSTATUS_SPIE
| riscv::SSTATUS_SPP
| riscv::SSTATUS_FS
| riscv::SSTATUS_SUM
| riscv::SSTATUS_MXR;
// ---------------
// User bits
// ---------------
localparam FETCH_USER_WIDTH = (cva6_config_pkg::CVA6ConfigFetchUserEn == 0) ? 1: cva6_config_pkg::CVA6ConfigFetchUserWidth; // Possible cases: between 1 and 64
localparam DATA_USER_WIDTH = (cva6_config_pkg::CVA6ConfigDataUserEn == 0) ? 1: cva6_config_pkg::CVA6ConfigDataUserWidth; // Possible cases: between 1 and 64
//localparam AXI_USER_WIDTH = DATA_USER_WIDTH > FETCH_USER_WIDTH*2 ? DATA_USER_WIDTH : FETCH_USER_WIDTH*2;
localparam AXI_USER_WIDTH = 1;
localparam DATA_USER_EN = cva6_config_pkg::CVA6ConfigDataUserEn;
localparam FETCH_USER_EN = cva6_config_pkg::CVA6ConfigFetchUserEn;
//localparam AXI_USER_EN = cva6_config_pkg::CVA6ConfigDataUserEn | cva6_config_pkg::CVA6ConfigFetchUserEn;
localparam AXI_USER_EN = 1;
// ---------------
// Fetch Stage
// ---------------
// leave as is (fails with >8 entries and wider fetch width)
localparam int unsigned FETCH_FIFO_DEPTH = 4;
localparam int unsigned FETCH_WIDTH = 32;
// maximum instructions we can fetch on one request (we support compressed instructions)
localparam int unsigned INSTR_PER_FETCH = RVC == 1'b1 ? (FETCH_WIDTH / 16) : 1;
localparam int unsigned LOG2_INSTR_PER_FETCH = RVC == 1'b1 ? $clog2(ariane_pkg::INSTR_PER_FETCH) : 1;
// ---------------
// Enable BITMANIP
// ---------------
localparam bit BITMANIP = 1'b0;
// Only use struct when signals have same direction
// exception
typedef struct packed {
riscv::xlen_t cause; // cause of exception
riscv::xlen_t tval; // additional information of causing exception (e.g.: instruction causing it),
// address of LD/ST fault
logic valid;
} exception_t;
typedef enum logic [2:0] {
NoCF, // No control flow prediction
Branch, // Branch
Jump, // Jump to address from immediate
JumpR, // Jump to address from registers
Return // Return Address Prediction
} cf_t;
// branch-predict
// this is the struct we get back from ex stage and we will use it to update
// all the necessary data structures
// bp_resolve_t
typedef struct packed {
logic valid; // prediction with all its values is valid
logic [riscv::VLEN-1:0] pc; // PC of predict or mis-predict
logic [riscv::VLEN-1:0] target_address; // target address at which to jump, or not
logic is_mispredict; // set if this was a mis-predict
logic is_taken; // branch is taken
cf_t cf_type; // Type of control flow change
} bp_resolve_t;
// branchpredict scoreboard entry
// this is the struct which we will inject into the pipeline to guide the various
// units towards the correct branch decision and resolve
typedef struct packed {
cf_t cf; // type of control flow prediction
logic [riscv::VLEN-1:0] predict_address; // target address at which to jump, or not
} branchpredict_sbe_t;
typedef struct packed {
logic valid;
logic [riscv::VLEN-1:0] pc; // update at PC
logic [riscv::VLEN-1:0] target_address;
} btb_update_t;
typedef struct packed {
logic valid;
logic [riscv::VLEN-1:0] target_address;
} btb_prediction_t;
typedef struct packed {
logic valid;
logic [riscv::VLEN-1:0] ra;
} ras_t;
typedef struct packed {
logic valid;
logic [riscv::VLEN-1:0] pc; // update at PC
logic taken;
} bht_update_t;
typedef struct packed {
logic valid;
logic taken;
} bht_prediction_t;
typedef enum logic[3:0] {
NONE, // 0
LOAD, // 1
STORE, // 2
ALU, // 3
CTRL_FLOW, // 4
MULT, // 5
CSR, // 6
FPU, // 7
FPU_VEC, // 8
CVXIF // 9
} fu_t;
localparam EXC_OFF_RST = 8'h80;
localparam SupervisorIrq = 1;
localparam MachineIrq = 0;
// All information needed to determine whether we need to associate an interrupt
// with the corresponding instruction or not.
typedef struct packed {
riscv::xlen_t mie;
riscv::xlen_t mip;
riscv::xlen_t mideleg;
logic sie;
logic global_enable;
} irq_ctrl_t;
// ---------------
// Cache config
// ---------------
// for usage in OpenPiton we have to propagate the openpiton L15 configuration from l15.h
// I$
localparam int unsigned CONFIG_L1I_SIZE = 16*1024;
localparam int unsigned ICACHE_SET_ASSOC = 4; // Must be between 4 to 64
localparam int unsigned ICACHE_INDEX_WIDTH = $clog2(CONFIG_L1I_SIZE / ICACHE_SET_ASSOC); // in bit, contains also offset width
localparam int unsigned ICACHE_TAG_WIDTH = riscv::PLEN-ICACHE_INDEX_WIDTH; // in bit
localparam int unsigned ICACHE_LINE_WIDTH = 128; // in bit
localparam int unsigned ICACHE_USER_LINE_WIDTH = (AXI_USER_WIDTH == 1) ? 4 : 128; // in bit
// D$
localparam int unsigned CONFIG_L1D_SIZE = 32*1024;
localparam int unsigned DCACHE_SET_ASSOC = 8; // Must be between 4 to 64
localparam int unsigned DCACHE_INDEX_WIDTH = $clog2(CONFIG_L1D_SIZE / DCACHE_SET_ASSOC); // in bit, contains also offset width
localparam int unsigned DCACHE_TAG_WIDTH = riscv::PLEN-DCACHE_INDEX_WIDTH; // in bit
localparam int unsigned DCACHE_LINE_WIDTH = 128; // in bit
localparam int unsigned DCACHE_USER_LINE_WIDTH = (AXI_USER_WIDTH == 1) ? 4 : 128; // in bit
localparam int unsigned DCACHE_USER_WIDTH = DATA_USER_WIDTH;
// ---------------
// EX Stage
// ---------------
typedef enum logic [7:0] { // basic ALU op
ADD, SUB, ADDW, SUBW,
// logic operations
XORL, ORL, ANDL,
// shifts
SRA, SRL, SLL, SRLW, SLLW, SRAW,
// comparisons
LTS, LTU, GES, GEU, EQ, NE,
// jumps
JALR, BRANCH,
// set lower than operations
SLTS, SLTU,
// CSR functions
MRET, SRET, DRET, ECALL, WFI, FENCE, FENCE_I, SFENCE_VMA, CSR_WRITE, CSR_READ, CSR_SET, CSR_CLEAR,
// LSU functions
LD, SD, LW, LWU, SW, LH, LHU, SH, LB, SB, LBU,
// Atomic Memory Operations
AMO_LRW, AMO_LRD, AMO_SCW, AMO_SCD,
AMO_SWAPW, AMO_ADDW, AMO_ANDW, AMO_ORW, AMO_XORW, AMO_MAXW, AMO_MAXWU, AMO_MINW, AMO_MINWU,
AMO_SWAPD, AMO_ADDD, AMO_ANDD, AMO_ORD, AMO_XORD, AMO_MAXD, AMO_MAXDU, AMO_MIND, AMO_MINDU,
// Multiplications
MUL, MULH, MULHU, MULHSU, MULW,
// Divisions
DIV, DIVU, DIVW, DIVUW, REM, REMU, REMW, REMUW,
// Floating-Point Load and Store Instructions
FLD, FLW, FLH, FLB, FSD, FSW, FSH, FSB,
// Floating-Point Computational Instructions
FADD, FSUB, FMUL, FDIV, FMIN_MAX, FSQRT, FMADD, FMSUB, FNMSUB, FNMADD,
// Floating-Point Conversion and Move Instructions
FCVT_F2I, FCVT_I2F, FCVT_F2F, FSGNJ, FMV_F2X, FMV_X2F,
// Floating-Point Compare Instructions
FCMP,
// Floating-Point Classify Instruction
FCLASS,
// Vectorial Floating-Point Instructions that don't directly map onto the scalar ones
VFMIN, VFMAX, VFSGNJ, VFSGNJN, VFSGNJX, VFEQ, VFNE, VFLT, VFGE, VFLE, VFGT, VFCPKAB_S, VFCPKCD_S, VFCPKAB_D, VFCPKCD_D,
// Offload Instructions to be directed into cv_x_if
OFFLOAD,
// Or-Combine and REV8
ORCB, REV8,
// Bitwise Rotation
ROL, ROLW, ROR, RORI, RORIW, RORW,
// Sign and Zero Extend
SEXTB, SEXTH, ZEXTH,
// Count population
CPOP, CPOPW,
// Count Leading/Training Zeros
CLZ, CLZW, CTZ, CTZW,
// Carry less multiplication Op's
CLMUL, CLMULH, CLMULR,
// Single bit instructions Op's
BCLR, BCLRI, BEXT, BEXTI, BINV, BINVI, BSET, BSETI,
// Integer minimum/maximum
MAX, MAXU, MIN, MINU,
// Shift with Add Unsigned Word and Unsigned Word Op's (Bitmanip)
SH1ADDUW, SH2ADDUW, SH3ADDUW, ADDUW, SLLIUW,
// Shift with Add (Bitmanip)
SH1ADD, SH2ADD, SH3ADD,
// Bitmanip Logical with negate op (Bitmanip)
ANDN, ORN, XNOR
} fu_op;
typedef struct packed {
fu_t fu;
fu_op operator;
riscv::xlen_t operand_a;
riscv::xlen_t operand_b;
riscv::xlen_t imm;
logic [TRANS_ID_BITS-1:0] trans_id;
} fu_data_t;
function automatic logic op_is_branch (input fu_op op);
unique case (op) inside
EQ, NE, LTS, GES, LTU, GEU: return 1'b1;
default : return 1'b0; // all other ops
endcase
endfunction
// -------------------------------
// Extract Src/Dst FP Reg from Op
// -------------------------------
function automatic logic is_rs1_fpr (input fu_op op);
if (FP_PRESENT) begin // makes function static for non-fp case
unique case (op) inside
[FMUL:FNMADD], // Computational Operations (except ADD/SUB)
FCVT_F2I, // Float-Int Casts
FCVT_F2F, // Float-Float Casts
FSGNJ, // Sign Injections
FMV_F2X, // FPR-GPR Moves
FCMP, // Comparisons
FCLASS, // Classifications
[VFMIN:VFCPKCD_D] : return 1'b1; // Additional Vectorial FP ops
default : return 1'b0; // all other ops
endcase
end else
return 1'b0;
endfunction
function automatic logic is_rs2_fpr (input fu_op op);
if (FP_PRESENT) begin // makes function static for non-fp case
unique case (op) inside
[FSD:FSB], // FP Stores
[FADD:FMIN_MAX], // Computational Operations (no sqrt)
[FMADD:FNMADD], // Fused Computational Operations
FCVT_F2F, // Vectorial F2F Conversions requrie target
[FSGNJ:FMV_F2X], // Sign Injections and moves mapped to SGNJ
FCMP, // Comparisons
[VFMIN:VFCPKCD_D] : return 1'b1; // Additional Vectorial FP ops
default : return 1'b0; // all other ops
endcase
end else
return 1'b0;
endfunction
// ternary operations encode the rs3 address in the imm field, also add/sub
function automatic logic is_imm_fpr (input fu_op op);
if (FP_PRESENT) begin // makes function static for non-fp case
unique case (op) inside
[FADD:FSUB], // ADD/SUB need inputs as Operand B/C
[FMADD:FNMADD], // Fused Computational Operations
[VFCPKAB_S:VFCPKCD_D] : return 1'b1; // Vectorial FP cast and pack ops
default : return 1'b0; // all other ops
endcase
end else
return 1'b0;
endfunction
function automatic logic is_rd_fpr (input fu_op op);
if (FP_PRESENT) begin // makes function static for non-fp case
unique case (op) inside
[FLD:FLB], // FP Loads
[FADD:FNMADD], // Computational Operations
FCVT_I2F, // Int-Float Casts
FCVT_F2F, // Float-Float Casts
FSGNJ, // Sign Injections
FMV_X2F, // GPR-FPR Moves
[VFMIN:VFSGNJX], // Vectorial MIN/MAX and SGNJ
[VFCPKAB_S:VFCPKCD_D] : return 1'b1; // Vectorial FP cast and pack ops
default : return 1'b0; // all other ops
endcase
end else
return 1'b0;
endfunction
function automatic logic is_amo (fu_op op);
case (op) inside
[AMO_LRW:AMO_MINDU]: begin
return 1'b1;
end
default: return 1'b0;
endcase
endfunction
typedef struct packed {
logic valid;
logic [riscv::VLEN-1:0] vaddr;
logic overflow;
riscv::xlen_t data;
logic [(riscv::XLEN/8)-1:0] be;
fu_t fu;
fu_op operator;
logic [TRANS_ID_BITS-1:0] trans_id;
} lsu_ctrl_t;
// ---------------
// IF/ID Stage
// ---------------
// store the decompressed instruction
typedef struct packed {
logic [riscv::VLEN-1:0] address; // the address of the instructions from below
logic [31:0] instruction; // instruction word
branchpredict_sbe_t branch_predict; // this field contains branch prediction information regarding the forward branch path
exception_t ex; // this field contains exceptions which might have happened earlier, e.g.: fetch exceptions
} fetch_entry_t;
// ---------------
// ID/EX/WB Stage
// ---------------
typedef struct packed {
logic [riscv::VLEN-1:0] pc; // PC of instruction
logic [TRANS_ID_BITS-1:0] trans_id; // this can potentially be simplified, we could index the scoreboard entry
// with the transaction id in any case make the width more generic
fu_t fu; // functional unit to use
fu_op op; // operation to perform in each functional unit
logic [REG_ADDR_SIZE-1:0] rs1; // register source address 1
logic [REG_ADDR_SIZE-1:0] rs2; // register source address 2
logic [REG_ADDR_SIZE-1:0] rd; // register destination address
riscv::xlen_t result; // for unfinished instructions this field also holds the immediate,
// for unfinished floating-point that are partly encoded in rs2, this field also holds rs2
// for unfinished floating-point fused operations (FMADD, FMSUB, FNMADD, FNMSUB)
// this field holds the address of the third operand from the floating-point register file
logic valid; // is the result valid
logic use_imm; // should we use the immediate as operand b?
logic use_zimm; // use zimm as operand a
logic use_pc; // set if we need to use the PC as operand a, PC from exception
exception_t ex; // exception has occurred
branchpredict_sbe_t bp; // branch predict scoreboard data structure
logic is_compressed; // signals a compressed instructions, we need this information at the commit stage if
// we want jump accordingly e.g.: +4, +2
} scoreboard_entry_t;
// ---------------
// MMU instanciation
// ---------------
localparam bit MMU_PRESENT = 1'b1; // MMU is present
// --------------------
// Atomics
// --------------------
typedef enum logic [3:0] {
AMO_NONE =4'b0000,
AMO_LR =4'b0001,
AMO_SC =4'b0010,
AMO_SWAP =4'b0011,
AMO_ADD =4'b0100,
AMO_AND =4'b0101,
AMO_OR =4'b0110,
AMO_XOR =4'b0111,
AMO_MAX =4'b1000,
AMO_MAXU =4'b1001,
AMO_MIN =4'b1010,
AMO_MINU =4'b1011,
AMO_CAS1 =4'b1100, // unused, not part of riscv spec, but provided in OpenPiton
AMO_CAS2 =4'b1101 // unused, not part of riscv spec, but provided in OpenPiton
} amo_t;
typedef struct packed {
logic valid; // valid flag
logic is_2M; //
logic is_1G; //
logic [27-1:0] vpn; // VPN (39bits) = 27bits + 12bits offset
logic [ASID_WIDTH-1:0] asid;
riscv::pte_t content;
} tlb_update_t;
// Bits required for representation of physical address space as 4K pages
// (e.g. 27*4K == 39bit address space).
localparam PPN4K_WIDTH = 38;
typedef struct packed {
logic valid; // valid flag
logic is_4M; //
logic [20-1:0] vpn; //VPN (32bits) = 20bits + 12bits offset
logic [9-1:0] asid; //ASID length = 9 for Sv32 mmu
riscv::pte_sv32_t content;
} tlb_update_sv32_t;
typedef enum logic [1:0] {
FE_NONE,
FE_INSTR_ACCESS_FAULT,
FE_INSTR_PAGE_FAULT
} frontend_exception_t;
// ----------------------
// cache request ports
// ----------------------
// I$ address translation requests
typedef struct packed {
logic fetch_valid; // address translation valid
logic [riscv::PLEN-1:0] fetch_paddr; // physical address in
exception_t fetch_exception; // exception occurred during fetch
} icache_areq_i_t;
typedef struct packed {
logic fetch_req; // address translation request
logic [riscv::VLEN-1:0] fetch_vaddr; // virtual address out
} icache_areq_o_t;
// I$ data requests
typedef struct packed {
logic req; // we request a new word
logic kill_s1; // kill the current request
logic kill_s2; // kill the last request
logic spec; // request is speculative
logic [riscv::VLEN-1:0] vaddr; // 1st cycle: 12 bit index is taken for lookup
} icache_dreq_i_t;
typedef struct packed {
logic ready; // icache is ready
logic valid; // signals a valid read
logic [FETCH_WIDTH-1:0] data; // 2+ cycle out: tag
logic [FETCH_USER_WIDTH-1:0] user; // User bits
logic [riscv::VLEN-1:0] vaddr; // virtual address out
exception_t ex; // we've encountered an exception
} icache_dreq_o_t;
// AMO request going to cache. this request is unconditionally valid as soon
// as request goes high.
// Furthermore, those signals are kept stable until the response indicates
// completion by asserting ack.
typedef struct packed {
logic req; // this request is valid
amo_t amo_op; // atomic memory operation to perform
logic [1:0] size; // 2'b10 --> word operation, 2'b11 --> double word operation
logic [63:0] operand_a; // address
logic [63:0] operand_b; // data as layouted in the register
} amo_req_t;
// AMO response coming from cache.
typedef struct packed {
logic ack; // response is valid
logic [63:0] result; // sign-extended, result
} amo_resp_t;
// D$ data requests
typedef struct packed {
logic [DCACHE_INDEX_WIDTH-1:0] address_index;
logic [DCACHE_TAG_WIDTH-1:0] address_tag;
riscv::xlen_t data_wdata;
logic [DCACHE_USER_WIDTH-1:0] data_wuser;
logic data_req;
logic data_we;
logic [(riscv::XLEN/8)-1:0] data_be;
logic [1:0] data_size;
logic kill_req;
logic tag_valid;
} dcache_req_i_t;
typedef struct packed {
logic data_gnt;
logic data_rvalid;
riscv::xlen_t data_rdata;
logic [DCACHE_USER_WIDTH-1:0] data_ruser;
} dcache_req_o_t;
// ----------------------
// Arithmetic Functions
// ----------------------
function automatic riscv::xlen_t sext32 (logic [31:0] operand);
return {{riscv::XLEN-32{operand[31]}}, operand[31:0]};
endfunction
// ----------------------
// Immediate functions
// ----------------------
function automatic logic [riscv::VLEN-1:0] uj_imm (logic [31:0] instruction_i);
return { {44+riscv::VLEN-64 {instruction_i[31]}}, instruction_i[19:12], instruction_i[20], instruction_i[30:21], 1'b0 };
endfunction
function automatic logic [riscv::VLEN-1:0] i_imm (logic [31:0] instruction_i);
return { {52+riscv::VLEN-64 {instruction_i[31]}}, instruction_i[31:20] };
endfunction
function automatic logic [riscv::VLEN-1:0] sb_imm (logic [31:0] instruction_i);
return { {51+riscv::VLEN-64 {instruction_i[31]}}, instruction_i[31], instruction_i[7], instruction_i[30:25], instruction_i[11:8], 1'b0 };
endfunction
// ----------------------
// LSU Functions
// ----------------------
// align data to address e.g.: shift data to be naturally 64
function automatic riscv::xlen_t data_align (logic [2:0] addr, logic [63:0] data);
// Set addr[2] to 1'b0 when 32bits
logic [2:0] addr_tmp = {(addr[2] && riscv::IS_XLEN64), addr[1:0]};
logic [63:0] data_tmp = {64{1'b0}};
case (addr_tmp)
3'b000: data_tmp[riscv::XLEN-1:0] = {data[riscv::XLEN-1:0]};
3'b001: data_tmp[riscv::XLEN-1:0] = {data[riscv::XLEN-9:0], data[riscv::XLEN-1:riscv::XLEN-8]};
3'b010: data_tmp[riscv::XLEN-1:0] = {data[riscv::XLEN-17:0], data[riscv::XLEN-1:riscv::XLEN-16]};
3'b011: data_tmp[riscv::XLEN-1:0] = {data[riscv::XLEN-25:0], data[riscv::XLEN-1:riscv::XLEN-24]};
3'b100: data_tmp = {data[31:0], data[63:32]};
3'b101: data_tmp = {data[23:0], data[63:24]};
3'b110: data_tmp = {data[15:0], data[63:16]};
3'b111: data_tmp = {data[7:0], data[63:8]};
endcase
return data_tmp[riscv::XLEN-1:0];
endfunction
// generate byte enable mask
function automatic logic [7:0] be_gen(logic [2:0] addr, logic [1:0] size);
case (size)
2'b11: begin
return 8'b1111_1111;
end
2'b10: begin
case (addr[2:0])
3'b000: return 8'b0000_1111;
3'b001: return 8'b0001_1110;
3'b010: return 8'b0011_1100;
3'b011: return 8'b0111_1000;
3'b100: return 8'b1111_0000;
endcase
end
2'b01: begin
case (addr[2:0])
3'b000: return 8'b0000_0011;
3'b001: return 8'b0000_0110;
3'b010: return 8'b0000_1100;
3'b011: return 8'b0001_1000;
3'b100: return 8'b0011_0000;
3'b101: return 8'b0110_0000;
3'b110: return 8'b1100_0000;
endcase
end
2'b00: begin
case (addr[2:0])
3'b000: return 8'b0000_0001;
3'b001: return 8'b0000_0010;
3'b010: return 8'b0000_0100;
3'b011: return 8'b0000_1000;
3'b100: return 8'b0001_0000;
3'b101: return 8'b0010_0000;
3'b110: return 8'b0100_0000;
3'b111: return 8'b1000_0000;
endcase
end
endcase
return 8'b0;
endfunction
function automatic logic [3:0] be_gen_32(logic [1:0] addr, logic [1:0] size);
case (size)
2'b10: begin
return 4'b1111;
end
2'b01: begin
case (addr[1:0])
2'b00: return 4'b0011;
2'b01: return 4'b0110;
2'b10: return 4'b1100;
endcase
end
2'b00: begin
case (addr[1:0])
2'b00: return 4'b0001;
2'b01: return 4'b0010;
2'b10: return 4'b0100;
2'b11: return 4'b1000;
endcase
end
default: return 4'b0;
endcase
return 4'b0;
endfunction
// ----------------------
// Extract Bytes from Op
// ----------------------
function automatic logic [1:0] extract_transfer_size(fu_op op);
case (op)
LD, SD, FLD, FSD,
AMO_LRD, AMO_SCD,
AMO_SWAPD, AMO_ADDD,
AMO_ANDD, AMO_ORD,
AMO_XORD, AMO_MAXD,
AMO_MAXDU, AMO_MIND,
AMO_MINDU: begin
return 2'b11;
end
LW, LWU, SW, FLW, FSW,
AMO_LRW, AMO_SCW,
AMO_SWAPW, AMO_ADDW,
AMO_ANDW, AMO_ORW,
AMO_XORW, AMO_MAXW,
AMO_MAXWU, AMO_MINW,
AMO_MINWU: begin
return 2'b10;
end
LH, LHU, SH, FLH, FSH: return 2'b01;
LB, LBU, SB, FLB, FSB: return 2'b00;
default: return 2'b11;
endcase
endfunction
endpackage
// Copyright 2022 ETH Zurich and University of Bologna.
// Solderpad Hardware License, Version 0.51, see LICENSE for details.
// SPDX-License-Identifier: SHL-0.51
//
// Fabian Schuiki <fschuiki@iis.ee.ethz.ch>
// Florian Zaruba <zarubaf@iis.ee.ethz.ch>
// Stefan Mach <smach@iis.ee.ethz.ch>
// Thomas Benz <tbenz@iis.ee.ethz.ch>
// Paul Scheffler <paulsc@iis.ee.ethz.ch>
// Wolfgang Roenninger <wroennin@iis.ee.ethz.ch>
//
// AUTOMATICALLY GENERATED by gen_bootrom.py; edit the script instead.
module cheshire_bootrom #(
parameter int unsigned AddrWidth = 32,
parameter int unsigned DataWidth = 32
)(
input logic clk_i,
input logic rst_ni,
input logic req_i,
input logic [AddrWidth-1:0] addr_i,
output logic [DataWidth-1:0] data_o
);
localparam unsigned NumWords = 4096;
logic [$clog2(NumWords)-1:0] word;
assign word = addr_i / (DataWidth / 8);
always_comb begin
data_o = '0;
unique case (word)
000: data_o = 32'h6f020117 /* 0x0000 */;
001: data_o = 32'hff810113 /* 0x0004 */;
002: data_o = 32'h00002197 /* 0x0008 */;
003: data_o = 32'h53018193 /* 0x000c */;
004: data_o = 32'h42014081 /* 0x0010 */;
005: data_o = 32'h43014281 /* 0x0014 */;
006: data_o = 32'h44014381 /* 0x0018 */;
007: data_o = 32'h45014481 /* 0x001c */;
008: data_o = 32'h46014581 /* 0x0020 */;
009: data_o = 32'h47014681 /* 0x0024 */;
010: data_o = 32'h48014781 /* 0x0028 */;
011: data_o = 32'h49014881 /* 0x002c */;
012: data_o = 32'h4a014981 /* 0x0030 */;
013: data_o = 32'h4b014a81 /* 0x0034 */;
014: data_o = 32'h4c014b81 /* 0x0038 */;
015: data_o = 32'h4d014c81 /* 0x003c */;
016: data_o = 32'h4e014d81 /* 0x0040 */;
017: data_o = 32'h4f014e81 /* 0x0044 */;
018: data_o = 32'h01001297 /* 0x0048 */;
019: data_o = 32'hfb828293 /* 0x004c */;
020: data_o = 32'ha023537d /* 0x0050 */;
021: data_o = 32'ha2230062 /* 0x0054 */;
022: data_o = 32'h43050062 /* 0x0058 */;
023: data_o = 32'h0062a823 /* 0x005c */;
024: data_o = 32'h43014281 /* 0x0060 */;
025: data_o = 32'h0000100f /* 0x0064 */;
026: data_o = 32'h13e000ef /* 0x0068 */;
027: data_o = 32'h0506a009 /* 0x006c */;
028: data_o = 32'h00156513 /* 0x0070 */;
029: data_o = 32'h01000297 /* 0x0074 */;
030: data_o = 32'hf8c28293 /* 0x0078 */;
031: data_o = 32'h00a2a223 /* 0x007c */;
032: data_o = 32'h10500073 /* 0x0080 */;
033: data_o = 32'h1141bff5 /* 0x0084 */;
034: data_o = 32'he022e406 /* 0x0088 */;
035: data_o = 32'h00ef842a /* 0x008c */;
036: data_o = 32'h85aa1cc0 /* 0x0090 */;
037: data_o = 32'hbc018513 /* 0x0094 */;
038: data_o = 32'h218010ef /* 0x0098 */;
039: data_o = 32'h00ef8522 /* 0x009c */;
040: data_o = 32'h85aa1920 /* 0x00a0 */;
041: data_o = 32'hbf018513 /* 0x00a4 */;
042: data_o = 32'h208010ef /* 0x00a8 */;
043: data_o = 32'h00ef8522 /* 0x00ac */;
044: data_o = 32'h85aa19e0 /* 0x00b0 */;
045: data_o = 32'hc2018513 /* 0x00b4 */;
046: data_o = 32'h1f8010ef /* 0x00b8 */;
047: data_o = 32'h00ef8522 /* 0x00bc */;
048: data_o = 32'h85aa1800 /* 0x00c0 */;
049: data_o = 32'hc5018513 /* 0x00c4 */;
050: data_o = 32'h1e8010ef /* 0x00c8 */;
051: data_o = 32'h00ef8522 /* 0x00cc */;
052: data_o = 32'h64021540 /* 0x00d0 */;
053: data_o = 32'h85aa60a2 /* 0x00d4 */;
054: data_o = 32'hc8018513 /* 0x00d8 */;
055: data_o = 32'h106f0141 /* 0x00dc */;
056: data_o = 32'h71391d20 /* 0x00e0 */;
057: data_o = 32'h561b85aa /* 0x00e4 */;
058: data_o = 32'h55370015 /* 0x00e8 */;
059: data_o = 32'h00340200 /* 0x00ec */;
060: data_o = 32'h00050513 /* 0x00f0 */;
061: data_o = 32'hf822fc06 /* 0x00f4 */;
062: data_o = 32'hc002f426 /* 0x00f8 */;
063: data_o = 32'h10efc202 /* 0x00fc */;
064: data_o = 32'h00286f20 /* 0x0100 */;
065: data_o = 32'h718010ef /* 0x0104 */;
066: data_o = 32'h000625b7 /* 0x0108 */;
067: data_o = 32'ha8058593 /* 0x010c */;
068: data_o = 32'h10ef0028 /* 0x0110 */;
069: data_o = 32'h45810330 /* 0x0114 */;
070: data_o = 32'h10ef0028 /* 0x0118 */;
071: data_o = 32'h00280710 /* 0x011c */;
072: data_o = 32'h3ff010ef /* 0x0120 */;
073: data_o = 32'hc5b7fd6d /* 0x0124 */;
074: data_o = 32'h859300be /* 0x0128 */;
075: data_o = 32'h0028c205 /* 0x012c */;
076: data_o = 32'h015010ef /* 0x0130 */;
077: data_o = 32'h10ef0028 /* 0x0134 */;
078: data_o = 32'h860a0730 /* 0x0138 */;
079: data_o = 32'h00284581 /* 0x013c */;
080: data_o = 32'h1e3010ef /* 0x0140 */;
081: data_o = 32'h45850050 /* 0x0144 */;
082: data_o = 32'h10ef0028 /* 0x0148 */;
083: data_o = 32'h45821d90 /* 0x014c */;
084: data_o = 32'h700004b7 /* 0x0150 */;
085: data_o = 32'h00048613 /* 0x0154 */;
086: data_o = 32'h002846a1 /* 0x0158 */;
087: data_o = 32'h571010ef /* 0x015c */;
088: data_o = 32'h00048593 /* 0x0160 */;
089: data_o = 32'hcb018513 /* 0x0164 */;
090: data_o = 32'h148010ef /* 0x0168 */;
091: data_o = 32'h44054592 /* 0x016c */;
092: data_o = 32'h86936689 /* 0x0170 */;
093: data_o = 32'h16138006 /* 0x0174 */;
094: data_o = 32'h002801f4 /* 0x0178 */;
095: data_o = 32'h551010ef /* 0x017c */;
096: data_o = 32'h01f41593 /* 0x0180 */;
097: data_o = 32'hcd018513 /* 0x0184 */;
098: data_o = 32'h128010ef /* 0x0188 */;
099: data_o = 32'h0000100f /* 0x018c */;
100: data_o = 32'h047e4601 /* 0x0190 */;
101: data_o = 32'h00048593 /* 0x0194 */;
102: data_o = 32'h94024501 /* 0x0198 */;
103: data_o = 32'h744270e2 /* 0x019c */;
104: data_o = 32'h612174a2 /* 0x01a0 */;
105: data_o = 32'h11418082 /* 0x01a4 */;
106: data_o = 32'h0437e022 /* 0x01a8 */;
107: data_o = 32'h04130200 /* 0x01ac */;
108: data_o = 32'h54080004 /* 0x01b0 */;
109: data_o = 32'h859365f1 /* 0x01b4 */;
110: data_o = 32'he4062005 /* 0x01b8 */;
111: data_o = 32'h146010ef /* 0x01bc */;
112: data_o = 32'h02001537 /* 0x01c0 */;
113: data_o = 32'h00050513 /* 0x01c4 */;
114: data_o = 32'hebfff0ef /* 0x01c8 */;
115: data_o = 32'h47094854 /* 0x01cc */;
116: data_o = 32'h02e68663 /* 0x01d0 */;
117: data_o = 32'h0006879b /* 0x01d4 */;
118: data_o = 32'h00f76a63 /* 0x01d8 */;
119: data_o = 32'h8513cb9d /* 0x01dc */;
120: data_o = 32'h10efd181 /* 0x01e0 */;
121: data_o = 32'h00730ce0 /* 0x01e4 */;
122: data_o = 32'hbff51050 /* 0x01e8 */;
123: data_o = 32'h9c63470d /* 0x01ec */;
124: data_o = 32'h851300e7 /* 0x01f0 */;
125: data_o = 32'h10efd581 /* 0x01f4 */;
126: data_o = 32'hb7f50ba0 /* 0x01f8 */;
127: data_o = 32'hd3818513 /* 0x01fc */;
128: data_o = 32'h0b0010ef /* 0x0200 */;
129: data_o = 32'h484cb7cd /* 0x0204 */;
130: data_o = 32'hd7818513 /* 0x0208 */;
131: data_o = 32'h0a4010ef /* 0x020c */;
132: data_o = 32'h8513bfd9 /* 0x0210 */;
133: data_o = 32'h10efcf01 /* 0x0214 */;
134: data_o = 32'h540809a0 /* 0x0218 */;
135: data_o = 32'hec7ff0ef /* 0x021c */;
136: data_o = 32'h515cb7d9 /* 0x0220 */;
137: data_o = 32'h17825108 /* 0x0224 */;
138: data_o = 32'h91011502 /* 0x0228 */;
139: data_o = 32'h80828d5d /* 0x022c */;
140: data_o = 32'h5508555c /* 0x0230 */;
141: data_o = 32'h15021782 /* 0x0234 */;
142: data_o = 32'h8d5d9101 /* 0x0238 */;
143: data_o = 32'h595c8082 /* 0x023c */;
144: data_o = 32'h17825908 /* 0x0240 */;
145: data_o = 32'h91011502 /* 0x0244 */;
146: data_o = 32'h80828d5d /* 0x0248 */;
147: data_o = 32'h5d085d5c /* 0x024c */;
148: data_o = 32'h15021782 /* 0x0250 */;
149: data_o = 32'h8d5d9101 /* 0x0254 */;
150: data_o = 32'h417c8082 /* 0x0258 */;
151: data_o = 32'h17824128 /* 0x025c */;
152: data_o = 32'h91011502 /* 0x0260 */;
153: data_o = 32'h80828d5d /* 0x0264 */;
154: data_o = 32'h711d8082 /* 0x0268 */;
155: data_o = 32'he0cae4a6 /* 0x026c */;
156: data_o = 32'hf852fc4e /* 0x0270 */;
157: data_o = 32'hf05af456 /* 0x0274 */;
158: data_o = 32'he8628ab2 /* 0x0278 */;
159: data_o = 32'he06ae466 /* 0x027c */;
160: data_o = 32'he8a2ec86 /* 0x0280 */;
161: data_o = 32'hf613ec5e /* 0x0284 */;
162: data_o = 32'h8cc60038 /* 0x0288 */;
163: data_o = 32'h89ae892a /* 0x028c */;
164: data_o = 32'h8b3a8a36 /* 0x0290 */;
165: data_o = 32'h8c428d3e /* 0x0294 */;
166: data_o = 32'he21d84d6 /* 0x0298 */;
167: data_o = 32'h02081793 /* 0x029c */;
168: data_o = 32'h84b39381 /* 0x02a0 */;
169: data_o = 32'h94d641a7 /* 0x02a4 */;
170: data_o = 32'h70638456 /* 0x02a8 */;
171: data_o = 32'h862208fd /* 0x02ac */;
172: data_o = 32'h040586d2 /* 0x02b0 */;
173: data_o = 32'h051385ce /* 0x02b4 */;
174: data_o = 32'h99020200 /* 0x02b8 */;
175: data_o = 32'hfe9419e3 /* 0x02bc */;
176: data_o = 32'h01ab0433 /* 0x02c0 */;
177: data_o = 32'h00848bb3 /* 0x02c4 */;
178: data_o = 32'h000d0d63 /* 0x02c8 */;
179: data_o = 32'hfff44503 /* 0x02cc */;
180: data_o = 32'h408b8633 /* 0x02d0 */;
181: data_o = 32'h147d86d2 /* 0x02d4 */;
182: data_o = 32'h990285ce /* 0x02d8 */;
183: data_o = 32'hfe8b18e3 /* 0x02dc */;
184: data_o = 32'hfc9394ea /* 0x02e0 */;
185: data_o = 32'h8363002c /* 0x02e4 */;
186: data_o = 32'h1c02020c /* 0x02e8 */;
187: data_o = 32'h41548ab3 /* 0x02ec */;
188: data_o = 32'h020c5c13 /* 0x02f0 */;
189: data_o = 32'h018afc63 /* 0x02f4 */;
190: data_o = 32'h0a858626 /* 0x02f8 */;
191: data_o = 32'h85ce86d2 /* 0x02fc */;
192: data_o = 32'h02000513 /* 0x0300 */;
193: data_o = 32'h99020485 /* 0x0304 */;
194: data_o = 32'hff8ae8e3 /* 0x0308 */;
195: data_o = 32'h644660e6 /* 0x030c */;
196: data_o = 32'h79e26906 /* 0x0310 */;
197: data_o = 32'h7aa27a42 /* 0x0314 */;
198: data_o = 32'h6be27b02 /* 0x0318 */;
199: data_o = 32'h6ca26c42 /* 0x031c */;
200: data_o = 32'h85266d02 /* 0x0320 */;
201: data_o = 32'h612564a6 /* 0x0324 */;
202: data_o = 32'h84d68082 /* 0x0328 */;
203: data_o = 32'h715dbf51 /* 0x032c */;
204: data_o = 32'h40e6e486 /* 0x0330 */;
205: data_o = 32'hf44efc26 /* 0x0334 */;
206: data_o = 32'hf84ae0a2 /* 0x0338 */;
207: data_o = 32'h8e3a8ec2 /* 0x033c */;
208: data_o = 32'h84be4846 /* 0x0340 */;
209: data_o = 32'h4000f993 /* 0x0344 */;
210: data_o = 32'h8906e755 /* 0x0348 */;
211: data_o = 32'hfef0f093 /* 0x034c */;
212: data_o = 32'h0a099c63 /* 0x0350 */;
213: data_o = 32'h0200f793 /* 0x0354 */;
214: data_o = 32'h02934901 /* 0x0358 */;
215: data_o = 32'he3d50610 /* 0x035c */;
216: data_o = 32'h870a4781 /* 0x0360 */;
217: data_o = 32'h32d943a5 /* 0x0364 */;
218: data_o = 32'h02000413 /* 0x0368 */;
219: data_o = 32'h8a63a021 /* 0x036c */;
220: data_o = 32'h8e1a0287 /* 0x0370 */;
221: data_o = 32'h03de7f33 /* 0x0374 */;
222: data_o = 32'h0fff7313 /* 0x0378 */;
223: data_o = 32'h03030f9b /* 0x037c */;
224: data_o = 32'h0062833b /* 0x0380 */;
225: data_o = 32'h0ff37313 /* 0x0384 */;
226: data_o = 32'h01e3e463 /* 0x0388 */;
227: data_o = 32'h0ffff313 /* 0x038c */;
228: data_o = 32'h0f330785 /* 0x0390 */;
229: data_o = 32'h0fa300f7 /* 0x0394 */;
230: data_o = 32'h5333fe6f /* 0x0398 */;
231: data_o = 32'h78e303de /* 0x039c */;
232: data_o = 32'hf313fdde /* 0x03a0 */;
233: data_o = 32'h07630020 /* 0x03a4 */;
234: data_o = 32'h0e630603 /* 0x03a8 */;
235: data_o = 32'h97631009 /* 0x03ac */;
236: data_o = 32'hebe90e09 /* 0x03b0 */;
237: data_o = 32'h846347c1 /* 0x03b4 */;
238: data_o = 32'h478920fe /* 0x03b8 */;
239: data_o = 32'h22fe8063 /* 0x03bc */;
240: data_o = 32'h03000793 /* 0x03c0 */;
241: data_o = 32'h00f10023 /* 0x03c4 */;
242: data_o = 32'h8b634785 /* 0x03c8 */;
243: data_o = 32'h84131204 /* 0x03cc */;
244: data_o = 32'h08b30207 /* 0x03d0 */;
245: data_o = 32'h03130024 /* 0x03d4 */;
246: data_o = 32'h802302d0 /* 0x03d8 */;
247: data_o = 32'h0785fe68 /* 0x03dc */;
248: data_o = 32'hf0ef8886 /* 0x03e0 */;
249: data_o = 32'h60a6e89f /* 0x03e4 */;
250: data_o = 32'h74e26406 /* 0x03e8 */;
251: data_o = 32'h79a27942 /* 0x03ec */;
252: data_o = 32'h80826161 /* 0x03f0 */;
253: data_o = 32'h0200f793 /* 0x03f4 */;
254: data_o = 32'h0100f913 /* 0x03f8 */;
255: data_o = 32'h06100293 /* 0x03fc */;
256: data_o = 32'h0293d3a5 /* 0x0400 */;
257: data_o = 32'hbfa90410 /* 0x0404 */;
258: data_o = 32'h00297913 /* 0x0408 */;
259: data_o = 32'h870a4781 /* 0x040c */;
260: data_o = 32'hfa091de3 /* 0x0410 */;
261: data_o = 32'h02089e13 /* 0x0414 */;
262: data_o = 32'h020e5e13 /* 0x0418 */;
263: data_o = 32'hf2938306 /* 0x041c */;
264: data_o = 32'h19630010 /* 0x0420 */;
265: data_o = 32'hf4630a08 /* 0x0424 */;
266: data_o = 32'h031303c7 /* 0x0428 */;
267: data_o = 32'h80630200 /* 0x042c */;
268: data_o = 32'h0f130267 /* 0x0430 */;
269: data_o = 32'h0f930300 /* 0x0434 */;
270: data_o = 32'ha0190200 /* 0x0438 */;
271: data_o = 32'h01f78963 /* 0x043c */;
272: data_o = 32'h03330785 /* 0x0440 */;
273: data_o = 32'h0fa300f7 /* 0x0444 */;
274: data_o = 32'he9e3ffe3 /* 0x0448 */;
275: data_o = 32'h8ee3ffc7 /* 0x044c */;
276: data_o = 32'h1f13f402 /* 0x0450 */;
277: data_o = 32'h5f130208 /* 0x0454 */;
278: data_o = 32'hf8e3020f /* 0x0458 */;
279: data_o = 32'h0313f5e7 /* 0x045c */;
280: data_o = 32'h0f930200 /* 0x0460 */;
281: data_o = 32'h02930300 /* 0x0464 */;
282: data_o = 32'h95630200 /* 0x0468 */;
283: data_o = 32'ha0510067 /* 0x046c */;
284: data_o = 32'h08578163 /* 0x0470 */;
285: data_o = 32'h03330785 /* 0x0474 */;
286: data_o = 32'h0fa300f7 /* 0x0478 */;
287: data_o = 32'h99e3fff3 /* 0x047c */;
288: data_o = 32'hb725ffe7 /* 0x0480 */;
289: data_o = 32'h02089e13 /* 0x0484 */;
290: data_o = 32'h020e5e13 /* 0x0488 */;
291: data_o = 32'h0cfe0b63 /* 0x048c */;
292: data_o = 32'h02081893 /* 0x0490 */;
293: data_o = 32'h0208d893 /* 0x0494 */;
294: data_o = 32'h0cf88563 /* 0x0498 */;
295: data_o = 32'h826348c1 /* 0x049c */;
296: data_o = 32'h48890f1e /* 0x04a0 */;
297: data_o = 32'h0b1e8563 /* 0x04a4 */;
298: data_o = 32'h02000893 /* 0x04a8 */;
299: data_o = 32'hf3178ae3 /* 0x04ac */;
300: data_o = 32'h879388be /* 0x04b0 */;
301: data_o = 32'h83330208 /* 0x04b4 */;
302: data_o = 32'h87930027 /* 0x04b8 */;
303: data_o = 32'h08930018 /* 0x04bc */;
304: data_o = 32'h00230300 /* 0x04c0 */;
305: data_o = 32'h0893ff13 /* 0x04c4 */;
306: data_o = 32'h90e30200 /* 0x04c8 */;
307: data_o = 32'h0793f117 /* 0x04cc */;
308: data_o = 32'hb7390200 /* 0x04d0 */;
309: data_o = 32'h04028863 /* 0x04d4 */;
310: data_o = 32'h7313e0d9 /* 0x04d8 */;
311: data_o = 32'h106300c3 /* 0x04dc */;
312: data_o = 32'hf8e30803 /* 0x04e0 */;
313: data_o = 32'h0313f7c7 /* 0x04e4 */;
314: data_o = 32'h94e30200 /* 0x04e8 */;
315: data_o = 32'hfee3f467 /* 0x04ec */;
316: data_o = 32'h0ee3eb07 /* 0x04f0 */;
317: data_o = 32'h0793fc09 /* 0x04f4 */;
318: data_o = 32'h89e30200 /* 0x04f8 */;
319: data_o = 32'hbf79f809 /* 0x04fc */;
320: data_o = 32'h0040f893 /* 0x0500 */;
321: data_o = 32'h02089b63 /* 0x0504 */;
322: data_o = 32'h0080f893 /* 0x0508 */;
323: data_o = 32'hec088ae3 /* 0x050c */;
324: data_o = 32'h02078413 /* 0x0510 */;
325: data_o = 32'h002408b3 /* 0x0514 */;
326: data_o = 32'h02000313 /* 0x0518 */;
327: data_o = 32'hfe688023 /* 0x051c */;
328: data_o = 32'hbd7d0785 /* 0x0520 */;
329: data_o = 32'he9c7f3e3 /* 0x0524 */;
330: data_o = 32'h02000313 /* 0x0528 */;
331: data_o = 32'hf06793e3 /* 0x052c */;
332: data_o = 32'he6091fe3 /* 0x0530 */;
333: data_o = 32'h02000793 /* 0x0534 */;
334: data_o = 32'h8413b565 /* 0x0538 */;
335: data_o = 32'h08b30207 /* 0x053c */;
336: data_o = 32'h03130024 /* 0x0540 */;
337: data_o = 32'h802302b0 /* 0x0544 */;
338: data_o = 32'h0785fe68 /* 0x0548 */;
339: data_o = 32'h0893bd51 /* 0x054c */;
340: data_o = 32'h87e30200 /* 0x0550 */;
341: data_o = 32'h08b3e917 /* 0x0554 */;
342: data_o = 32'h078500f7 /* 0x0558 */;
343: data_o = 32'h387da831 /* 0x055c */;
344: data_o = 32'h8893b749 /* 0x0560 */;
345: data_o = 32'h87e3fff7 /* 0x0564 */;
346: data_o = 32'h4341e408 /* 0x0568 */;
347: data_o = 32'h066e8e63 /* 0x056c */;
348: data_o = 32'h90e34309 /* 0x0570 */;
349: data_o = 32'h98baf46e /* 0x0574 */;
350: data_o = 32'h06200313 /* 0x0578 */;
351: data_o = 32'h00688023 /* 0x057c */;
352: data_o = 32'hf893b725 /* 0x0580 */;
353: data_o = 32'h9e630200 /* 0x0584 */;
354: data_o = 32'h08930008 /* 0x0588 */;
355: data_o = 32'h89e30200 /* 0x058c */;
356: data_o = 32'h0333e517 /* 0x0590 */;
357: data_o = 32'h078500f7 /* 0x0594 */;
358: data_o = 32'h07800893 /* 0x0598 */;
359: data_o = 32'h01130023 /* 0x059c */;
360: data_o = 32'h0893b721 /* 0x05a0 */;
361: data_o = 32'h8de30200 /* 0x05a4 */;
362: data_o = 32'h8413e317 /* 0x05a8 */;
363: data_o = 32'h08b30207 /* 0x05ac */;
364: data_o = 32'h03130024 /* 0x05b0 */;
365: data_o = 32'h80230580 /* 0x05b4 */;
366: data_o = 32'h0785fe68 /* 0x05b8 */;
367: data_o = 32'hf793b5f5 /* 0x05bc */;
368: data_o = 32'he7990200 /* 0x05c0 */;
369: data_o = 32'h07800793 /* 0x05c4 */;
370: data_o = 32'h00f10023 /* 0x05c8 */;
371: data_o = 32'hb5d54885 /* 0x05cc */;
372: data_o = 32'h05800793 /* 0x05d0 */;
373: data_o = 32'h00f10023 /* 0x05d4 */;
374: data_o = 32'hbde14885 /* 0x05d8 */;
375: data_o = 32'h06200793 /* 0x05dc */;
376: data_o = 32'h00f10023 /* 0x05e0 */;
377: data_o = 32'hb5f14885 /* 0x05e4 */;
378: data_o = 32'h0200f313 /* 0x05e8 */;
379: data_o = 32'h1ee317f9 /* 0x05ec */;
380: data_o = 32'h0333fa03 /* 0x05f0 */;
381: data_o = 32'h87c600f7 /* 0x05f4 */;
382: data_o = 32'h28d3b745 /* 0x05f8 */;
383: data_o = 32'h7159a2a5 /* 0x05fc */;
384: data_o = 32'heca6f0a2 /* 0x0600 */;
385: data_o = 32'he4cee8ca /* 0x0604 */;
386: data_o = 32'hfc56e0d2 /* 0x0608 */;
387: data_o = 32'hf85af486 /* 0x060c */;
388: data_o = 32'hf062f45e /* 0x0610 */;
389: data_o = 32'h89aaec66 /* 0x0614 */;
390: data_o = 32'h84328a2e /* 0x0618 */;
391: data_o = 32'h893e8ab6 /* 0x061c */;
392: data_o = 32'h8d6384c2 /* 0x0620 */;
393: data_o = 32'h27972608 /* 0x0624 */;
394: data_o = 32'hb7870000 /* 0x0628 */;
395: data_o = 32'h97d32a27 /* 0x062c */;
396: data_o = 32'h9563a2a7 /* 0x0630 */;
397: data_o = 32'h27972607 /* 0x0634 */;
398: data_o = 32'hb7870000 /* 0x0638 */;
399: data_o = 32'h17d329a7 /* 0x063c */;
400: data_o = 32'h9d63a2f5 /* 0x0640 */;
401: data_o = 32'h07d32407 /* 0x0644 */;
402: data_o = 32'h06d3f200 /* 0x0648 */;
403: data_o = 32'h17d3e205 /* 0x064c */;
404: data_o = 32'hc789a2f5 /* 0x0650 */;
405: data_o = 32'h22a517d3 /* 0x0654 */;
406: data_o = 32'he20786d3 /* 0x0658 */;
407: data_o = 32'h4004f613 /* 0x065c */;
408: data_o = 32'h4719e211 /* 0x0660 */;
409: data_o = 32'h0346d793 /* 0x0664 */;
410: data_o = 32'h7ff7f793 /* 0x0668 */;
411: data_o = 32'hc017879b /* 0x066c */;
412: data_o = 32'hd2078753 /* 0x0670 */;
413: data_o = 32'h3ff00593 /* 0x0674 */;
414: data_o = 32'h00c69793 /* 0x0678 */;
415: data_o = 32'h83b115d2 /* 0x067c */;
416: data_o = 32'h25978fcd /* 0x0680 */;
417: data_o = 32'hb6870000 /* 0x0684 */;
418: data_o = 32'h25972565 /* 0x0688 */;
419: data_o = 32'hb7870000 /* 0x068c */;
420: data_o = 32'h25972565 /* 0x0690 */;
421: data_o = 32'h25170000 /* 0x0694 */;
422: data_o = 32'h77430000 /* 0x0698 */;
423: data_o = 32'h86d37ad7 /* 0x069c */;
424: data_o = 32'hb787f207 /* 0x06a0 */;
425: data_o = 32'h27972565 /* 0x06a4 */;
426: data_o = 32'hf7d30000 /* 0x06a8 */;
427: data_o = 32'hb6870af6 /* 0x06ac */;
428: data_o = 32'h279724a7 /* 0x06b0 */;
429: data_o = 32'hb5870000 /* 0x06b4 */;
430: data_o = 32'h279726e7 /* 0x06b8 */;
431: data_o = 32'hf7c30000 /* 0x06bc */;
432: data_o = 32'hb70772d7 /* 0x06c0 */;
433: data_o = 32'h279723e7 /* 0x06c4 */;
434: data_o = 32'hb6870000 /* 0x06c8 */;
435: data_o = 32'h95d323a7 /* 0x06cc */;
436: data_o = 32'h87d3c207 /* 0x06d0 */;
437: data_o = 32'h8c1bd205 /* 0x06d4 */;
438: data_o = 32'hf7430005 /* 0x06d8 */;
439: data_o = 32'h36876ae7 /* 0x06dc */;
440: data_o = 32'h25172725 /* 0x06e0 */;
441: data_o = 32'h17d30000 /* 0x06e4 */;
442: data_o = 32'h8753c207 /* 0x06e8 */;
443: data_o = 32'h879bd207 /* 0x06ec */;
444: data_o = 32'h17d23ff7 /* 0x06f0 */;
445: data_o = 32'h12d77753 /* 0x06f4 */;
446: data_o = 32'h22e53687 /* 0x06f8 */;
447: data_o = 32'h00002517 /* 0x06fc */;
448: data_o = 32'h23453607 /* 0x0700 */;
449: data_o = 32'h00002517 /* 0x0704 */;
450: data_o = 32'h72d7f7c7 /* 0x0708 */;
451: data_o = 32'h21453707 /* 0x070c */;
452: data_o = 32'h00002517 /* 0x0710 */;
453: data_o = 32'h21853007 /* 0x0714 */;
454: data_o = 32'h00002517 /* 0x0718 */;
455: data_o = 32'h12f7f6d3 /* 0x071c */;
456: data_o = 32'h0af67653 /* 0x0720 */;
457: data_o = 32'h02f7f7d3 /* 0x0724 */;
458: data_o = 32'h1ae6f753 /* 0x0728 */;
459: data_o = 32'h02b77753 /* 0x072c */;
460: data_o = 32'h1ae6f753 /* 0x0730 */;
461: data_o = 32'h02077753 /* 0x0734 */;
462: data_o = 32'h1ae6f6d3 /* 0x0738 */;
463: data_o = 32'h22053707 /* 0x073c */;
464: data_o = 32'h02c6f6d3 /* 0x0740 */;
465: data_o = 32'h1ad7f7d3 /* 0x0744 */;
466: data_o = 32'h02e7f7d3 /* 0x0748 */;
467: data_o = 32'hf2078753 /* 0x074c */;
468: data_o = 32'h12e7f7d3 /* 0x0750 */;
469: data_o = 32'hf2068753 /* 0x0754 */;
470: data_o = 32'ha2f717d3 /* 0x0758 */;
471: data_o = 32'he20788d3 /* 0x075c */;
472: data_o = 32'hf7d3c799 /* 0x0760 */;
473: data_o = 32'h8c1b1ab7 /* 0x0764 */;
474: data_o = 32'h88d3fff5 /* 0x0768 */;
475: data_o = 32'h0c9be207 /* 0x076c */;
476: data_o = 32'hd793063c /* 0x0770 */;
477: data_o = 32'h059300b4 /* 0x0774 */;
478: data_o = 32'hbcb30c60 /* 0x0778 */;
479: data_o = 32'h8b850195 /* 0x077c */;
480: data_o = 32'hc3a10c91 /* 0x0780 */;
481: data_o = 32'h00002797 /* 0x0784 */;
482: data_o = 32'h1bc7b787 /* 0x0788 */;
483: data_o = 32'hf2068753 /* 0x078c */;
484: data_o = 32'ha2e787d3 /* 0x0790 */;
485: data_o = 32'h14078063 /* 0x0794 */;
486: data_o = 32'h00002797 /* 0x0798 */;
487: data_o = 32'h1b07b787 /* 0x079c */;
488: data_o = 32'ha2f717d3 /* 0x07a0 */;
489: data_o = 32'h12078863 /* 0x07a4 */;
490: data_o = 32'h0007079b /* 0x07a8 */;
491: data_o = 32'h56634701 /* 0x07ac */;
492: data_o = 32'h87bb00fc /* 0x07b0 */;
493: data_o = 32'h871b4187 /* 0x07b4 */;
494: data_o = 32'he493fff7 /* 0x07b8 */;
495: data_o = 32'h4c814004 /* 0x07bc */;
496: data_o = 32'h47814c01 /* 0x07c0 */;
497: data_o = 32'h012cf463 /* 0x07c4 */;
498: data_o = 32'h419907bb /* 0x07c8 */;
499: data_o = 32'h0024fb93 /* 0x07cc */;
500: data_o = 32'h000b8763 /* 0x07d0 */;
501: data_o = 32'h001cb613 /* 0x07d4 */;
502: data_o = 32'h40c00633 /* 0x07d8 */;
503: data_o = 32'h12638ff1 /* 0x07dc */;
504: data_o = 32'h07d30e0c /* 0x07e0 */;
505: data_o = 32'h1653f200 /* 0x07e4 */;
506: data_o = 32'hc619a2f5 /* 0x07e8 */;
507: data_o = 32'hf20687d3 /* 0x07ec */;
508: data_o = 32'h22f797d3 /* 0x07f0 */;
509: data_o = 32'he20786d3 /* 0x07f4 */;
510: data_o = 32'hf2068553 /* 0x07f8 */;
511: data_o = 32'h0813787d /* 0x07fc */;
512: data_o = 32'hf8337ff8 /* 0x0800 */;
513: data_o = 32'h86d60104 /* 0x0804 */;
514: data_o = 32'h85d28622 /* 0x0808 */;
515: data_o = 32'h00ef854e /* 0x080c */;
516: data_o = 32'h8b2a0d20 /* 0x0810 */;
517: data_o = 32'h060c8663 /* 0x0814 */;
518: data_o = 32'h0204f493 /* 0x0818 */;
519: data_o = 32'h04500513 /* 0x081c */;
520: data_o = 32'h0513e099 /* 0x0820 */;
521: data_o = 32'h865a0650 /* 0x0824 */;
522: data_o = 32'h85d286d6 /* 0x0828 */;
523: data_o = 32'h571b9982 /* 0x082c */;
524: data_o = 32'h46b341fc /* 0x0830 */;
525: data_o = 32'h479500ec /* 0x0834 */;
526: data_o = 32'h06133cfd /* 0x0838 */;
527: data_o = 32'he43e001b /* 0x083c */;
528: data_o = 32'h40e6873b /* 0x0840 */;
529: data_o = 32'h4881e066 /* 0x0844 */;
530: data_o = 32'h579b4829 /* 0x0848 */;
531: data_o = 32'h86d601fc /* 0x084c */;
532: data_o = 32'h854e85d2 /* 0x0850 */;
533: data_o = 32'hadbff0ef /* 0x0854 */;
534: data_o = 32'h83638b2a /* 0x0858 */;
535: data_o = 32'h1902020b /* 0x085c */;
536: data_o = 32'h40850433 /* 0x0860 */;
537: data_o = 32'h02095913 /* 0x0864 */;
538: data_o = 32'h01247c63 /* 0x0868 */;
539: data_o = 32'h0405865a /* 0x086c */;
540: data_o = 32'h85d286d6 /* 0x0870 */;
541: data_o = 32'h02000513 /* 0x0874 */;
542: data_o = 32'h99820b05 /* 0x0878 */;
543: data_o = 32'hff2468e3 /* 0x087c */;
544: data_o = 32'h740670a6 /* 0x0880 */;
545: data_o = 32'h694664e6 /* 0x0884 */;
546: data_o = 32'h6a0669a6 /* 0x0888 */;
547: data_o = 32'h7ba27ae2 /* 0x088c */;
548: data_o = 32'h6ce27c02 /* 0x0890 */;
549: data_o = 32'h7b42855a /* 0x0894 */;
550: data_o = 32'h80826165 /* 0x0898 */;
551: data_o = 32'h74068622 /* 0x089c */;
552: data_o = 32'h7b4270a6 /* 0x08a0 */;
553: data_o = 32'h7c027ba2 /* 0x08a4 */;
554: data_o = 32'h88266ce2 /* 0x08a8 */;
555: data_o = 32'h64e687ca /* 0x08ac */;
556: data_o = 32'h86d66946 /* 0x08b0 */;
557: data_o = 32'h7ae285d2 /* 0x08b4 */;
558: data_o = 32'h854e6a06 /* 0x08b8 */;
559: data_o = 32'h616569a6 /* 0x08bc */;
560: data_o = 32'h87d3a005 /* 0x08c0 */;
561: data_o = 32'h8753f206 /* 0x08c4 */;
562: data_o = 32'hf7d3f208 /* 0x08c8 */;
563: data_o = 32'h86d31ae7 /* 0x08cc */;
564: data_o = 32'hbf01e207 /* 0x08d0 */;
565: data_o = 32'hee0707e3 /* 0x08d4 */;
566: data_o = 32'hee0605e3 /* 0x08d8 */;
567: data_o = 32'hb5d5377d /* 0x08dc */;
568: data_o = 32'ha2a52353 /* 0x08e0 */;
569: data_o = 32'h88c28fbe /* 0x08e4 */;
570: data_o = 32'h18030763 /* 0x08e8 */;
571: data_o = 32'h00002797 /* 0x08ec */;
572: data_o = 32'hfe47b787 /* 0x08f0 */;
573: data_o = 32'ha2f517d3 /* 0x08f4 */;
574: data_o = 32'h24079663 /* 0x08f8 */;
575: data_o = 32'h00002797 /* 0x08fc */;
576: data_o = 32'hfcc7b787 /* 0x0900 */;
577: data_o = 32'hf8227139 /* 0x0904 */;
578: data_o = 32'ha2a797d3 /* 0x0908 */;
579: data_o = 32'hfc06f426 /* 0x090c */;
580: data_o = 32'h83ae82aa /* 0x0910 */;
581: data_o = 32'h84b68432 /* 0x0914 */;
582: data_o = 32'h12079c63 /* 0x0918 */;
583: data_o = 32'h00002797 /* 0x091c */;
584: data_o = 32'h0347b787 /* 0x0920 */;
585: data_o = 32'ha2a797d3 /* 0x0924 */;
586: data_o = 32'h20079363 /* 0x0928 */;
587: data_o = 32'h00002797 /* 0x092c */;
588: data_o = 32'h02c7b787 /* 0x0930 */;
589: data_o = 32'ha2f517d3 /* 0x0934 */;
590: data_o = 32'h1e079b63 /* 0x0938 */;
591: data_o = 32'hf20007d3 /* 0x093c */;
592: data_o = 32'h17d34581 /* 0x0940 */;
593: data_o = 32'h9063a2f5 /* 0x0944 */;
594: data_o = 32'hf7931e07 /* 0x0948 */;
595: data_o = 32'he3914008 /* 0x094c */;
596: data_o = 32'h43014719 /* 0x0950 */;
597: data_o = 32'h061347a5 /* 0x0954 */;
598: data_o = 32'h06930300 /* 0x0958 */;
599: data_o = 32'hfa630200 /* 0x095c */;
600: data_o = 32'h030500e7 /* 0x0960 */;
601: data_o = 32'h00610e33 /* 0x0964 */;
602: data_o = 32'hfece0fa3 /* 0x0968 */;
603: data_o = 32'h18e3377d /* 0x096c */;
604: data_o = 32'h16d3fed3 /* 0x0970 */;
605: data_o = 32'h1513c205 /* 0x0974 */;
606: data_o = 32'h87d30207 /* 0x0978 */;
607: data_o = 32'h8793d206 /* 0x097c */;
608: data_o = 32'h5613f581 /* 0x0980 */;
609: data_o = 32'h77d301d5 /* 0x0984 */;
610: data_o = 32'h97b20af5 /* 0x0988 */;
611: data_o = 32'h27972394 /* 0x098c */;
612: data_o = 32'hb7070000 /* 0x0990 */;
613: data_o = 32'h8e1bf727 /* 0x0994 */;
614: data_o = 32'hf7d30006 /* 0x0998 */;
615: data_o = 32'h9f5312d7 /* 0x099c */;
616: data_o = 32'h7653c237 /* 0x09a0 */;
617: data_o = 32'hf7d3d23f /* 0x09a4 */;
618: data_o = 32'h17d30ac7 /* 0x09a8 */;
619: data_o = 32'hcfe1a2f7 /* 0x09ac */;
620: data_o = 32'h77d30f05 /* 0x09b0 */;
621: data_o = 32'h87d3d23f /* 0x09b4 */;
622: data_o = 32'hc781a2f6 /* 0x09b8 */;
623: data_o = 32'h00168e1b /* 0x09bc */;
624: data_o = 32'heb694f01 /* 0x09c0 */;
625: data_o = 32'hd20e07d3 /* 0x09c4 */;
626: data_o = 32'h00002797 /* 0x09c8 */;
627: data_o = 32'hf387b707 /* 0x09cc */;
628: data_o = 32'h0af57553 /* 0x09d0 */;
629: data_o = 32'ha2e517d3 /* 0x09d4 */;
630: data_o = 32'h17d3c781 /* 0x09d8 */;
631: data_o = 32'hc789a2a7 /* 0x09dc */;
632: data_o = 32'h001e7793 /* 0x09e0 */;
633: data_o = 32'h2e05c391 /* 0x09e4 */;
634: data_o = 32'h02000613 /* 0x09e8 */;
635: data_o = 32'h0f6347a9 /* 0x09ec */;
636: data_o = 32'h673b0cc3 /* 0x09f0 */;
637: data_o = 32'h030502fe /* 0x09f4 */;
638: data_o = 32'h006106b3 /* 0x09f8 */;
639: data_o = 32'h02fe4e3b /* 0x09fc */;
640: data_o = 32'h0307071b /* 0x0a00 */;
641: data_o = 32'hfee68fa3 /* 0x0a04 */;
642: data_o = 32'hfe0e13e3 /* 0x0a08 */;
643: data_o = 32'h0038f793 /* 0x0a0c */;
644: data_o = 32'h89634705 /* 0x0a10 */;
645: data_o = 32'h07131ce7 /* 0x0a14 */;
646: data_o = 32'h0e630200 /* 0x0a18 */;
647: data_o = 32'h8b631ae3 /* 0x0a1c */;
648: data_o = 32'h07931205 /* 0x0a20 */;
649: data_o = 32'h87330203 /* 0x0a24 */;
650: data_o = 32'h06930027 /* 0x0a28 */;
651: data_o = 32'h079302d0 /* 0x0a2c */;
652: data_o = 32'h00230013 /* 0x0a30 */;
653: data_o = 32'h870afed7 /* 0x0a34 */;
654: data_o = 32'h862286a6 /* 0x0a38 */;
655: data_o = 32'h859e887e /* 0x0a3c */;
656: data_o = 32'hf0ef8516 /* 0x0a40 */;
657: data_o = 32'h70e2829f /* 0x0a44 */;
658: data_o = 32'h74a27442 /* 0x0a48 */;
659: data_o = 32'h80826121 /* 0x0a4c */;
660: data_o = 32'h00487793 /* 0x0a50 */;
661: data_o = 32'h2717e3f9 /* 0x0a54 */;
662: data_o = 32'h07130000 /* 0x0a58 */;
663: data_o = 32'h478d8827 /* 0x0a5c */;
664: data_o = 32'h74428622 /* 0x0a60 */;
665: data_o = 32'h86a670e2 /* 0x0a64 */;
666: data_o = 32'h887e74a2 /* 0x0a68 */;
667: data_o = 32'h8516859e /* 0x0a6c */;
668: data_o = 32'hf06f6121 /* 0x0a70 */;
669: data_o = 32'h2717ff8f /* 0x0a74 */;
670: data_o = 32'h883e0000 /* 0x0a78 */;
671: data_o = 32'h86a70713 /* 0x0a7c */;
672: data_o = 32'hf06f478d /* 0x0a80 */;
673: data_o = 32'h97d3fe8f /* 0x0a84 */;
674: data_o = 32'hff85a2e7 /* 0x0a88 */;
675: data_o = 32'h120f1f63 /* 0x0a8c */;
676: data_o = 32'hdb0d0f05 /* 0x0a90 */;
677: data_o = 32'hfe07081b /* 0x0a94 */;
678: data_o = 32'h0068083b /* 0x0a98 */;
679: data_o = 32'h40a546a9 /* 0x0a9c */;
680: data_o = 32'h77b3a005 /* 0x0aa0 */;
681: data_o = 32'h051b02df /* 0x0aa4 */;
682: data_o = 32'h879bfff7 /* 0x0aa8 */;
683: data_o = 32'h0fa30307 /* 0x0aac */;
684: data_o = 32'h57b3fef6 /* 0x0ab0 */;
685: data_o = 32'hff6302df /* 0x0ab4 */;
686: data_o = 32'h872a0be0 /* 0x0ab8 */;
687: data_o = 32'h8f3e8376 /* 0x0abc */;
688: data_o = 32'h00130e93 /* 0x0ac0 */;
689: data_o = 32'h01d10633 /* 0x0ac4 */;
690: data_o = 32'hfd071de3 /* 0x0ac8 */;
691: data_o = 32'h0038f793 /* 0x0acc */;
692: data_o = 32'h92634705 /* 0x0ad0 */;
693: data_o = 32'h079310e7 /* 0x0ad4 */;
694: data_o = 32'h8ee30200 /* 0x0ad8 */;
695: data_o = 32'h9f63f40f /* 0x0adc */;
696: data_o = 32'hf7130e05 /* 0x0ae0 */;
697: data_o = 32'hdb2100c8 /* 0x0ae4 */;
698: data_o = 32'h93133ffd /* 0x0ae8 */;
699: data_o = 32'h5313020f /* 0x0aec */;
700: data_o = 32'hf2630203 /* 0x0af0 */;
701: data_o = 32'h07131067 /* 0x0af4 */;
702: data_o = 32'h06130200 /* 0x0af8 */;
703: data_o = 32'h06930300 /* 0x0afc */;
704: data_o = 32'h8ae30200 /* 0x0b00 */;
705: data_o = 32'h0785f2e7 /* 0x0b04 */;
706: data_o = 32'h00f10733 /* 0x0b08 */;
707: data_o = 32'hfec70fa3 /* 0x0b0c */;
708: data_o = 32'hf06783e3 /* 0x0b10 */;
709: data_o = 32'hfed799e3 /* 0x0b14 */;
710: data_o = 32'h1717bf39 /* 0x0b18 */;
711: data_o = 32'h07130000 /* 0x0b1c */;
712: data_o = 32'h47917b67 /* 0x0b20 */;
713: data_o = 32'hf553bf35 /* 0x0b24 */;
714: data_o = 32'h45850aa7 /* 0x0b28 */;
715: data_o = 32'h8622bd39 /* 0x0b2c */;
716: data_o = 32'h70e27442 /* 0x0b30 */;
717: data_o = 32'h74a286a6 /* 0x0b34 */;
718: data_o = 32'h87fe8846 /* 0x0b38 */;
719: data_o = 32'h8516859e /* 0x0b3c */;
720: data_o = 32'hbc656121 /* 0x0b40 */;
721: data_o = 32'h00001717 /* 0x0b44 */;
722: data_o = 32'h4791887e /* 0x0b48 */;
723: data_o = 32'h7a470713 /* 0x0b4c */;
724: data_o = 32'hf1aff06f /* 0x0b50 */;
725: data_o = 32'h0048f793 /* 0x0b54 */;
726: data_o = 32'hf693efb1 /* 0x0b58 */;
727: data_o = 32'h879a0088 /* 0x0b5c */;
728: data_o = 32'hec068be3 /* 0x0b60 */;
729: data_o = 32'h02030693 /* 0x0b64 */;
730: data_o = 32'h00268333 /* 0x0b68 */;
731: data_o = 32'h00230785 /* 0x0b6c */;
732: data_o = 32'hb5d1fee3 /* 0x0b70 */;
733: data_o = 32'h02000793 /* 0x0b74 */;
734: data_o = 32'hf4fe8ae3 /* 0x0b78 */;
735: data_o = 32'hc12d3779 /* 0x0b7c */;
736: data_o = 32'h93011702 /* 0x0b80 */;
737: data_o = 32'h933a0309 /* 0x0b84 */;
738: data_o = 32'h03000693 /* 0x0b88 */;
739: data_o = 32'h02000713 /* 0x0b8c */;
740: data_o = 32'h07b30e85 /* 0x0b90 */;
741: data_o = 32'h8fa301d1 /* 0x0b94 */;
742: data_o = 32'h89e3fed7 /* 0x0b98 */;
743: data_o = 32'h99e3f2ee /* 0x0b9c */;
744: data_o = 32'h0793fe6e /* 0x0ba0 */;
745: data_o = 32'h978a0203 /* 0x0ba4 */;
746: data_o = 32'h02e00713 /* 0x0ba8 */;
747: data_o = 32'h80230305 /* 0x0bac */;
748: data_o = 32'hbd1dfee7 /* 0x0bb0 */;
749: data_o = 32'h02030793 /* 0x0bb4 */;
750: data_o = 32'h00278733 /* 0x0bb8 */;
751: data_o = 32'h02b00693 /* 0x0bbc */;
752: data_o = 32'h00130793 /* 0x0bc0 */;
753: data_o = 32'hfed70023 /* 0x0bc4 */;
754: data_o = 32'h7793b5bd /* 0x0bc8 */;
755: data_o = 32'h8ae3001f /* 0x0bcc */;
756: data_o = 32'h0f05de07 /* 0x0bd0 */;
757: data_o = 32'h0793bd7d /* 0x0bd4 */;
758: data_o = 32'hbdb10200 /* 0x0bd8 */;
759: data_o = 32'hbda13ffd /* 0x0bdc */;
760: data_o = 32'hb7c18376 /* 0x0be0 */;
761: data_o = 32'he20f89e3 /* 0x0be4 */;
762: data_o = 32'hf713e989 /* 0x0be8 */;
763: data_o = 32'h879a00c8 /* 0x0bec */;
764: data_o = 32'hee070de3 /* 0x0bf0 */;
765: data_o = 32'h833ebdd5 /* 0x0bf4 */;
766: data_o = 32'h879abd39 /* 0x0bf8 */;
767: data_o = 32'he111b5f5 /* 0x0bfc */;
768: data_o = 32'ha5cd8082 /* 0x0c00 */;
769: data_o = 32'hed267171 /* 0x0c04 */;
770: data_o = 32'he54ee94a /* 0x0c08 */;
771: data_o = 32'hf0e2f8da /* 0x0c0c */;
772: data_o = 32'hfffff997 /* 0x0c10 */;
773: data_o = 32'hf122f506 /* 0x0c14 */;
774: data_o = 32'hfcd6e152 /* 0x0c18 */;
775: data_o = 32'hece6f4de /* 0x0c1c */;
776: data_o = 32'he4eee8ea /* 0x0c20 */;
777: data_o = 32'h84b2892e /* 0x0c24 */;
778: data_o = 32'h8c3a8b36 /* 0x0c28 */;
779: data_o = 32'h65898993 /* 0x0c2c */;
780: data_o = 32'h89aac191 /* 0x0c30 */;
781: data_o = 32'h000b4503 /* 0x0c34 */;
782: data_o = 32'h01634b81 /* 0x0c38 */;
783: data_o = 32'h67c15205 /* 0x0c3c */;
784: data_o = 32'h6aa517fd /* 0x0c40 */;
785: data_o = 32'h8793f83e /* 0x0c44 */;
786: data_o = 32'hec3e041a /* 0x0c48 */;
787: data_o = 32'h87936785 /* 0x0c4c */;
788: data_o = 32'h0a138007 /* 0x0c50 */;
789: data_o = 32'hf43e0250 /* 0x0c54 */;
790: data_o = 32'h865ea811 /* 0x0c58 */;
791: data_o = 32'h85ca86a6 /* 0x0c5c */;
792: data_o = 32'h99820b85 /* 0x0c60 */;
793: data_o = 32'h000b4503 /* 0x0c64 */;
794: data_o = 32'h12050263 /* 0x0c68 */;
795: data_o = 32'h16e30b05 /* 0x0c6c */;
796: data_o = 32'h4801ff45 /* 0x0c70 */;
797: data_o = 32'h45034641 /* 0x0c74 */;
798: data_o = 32'h0693000b /* 0x0c78 */;
799: data_o = 32'h079b001b /* 0x0c7c */;
800: data_o = 32'hf793fe05 /* 0x0c80 */;
801: data_o = 32'h69630ff7 /* 0x0c84 */;
802: data_o = 32'h871300f6 /* 0x0c88 */;
803: data_o = 32'h078adb81 /* 0x0c8c */;
804: data_o = 32'h439c97ba /* 0x0c90 */;
805: data_o = 32'h878297ba /* 0x0c94 */;
806: data_o = 32'hfd05079b /* 0x0c98 */;
807: data_o = 32'h0ff7f793 /* 0x0c9c */;
808: data_o = 32'h73634725 /* 0x0ca0 */;
809: data_o = 32'h071314f7 /* 0x0ca4 */;
810: data_o = 32'h4a8102a0 /* 0x0ca8 */;
811: data_o = 32'h16e50463 /* 0x0cac */;
812: data_o = 32'h02e00713 /* 0x0cb0 */;
813: data_o = 32'h06634401 /* 0x0cb4 */;
814: data_o = 32'h071b10e5 /* 0x0cb8 */;
815: data_o = 32'h7713f985 /* 0x0cbc */;
816: data_o = 32'h46490ff7 /* 0x0cc0 */;
817: data_o = 32'h00e66e63 /* 0x0cc4 */;
818: data_o = 32'hdfc18613 /* 0x0cc8 */;
819: data_o = 32'h9732070a /* 0x0ccc */;
820: data_o = 32'h97324318 /* 0x0cd0 */;
821: data_o = 32'h45038702 /* 0x0cd4 */;
822: data_o = 32'h6813001b /* 0x0cd8 */;
823: data_o = 32'h06851008 /* 0x0cdc */;
824: data_o = 32'h06700713 /* 0x0ce0 */;
825: data_o = 32'h69638b36 /* 0x0ce4 */;
826: data_o = 32'h071304a7 /* 0x0ce8 */;
827: data_o = 32'h76e30240 /* 0x0cec */;
828: data_o = 32'h071bf6a7 /* 0x0cf0 */;
829: data_o = 32'h7713fdb5 /* 0x0cf4 */;
830: data_o = 32'h06930ff7 /* 0x0cf8 */;
831: data_o = 32'heee30420 /* 0x0cfc */;
832: data_o = 32'h8693f4e6 /* 0x0d00 */;
833: data_o = 32'h070ae481 /* 0x0d04 */;
834: data_o = 32'h43189736 /* 0x0d08 */;
835: data_o = 32'h87029736 /* 0x0d0c */;
836: data_o = 32'h00186813 /* 0x0d10 */;
837: data_o = 32'hb7858b36 /* 0x0d14 */;
838: data_o = 32'h00286813 /* 0x0d18 */;
839: data_o = 32'hbfa18b36 /* 0x0d1c */;
840: data_o = 32'h00486813 /* 0x0d20 */;
841: data_o = 32'hbf818b36 /* 0x0d24 */;
842: data_o = 32'h01086813 /* 0x0d28 */;
843: data_o = 32'hb7a18b36 /* 0x0d2c */;
844: data_o = 32'h00886813 /* 0x0d30 */;
845: data_o = 32'hb7818b36 /* 0x0d34 */;
846: data_o = 32'hf975071b /* 0x0d38 */;
847: data_o = 32'h0ff77713 /* 0x0d3c */;
848: data_o = 32'hece346bd /* 0x0d40 */;
849: data_o = 32'h67e2f0e6 /* 0x0d44 */;
850: data_o = 32'h96b34685 /* 0x0d48 */;
851: data_o = 32'h8efd00e6 /* 0x0d4c */;
852: data_o = 32'h32069963 /* 0x0d50 */;
853: data_o = 32'h086346a9 /* 0x0d54 */;
854: data_o = 32'h479d18d7 /* 0x0d58 */;
855: data_o = 32'heef71fe3 /* 0x0d5c */;
856: data_o = 32'h000c3703 /* 0x0d60 */;
857: data_o = 32'h02186793 /* 0x0d64 */;
858: data_o = 32'h47c1e43e /* 0x0d68 */;
859: data_o = 32'he03e865e /* 0x0d6c */;
860: data_o = 32'h484188a2 /* 0x0d70 */;
861: data_o = 32'h86a64781 /* 0x0d74 */;
862: data_o = 32'h854e85ca /* 0x0d78 */;
863: data_o = 32'hdb2ff0ef /* 0x0d7c */;
864: data_o = 32'h45038baa /* 0x0d80 */;
865: data_o = 32'h0c21000b /* 0x0d84 */;
866: data_o = 32'hee0512e3 /* 0x0d88 */;
867: data_o = 32'h000b841b /* 0x0d8c */;
868: data_o = 32'h009be463 /* 0x0d90 */;
869: data_o = 32'hfff48b93 /* 0x0d94 */;
870: data_o = 32'h865e86a6 /* 0x0d98 */;
871: data_o = 32'h450185ca /* 0x0d9c */;
872: data_o = 32'h70aa9982 /* 0x0da0 */;
873: data_o = 32'h740a8522 /* 0x0da4 */;
874: data_o = 32'h694a64ea /* 0x0da8 */;
875: data_o = 32'h6a0a69aa /* 0x0dac */;
876: data_o = 32'h7b467ae6 /* 0x0db0 */;
877: data_o = 32'h7c067ba6 /* 0x0db4 */;
878: data_o = 32'h6d466ce6 /* 0x0db8 */;
879: data_o = 32'h614d6da6 /* 0x0dbc */;
880: data_o = 32'h45038082 /* 0x0dc0 */;
881: data_o = 32'h45a5001b /* 0x0dc4 */;
882: data_o = 32'h071b8636 /* 0x0dc8 */;
883: data_o = 32'h7713fd05 /* 0x0dcc */;
884: data_o = 32'h68130ff7 /* 0x0dd0 */;
885: data_o = 32'hf9634008 /* 0x0dd4 */;
886: data_o = 32'h071318e5 /* 0x0dd8 */;
887: data_o = 32'h0b6302a0 /* 0x0ddc */;
888: data_o = 32'h8b361ae5 /* 0x0de0 */;
889: data_o = 32'hbdd10685 /* 0x0de4 */;
890: data_o = 32'h46254a81 /* 0x0de8 */;
891: data_o = 32'h002a971b /* 0x0dec */;
892: data_o = 32'h0157073b /* 0x0df0 */;
893: data_o = 32'h0017171b /* 0x0df4 */;
894: data_o = 32'hc5039f29 /* 0x0df8 */;
895: data_o = 32'h0a9b0006 /* 0x0dfc */;
896: data_o = 32'h8b36fd07 /* 0x0e00 */;
897: data_o = 32'hfd05071b /* 0x0e04 */;
898: data_o = 32'h0ff77713 /* 0x0e08 */;
899: data_o = 32'h7fe30685 /* 0x0e0c */;
900: data_o = 32'hbd79fce6 /* 0x0e10 */;
901: data_o = 32'h000c2703 /* 0x0e14 */;
902: data_o = 32'h0a9b0c21 /* 0x0e18 */;
903: data_o = 32'h47630007 /* 0x0e1c */;
904: data_o = 32'h45030007 /* 0x0e20 */;
905: data_o = 32'h8b36001b /* 0x0e24 */;
906: data_o = 32'hb5590685 /* 0x0e28 */;
907: data_o = 32'h001b4503 /* 0x0e2c */;
908: data_o = 32'h00286813 /* 0x0e30 */;
909: data_o = 32'h0abb8b36 /* 0x0e34 */;
910: data_o = 32'h068540e0 /* 0x0e38 */;
911: data_o = 32'h4503bd95 /* 0x0e3c */;
912: data_o = 32'h0713001b /* 0x0e40 */;
913: data_o = 32'h1ae306c0 /* 0x0e44 */;
914: data_o = 32'h4503e8e5 /* 0x0e48 */;
915: data_o = 32'h6813002b /* 0x0e4c */;
916: data_o = 32'h06933008 /* 0x0e50 */;
917: data_o = 32'hb569003b /* 0x0e54 */;
918: data_o = 32'h001b4503 /* 0x0e58 */;
919: data_o = 32'h06800713 /* 0x0e5c */;
920: data_o = 32'h2ee50363 /* 0x0e60 */;
921: data_o = 32'h08086813 /* 0x0e64 */;
922: data_o = 32'hbd9d0685 /* 0x0e68 */;
923: data_o = 32'h04600713 /* 0x0e6c */;
924: data_o = 32'h20e50663 /* 0x0e70 */;
925: data_o = 32'h000c3507 /* 0x0e74 */;
926: data_o = 32'h87d6865e /* 0x0e78 */;
927: data_o = 32'h86a68722 /* 0x0e7c */;
928: data_o = 32'h854e85ca /* 0x0e80 */;
929: data_o = 32'ha5dff0ef /* 0x0e84 */;
930: data_o = 32'h8baa0c21 /* 0x0e88 */;
931: data_o = 32'h7413bbe1 /* 0x0e8c */;
932: data_o = 32'h0c930028 /* 0x0e90 */;
933: data_o = 32'h0363008c /* 0x0e94 */;
934: data_o = 32'h45033204 /* 0x0e98 */;
935: data_o = 32'h86a6000c /* 0x0e9c */;
936: data_o = 32'h85ca865e /* 0x0ea0 */;
937: data_o = 32'h47059982 /* 0x0ea4 */;
938: data_o = 32'h001b8413 /* 0x0ea8 */;
939: data_o = 32'h3b577263 /* 0x0eac */;
940: data_o = 32'hffea879b /* 0x0eb0 */;
941: data_o = 32'h8e131782 /* 0x0eb4 */;
942: data_o = 32'h9381002b /* 0x0eb8 */;
943: data_o = 32'h00fe0bb3 /* 0x0ebc */;
944: data_o = 32'h86a68622 /* 0x0ec0 */;
945: data_o = 32'h85ca0405 /* 0x0ec4 */;
946: data_o = 32'h02000513 /* 0x0ec8 */;
947: data_o = 32'h99e39982 /* 0x0ecc */;
948: data_o = 32'h8c66fe8b /* 0x0ed0 */;
949: data_o = 32'h865ebb41 /* 0x0ed4 */;
950: data_o = 32'h85ca86a6 /* 0x0ed8 */;
951: data_o = 32'h02500513 /* 0x0edc */;
952: data_o = 32'h99820b85 /* 0x0ee0 */;
953: data_o = 32'h3d03b341 /* 0x0ee4 */;
954: data_o = 32'h0793000c /* 0x0ee8 */;
955: data_o = 32'hfc3e008c /* 0x0eec */;
956: data_o = 32'h000d4603 /* 0x0ef0 */;
957: data_o = 32'hec558532 /* 0x0ef4 */;
958: data_o = 32'h05635cf9 /* 0x0ef8 */;
959: data_o = 32'h0c853a06 /* 0x0efc */;
960: data_o = 32'h876a9cea /* 0x0f00 */;
961: data_o = 32'h8763a019 /* 0x0f04 */;
962: data_o = 32'h468324ec /* 0x0f08 */;
963: data_o = 32'h07050017 /* 0x0f0c */;
964: data_o = 32'h07bbfafd /* 0x0f10 */;
965: data_o = 32'hf03e41a7 /* 0x0f14 */;
966: data_o = 32'h40087d93 /* 0x0f18 */;
967: data_o = 32'h000d8a63 /* 0x0f1c */;
968: data_o = 32'h87227782 /* 0x0f20 */;
969: data_o = 32'h0087f363 /* 0x0f24 */;
970: data_o = 32'h079b873e /* 0x0f28 */;
971: data_o = 32'hf03e0007 /* 0x0f2c */;
972: data_o = 32'h00287c13 /* 0x0f30 */;
973: data_o = 32'h220c0e63 /* 0x0f34 */;
974: data_o = 32'h1a060d63 /* 0x0f38 */;
975: data_o = 32'h8763865e /* 0x0f3c */;
976: data_o = 32'h071b000d /* 0x0f40 */;
977: data_o = 32'h0263fff4 /* 0x0f44 */;
978: data_o = 32'h843a1a04 /* 0x0f48 */;
979: data_o = 32'h85ca86a6 /* 0x0f4c */;
980: data_o = 32'h00160c93 /* 0x0f50 */;
981: data_o = 32'h87339982 /* 0x0f54 */;
982: data_o = 32'h976a417c /* 0x0f58 */;
983: data_o = 32'h00074503 /* 0x0f5c */;
984: data_o = 32'h18050663 /* 0x0f60 */;
985: data_o = 32'hbfe18666 /* 0x0f64 */;
986: data_o = 32'h171b46a5 /* 0x0f68 */;
987: data_o = 32'h9f210024 /* 0x0f6c */;
988: data_o = 32'h171b0605 /* 0x0f70 */;
989: data_o = 32'h9f290017 /* 0x0f74 */;
990: data_o = 32'h00064503 /* 0x0f78 */;
991: data_o = 32'hfd07041b /* 0x0f7c */;
992: data_o = 32'hfd05071b /* 0x0f80 */;
993: data_o = 32'h0ff77713 /* 0x0f84 */;
994: data_o = 32'hfee6f1e3 /* 0x0f88 */;
995: data_o = 32'h06938b32 /* 0x0f8c */;
996: data_o = 32'hb3250016 /* 0x0f90 */;
997: data_o = 32'h000c2703 /* 0x0f94 */;
998: data_o = 32'h002b4503 /* 0x0f98 */;
999: data_o = 32'h48930b09 /* 0x0f9c */;
1000: data_o = 32'hd893fff7 /* 0x0fa0 */;
1001: data_o = 32'hf43343f8 /* 0x0fa4 */;
1002: data_o = 32'h0c2100e8 /* 0x0fa8 */;
1003: data_o = 32'h001b0693 /* 0x0fac */;
1004: data_o = 32'h1c93b329 /* 0x0fb0 */;
1005: data_o = 32'hdc930204 /* 0x0fb4 */;
1006: data_o = 32'h0563020c /* 0x0fb8 */;
1007: data_o = 32'h1cfd2e06 /* 0x0fbc */;
1008: data_o = 32'h7713bf3d /* 0x0fc0 */;
1009: data_o = 32'h06930df5 /* 0x0fc4 */;
1010: data_o = 32'h02630470 /* 0x0fc8 */;
1011: data_o = 32'h071316d7 /* 0x0fcc */;
1012: data_o = 32'h07630450 /* 0x0fd0 */;
1013: data_o = 32'h350716e5 /* 0x0fd4 */;
1014: data_o = 32'h865e000c /* 0x0fd8 */;
1015: data_o = 32'h872287d6 /* 0x0fdc */;
1016: data_o = 32'h85ca86a6 /* 0x0fe0 */;
1017: data_o = 32'hf0ef854e /* 0x0fe4 */;
1018: data_o = 32'h0c21e14f /* 0x0fe8 */;
1019: data_o = 32'hb99d8baa /* 0x0fec */;
1020: data_o = 32'h06200713 /* 0x0ff0 */;
1021: data_o = 32'h20e50563 /* 0x0ff4 */;
1022: data_o = 32'h06f00713 /* 0x0ff8 */;
1023: data_o = 32'h20e50b63 /* 0x0ffc */;
1024: data_o = 32'h05800713 /* 0x1000 */;
1025: data_o = 32'h16e50063 /* 0x1004 */;
1026: data_o = 32'hfef87813 /* 0x1008 */;
1027: data_o = 32'h771346a9 /* 0x100c */;
1028: data_o = 32'h06134008 /* 0x1010 */;
1029: data_o = 32'h85ba0690 /* 0x1014 */;
1030: data_o = 32'h1ec51663 /* 0x1018 */;
1031: data_o = 32'h0c93edad /* 0x101c */;
1032: data_o = 32'h7713008c /* 0x1020 */;
1033: data_o = 32'h86422008 /* 0x1024 */;
1034: data_o = 32'h1e071763 /* 0x1028 */;
1035: data_o = 32'h10087713 /* 0x102c */;
1036: data_o = 32'h22071c63 /* 0x1030 */;
1037: data_o = 32'h04067713 /* 0x1034 */;
1038: data_o = 32'h000c2583 /* 0x1038 */;
1039: data_o = 32'h20071363 /* 0x103c */;
1040: data_o = 32'h08067613 /* 0x1040 */;
1041: data_o = 32'h24060a63 /* 0x1044 */;
1042: data_o = 32'h0105959b /* 0x1048 */;
1043: data_o = 32'h4105d59b /* 0x104c */;
1044: data_o = 32'h40f5d61b /* 0x1050 */;
1045: data_o = 32'h00c5c733 /* 0x1054 */;
1046: data_o = 32'h17429f11 /* 0x1058 */;
1047: data_o = 32'he4429341 /* 0x105c */;
1048: data_o = 32'he056865e /* 0x1060 */;
1049: data_o = 32'h883688a2 /* 0x1064 */;
1050: data_o = 32'h01f5d79b /* 0x1068 */;
1051: data_o = 32'h85ca86a6 /* 0x106c */;
1052: data_o = 32'hf0ef854e /* 0x1070 */;
1053: data_o = 32'h8baaabcf /* 0x1074 */;
1054: data_o = 32'hb6ed8c66 /* 0x1078 */;
1055: data_o = 32'h02086813 /* 0x107c */;
1056: data_o = 32'h0713bbd5 /* 0x1080 */;
1057: data_o = 32'h15e30780 /* 0x1084 */;
1058: data_o = 32'h46c1f6e5 /* 0x1088 */;
1059: data_o = 32'h40087713 /* 0x108c */;
1060: data_o = 32'hff387813 /* 0x1090 */;
1061: data_o = 32'h7813c701 /* 0x1094 */;
1062: data_o = 32'h2801ffe8 /* 0x1098 */;
1063: data_o = 32'h06900713 /* 0x109c */;
1064: data_o = 32'h008c0c93 /* 0x10a0 */;
1065: data_o = 32'hf6e50fe3 /* 0x10a4 */;
1066: data_o = 32'h06400713 /* 0x10a8 */;
1067: data_o = 32'hf6e50be3 /* 0x10ac */;
1068: data_o = 32'h20087713 /* 0x10b0 */;
1069: data_o = 32'h10638642 /* 0x10b4 */;
1070: data_o = 32'h77131a07 /* 0x10b8 */;
1071: data_o = 32'h14631008 /* 0x10bc */;
1072: data_o = 32'h77131c07 /* 0x10c0 */;
1073: data_o = 32'h12630406 /* 0x10c4 */;
1074: data_o = 32'h76131807 /* 0x10c8 */;
1075: data_o = 32'h27030806 /* 0x10cc */;
1076: data_o = 32'hc219000c /* 0x10d0 */;
1077: data_o = 32'h8f7d77c2 /* 0x10d4 */;
1078: data_o = 32'he4421702 /* 0x10d8 */;
1079: data_o = 32'he056865e /* 0x10dc */;
1080: data_o = 32'h883688a2 /* 0x10e0 */;
1081: data_o = 32'h93014781 /* 0x10e4 */;
1082: data_o = 32'h8cb2b751 /* 0x10e8 */;
1083: data_o = 32'h020c0e63 /* 0x10ec */;
1084: data_o = 32'h77828be6 /* 0x10f0 */;
1085: data_o = 32'h0d57f263 /* 0x10f4 */;
1086: data_o = 32'hfffa881b /* 0x10f8 */;
1087: data_o = 32'h40f8083b /* 0x10fc */;
1088: data_o = 32'h58131802 /* 0x1100 */;
1089: data_o = 32'h87130208 /* 0x1104 */;
1090: data_o = 32'h0cb3001b /* 0x1108 */;
1091: data_o = 32'ha01100e8 /* 0x110c */;
1092: data_o = 32'h865e0705 /* 0x1110 */;
1093: data_o = 32'h86a6f03a /* 0x1114 */;
1094: data_o = 32'h051385ca /* 0x1118 */;
1095: data_o = 32'h8bba0200 /* 0x111c */;
1096: data_o = 32'h77029982 /* 0x1120 */;
1097: data_o = 32'hfeec96e3 /* 0x1124 */;
1098: data_o = 32'h8be67c62 /* 0x1128 */;
1099: data_o = 32'h77a2be25 /* 0x112c */;
1100: data_o = 32'h0fd57513 /* 0x1130 */;
1101: data_o = 32'h04500713 /* 0x1134 */;
1102: data_o = 32'h00f86833 /* 0x1138 */;
1103: data_o = 32'he8e51de3 /* 0x113c */;
1104: data_o = 32'h02086813 /* 0x1140 */;
1105: data_o = 32'h4503bd49 /* 0x1144 */;
1106: data_o = 32'h6813002b /* 0x1148 */;
1107: data_o = 32'h06930c08 /* 0x114c */;
1108: data_o = 32'hb679003b /* 0x1150 */;
1109: data_o = 32'h41ac87bb /* 0x1154 */;
1110: data_o = 32'hbb7df03e /* 0x1158 */;
1111: data_o = 32'hede34401 /* 0x115c */;
1112: data_o = 32'hb90dc29b /* 0x1160 */;
1113: data_o = 32'h02086813 /* 0x1164 */;
1114: data_o = 32'h771346c1 /* 0x1168 */;
1115: data_o = 32'hb70d4008 /* 0x116c */;
1116: data_o = 32'h871b7782 /* 0x1170 */;
1117: data_o = 32'hfb630017 /* 0x1174 */;
1118: data_o = 32'h871b1357 /* 0x1178 */;
1119: data_o = 32'h0cbbfffa /* 0x117c */;
1120: data_o = 32'h1c8240f7 /* 0x1180 */;
1121: data_o = 32'h020cdc93 /* 0x1184 */;
1122: data_o = 32'h001b8713 /* 0x1188 */;
1123: data_o = 32'ha0199cba /* 0x118c */;
1124: data_o = 32'h07057702 /* 0x1190 */;
1125: data_o = 32'h86a6865e /* 0x1194 */;
1126: data_o = 32'hf03a8bba /* 0x1198 */;
1127: data_o = 32'h051385ca /* 0x119c */;
1128: data_o = 32'h99820200 /* 0x11a0 */;
1129: data_o = 32'hff7c96e3 /* 0x11a4 */;
1130: data_o = 32'h000d4603 /* 0x11a8 */;
1131: data_o = 32'h001a879b /* 0x11ac */;
1132: data_o = 32'h8532f03e /* 0x11b0 */;
1133: data_o = 32'hd80614e3 /* 0x11b4 */;
1134: data_o = 32'hb7bd8cde /* 0x11b8 */;
1135: data_o = 32'h75634705 /* 0x11bc */;
1136: data_o = 32'h841b0f57 /* 0x11c0 */;
1137: data_o = 32'h1402ffea /* 0x11c4 */;
1138: data_o = 32'h001b8713 /* 0x11c8 */;
1139: data_o = 32'h943a9001 /* 0x11cc */;
1140: data_o = 32'h0705a011 /* 0x11d0 */;
1141: data_o = 32'hf03a865e /* 0x11d4 */;
1142: data_o = 32'h85ca86a6 /* 0x11d8 */;
1143: data_o = 32'h02000513 /* 0x11dc */;
1144: data_o = 32'h99828bba /* 0x11e0 */;
1145: data_o = 32'h16e37702 /* 0x11e4 */;
1146: data_o = 32'h4503fe87 /* 0x11e8 */;
1147: data_o = 32'h86a6000c /* 0x11ec */;
1148: data_o = 32'h85ca8622 /* 0x11f0 */;
1149: data_o = 32'h00140b93 /* 0x11f4 */;
1150: data_o = 32'h8c669982 /* 0x11f8 */;
1151: data_o = 32'h4689b4a5 /* 0x11fc */;
1152: data_o = 32'h40087713 /* 0x1200 */;
1153: data_o = 32'h06400613 /* 0x1204 */;
1154: data_o = 32'he8c514e3 /* 0x1208 */;
1155: data_o = 32'he00709e3 /* 0x120c */;
1156: data_o = 32'h46a1b559 /* 0x1210 */;
1157: data_o = 32'h3783bbed /* 0x1214 */;
1158: data_o = 32'h865e000c /* 0x1218 */;
1159: data_o = 32'hd713e442 /* 0x121c */;
1160: data_o = 32'h453343f7 /* 0x1220 */;
1161: data_o = 32'he05600f7 /* 0x1224 */;
1162: data_o = 32'h883688a2 /* 0x1228 */;
1163: data_o = 32'h073393fd /* 0x122c */;
1164: data_o = 32'h86a640e5 /* 0x1230 */;
1165: data_o = 32'h854e85ca /* 0x1234 */;
1166: data_o = 32'h8f6ff0ef /* 0x1238 */;
1167: data_o = 32'h8c668baa /* 0x123c */;
1168: data_o = 32'hf593b415 /* 0x1240 */;
1169: data_o = 32'h872e0ff5 /* 0x1244 */;
1170: data_o = 32'h4703bd19 /* 0x1248 */;
1171: data_o = 32'hb569000c /* 0x124c */;
1172: data_o = 32'h8c668ba2 /* 0x1250 */;
1173: data_o = 32'h3703bc01 /* 0x1254 */;
1174: data_o = 32'h865e000c /* 0x1258 */;
1175: data_o = 32'he056e442 /* 0x125c */;
1176: data_o = 32'h883688a2 /* 0x1260 */;
1177: data_o = 32'hb7f14781 /* 0x1264 */;
1178: data_o = 32'h000c3783 /* 0x1268 */;
1179: data_o = 32'he442865e /* 0x126c */;
1180: data_o = 32'h43f7d713 /* 0x1270 */;
1181: data_o = 32'h00f74533 /* 0x1274 */;
1182: data_o = 32'h88a2e056 /* 0x1278 */;
1183: data_o = 32'h93fd8836 /* 0x127c */;
1184: data_o = 32'h40e50733 /* 0x1280 */;
1185: data_o = 32'h3703b3e5 /* 0x1284 */;
1186: data_o = 32'h865e000c /* 0x1288 */;
1187: data_o = 32'he056e442 /* 0x128c */;
1188: data_o = 32'h883688a2 /* 0x1290 */;
1189: data_o = 32'hbbd94781 /* 0x1294 */;
1190: data_o = 32'h41f5d61b /* 0x1298 */;
1191: data_o = 32'h00c5c733 /* 0x129c */;
1192: data_o = 32'hbb759f11 /* 0x12a0 */;
1193: data_o = 32'hb98df002 /* 0x12a4 */;
1194: data_o = 32'hb781845e /* 0x12a8 */;
1195: data_o = 32'hb711f03a /* 0x12ac */;
1196: data_o = 32'h0313711d /* 0x12b0 */;
1197: data_o = 32'h8e2a0281 /* 0x12b4 */;
1198: data_o = 32'h00000517 /* 0x12b8 */;
1199: data_o = 32'hf832f42e /* 0x12bc */;
1200: data_o = 32'he0bafc36 /* 0x12c0 */;
1201: data_o = 32'h86f2858a /* 0x12c4 */;
1202: data_o = 32'h567d871a /* 0x12c8 */;
1203: data_o = 32'h94650513 /* 0x12cc */;
1204: data_o = 32'he4beec06 /* 0x12d0 */;
1205: data_o = 32'hecc6e8c2 /* 0x12d4 */;
1206: data_o = 32'hf0efe41a /* 0x12d8 */;
1207: data_o = 32'h60e292bf /* 0x12dc */;
1208: data_o = 32'h80826125 /* 0x12e0 */;
1209: data_o = 32'h01002717 /* 0x12e4 */;
1210: data_o = 32'hd1c70713 /* 0x12e8 */;
1211: data_o = 32'h47830751 /* 0x12ec */;
1212: data_o = 32'hf7930007 /* 0x12f0 */;
1213: data_o = 32'hdfe50207 /* 0x12f4 */;
1214: data_o = 32'h01002797 /* 0x12f8 */;
1215: data_o = 32'hd0a78423 /* 0x12fc */;
1216: data_o = 32'h959b8082 /* 0x1300 */;
1217: data_o = 32'h553b0045 /* 0x1304 */;
1218: data_o = 32'h279702b5 /* 0x1308 */;
1219: data_o = 32'h87930100 /* 0x130c */;
1220: data_o = 32'h8223cf67 /* 0x1310 */;
1221: data_o = 32'h07130007 /* 0x1314 */;
1222: data_o = 32'h8623f800 /* 0x1318 */;
1223: data_o = 32'h271700e7 /* 0x131c */;
1224: data_o = 32'h76930100 /* 0x1320 */;
1225: data_o = 32'h551b0ff5 /* 0x1324 */;
1226: data_o = 32'h01230085 /* 0x1328 */;
1227: data_o = 32'h7513ced7 /* 0x132c */;
1228: data_o = 32'h82230ff5 /* 0x1330 */;
1229: data_o = 32'h470d00a7 /* 0x1334 */;
1230: data_o = 32'h00e78623 /* 0x1338 */;
1231: data_o = 32'hfc700713 /* 0x133c */;
1232: data_o = 32'h00e78423 /* 0x1340 */;
1233: data_o = 32'h02000713 /* 0x1344 */;
1234: data_o = 32'h00e78823 /* 0x1348 */;
1235: data_o = 32'h78938082 /* 0x134c */;
1236: data_o = 32'h48010026 /* 0x1350 */;
1237: data_o = 32'h95638a05 /* 0x1354 */;
1238: data_o = 32'h491c0008 /* 0x1358 */;
1239: data_o = 32'hcba94805 /* 0x135c */;
1240: data_o = 32'h611cc611 /* 0x1360 */;
1241: data_o = 32'hc9184705 /* 0x1364 */;
1242: data_o = 32'h0207a023 /* 0x1368 */;
1243: data_o = 32'h6789c5a9 /* 0x136c */;
1244: data_o = 32'h87936114 /* 0x1370 */;
1245: data_o = 32'ha0117107 /* 0x1374 */;
1246: data_o = 32'h4ad8c3a5 /* 0x1378 */;
1247: data_o = 32'h5de337fd /* 0x137c */;
1248: data_o = 32'hf793fe07 /* 0x1380 */;
1249: data_o = 32'h37fd1ff5 /* 0x1384 */;
1250: data_o = 32'h0098181b /* 0x1388 */;
1251: data_o = 32'h0107e7b3 /* 0x138c */;
1252: data_o = 32'hd2dc2781 /* 0x1390 */;
1253: data_o = 32'h40000737 /* 0x1394 */;
1254: data_o = 32'h8ff94adc /* 0x1398 */;
1255: data_o = 32'hffed2781 /* 0x139c */;
1256: data_o = 32'h00088663 /* 0x13a0 */;
1257: data_o = 32'h00052823 /* 0x13a4 */;
1258: data_o = 32'hd29c4785 /* 0x13a8 */;
1259: data_o = 32'h80824501 /* 0x13ac */;
1260: data_o = 32'h0006081b /* 0x13b0 */;
1261: data_o = 32'h8be3b775 /* 0x13b4 */;
1262: data_o = 32'h1141fe08 /* 0x13b8 */;
1263: data_o = 32'he406611c /* 0x13bc */;
1264: data_o = 32'h00052823 /* 0x13c0 */;
1265: data_o = 32'hd3984705 /* 0x13c4 */;
1266: data_o = 32'h45a14601 /* 0x13c8 */;
1267: data_o = 32'hf83ff0ef /* 0x13cc */;
1268: data_o = 32'h450160a2 /* 0x13d0 */;
1269: data_o = 32'h80820141 /* 0x13d4 */;
1270: data_o = 32'h8082557d /* 0x13d8 */;
1271: data_o = 32'h87ae88aa /* 0x13dc */;
1272: data_o = 32'h1a060c63 /* 0x13e0 */;
1273: data_o = 32'h0077f513 /* 0x13e4 */;
1274: data_o = 32'h40051263 /* 0x13e8 */;
1275: data_o = 32'h73137139 /* 0x13ec */;
1276: data_o = 32'hfc060027 /* 0x13f0 */;
1277: data_o = 32'hf426f822 /* 0x13f4 */;
1278: data_o = 32'hec4ef04a /* 0x13f8 */;
1279: data_o = 32'h42818b05 /* 0x13fc */;
1280: data_o = 32'h00031863 /* 0x1400 */;
1281: data_o = 32'h0108a583 /* 0x1404 */;
1282: data_o = 32'he1994285 /* 0x1408 */;
1283: data_o = 32'h0007029b /* 0x140c */;
1284: data_o = 32'h10071163 /* 0x1410 */;
1285: data_o = 32'h10078863 /* 0x1414 */;
1286: data_o = 32'h00c03733 /* 0x1418 */;
1287: data_o = 32'h00d035b3 /* 0x141c */;
1288: data_o = 32'h0017171b /* 0x1420 */;
1289: data_o = 32'h559b8f4d /* 0x1424 */;
1290: data_o = 32'h1f1b0017 /* 0x1428 */;
1291: data_o = 32'hf5930187 /* 0x142c */;
1292: data_o = 32'hb8030ff5 /* 0x1430 */;
1293: data_o = 32'hde9b0008 /* 0x1434 */;
1294: data_o = 32'hde1b0037 /* 0x1438 */;
1295: data_o = 32'h5f1b0037 /* 0x143c */;
1296: data_o = 32'hc5b5418f /* 0x1440 */;
1297: data_o = 32'h0057d71b /* 0x1444 */;
1298: data_o = 32'h0057d59b /* 0x1448 */;
1299: data_o = 32'h9f93cf39 /* 0x144c */;
1300: data_o = 32'hdf930205 /* 0x1450 */;
1301: data_o = 32'h87b201ef /* 0x1454 */;
1302: data_o = 32'h79139fb2 /* 0x1458 */;
1303: data_o = 32'h79930036 /* 0x145c */;
1304: data_o = 32'ha03d0016 /* 0x1460 */;
1305: data_o = 32'h0037c703 /* 0x1464 */;
1306: data_o = 32'h0007c483 /* 0x1468 */;
1307: data_o = 32'h0017c403 /* 0x146c */;
1308: data_o = 32'h0027c383 /* 0x1470 */;
1309: data_o = 32'h009105a3 /* 0x1474 */;
1310: data_o = 32'h00810523 /* 0x1478 */;
1311: data_o = 32'h007104a3 /* 0x147c */;
1312: data_o = 32'h00e10423 /* 0x1480 */;
1313: data_o = 32'h07914722 /* 0x1484 */;
1314: data_o = 32'h02e82423 /* 0x1488 */;
1315: data_o = 32'h01f78d63 /* 0x148c */;
1316: data_o = 32'h0148c703 /* 0x1490 */;
1317: data_o = 32'h1363db61 /* 0x1494 */;
1318: data_o = 32'h43980c09 /* 0x1498 */;
1319: data_o = 32'h24230791 /* 0x149c */;
1320: data_o = 32'h97e302e8 /* 0x14a0 */;
1321: data_o = 32'h971bfff7 /* 0x14a4 */;
1322: data_o = 32'h6b630025 /* 0x14a8 */;
1323: data_o = 32'hf6130fc7 /* 0x14ac */;
1324: data_o = 32'h179b1ffe /* 0x14b0 */;
1325: data_o = 32'h367d00cf /* 0x14b4 */;
1326: data_o = 32'h929b8e5d /* 0x14b8 */;
1327: data_o = 32'h66330092 /* 0x14bc */;
1328: data_o = 32'h67890056 /* 0x14c0 */;
1329: data_o = 32'h87932601 /* 0x14c4 */;
1330: data_o = 32'ha0197107 /* 0x14c8 */;
1331: data_o = 32'h10078963 /* 0x14cc */;
1332: data_o = 32'h01482703 /* 0x14d0 */;
1333: data_o = 32'h5be337fd /* 0x14d4 */;
1334: data_o = 32'h2223fe07 /* 0x14d8 */;
1335: data_o = 32'ha78302c8 /* 0x14dc */;
1336: data_o = 32'hcf910108 /* 0x14e0 */;
1337: data_o = 32'h000f0d63 /* 0x14e4 */;
1338: data_o = 32'h001f7713 /* 0x14e8 */;
1339: data_o = 32'h12071b63 /* 0x14ec */;
1340: data_o = 32'h40000737 /* 0x14f0 */;
1341: data_o = 32'h01482783 /* 0x14f4 */;
1342: data_o = 32'h27818ff9 /* 0x14f8 */;
1343: data_o = 32'h1163ffe5 /* 0x14fc */;
1344: data_o = 32'h70e20403 /* 0x1500 */;
1345: data_o = 32'h74a27442 /* 0x1504 */;
1346: data_o = 32'h69e27902 /* 0x1508 */;
1347: data_o = 32'h61214501 /* 0x150c */;
1348: data_o = 32'hb7038082 /* 0x1510 */;
1349: data_o = 32'h45850008 /* 0x1514 */;
1350: data_o = 32'h00b8a823 /* 0x1518 */;
1351: data_o = 32'h02072023 /* 0x151c */;
1352: data_o = 32'hee079ce3 /* 0x1520 */;
1353: data_o = 32'hfc030fe3 /* 0x1524 */;
1354: data_o = 32'h0008b783 /* 0x1528 */;
1355: data_o = 32'h0008a823 /* 0x152c */;
1356: data_o = 32'hd3984705 /* 0x1530 */;
1357: data_o = 32'h45a14601 /* 0x1534 */;
1358: data_o = 32'hf0ef8546 /* 0x1538 */;
1359: data_o = 32'hb7d1e15f /* 0x153c */;
1360: data_o = 32'h0008b783 /* 0x1540 */;
1361: data_o = 32'h744270e2 /* 0x1544 */;
1362: data_o = 32'h0008a823 /* 0x1548 */;
1363: data_o = 32'hd3984705 /* 0x154c */;
1364: data_o = 32'h790274a2 /* 0x1550 */;
1365: data_o = 32'h450169e2 /* 0x1554 */;
1366: data_o = 32'h80826121 /* 0x1558 */;
1367: data_o = 32'h00099c63 /* 0x155c */;
1368: data_o = 32'h0027d703 /* 0x1560 */;
1369: data_o = 32'h0007d383 /* 0x1564 */;
1370: data_o = 32'h00e11523 /* 0x1568 */;
1371: data_o = 32'h00711423 /* 0x156c */;
1372: data_o = 32'hbf114722 /* 0x1570 */;
1373: data_o = 32'h0037c703 /* 0x1574 */;
1374: data_o = 32'h0007c483 /* 0x1578 */;
1375: data_o = 32'h0017c403 /* 0x157c */;
1376: data_o = 32'h0027c383 /* 0x1580 */;
1377: data_o = 32'h00910423 /* 0x1584 */;
1378: data_o = 32'h008104a3 /* 0x1588 */;
1379: data_o = 32'h00710523 /* 0x158c */;
1380: data_o = 32'h00e105a3 /* 0x1590 */;
1381: data_o = 32'hbdc54722 /* 0x1594 */;
1382: data_o = 32'he40696e3 /* 0x1598 */;
1383: data_o = 32'hbb45863a /* 0x159c */;
1384: data_o = 32'h0148c783 /* 0x15a0 */;
1385: data_o = 32'h00e605b3 /* 0x15a4 */;
1386: data_o = 32'h0005cf83 /* 0x15a8 */;
1387: data_o = 32'h40ee85bb /* 0x15ac */;
1388: data_o = 32'h05a3ef9d /* 0x15b0 */;
1389: data_o = 32'h4f8501f1 /* 0x15b4 */;
1390: data_o = 32'h1cbffc63 /* 0x15b8 */;
1391: data_o = 32'h00e60fb3 /* 0x15bc */;
1392: data_o = 32'h001fc383 /* 0x15c0 */;
1393: data_o = 32'h05234f8d /* 0x15c4 */;
1394: data_o = 32'h95630071 /* 0x15c8 */;
1395: data_o = 32'h973201f5 /* 0x15cc */;
1396: data_o = 32'h00274783 /* 0x15d0 */;
1397: data_o = 32'h00f104a3 /* 0x15d4 */;
1398: data_o = 32'h00010423 /* 0x15d8 */;
1399: data_o = 32'h70e2a83d /* 0x15dc */;
1400: data_o = 32'h74a27442 /* 0x15e0 */;
1401: data_o = 32'h69e27902 /* 0x15e4 */;
1402: data_o = 32'h6121557d /* 0x15e8 */;
1403: data_o = 32'h04238082 /* 0x15ec */;
1404: data_o = 32'h478501f1 /* 0x15f0 */;
1405: data_o = 32'h18b7fa63 /* 0x15f4 */;
1406: data_o = 32'h00e607b3 /* 0x15f8 */;
1407: data_o = 32'h0017c383 /* 0x15fc */;
1408: data_o = 32'h47814f8d /* 0x1600 */;
1409: data_o = 32'h007104a3 /* 0x1604 */;
1410: data_o = 32'h01f59563 /* 0x1608 */;
1411: data_o = 32'h4783963a /* 0x160c */;
1412: data_o = 32'h05230026 /* 0x1610 */;
1413: data_o = 32'h05a300f1 /* 0x1614 */;
1414: data_o = 32'h47a20001 /* 0x1618 */;
1415: data_o = 32'h02f82423 /* 0x161c */;
1416: data_o = 32'h0637b579 /* 0x1620 */;
1417: data_o = 32'h4f0d4000 /* 0x1624 */;
1418: data_o = 32'h27834f85 /* 0x1628 */;
1419: data_o = 32'hd71b0148 /* 0x162c */;
1420: data_o = 32'h77130087 /* 0x1630 */;
1421: data_o = 32'h27810ff7 /* 0x1634 */;
1422: data_o = 32'h2783cb21 /* 0x1638 */;
1423: data_o = 32'h76e30288 /* 0x163c */;
1424: data_o = 32'h073bffc5 /* 0x1640 */;
1425: data_o = 32'hc58340ae /* 0x1644 */;
1426: data_o = 32'h27810148 /* 0x1648 */;
1427: data_o = 32'h0aef7663 /* 0x164c */;
1428: data_o = 32'h10059163 /* 0x1650 */;
1429: data_o = 32'h0087d81b /* 0x1654 */;
1430: data_o = 32'h0107d59b /* 0x1658 */;
1431: data_o = 32'h0187d71b /* 0x165c */;
1432: data_o = 32'h00f681a3 /* 0x1660 */;
1433: data_o = 32'h01068123 /* 0x1664 */;
1434: data_o = 32'h00b680a3 /* 0x1668 */;
1435: data_o = 32'h00e68023 /* 0x166c */;
1436: data_o = 32'h0008b803 /* 0x1670 */;
1437: data_o = 32'h01482783 /* 0x1674 */;
1438: data_o = 32'h25110691 /* 0x1678 */;
1439: data_o = 32'h0087d71b /* 0x167c */;
1440: data_o = 32'h0ff77713 /* 0x1680 */;
1441: data_o = 32'hfb552781 /* 0x1684 */;
1442: data_o = 32'h27818ff1 /* 0x1688 */;
1443: data_o = 32'h78e3ffd9 /* 0x168c */;
1444: data_o = 32'h6709e7c5 /* 0x1690 */;
1445: data_o = 32'h71070713 /* 0x1694 */;
1446: data_o = 32'hd331a011 /* 0x1698 */;
1447: data_o = 32'h01482783 /* 0x169c */;
1448: data_o = 32'hd79b377d /* 0x16a0 */;
1449: data_o = 32'hf7930087 /* 0x16a4 */;
1450: data_o = 32'hdbe50ff7 /* 0x16a8 */;
1451: data_o = 32'h02882783 /* 0x16ac */;
1452: data_o = 32'h0148c603 /* 0x16b0 */;
1453: data_o = 32'h0015071b /* 0x16b4 */;
1454: data_o = 32'hee6d2781 /* 0x16b8 */;
1455: data_o = 32'h0187d61b /* 0x16bc */;
1456: data_o = 32'h00c68023 /* 0x16c0 */;
1457: data_o = 32'he2ee0de3 /* 0x16c4 */;
1458: data_o = 32'h0107d71b /* 0x16c8 */;
1459: data_o = 32'h00e680a3 /* 0x16cc */;
1460: data_o = 32'h0025071b /* 0x16d0 */;
1461: data_o = 32'h00ee0863 /* 0x16d4 */;
1462: data_o = 32'h0087d71b /* 0x16d8 */;
1463: data_o = 32'h00e68123 /* 0x16dc */;
1464: data_o = 32'h0035071b /* 0x16e0 */;
1465: data_o = 32'h40ee873b /* 0x16e4 */;
1466: data_o = 32'h1ae34605 /* 0x16e8 */;
1467: data_o = 32'h81a3e0c7 /* 0x16ec */;
1468: data_o = 32'h08e300f6 /* 0x16f0 */;
1469: data_o = 32'hb5a9e003 /* 0x16f4 */;
1470: data_o = 32'h0015071b /* 0x16f8 */;
1471: data_o = 32'hd59be98d /* 0x16fc */;
1472: data_o = 32'h80230187 /* 0x1700 */;
1473: data_o = 32'h0b6300b6 /* 0x1704 */;
1474: data_o = 32'hd59b04ee /* 0x1708 */;
1475: data_o = 32'h071b0107 /* 0x170c */;
1476: data_o = 32'h80a30025 /* 0x1710 */;
1477: data_o = 32'h05bb00b6 /* 0x1714 */;
1478: data_o = 32'h986340ee /* 0x1718 */;
1479: data_o = 32'hd79b03f5 /* 0x171c */;
1480: data_o = 32'h81230087 /* 0x1720 */;
1481: data_o = 32'hb80300f6 /* 0x1724 */;
1482: data_o = 32'h250d0008 /* 0x1728 */;
1483: data_o = 32'h8023bdfd /* 0x172c */;
1484: data_o = 32'h056300f6 /* 0x1730 */;
1485: data_o = 32'hd59b02ee /* 0x1734 */;
1486: data_o = 32'h071b0087 /* 0x1738 */;
1487: data_o = 32'h80a30025 /* 0x173c */;
1488: data_o = 32'h05bb00b6 /* 0x1740 */;
1489: data_o = 32'h896340ee /* 0x1744 */;
1490: data_o = 32'hb80303f5 /* 0x1748 */;
1491: data_o = 32'h853a0008 /* 0x174c */;
1492: data_o = 32'hf713bde9 /* 0x1750 */;
1493: data_o = 32'he7190036 /* 0x1754 */;
1494: data_o = 32'hbf29c29c /* 0x1758 */;
1495: data_o = 32'h0008b803 /* 0x175c */;
1496: data_o = 32'hb5e18572 /* 0x1760 */;
1497: data_o = 32'h0016f713 /* 0x1764 */;
1498: data_o = 32'h0107d59b /* 0x1768 */;
1499: data_o = 32'h9023e70d /* 0x176c */;
1500: data_o = 32'h912300f6 /* 0x1770 */;
1501: data_o = 32'hbdfd00b6 /* 0x1774 */;
1502: data_o = 32'h0107d79b /* 0x1778 */;
1503: data_o = 32'h00f68123 /* 0x177c */;
1504: data_o = 32'h0008b803 /* 0x1780 */;
1505: data_o = 32'hb555250d /* 0x1784 */;
1506: data_o = 32'h000104a3 /* 0x1788 */;
1507: data_o = 32'hb5514781 /* 0x178c */;
1508: data_o = 32'h00010523 /* 0x1790 */;
1509: data_o = 32'hd81bb581 /* 0x1794 */;
1510: data_o = 32'hd71b0087 /* 0x1798 */;
1511: data_o = 32'h80230187 /* 0x179c */;
1512: data_o = 32'h80a300f6 /* 0x17a0 */;
1513: data_o = 32'h81230106 /* 0x17a4 */;
1514: data_o = 32'h81a300b6 /* 0x17a8 */;
1515: data_o = 32'hb80300e6 /* 0x17ac */;
1516: data_o = 32'hb5c90008 /* 0x17b0 */;
1517: data_o = 32'h00f68023 /* 0x17b4 */;
1518: data_o = 32'hd4ee03e3 /* 0x17b8 */;
1519: data_o = 32'h0087d71b /* 0x17bc */;
1520: data_o = 32'h00e680a3 /* 0x17c0 */;
1521: data_o = 32'h0025071b /* 0x17c4 */;
1522: data_o = 32'h00ee0863 /* 0x17c8 */;
1523: data_o = 32'h0107d71b /* 0x17cc */;
1524: data_o = 32'h00e68123 /* 0x17d0 */;
1525: data_o = 32'h0035071b /* 0x17d4 */;
1526: data_o = 32'h40ee873b /* 0x17d8 */;
1527: data_o = 32'h10e34605 /* 0x17dc */;
1528: data_o = 32'hd79bd2c7 /* 0x17e0 */;
1529: data_o = 32'h81a30187 /* 0x17e4 */;
1530: data_o = 32'hb72100f6 /* 0x17e8 */;
1531: data_o = 32'h8082557d /* 0x17ec */;
1532: data_o = 32'he288c685 /* 0x17f0 */;
1533: data_o = 32'hc68cc115 /* 0x17f4 */;
1534: data_o = 32'hca01c185 /* 0x17f8 */;
1535: data_o = 32'h0015d59b /* 0x17fc */;
1536: data_o = 32'h00c5e563 /* 0x1800 */;
1537: data_o = 32'h4501c6d0 /* 0x1804 */;
1538: data_o = 32'ha7b78082 /* 0x1808 */;
1539: data_o = 32'h87930007 /* 0x180c */;
1540: data_o = 32'hc6dc1207 /* 0x1810 */;
1541: data_o = 32'h80824501 /* 0x1814 */;
1542: data_o = 32'h8082557d /* 0x1818 */;
1543: data_o = 32'h07b76110 /* 0x181c */;
1544: data_o = 32'h46b74000 /* 0x1820 */;
1545: data_o = 32'h2223000f /* 0x1824 */;
1546: data_o = 32'h2a230006 /* 0x1828 */;
1547: data_o = 32'hca1c0206 /* 0x182c */;
1548: data_o = 32'h882a4a5c /* 0x1830 */;
1549: data_o = 32'h23f68693 /* 0x1834 */;
1550: data_o = 32'h400005b7 /* 0x1838 */;
1551: data_o = 32'ha0212781 /* 0x183c */;
1552: data_o = 32'h27814a5c /* 0x1840 */;
1553: data_o = 32'hf733c695 /* 0x1844 */;
1554: data_o = 32'h979b00b7 /* 0x1848 */;
1555: data_o = 32'h8fd90107 /* 0x184c */;
1556: data_o = 32'h36fd2781 /* 0x1850 */;
1557: data_o = 32'h07b7f7f5 /* 0x1854 */;
1558: data_o = 32'hca1c8000 /* 0x1858 */;
1559: data_o = 32'hd21c4785 /* 0x185c */;
1560: data_o = 32'h45014a5c /* 0x1860 */;
1561: data_o = 32'h0167d79b /* 0x1864 */;
1562: data_o = 32'h0a238b85 /* 0x1868 */;
1563: data_o = 32'h808200f8 /* 0x186c */;
1564: data_o = 32'h00062823 /* 0x1870 */;
1565: data_o = 32'h8082557d /* 0x1874 */;
1566: data_o = 32'hf456711d /* 0x1878 */;
1567: data_o = 32'hec866a85 /* 0x187c */;
1568: data_o = 32'he4a6e8a2 /* 0x1880 */;
1569: data_o = 32'hfc4ee0ca /* 0x1884 */;
1570: data_o = 32'hf05af852 /* 0x1888 */;
1571: data_o = 32'he862ec5e /* 0x188c */;
1572: data_o = 32'h8a93e466 /* 0x1890 */;
1573: data_o = 32'hfa63800a /* 0x1894 */;
1574: data_o = 32'h8a1b08ba /* 0x1898 */;
1575: data_o = 32'h8b3a7ff5 /* 0x189c */;
1576: data_o = 32'h00ba579b /* 0x18a0 */;
1577: data_o = 32'h8b0584ae /* 0x18a4 */;
1578: data_o = 32'h002b7b13 /* 0x18a8 */;
1579: data_o = 32'h00ba5a1b /* 0x18ac */;
1580: data_o = 32'h3a7dcbbd /* 0x18b0 */;
1581: data_o = 32'h000a0c1b /* 0x18b4 */;
1582: data_o = 32'h8baa1a02 /* 0x18b8 */;
1583: data_o = 32'h89b68932 /* 0x18bc */;
1584: data_o = 32'h020a5a13 /* 0x18c0 */;
1585: data_o = 32'h8cd64401 /* 0x18c4 */;
1586: data_o = 32'h0e63a821 /* 0x18c8 */;
1587: data_o = 32'h079b0544 /* 0x18cc */;
1588: data_o = 32'h875a0014 /* 0x18d0 */;
1589: data_o = 32'h01878363 /* 0x18d4 */;
1590: data_o = 32'h04054701 /* 0x18d8 */;
1591: data_o = 32'h8004849b /* 0x18dc */;
1592: data_o = 32'h0004859b /* 0x18e0 */;
1593: data_o = 32'h009af463 /* 0x18e4 */;
1594: data_o = 32'h000c859b /* 0x18e8 */;
1595: data_o = 32'h05634601 /* 0x18ec */;
1596: data_o = 32'h16130009 /* 0x18f0 */;
1597: data_o = 32'h964a0084 /* 0x18f4 */;
1598: data_o = 32'h85634681 /* 0x18f8 */;
1599: data_o = 32'h16930009 /* 0x18fc */;
1600: data_o = 32'h96ce0084 /* 0x1900 */;
1601: data_o = 32'hf0ef855e /* 0x1904 */;
1602: data_o = 32'hd161ad7f /* 0x1908 */;
1603: data_o = 32'h644660e6 /* 0x190c */;
1604: data_o = 32'h690664a6 /* 0x1910 */;
1605: data_o = 32'h7a4279e2 /* 0x1914 */;
1606: data_o = 32'h7b027aa2 /* 0x1918 */;
1607: data_o = 32'h6c426be2 /* 0x191c */;
1608: data_o = 32'h61256ca2 /* 0x1920 */;
1609: data_o = 32'h45018082 /* 0x1924 */;
1610: data_o = 32'h6446b7d5 /* 0x1928 */;
1611: data_o = 32'h64a660e6 /* 0x192c */;
1612: data_o = 32'h79e26906 /* 0x1930 */;
1613: data_o = 32'h7aa27a42 /* 0x1934 */;
1614: data_o = 32'h6be27b02 /* 0x1938 */;
1615: data_o = 32'h6ca26c42 /* 0x193c */;
1616: data_o = 32'hbc696125 /* 0x1940 */;
1617: data_o = 32'h873e455c /* 0x1944 */;
1618: data_o = 32'h00f5f363 /* 0x1948 */;
1619: data_o = 32'h451c872e /* 0x194c */;
1620: data_o = 32'h0017171b /* 0x1950 */;
1621: data_o = 32'h02071693 /* 0x1954 */;
1622: data_o = 32'h17829fb9 /* 0x1958 */;
1623: data_o = 32'h92819381 /* 0x195c */;
1624: data_o = 32'hd7b317fd /* 0x1960 */;
1625: data_o = 32'h674102d7 /* 0x1964 */;
1626: data_o = 32'h17fd177d /* 0x1968 */;
1627: data_o = 32'h00e7f6b3 /* 0x196c */;
1628: data_o = 32'h00f68363 /* 0x1970 */;
1629: data_o = 32'h611487ba /* 0x1974 */;
1630: data_o = 32'h45017641 /* 0x1978 */;
1631: data_o = 32'h8f714e98 /* 0x197c */;
1632: data_o = 32'h27818fd9 /* 0x1980 */;
1633: data_o = 32'hcedcce9c /* 0x1984 */;
1634: data_o = 32'h61188082 /* 0x1988 */;
1635: data_o = 32'h01e5959b /* 0x198c */;
1636: data_o = 32'h0fff06b7 /* 0x1990 */;
1637: data_o = 32'h45014f1c /* 0x1994 */;
1638: data_o = 32'h93c117c2 /* 0x1998 */;
1639: data_o = 32'h8fd58fcd /* 0x199c */;
1640: data_o = 32'hcf1c2781 /* 0x19a0 */;
1641: data_o = 32'h8082cf5c /* 0x19a4 */;
1642: data_o = 32'hf8227139 /* 0x19a8 */;
1643: data_o = 32'hf04af426 /* 0x19ac */;
1644: data_o = 32'hec4efc06 /* 0x19b0 */;
1645: data_o = 32'he456e852 /* 0x19b4 */;
1646: data_o = 32'h71010080 /* 0x19b8 */;
1647: data_o = 32'h4685848a /* 0x19bc */;
1648: data_o = 32'h86267101 /* 0x19c0 */;
1649: data_o = 32'h892a4585 /* 0x19c4 */;
1650: data_o = 32'h504000ef /* 0x19c8 */;
1651: data_o = 32'h12051c63 /* 0x19cc */;
1652: data_o = 32'h00001517 /* 0x19d0 */;
1653: data_o = 32'hb3850513 /* 0x19d4 */;
1654: data_o = 32'h8d9ff0ef /* 0x19d8 */;
1655: data_o = 32'h1517608c /* 0x19dc */;
1656: data_o = 32'h05130000 /* 0x19e0 */;
1657: data_o = 32'hf0efb4a5 /* 0x19e4 */;
1658: data_o = 32'h448c8cbf /* 0x19e8 */;
1659: data_o = 32'h00001517 /* 0x19ec */;
1660: data_o = 32'hb5450513 /* 0x19f0 */;
1661: data_o = 32'h8bdff0ef /* 0x19f4 */;
1662: data_o = 32'h151744cc /* 0x19f8 */;
1663: data_o = 32'h05130000 /* 0x19fc */;
1664: data_o = 32'hf0efb5e5 /* 0x1a00 */;
1665: data_o = 32'h48cc8aff /* 0x1a04 */;
1666: data_o = 32'h00001517 /* 0x1a08 */;
1667: data_o = 32'hb6850513 /* 0x1a0c */;
1668: data_o = 32'h8a1ff0ef /* 0x1a10 */;
1669: data_o = 32'h15176c8c /* 0x1a14 */;
1670: data_o = 32'h05130000 /* 0x1a18 */;
1671: data_o = 32'hf0efb725 /* 0x1a1c */;
1672: data_o = 32'h708c893f /* 0x1a20 */;
1673: data_o = 32'h00001517 /* 0x1a24 */;
1674: data_o = 32'hb7c50513 /* 0x1a28 */;
1675: data_o = 32'h885ff0ef /* 0x1a2c */;
1676: data_o = 32'h151764ac /* 0x1a30 */;
1677: data_o = 32'h05130000 /* 0x1a34 */;
1678: data_o = 32'hf0efb8e5 /* 0x1a38 */;
1679: data_o = 32'h48ac877f /* 0x1a3c */;
1680: data_o = 32'h00001517 /* 0x1a40 */;
1681: data_o = 32'hba050513 /* 0x1a44 */;
1682: data_o = 32'h869ff0ef /* 0x1a48 */;
1683: data_o = 32'h151748ec /* 0x1a4c */;
1684: data_o = 32'h05130000 /* 0x1a50 */;
1685: data_o = 32'hf0efbba5 /* 0x1a54 */;
1686: data_o = 32'h44ac85bf /* 0x1a58 */;
1687: data_o = 32'h4685854a /* 0x1a5c */;
1688: data_o = 32'h00ef860a /* 0x1a60 */;
1689: data_o = 32'h8a2a46a0 /* 0x1a64 */;
1690: data_o = 32'h08010913 /* 0x1a68 */;
1691: data_o = 32'h4a914981 /* 0x1a6c */;
1692: data_o = 32'h1517e155 /* 0x1a70 */;
1693: data_o = 32'h85ce0000 /* 0x1a74 */;
1694: data_o = 32'hbee50513 /* 0x1a78 */;
1695: data_o = 32'h835ff0ef /* 0x1a7c */;
1696: data_o = 32'hfa093583 /* 0x1a80 */;
1697: data_o = 32'h00001517 /* 0x1a84 */;
1698: data_o = 32'hbfc50513 /* 0x1a88 */;
1699: data_o = 32'h825ff0ef /* 0x1a8c */;
1700: data_o = 32'hfa893583 /* 0x1a90 */;
1701: data_o = 32'h00001517 /* 0x1a94 */;
1702: data_o = 32'hc0450513 /* 0x1a98 */;
1703: data_o = 32'h815ff0ef /* 0x1a9c */;
1704: data_o = 32'hfb093583 /* 0x1aa0 */;
1705: data_o = 32'h00001517 /* 0x1aa4 */;
1706: data_o = 32'hc0c50513 /* 0x1aa8 */;
1707: data_o = 32'h805ff0ef /* 0x1aac */;
1708: data_o = 32'h00001517 /* 0x1ab0 */;
1709: data_o = 32'hc1850513 /* 0x1ab4 */;
1710: data_o = 32'hff8ff0ef /* 0x1ab8 */;
1711: data_o = 32'hfb890493 /* 0x1abc */;
1712: data_o = 32'h0004c583 /* 0x1ac0 */;
1713: data_o = 32'h00001517 /* 0x1ac4 */;
1714: data_o = 32'h05130485 /* 0x1ac8 */;
1715: data_o = 32'hf0efc0c5 /* 0x1acc */;
1716: data_o = 32'h97e3fe2f /* 0x1ad0 */;
1717: data_o = 32'h0517ff24 /* 0x1ad4 */;
1718: data_o = 32'h05130000 /* 0x1ad8 */;
1719: data_o = 32'h29857725 /* 0x1adc */;
1720: data_o = 32'hfd0ff0ef /* 0x1ae0 */;
1721: data_o = 32'h08090913 /* 0x1ae4 */;
1722: data_o = 32'hf95995e3 /* 0x1ae8 */;
1723: data_o = 32'hfc040113 /* 0x1aec */;
1724: data_o = 32'h855270e2 /* 0x1af0 */;
1725: data_o = 32'h74a27442 /* 0x1af4 */;
1726: data_o = 32'h69e27902 /* 0x1af8 */;
1727: data_o = 32'h6aa26a42 /* 0x1afc */;
1728: data_o = 32'h80826121 /* 0x1b00 */;
1729: data_o = 32'h15178a2a /* 0x1b04 */;
1730: data_o = 32'h05130000 /* 0x1b08 */;
1731: data_o = 32'hf0ef9da5 /* 0x1b0c */;
1732: data_o = 32'hbfe9fa2f /* 0x1b10 */;
1733: data_o = 32'h00001517 /* 0x1b14 */;
1734: data_o = 32'hb1c50513 /* 0x1b18 */;
1735: data_o = 32'hf94ff0ef /* 0x1b1c */;
1736: data_o = 32'h7139b7f1 /* 0x1b20 */;
1737: data_o = 32'hf04af822 /* 0x1b24 */;
1738: data_o = 32'he852ec4e /* 0x1b28 */;
1739: data_o = 32'hfc06e456 /* 0x1b2c */;
1740: data_o = 32'h0080f426 /* 0x1b30 */;
1741: data_o = 32'h8a8a7101 /* 0x1b34 */;
1742: data_o = 32'h8a32892e /* 0x1b38 */;
1743: data_o = 32'h46857101 /* 0x1b3c */;
1744: data_o = 32'h45858656 /* 0x1b40 */;
1745: data_o = 32'h00ef89aa /* 0x1b44 */;
1746: data_o = 32'hed153860 /* 0x1b48 */;
1747: data_o = 32'h048aa583 /* 0x1b4c */;
1748: data_o = 32'h860a4685 /* 0x1b50 */;
1749: data_o = 32'h00ef854e /* 0x1b54 */;
1750: data_o = 32'h84aa3760 /* 0x1b58 */;
1751: data_o = 32'h179bed0d /* 0x1b5c */;
1752: data_o = 32'h17820079 /* 0x1b60 */;
1753: data_o = 32'h978a9381 /* 0x1b64 */;
1754: data_o = 32'h2023739c /* 0x1b68 */;
1755: data_o = 32'h011300fa /* 0x1b6c */;
1756: data_o = 32'h70e2fc04 /* 0x1b70 */;
1757: data_o = 32'h74428526 /* 0x1b74 */;
1758: data_o = 32'h790274a2 /* 0x1b78 */;
1759: data_o = 32'h6a4269e2 /* 0x1b7c */;
1760: data_o = 32'h61216aa2 /* 0x1b80 */;
1761: data_o = 32'h84aa8082 /* 0x1b84 */;
1762: data_o = 32'h00001517 /* 0x1b88 */;
1763: data_o = 32'h95850513 /* 0x1b8c */;
1764: data_o = 32'hf20ff0ef /* 0x1b90 */;
1765: data_o = 32'h1517bfe9 /* 0x1b94 */;
1766: data_o = 32'h05130000 /* 0x1b98 */;
1767: data_o = 32'hf0efa9a5 /* 0x1b9c */;
1768: data_o = 32'hb7f1f12f /* 0x1ba0 */;
1769: data_o = 32'h02069713 /* 0x1ba4 */;
1770: data_o = 32'h43818793 /* 0x1ba8 */;
1771: data_o = 32'h71599301 /* 0x1bac */;
1772: data_o = 32'hf0a297ba /* 0x1bb0 */;
1773: data_o = 32'h0007c403 /* 0x1bb4 */;
1774: data_o = 32'hf486e8ca /* 0x1bb8 */;
1775: data_o = 32'h0034091b /* 0x1bbc */;
1776: data_o = 32'he4ceeca6 /* 0x1bc0 */;
1777: data_o = 32'hfc56e0d2 /* 0x1bc4 */;
1778: data_o = 32'hf45ef85a /* 0x1bc8 */;
1779: data_o = 32'hec66f062 /* 0x1bcc */;
1780: data_o = 32'h7913e86a /* 0x1bd0 */;
1781: data_o = 32'h47a11fc9 /* 0x1bd4 */;
1782: data_o = 32'h1327ea63 /* 0x1bd8 */;
1783: data_o = 32'h0105971b /* 0x1bdc */;
1784: data_o = 32'h0107571b /* 0x1be0 */;
1785: data_o = 32'h0085981b /* 0x1be4 */;
1786: data_o = 32'h0087571b /* 0x1be8 */;
1787: data_o = 32'h0285d313 /* 0x1bec */;
1788: data_o = 32'h0205d893 /* 0x1bf0 */;
1789: data_o = 32'h0105d793 /* 0x1bf4 */;
1790: data_o = 32'h00e86833 /* 0x1bf8 */;
1791: data_o = 32'h8d328a36 /* 0x1bfc */;
1792: data_o = 32'h46814705 /* 0x1c00 */;
1793: data_o = 32'h0593860a /* 0x1c04 */;
1794: data_o = 32'h8b2a0300 /* 0x1c08 */;
1795: data_o = 32'h00610023 /* 0x1c0c */;
1796: data_o = 32'h011100a3 /* 0x1c10 */;
1797: data_o = 32'h00010123 /* 0x1c14 */;
1798: data_o = 32'h00f101a3 /* 0x1c18 */;
1799: data_o = 32'h01011223 /* 0x1c1c */;
1800: data_o = 32'hc59ff0ef /* 0x1c20 */;
1801: data_o = 32'hcc79ed2d /* 0x1c24 */;
1802: data_o = 32'h00391c13 /* 0x1c28 */;
1803: data_o = 32'h4b854981 /* 0x1c2c */;
1804: data_o = 32'h4a854481 /* 0x1c30 */;
1805: data_o = 32'h04c00c93 /* 0x1c34 */;
1806: data_o = 32'h00344701 /* 0x1c38 */;
1807: data_o = 32'h85e24601 /* 0x1c3c */;
1808: data_o = 32'hf0ef855a /* 0x1c40 */;
1809: data_o = 32'hed21c37f /* 0x1c44 */;
1810: data_o = 32'hfe0908e3 /* 0x1c48 */;
1811: data_o = 32'h00014583 /* 0x1c4c */;
1812: data_o = 32'h47850038 /* 0x1c50 */;
1813: data_o = 32'h00099463 /* 0x1c54 */;
1814: data_o = 32'h03958563 /* 0x1c58 */;
1815: data_o = 32'h0803e489 /* 0x1c5c */;
1816: data_o = 32'h4b630007 /* 0x1c60 */;
1817: data_o = 32'hc8310008 /* 0x1c64 */;
1818: data_o = 32'h00074683 /* 0x1c68 */;
1819: data_o = 32'h008d0833 /* 0x1c6c */;
1820: data_o = 32'h0fa34485 /* 0x1c70 */;
1821: data_o = 32'h347dfed8 /* 0x1c74 */;
1822: data_o = 32'h0127f863 /* 0x1c78 */;
1823: data_o = 32'h07052785 /* 0x1c7c */;
1824: data_o = 32'h4985bfd1 /* 0x1c80 */;
1825: data_o = 32'hff27ece3 /* 0x1c84 */;
1826: data_o = 32'h4785f845 /* 0x1c88 */;
1827: data_o = 32'h04fa0463 /* 0x1c8c */;
1828: data_o = 32'h46814709 /* 0x1c90 */;
1829: data_o = 32'h45814601 /* 0x1c94 */;
1830: data_o = 32'hf0ef855a /* 0x1c98 */;
1831: data_o = 32'h70a6bdff /* 0x1c9c */;
1832: data_o = 32'h64e67406 /* 0x1ca0 */;
1833: data_o = 32'h69a66946 /* 0x1ca4 */;
1834: data_o = 32'h7ae26a06 /* 0x1ca8 */;
1835: data_o = 32'h7ba27b42 /* 0x1cac */;
1836: data_o = 32'h6ce27c02 /* 0x1cb0 */;
1837: data_o = 32'h61656d42 /* 0x1cb4 */;
1838: data_o = 32'h06638082 /* 0x1cb8 */;
1839: data_o = 32'hf6e3015a /* 0x1cbc */;
1840: data_o = 32'h4485fd27 /* 0x1cc0 */;
1841: data_o = 32'h8ce3bf65 /* 0x1cc4 */;
1842: data_o = 32'h4b83fe0b /* 0x1cc8 */;
1843: data_o = 32'hbb930007 /* 0x1ccc */;
1844: data_o = 32'hb7f5001b /* 0x1cd0 */;
1845: data_o = 32'hfa0b8ee3 /* 0x1cd4 */;
1846: data_o = 32'h84936489 /* 0x1cd8 */;
1847: data_o = 32'h00607104 /* 0x1cdc */;
1848: data_o = 32'h00344701 /* 0x1ce0 */;
1849: data_o = 32'h05934601 /* 0x1ce4 */;
1850: data_o = 32'h855a0200 /* 0x1ce8 */;
1851: data_o = 32'hb8dff0ef /* 0x1cec */;
1852: data_o = 32'hc703003c /* 0x1cf0 */;
1853: data_o = 32'h07850007 /* 0x1cf4 */;
1854: data_o = 32'h1ce3ff41 /* 0x1cf8 */;
1855: data_o = 32'h34fdfef4 /* 0x1cfc */;
1856: data_o = 32'hb779f0e5 /* 0x1d00 */;
1857: data_o = 32'h15e34785 /* 0x1d04 */;
1858: data_o = 32'hb7f9f8fa /* 0x1d08 */;
1859: data_o = 32'h00001517 /* 0x1d0c */;
1860: data_o = 32'h051385a2 /* 0x1d10 */;
1861: data_o = 32'hf0ef9cc5 /* 0x1d14 */;
1862: data_o = 32'h557dd9af /* 0x1d18 */;
1863: data_o = 32'h7139b749 /* 0x1d1c */;
1864: data_o = 32'h46814701 /* 0x1d20 */;
1865: data_o = 32'h05934601 /* 0x1d24 */;
1866: data_o = 32'hf8220500 /* 0x1d28 */;
1867: data_o = 32'hfc06f426 /* 0x1d2c */;
1868: data_o = 32'hec4ef04a /* 0x1d30 */;
1869: data_o = 32'he40284aa /* 0x1d34 */;
1870: data_o = 32'hb41ff0ef /* 0x1d38 */;
1871: data_o = 32'hc909842a /* 0x1d3c */;
1872: data_o = 32'h852270e2 /* 0x1d40 */;
1873: data_o = 32'h74a27442 /* 0x1d44 */;
1874: data_o = 32'h69e27902 /* 0x1d48 */;
1875: data_o = 32'h80826121 /* 0x1d4c */;
1876: data_o = 32'h15934905 /* 0x1d50 */;
1877: data_o = 32'h468102e9 /* 0x1d54 */;
1878: data_o = 32'h85930030 /* 0x1d58 */;
1879: data_o = 32'h85260955 /* 0x1d5c */;
1880: data_o = 32'he45ff0ef /* 0x1d60 */;
1881: data_o = 32'hfd69842a /* 0x1d64 */;
1882: data_o = 32'h151765a2 /* 0x1d68 */;
1883: data_o = 32'h05130000 /* 0x1d6c */;
1884: data_o = 32'hf9939a65 /* 0x1d70 */;
1885: data_o = 32'h841b0ff5 /* 0x1d74 */;
1886: data_o = 32'hf0ef0009 /* 0x1d78 */;
1887: data_o = 32'h91e3d36f /* 0x1d7c */;
1888: data_o = 32'h1797fd29 /* 0x1d80 */;
1889: data_o = 32'hb5830000 /* 0x1d84 */;
1890: data_o = 32'h469dbde7 /* 0x1d88 */;
1891: data_o = 32'h85260030 /* 0x1d8c */;
1892: data_o = 32'hf0efe402 /* 0x1d90 */;
1893: data_o = 32'h842ae13f /* 0x1d94 */;
1894: data_o = 32'h6422f545 /* 0x1d98 */;
1895: data_o = 32'h00001517 /* 0x1d9c */;
1896: data_o = 32'h99450513 /* 0x1da0 */;
1897: data_o = 32'hf0ef85a2 /* 0x1da4 */;
1898: data_o = 32'h1793d0af /* 0x1da8 */;
1899: data_o = 32'h19820184 /* 0x1dac */;
1900: data_o = 32'h899383e1 /* 0x1db0 */;
1901: data_o = 32'h74131aa9 /* 0x1db4 */;
1902: data_o = 32'h93e30ff4 /* 0x1db8 */;
1903: data_o = 32'h0913f937 /* 0x1dbc */;
1904: data_o = 32'h19220770 /* 0x1dc0 */;
1905: data_o = 32'h00304681 /* 0x1dc4 */;
1906: data_o = 32'h06590593 /* 0x1dc8 */;
1907: data_o = 32'he4028526 /* 0x1dcc */;
1908: data_o = 32'hdd5ff0ef /* 0x1dd0 */;
1909: data_o = 32'hf52d842a /* 0x1dd4 */;
1910: data_o = 32'h151765a2 /* 0x1dd8 */;
1911: data_o = 32'h05130000 /* 0x1ddc */;
1912: data_o = 32'h09939765 /* 0x1de0 */;
1913: data_o = 32'hf0ef1a50 /* 0x1de4 */;
1914: data_o = 32'h199accaf /* 0x1de8 */;
1915: data_o = 32'h00304681 /* 0x1dec */;
1916: data_o = 32'h07798593 /* 0x1df0 */;
1917: data_o = 32'he4028526 /* 0x1df4 */;
1918: data_o = 32'hdadff0ef /* 0x1df8 */;
1919: data_o = 32'hf129842a /* 0x1dfc */;
1920: data_o = 32'h15176422 /* 0x1e00 */;
1921: data_o = 32'h05130000 /* 0x1e04 */;
1922: data_o = 32'h85a296e5 /* 0x1e08 */;
1923: data_o = 32'h0ff47413 /* 0x1e0c */;
1924: data_o = 32'hca0ff0ef /* 0x1e10 */;
1925: data_o = 32'h0913c839 /* 0x1e14 */;
1926: data_o = 32'h89930659 /* 0x1e18 */;
1927: data_o = 32'h46810779 /* 0x1e1c */;
1928: data_o = 32'h85ca0030 /* 0x1e20 */;
1929: data_o = 32'he4028526 /* 0x1e24 */;
1930: data_o = 32'hd7dff0ef /* 0x1e28 */;
1931: data_o = 32'h1517842a /* 0x1e2c */;
1932: data_o = 32'h05130000 /* 0x1e30 */;
1933: data_o = 32'h15e39225 /* 0x1e34 */;
1934: data_o = 32'h65a2f004 /* 0x1e38 */;
1935: data_o = 32'hc74ff0ef /* 0x1e3c */;
1936: data_o = 32'h00304681 /* 0x1e40 */;
1937: data_o = 32'h852685ce /* 0x1e44 */;
1938: data_o = 32'hf0efe402 /* 0x1e48 */;
1939: data_o = 32'h842ad5bf /* 0x1e4c */;
1940: data_o = 32'h00001517 /* 0x1e50 */;
1941: data_o = 32'h92050513 /* 0x1e54 */;
1942: data_o = 32'hee0414e3 /* 0x1e58 */;
1943: data_o = 32'h85a26422 /* 0x1e5c */;
1944: data_o = 32'h0ff47413 /* 0x1e60 */;
1945: data_o = 32'hc4cff0ef /* 0x1e64 */;
1946: data_o = 32'h0593f85d /* 0x1e68 */;
1947: data_o = 32'h15a603d0 /* 0x1e6c */;
1948: data_o = 32'h0030468d /* 0x1e70 */;
1949: data_o = 32'h0ff58593 /* 0x1e74 */;
1950: data_o = 32'he4028526 /* 0x1e78 */;
1951: data_o = 32'hd29ff0ef /* 0x1e7c */;
1952: data_o = 32'h1fe3842a /* 0x1e80 */;
1953: data_o = 32'h65a2ea05 /* 0x1e84 */;
1954: data_o = 32'h00001517 /* 0x1e88 */;
1955: data_o = 32'h90850513 /* 0x1e8c */;
1956: data_o = 32'hc20ff0ef /* 0x1e90 */;
1957: data_o = 32'h00001797 /* 0x1e94 */;
1958: data_o = 32'had47b583 /* 0x1e98 */;
1959: data_o = 32'h00304681 /* 0x1e9c */;
1960: data_o = 32'he4028526 /* 0x1ea0 */;
1961: data_o = 32'hd01ff0ef /* 0x1ea4 */;
1962: data_o = 32'h1be3842a /* 0x1ea8 */;
1963: data_o = 32'h64a2e805 /* 0x1eac */;
1964: data_o = 32'h00001517 /* 0x1eb0 */;
1965: data_o = 32'h90050513 /* 0x1eb4 */;
1966: data_o = 32'hf49385a6 /* 0x1eb8 */;
1967: data_o = 32'hf0ef0ff4 /* 0x1ebc */;
1968: data_o = 32'h8fe3bf2f /* 0x1ec0 */;
1969: data_o = 32'h841be604 /* 0x1ec4 */;
1970: data_o = 32'hbd9d0004 /* 0x1ec8 */;
1971: data_o = 32'hf8a27119 /* 0x1ecc */;
1972: data_o = 32'hf4a6fc86 /* 0x1ed0 */;
1973: data_o = 32'heccef0ca /* 0x1ed4 */;
1974: data_o = 32'he4d6e8d2 /* 0x1ed8 */;
1975: data_o = 32'hfc5ee0da /* 0x1edc */;
1976: data_o = 32'hf466f862 /* 0x1ee0 */;
1977: data_o = 32'hec6ef06a /* 0x1ee4 */;
1978: data_o = 32'h80634401 /* 0x1ee8 */;
1979: data_o = 32'h941b1206 /* 0x1eec */;
1980: data_o = 32'h14020085 /* 0x1ef0 */;
1981: data_o = 32'h8b364705 /* 0x1ef4 */;
1982: data_o = 32'h84b2892a /* 0x1ef8 */;
1983: data_o = 32'h86639001 /* 0x1efc */;
1984: data_o = 32'h071312e6 /* 0x1f00 */;
1985: data_o = 32'h15170290 /* 0x1f04 */;
1986: data_o = 32'h17930000 /* 0x1f08 */;
1987: data_o = 32'h86b20297 /* 0x1f0c */;
1988: data_o = 32'h862e0785 /* 0x1f10 */;
1989: data_o = 32'h90250513 /* 0x1f14 */;
1990: data_o = 32'h8c5d85da /* 0x1f18 */;
1991: data_o = 32'hb94ff0ef /* 0x1f1c */;
1992: data_o = 32'h01045793 /* 0x1f20 */;
1993: data_o = 32'h02845893 /* 0x1f24 */;
1994: data_o = 32'h01845813 /* 0x1f28 */;
1995: data_o = 32'h00f101a3 /* 0x1f2c */;
1996: data_o = 32'h47858021 /* 0x1f30 */;
1997: data_o = 32'h46814705 /* 0x1f34 */;
1998: data_o = 32'h0593860a /* 0x1f38 */;
1999: data_o = 32'h854a0300 /* 0x1f3c */;
2000: data_o = 32'h00810223 /* 0x1f40 */;
2001: data_o = 32'h01110023 /* 0x1f44 */;
2002: data_o = 32'h000100a3 /* 0x1f48 */;
2003: data_o = 32'h01010123 /* 0x1f4c */;
2004: data_o = 32'h00f102a3 /* 0x1f50 */;
2005: data_o = 32'h925ff0ef /* 0x1f54 */;
2006: data_o = 32'he945842a /* 0x1f58 */;
2007: data_o = 32'h0c134d01 /* 0x1f5c */;
2008: data_o = 32'h4b812000 /* 0x1f60 */;
2009: data_o = 32'h49914a01 /* 0x1f64 */;
2010: data_o = 32'h0a934d85 /* 0x1f68 */;
2011: data_o = 32'h4c8d0fe0 /* 0x1f6c */;
2012: data_o = 32'h00344701 /* 0x1f70 */;
2013: data_o = 32'h05934601 /* 0x1f74 */;
2014: data_o = 32'h854a0200 /* 0x1f78 */;
2015: data_o = 32'h8fdff0ef /* 0x1f7c */;
2016: data_o = 32'he541842a /* 0x1f80 */;
2017: data_o = 32'h1063003c /* 0x1f84 */;
2018: data_o = 32'hc583040a /* 0x1f88 */;
2019: data_o = 32'h24050007 /* 0x1f8c */;
2020: data_o = 32'h971b0785 /* 0x1f90 */;
2021: data_o = 32'h571b0185 /* 0x1f94 */;
2022: data_o = 32'h5e634187 /* 0x1f98 */;
2023: data_o = 32'h09e30007 /* 0x1f9c */;
2024: data_o = 32'hc583fd34 /* 0x1fa0 */;
2025: data_o = 32'h24050007 /* 0x1fa4 */;
2026: data_o = 32'h971b0785 /* 0x1fa8 */;
2027: data_o = 32'h571b0185 /* 0x1fac */;
2028: data_o = 32'h46e34187 /* 0x1fb0 */;
2029: data_o = 32'h1517fe07 /* 0x1fb4 */;
2030: data_o = 32'h05130000 /* 0x1fb8 */;
2031: data_o = 32'hf0ef89a5 /* 0x1fbc */;
2032: data_o = 32'h0f63af2f /* 0x1fc0 */;
2033: data_o = 32'h003c0134 /* 0x1fc4 */;
2034: data_o = 32'hc58397a2 /* 0x1fc8 */;
2035: data_o = 32'h07850007 /* 0x1fcc */;
2036: data_o = 32'h0f05f713 /* 0x1fd0 */;
2037: data_o = 32'h07558763 /* 0x1fd4 */;
2038: data_o = 32'h2405c711 /* 0x1fd8 */;
2039: data_o = 32'hff3417e3 /* 0x1fdc */;
2040: data_o = 32'hb7794a05 /* 0x1fe0 */;
2041: data_o = 32'h00001517 /* 0x1fe4 */;
2042: data_o = 32'h89c50513 /* 0x1fe8 */;
2043: data_o = 32'hac4ff0ef /* 0x1fec */;
2044: data_o = 32'h46814709 /* 0x1ff0 */;
2045: data_o = 32'h45814601 /* 0x1ff4 */;
2046: data_o = 32'hf0ef854a /* 0x1ff8 */;
2047: data_o = 32'h079387ff /* 0x1ffc */;
2048: data_o = 32'h84330104 /* 0x2000 */;
2049: data_o = 32'h44030027 /* 0x2004 */;
2050: data_o = 32'h70e6ff84 /* 0x2008 */;
2051: data_o = 32'h74468522 /* 0x200c */;
2052: data_o = 32'h790674a6 /* 0x2010 */;
2053: data_o = 32'h6a4669e6 /* 0x2014 */;
2054: data_o = 32'h6b066aa6 /* 0x2018 */;
2055: data_o = 32'h7c427be2 /* 0x201c */;
2056: data_o = 32'h7d027ca2 /* 0x2020 */;
2057: data_o = 32'h61096de2 /* 0x2024 */;
2058: data_o = 32'h07938082 /* 0x2028 */;
2059: data_o = 32'h05170510 /* 0x202c */;
2060: data_o = 32'h17a20000 /* 0x2030 */;
2061: data_o = 32'h05130785 /* 0x2034 */;
2062: data_o = 32'h8c5d7a25 /* 0x2038 */;
2063: data_o = 32'ha74ff0ef /* 0x203c */;
2064: data_o = 32'h2b85b5c5 /* 0x2040 */;
2065: data_o = 32'h20000793 /* 0x2044 */;
2066: data_o = 32'h0d636585 /* 0x2048 */;
2067: data_o = 32'h003c0394 /* 0x204c */;
2068: data_o = 32'he03c051b /* 0x2050 */;
2069: data_o = 32'h008786b3 /* 0x2054 */;
2070: data_o = 32'h0004059b /* 0x2058 */;
2071: data_o = 32'h87ea9d01 /* 0x205c */;
2072: data_o = 32'h0016c603 /* 0x2060 */;
2073: data_o = 32'h02079713 /* 0x2064 */;
2074: data_o = 32'h97269301 /* 0x2068 */;
2075: data_o = 32'h00c70023 /* 0x206c */;
2076: data_o = 32'h06852785 /* 0x2070 */;
2077: data_o = 32'hfef516e3 /* 0x2074 */;
2078: data_o = 32'h1fd5879b /* 0x2078 */;
2079: data_o = 32'h0037959b /* 0x207c */;
2080: data_o = 32'h93811782 /* 0x2080 */;
2081: data_o = 32'h020c1693 /* 0x2084 */;
2082: data_o = 32'h8e9d9281 /* 0x2088 */;
2083: data_o = 32'h96a64701 /* 0x208c */;
2084: data_o = 32'h854a4601 /* 0x2090 */;
2085: data_o = 32'hfe4ff0ef /* 0x2094 */;
2086: data_o = 32'hf925842a /* 0x2098 */;
2087: data_o = 32'h00344701 /* 0x209c */;
2088: data_o = 32'h45c14601 /* 0x20a0 */;
2089: data_o = 32'hf0ef854a /* 0x20a4 */;
2090: data_o = 32'h842afd2f /* 0x20a8 */;
2091: data_o = 32'h0c1bfd39 /* 0x20ac */;
2092: data_o = 32'h0d1b200c /* 0x20b0 */;
2093: data_o = 32'h4a05200d /* 0x20b4 */;
2094: data_o = 32'heb7b1ce3 /* 0x20b8 */;
2095: data_o = 32'h03bb0463 /* 0x20bc */;
2096: data_o = 32'h15aa45cd /* 0x20c0 */;
2097: data_o = 32'h46850585 /* 0x20c4 */;
2098: data_o = 32'h854a0030 /* 0x20c8 */;
2099: data_o = 32'hf0efe402 /* 0x20cc */;
2100: data_o = 32'h65a2ad7f /* 0x20d0 */;
2101: data_o = 32'h0517842a /* 0x20d4 */;
2102: data_o = 32'h05130000 /* 0x20d8 */;
2103: data_o = 32'hf0ef7d25 /* 0x20dc */;
2104: data_o = 32'hb7259d2f /* 0x20e0 */;
2105: data_o = 32'h46814709 /* 0x20e4 */;
2106: data_o = 32'h45814601 /* 0x20e8 */;
2107: data_o = 32'hf0ef854a /* 0x20ec */;
2108: data_o = 32'hbf21f8af /* 0x20f0 */;
2109: data_o = 32'h00000000 /* 0x20f4 */;
2110: data_o = 32'h6978615b /* 0x20f8 */;
2111: data_o = 32'h636c6c5f /* 0x20fc */;
2112: data_o = 32'h5841205d /* 0x2100 */;
2113: data_o = 32'h4c4c2049 /* 0x2104 */;
2114: data_o = 32'h65562043 /* 0x2108 */;
2115: data_o = 32'h6f697372 /* 0x210c */;
2116: data_o = 32'h2020206e /* 0x2110 */;
2117: data_o = 32'h2020203a /* 0x2114 */;
2118: data_o = 32'h20202020 /* 0x2118 */;
2119: data_o = 32'h6c257830 /* 0x211c */;
2120: data_o = 32'h000a0d78 /* 0x2120 */;
2121: data_o = 32'h00000000 /* 0x2124 */;
2122: data_o = 32'h6978615b /* 0x2128 */;
2123: data_o = 32'h636c6c5f /* 0x212c */;
2124: data_o = 32'h6553205d /* 0x2130 */;
2125: data_o = 32'h73412074 /* 0x2134 */;
2126: data_o = 32'h69636f73 /* 0x2138 */;
2127: data_o = 32'h76697461 /* 0x213c */;
2128: data_o = 32'h20797469 /* 0x2140 */;
2129: data_o = 32'h2020203a /* 0x2144 */;
2130: data_o = 32'h20202020 /* 0x2148 */;
2131: data_o = 32'h0a0d6425 /* 0x214c */;
2132: data_o = 32'h00000000 /* 0x2150 */;
2133: data_o = 32'h00000000 /* 0x2154 */;
2134: data_o = 32'h6978615b /* 0x2158 */;
2135: data_o = 32'h636c6c5f /* 0x215c */;
2136: data_o = 32'h754e205d /* 0x2160 */;
2137: data_o = 32'h6c42206d /* 0x2164 */;
2138: data_o = 32'h736b636f /* 0x2168 */;
2139: data_o = 32'h20202020 /* 0x216c */;
2140: data_o = 32'h20202020 /* 0x2170 */;
2141: data_o = 32'h2020203a /* 0x2174 */;
2142: data_o = 32'h20202020 /* 0x2178 */;
2143: data_o = 32'h0a0d6425 /* 0x217c */;
2144: data_o = 32'h00000000 /* 0x2180 */;
2145: data_o = 32'h00000000 /* 0x2184 */;
2146: data_o = 32'h6978615b /* 0x2188 */;
2147: data_o = 32'h636c6c5f /* 0x218c */;
2148: data_o = 32'h754e205d /* 0x2190 */;
2149: data_o = 32'h694c206d /* 0x2194 */;
2150: data_o = 32'h2073656e /* 0x2198 */;
2151: data_o = 32'h20202020 /* 0x219c */;
2152: data_o = 32'h20202020 /* 0x21a0 */;
2153: data_o = 32'h2020203a /* 0x21a4 */;
2154: data_o = 32'h20202020 /* 0x21a8 */;
2155: data_o = 32'h0a0d6425 /* 0x21ac */;
2156: data_o = 32'h00000000 /* 0x21b0 */;
2157: data_o = 32'h00000000 /* 0x21b4 */;
2158: data_o = 32'h6978615b /* 0x21b8 */;
2159: data_o = 32'h636c6c5f /* 0x21bc */;
2160: data_o = 32'h4942205d /* 0x21c0 */;
2161: data_o = 32'h4f205453 /* 0x21c4 */;
2162: data_o = 32'h6f637475 /* 0x21c8 */;
2163: data_o = 32'h2020656d /* 0x21cc */;
2164: data_o = 32'h20202020 /* 0x21d0 */;
2165: data_o = 32'h2020203a /* 0x21d4 */;
2166: data_o = 32'h20202020 /* 0x21d8 */;
2167: data_o = 32'h0a0d6425 /* 0x21dc */;
2168: data_o = 32'h00000000 /* 0x21e0 */;
2169: data_o = 32'h00000000 /* 0x21e4 */;
2170: data_o = 32'h69706f43 /* 0x21e8 */;
2171: data_o = 32'h64206465 /* 0x21ec */;
2172: data_o = 32'h63697665 /* 0x21f0 */;
2173: data_o = 32'h72742065 /* 0x21f4 */;
2174: data_o = 32'h74206565 /* 0x21f8 */;
2175: data_o = 32'h7830206f /* 0x21fc */;
2176: data_o = 32'h0d786c25 /* 0x2200 */;
2177: data_o = 32'h0000000a /* 0x2204 */;
2178: data_o = 32'h69706f43 /* 0x2208 */;
2179: data_o = 32'h66206465 /* 0x220c */;
2180: data_o = 32'h776d7269 /* 0x2210 */;
2181: data_o = 32'h20657261 /* 0x2214 */;
2182: data_o = 32'h30206f74 /* 0x2218 */;
2183: data_o = 32'h786c2578 /* 0x221c */;
2184: data_o = 32'h00000a0d /* 0x2220 */;
2185: data_o = 32'h00000000 /* 0x2224 */;
2186: data_o = 32'h746f6f42 /* 0x2228 */;
2187: data_o = 32'h65646f6d /* 0x222c */;
2188: data_o = 32'h203a3020 /* 0x2230 */;
2189: data_o = 32'h746f6f42 /* 0x2234 */;
2190: data_o = 32'h20676e69 /* 0x2238 */;
2191: data_o = 32'h6d6f7266 /* 0x223c */;
2192: data_o = 32'h20445320 /* 0x2240 */;
2193: data_o = 32'h64726143 /* 0x2244 */;
2194: data_o = 32'h00000a0d /* 0x2248 */;
2195: data_o = 32'h00000000 /* 0x224c */;
2196: data_o = 32'h746f6f42 /* 0x2250 */;
2197: data_o = 32'h65646f6d /* 0x2254 */;
2198: data_o = 32'h203a3120 /* 0x2258 */;
2199: data_o = 32'h6e696f44 /* 0x225c */;
2200: data_o = 32'h6f6e2067 /* 0x2260 */;
2201: data_o = 32'h6e696874 /* 0x2264 */;
2202: data_o = 32'h293a2067 /* 0x2268 */;
2203: data_o = 32'h00000a0d /* 0x226c */;
2204: data_o = 32'h746f6f42 /* 0x2270 */;
2205: data_o = 32'h65646f6d /* 0x2274 */;
2206: data_o = 32'h203a3220 /* 0x2278 */;
2207: data_o = 32'h6e696f44 /* 0x227c */;
2208: data_o = 32'h6f6e2067 /* 0x2280 */;
2209: data_o = 32'h6e696874 /* 0x2284 */;
2210: data_o = 32'h293a2067 /* 0x2288 */;
2211: data_o = 32'h00000a0d /* 0x228c */;
2212: data_o = 32'h746f6f42 /* 0x2290 */;
2213: data_o = 32'h65646f6d /* 0x2294 */;
2214: data_o = 32'h203a3320 /* 0x2298 */;
2215: data_o = 32'h6e696f44 /* 0x229c */;
2216: data_o = 32'h6f6e2067 /* 0x22a0 */;
2217: data_o = 32'h6e696874 /* 0x22a4 */;
2218: data_o = 32'h293a2067 /* 0x22a8 */;
2219: data_o = 32'h00000a0d /* 0x22ac */;
2220: data_o = 32'h746f6f42 /* 0x22b0 */;
2221: data_o = 32'h65646f6d /* 0x22b4 */;
2222: data_o = 32'h3a642520 /* 0x22b8 */;
2223: data_o = 32'h696f4420 /* 0x22bc */;
2224: data_o = 32'h6e20676e /* 0x22c0 */;
2225: data_o = 32'h6968746f /* 0x22c4 */;
2226: data_o = 32'h3a20676e /* 0x22c8 */;
2227: data_o = 32'h000a0d29 /* 0x22cc */;
2228: data_o = 32'h2b696e66 /* 0x22d0 */;
2229: data_o = 32'h00000000 /* 0x22d4 */;
2230: data_o = 32'h00696e66 /* 0x22d8 */;
2231: data_o = 32'h00000000 /* 0x22dc */;
2232: data_o = 32'h006e616e /* 0x22e0 */;
2233: data_o = 32'h00000000 /* 0x22e4 */;
2234: data_o = 32'h2d696e66 /* 0x22e8 */;
2235: data_o = 32'h00000000 /* 0x22ec */;
2236: data_o = 32'hffffea40 /* 0x22f0 */;
2237: data_o = 32'hffffe9a8 /* 0x22f4 */;
2238: data_o = 32'hffffe9a8 /* 0x22f8 */;
2239: data_o = 32'hffffea38 /* 0x22fc */;
2240: data_o = 32'hffffe9a8 /* 0x2300 */;
2241: data_o = 32'hffffe9a8 /* 0x2304 */;
2242: data_o = 32'hffffe9a8 /* 0x2308 */;
2243: data_o = 32'hffffe9a8 /* 0x230c */;
2244: data_o = 32'hffffe9a8 /* 0x2310 */;
2245: data_o = 32'hffffe9a8 /* 0x2314 */;
2246: data_o = 32'hffffe9a8 /* 0x2318 */;
2247: data_o = 32'hffffea30 /* 0x231c */;
2248: data_o = 32'hffffe9a8 /* 0x2320 */;
2249: data_o = 32'hffffea28 /* 0x2324 */;
2250: data_o = 32'hffffe9a8 /* 0x2328 */;
2251: data_o = 32'hffffe9a8 /* 0x232c */;
2252: data_o = 32'hffffea20 /* 0x2330 */;
2253: data_o = 32'hffffeb24 /* 0x2334 */;
2254: data_o = 32'hffffe9ac /* 0x2338 */;
2255: data_o = 32'hffffe9a2 /* 0x233c */;
2256: data_o = 32'hffffe9ac /* 0x2340 */;
2257: data_o = 32'hffffeb0a /* 0x2344 */;
2258: data_o = 32'hffffe9ac /* 0x2348 */;
2259: data_o = 32'hffffe9ac /* 0x234c */;
2260: data_o = 32'hffffe9ac /* 0x2350 */;
2261: data_o = 32'hffffe9ac /* 0x2354 */;
2262: data_o = 32'hffffe9ac /* 0x2358 */;
2263: data_o = 32'hffffe9ac /* 0x235c */;
2264: data_o = 32'hffffe9ac /* 0x2360 */;
2265: data_o = 32'hffffe9a2 /* 0x2364 */;
2266: data_o = 32'hffffe9ac /* 0x2368 */;
2267: data_o = 32'hffffe9ac /* 0x236c */;
2268: data_o = 32'hffffe9ac /* 0x2370 */;
2269: data_o = 32'hffffe9ac /* 0x2374 */;
2270: data_o = 32'hffffe9ac /* 0x2378 */;
2271: data_o = 32'hffffe9a2 /* 0x237c */;
2272: data_o = 32'hffffeb56 /* 0x2380 */;
2273: data_o = 32'hffffe8da /* 0x2384 */;
2274: data_o = 32'hffffe8da /* 0x2388 */;
2275: data_o = 32'hffffe8da /* 0x238c */;
2276: data_o = 32'hffffe8da /* 0x2390 */;
2277: data_o = 32'hffffe8da /* 0x2394 */;
2278: data_o = 32'hffffe8da /* 0x2398 */;
2279: data_o = 32'hffffe8da /* 0x239c */;
2280: data_o = 32'hffffe8da /* 0x23a0 */;
2281: data_o = 32'hffffe8da /* 0x23a4 */;
2282: data_o = 32'hffffe8da /* 0x23a8 */;
2283: data_o = 32'hffffe8da /* 0x23ac */;
2284: data_o = 32'hffffe8da /* 0x23b0 */;
2285: data_o = 32'hffffe8da /* 0x23b4 */;
2286: data_o = 32'hffffe8da /* 0x23b8 */;
2287: data_o = 32'hffffe8da /* 0x23bc */;
2288: data_o = 32'hffffe8da /* 0x23c0 */;
2289: data_o = 32'hffffe8da /* 0x23c4 */;
2290: data_o = 32'hffffe8da /* 0x23c8 */;
2291: data_o = 32'hffffe8da /* 0x23cc */;
2292: data_o = 32'hffffe8da /* 0x23d0 */;
2293: data_o = 32'hffffe8da /* 0x23d4 */;
2294: data_o = 32'hffffe8da /* 0x23d8 */;
2295: data_o = 32'hffffe8da /* 0x23dc */;
2296: data_o = 32'hffffe8da /* 0x23e0 */;
2297: data_o = 32'hffffe8da /* 0x23e4 */;
2298: data_o = 32'hffffe8da /* 0x23e8 */;
2299: data_o = 32'hffffe8da /* 0x23ec */;
2300: data_o = 32'hffffe8da /* 0x23f0 */;
2301: data_o = 32'hffffe8da /* 0x23f4 */;
2302: data_o = 32'hffffe8da /* 0x23f8 */;
2303: data_o = 32'hffffe8da /* 0x23fc */;
2304: data_o = 32'hffffec42 /* 0x2400 */;
2305: data_o = 32'hffffeaec /* 0x2404 */;
2306: data_o = 32'hffffec42 /* 0x2408 */;
2307: data_o = 32'hffffe8da /* 0x240c */;
2308: data_o = 32'hffffe8da /* 0x2410 */;
2309: data_o = 32'hffffe8da /* 0x2414 */;
2310: data_o = 32'hffffe8da /* 0x2418 */;
2311: data_o = 32'hffffe8da /* 0x241c */;
2312: data_o = 32'hffffe8da /* 0x2420 */;
2313: data_o = 32'hffffe8da /* 0x2424 */;
2314: data_o = 32'hffffe8da /* 0x2428 */;
2315: data_o = 32'hffffe8da /* 0x242c */;
2316: data_o = 32'hffffe8da /* 0x2430 */;
2317: data_o = 32'hffffe8da /* 0x2434 */;
2318: data_o = 32'hffffe8da /* 0x2438 */;
2319: data_o = 32'hffffe8da /* 0x243c */;
2320: data_o = 32'hffffe8da /* 0x2440 */;
2321: data_o = 32'hffffe8da /* 0x2444 */;
2322: data_o = 32'hffffe8da /* 0x2448 */;
2323: data_o = 32'hffffec70 /* 0x244c */;
2324: data_o = 32'hffffe8da /* 0x2450 */;
2325: data_o = 32'hffffe8da /* 0x2454 */;
2326: data_o = 32'hffffe8da /* 0x2458 */;
2327: data_o = 32'hffffe8da /* 0x245c */;
2328: data_o = 32'hffffe8da /* 0x2460 */;
2329: data_o = 32'hffffe8da /* 0x2464 */;
2330: data_o = 32'hffffe8da /* 0x2468 */;
2331: data_o = 32'hffffe8da /* 0x246c */;
2332: data_o = 32'hffffe8da /* 0x2470 */;
2333: data_o = 32'hffffec70 /* 0x2474 */;
2334: data_o = 32'hffffeb0e /* 0x2478 */;
2335: data_o = 32'hffffec70 /* 0x247c */;
2336: data_o = 32'hffffec42 /* 0x2480 */;
2337: data_o = 32'hffffeaec /* 0x2484 */;
2338: data_o = 32'hffffec42 /* 0x2488 */;
2339: data_o = 32'h00000000 /* 0x248c */;
2340: data_o = 32'h00000000 /* 0x2490 */;
2341: data_o = 32'h3ff00000 /* 0x2494 */;
2342: data_o = 32'h00000000 /* 0x2498 */;
2343: data_o = 32'h40240000 /* 0x249c */;
2344: data_o = 32'h00000000 /* 0x24a0 */;
2345: data_o = 32'h40590000 /* 0x24a4 */;
2346: data_o = 32'h00000000 /* 0x24a8 */;
2347: data_o = 32'h408f4000 /* 0x24ac */;
2348: data_o = 32'h00000000 /* 0x24b0 */;
2349: data_o = 32'h40c38800 /* 0x24b4 */;
2350: data_o = 32'h00000000 /* 0x24b8 */;
2351: data_o = 32'h40f86a00 /* 0x24bc */;
2352: data_o = 32'h00000000 /* 0x24c0 */;
2353: data_o = 32'h412e8480 /* 0x24c4 */;
2354: data_o = 32'h00000000 /* 0x24c8 */;
2355: data_o = 32'h416312d0 /* 0x24cc */;
2356: data_o = 32'h00000000 /* 0x24d0 */;
2357: data_o = 32'h4197d784 /* 0x24d4 */;
2358: data_o = 32'h00000000 /* 0x24d8 */;
2359: data_o = 32'h41cdcd65 /* 0x24dc */;
2360: data_o = 32'h63204453 /* 0x24e0 */;
2361: data_o = 32'h20647261 /* 0x24e4 */;
2362: data_o = 32'h79706f63 /* 0x24e8 */;
2363: data_o = 32'h20666f20 /* 0x24ec */;
2364: data_o = 32'h64616568 /* 0x24f0 */;
2365: data_o = 32'h66207265 /* 0x24f4 */;
2366: data_o = 32'h656c6961 /* 0x24f8 */;
2367: data_o = 32'h0a0d2164 /* 0x24fc */;
2368: data_o = 32'h00000000 /* 0x2500 */;
2369: data_o = 32'h00000000 /* 0x2504 */;
2370: data_o = 32'h20545047 /* 0x2508 */;
2371: data_o = 32'h74726170 /* 0x250c */;
2372: data_o = 32'h6f697469 /* 0x2510 */;
2373: data_o = 32'h6174206e /* 0x2514 */;
2374: data_o = 32'h20656c62 /* 0x2518 */;
2375: data_o = 32'h64616568 /* 0x251c */;
2376: data_o = 32'h0d3a7265 /* 0x2520 */;
2377: data_o = 32'h0000000a /* 0x2524 */;
2378: data_o = 32'h67697309 /* 0x2528 */;
2379: data_o = 32'h7574616e /* 0x252c */;
2380: data_o = 32'h093a6572 /* 0x2530 */;
2381: data_o = 32'h25783020 /* 0x2534 */;
2382: data_o = 32'h0a0d786c /* 0x2538 */;
2383: data_o = 32'h00000000 /* 0x253c */;
2384: data_o = 32'h76657209 /* 0x2540 */;
2385: data_o = 32'h6f697369 /* 0x2544 */;
2386: data_o = 32'h20093a6e /* 0x2548 */;
2387: data_o = 32'h78257830 /* 0x254c */;
2388: data_o = 32'h00000a0d /* 0x2550 */;
2389: data_o = 32'h00000000 /* 0x2554 */;
2390: data_o = 32'h61656809 /* 0x2558 */;
2391: data_o = 32'h20726564 /* 0x255c */;
2392: data_o = 32'h657a6973 /* 0x2560 */;
2393: data_o = 32'h2009093a /* 0x2564 */;
2394: data_o = 32'h78257830 /* 0x2568 */;
2395: data_o = 32'h00000a0d /* 0x256c */;
2396: data_o = 32'h73657209 /* 0x2570 */;
2397: data_o = 32'h65767265 /* 0x2574 */;
2398: data_o = 32'h20093a64 /* 0x2578 */;
2399: data_o = 32'h78257830 /* 0x257c */;
2400: data_o = 32'h00000a0d /* 0x2580 */;
2401: data_o = 32'h00000000 /* 0x2584 */;
2402: data_o = 32'h20796d09 /* 0x2588 */;
2403: data_o = 32'h3a61626c /* 0x258c */;
2404: data_o = 32'h78302009 /* 0x2590 */;
2405: data_o = 32'h0d786c25 /* 0x2594 */;
2406: data_o = 32'h0000000a /* 0x2598 */;
2407: data_o = 32'h00000000 /* 0x259c */;
2408: data_o = 32'h746c6109 /* 0x25a0 */;
2409: data_o = 32'h616e7265 /* 0x25a4 */;
2410: data_o = 32'h6c206574 /* 0x25a8 */;
2411: data_o = 32'h093a6162 /* 0x25ac */;
2412: data_o = 32'h25783020 /* 0x25b0 */;
2413: data_o = 32'h0a0d786c /* 0x25b4 */;
2414: data_o = 32'h00000000 /* 0x25b8 */;
2415: data_o = 32'h00000000 /* 0x25bc */;
2416: data_o = 32'h72617009 /* 0x25c0 */;
2417: data_o = 32'h69746974 /* 0x25c4 */;
2418: data_o = 32'h65206e6f /* 0x25c8 */;
2419: data_o = 32'h7972746e /* 0x25cc */;
2420: data_o = 32'h61626c20 /* 0x25d0 */;
2421: data_o = 32'h3020093a /* 0x25d4 */;
2422: data_o = 32'h786c2578 /* 0x25d8 */;
2423: data_o = 32'h00000a0d /* 0x25dc */;
2424: data_o = 32'h6d756e09 /* 0x25e0 */;
2425: data_o = 32'h20726562 /* 0x25e4 */;
2426: data_o = 32'h74726170 /* 0x25e8 */;
2427: data_o = 32'h6f697469 /* 0x25ec */;
2428: data_o = 32'h6e65206e /* 0x25f0 */;
2429: data_o = 32'h65697274 /* 0x25f4 */;
2430: data_o = 32'h20093a73 /* 0x25f8 */;
2431: data_o = 32'h0a0d6425 /* 0x25fc */;
2432: data_o = 32'h00000000 /* 0x2600 */;
2433: data_o = 32'h00000000 /* 0x2604 */;
2434: data_o = 32'h7a697309 /* 0x2608 */;
2435: data_o = 32'h61702065 /* 0x260c */;
2436: data_o = 32'h74697472 /* 0x2610 */;
2437: data_o = 32'h206e6f69 /* 0x2614 */;
2438: data_o = 32'h72746e65 /* 0x2618 */;
2439: data_o = 32'h3a736569 /* 0x261c */;
2440: data_o = 32'h20092020 /* 0x2620 */;
2441: data_o = 32'h0a0d6425 /* 0x2624 */;
2442: data_o = 32'h00000000 /* 0x2628 */;
2443: data_o = 32'h00000000 /* 0x262c */;
2444: data_o = 32'h63204453 /* 0x2630 */;
2445: data_o = 32'h20647261 /* 0x2634 */;
2446: data_o = 32'h79706f63 /* 0x2638 */;
2447: data_o = 32'h20666f20 /* 0x263c */;
2448: data_o = 32'h74726170 /* 0x2640 */;
2449: data_o = 32'h6f697469 /* 0x2644 */;
2450: data_o = 32'h6e65206e /* 0x2648 */;
2451: data_o = 32'h65697274 /* 0x264c */;
2452: data_o = 32'h61662073 /* 0x2650 */;
2453: data_o = 32'h64656c69 /* 0x2654 */;
2454: data_o = 32'h000a0d21 /* 0x2658 */;
2455: data_o = 32'h00000000 /* 0x265c */;
2456: data_o = 32'h20545047 /* 0x2660 */;
2457: data_o = 32'h74726170 /* 0x2664 */;
2458: data_o = 32'h6f697469 /* 0x2668 */;
2459: data_o = 32'h6e65206e /* 0x266c */;
2460: data_o = 32'h20797274 /* 0x2670 */;
2461: data_o = 32'h0a0d6425 /* 0x2674 */;
2462: data_o = 32'h00000000 /* 0x2678 */;
2463: data_o = 32'h00000000 /* 0x267c */;
2464: data_o = 32'h72696609 /* 0x2680 */;
2465: data_o = 32'h6c207473 /* 0x2684 */;
2466: data_o = 32'h093a6162 /* 0x2688 */;
2467: data_o = 32'h25783020 /* 0x268c */;
2468: data_o = 32'h0a0d786c /* 0x2690 */;
2469: data_o = 32'h00000000 /* 0x2694 */;
2470: data_o = 32'h73616c09 /* 0x2698 */;
2471: data_o = 32'h626c2074 /* 0x269c */;
2472: data_o = 32'h20093a61 /* 0x26a0 */;
2473: data_o = 32'h6c257830 /* 0x26a4 */;
2474: data_o = 32'h000a0d78 /* 0x26a8 */;
2475: data_o = 32'h00000000 /* 0x26ac */;
2476: data_o = 32'h74746109 /* 0x26b0 */;
2477: data_o = 32'h75626972 /* 0x26b4 */;
2478: data_o = 32'h3a736574 /* 0x26b8 */;
2479: data_o = 32'h78302009 /* 0x26bc */;
2480: data_o = 32'h0d786c25 /* 0x26c0 */;
2481: data_o = 32'h0000000a /* 0x26c4 */;
2482: data_o = 32'h6d616e09 /* 0x26c8 */;
2483: data_o = 32'h00093a65 /* 0x26cc */;
2484: data_o = 32'h00006325 /* 0x26d0 */;
2485: data_o = 32'h00000000 /* 0x26d4 */;
2486: data_o = 32'h5d64735b /* 0x26d8 */;
2487: data_o = 32'h73657220 /* 0x26dc */;
2488: data_o = 32'h656c5f70 /* 0x26e0 */;
2489: data_o = 32'h7830206e /* 0x26e4 */;
2490: data_o = 32'h74207825 /* 0x26e8 */;
2491: data_o = 32'h6c206f6f /* 0x26ec */;
2492: data_o = 32'h65677261 /* 0x26f0 */;
2493: data_o = 32'h726f6620 /* 0x26f4 */;
2494: data_o = 32'h5f647320 /* 0x26f8 */;
2495: data_o = 32'h20646d63 /* 0x26fc */;
2496: data_o = 32'h78616d28 /* 0x2700 */;
2497: data_o = 32'h20736920 /* 0x2704 */;
2498: data_o = 32'h0a0d2938 /* 0x2708 */;
2499: data_o = 32'h00000000 /* 0x270c */;
2500: data_o = 32'h5d64735b /* 0x2710 */;
2501: data_o = 32'h444d4320 /* 0x2714 */;
2502: data_o = 32'h65722030 /* 0x2718 */;
2503: data_o = 32'h6e6f7073 /* 0x271c */;
2504: data_o = 32'h203a6573 /* 0x2720 */;
2505: data_o = 32'h78257830 /* 0x2724 */;
2506: data_o = 32'h00000a0d /* 0x2728 */;
2507: data_o = 32'h00000000 /* 0x272c */;
2508: data_o = 32'h5d64735b /* 0x2730 */;
2509: data_o = 32'h444d4320 /* 0x2734 */;
2510: data_o = 32'h65722038 /* 0x2738 */;
2511: data_o = 32'h6e6f7073 /* 0x273c */;
2512: data_o = 32'h203a6573 /* 0x2740 */;
2513: data_o = 32'h6c257830 /* 0x2744 */;
2514: data_o = 32'h000a0d78 /* 0x2748 */;
2515: data_o = 32'h00000000 /* 0x274c */;
2516: data_o = 32'h5d64735b /* 0x2750 */;
2517: data_o = 32'h444d4320 /* 0x2754 */;
2518: data_o = 32'h72203535 /* 0x2758 */;
2519: data_o = 32'h6f707365 /* 0x275c */;
2520: data_o = 32'h3a65736e /* 0x2760 */;
2521: data_o = 32'h25783020 /* 0x2764 */;
2522: data_o = 32'h0a0d786c /* 0x2768 */;
2523: data_o = 32'h00000000 /* 0x276c */;
2524: data_o = 32'h5d64735b /* 0x2770 */;
2525: data_o = 32'h4d434120 /* 0x2774 */;
2526: data_o = 32'h20313444 /* 0x2778 */;
2527: data_o = 32'h70736572 /* 0x277c */;
2528: data_o = 32'h65736e6f /* 0x2780 */;
2529: data_o = 32'h7830203a /* 0x2784 */;
2530: data_o = 32'h0d786c25 /* 0x2788 */;
2531: data_o = 32'h0000000a /* 0x278c */;
2532: data_o = 32'h5d64735b /* 0x2790 */;
2533: data_o = 32'h444d4320 /* 0x2794 */;
2534: data_o = 32'h72203835 /* 0x2798 */;
2535: data_o = 32'h6f707365 /* 0x279c */;
2536: data_o = 32'h3a65736e /* 0x27a0 */;
2537: data_o = 32'h25783020 /* 0x27a4 */;
2538: data_o = 32'h000a0d78 /* 0x27a8 */;
2539: data_o = 32'h00000000 /* 0x27ac */;
2540: data_o = 32'h5d64735b /* 0x27b0 */;
2541: data_o = 32'h444d4320 /* 0x27b4 */;
2542: data_o = 32'h72203631 /* 0x27b8 */;
2543: data_o = 32'h6f707365 /* 0x27bc */;
2544: data_o = 32'h3a65736e /* 0x27c0 */;
2545: data_o = 32'h25783020 /* 0x27c4 */;
2546: data_o = 32'h000a0d78 /* 0x27c8 */;
2547: data_o = 32'h00000000 /* 0x27cc */;
2548: data_o = 32'h5d64735b /* 0x27d0 */;
2549: data_o = 32'h6e695320 /* 0x27d4 */;
2550: data_o = 32'h20656c67 /* 0x27d8 */;
2551: data_o = 32'h636f6c62 /* 0x27dc */;
2552: data_o = 32'h7274206b /* 0x27e0 */;
2553: data_o = 32'h66736e61 /* 0x27e4 */;
2554: data_o = 32'h66207265 /* 0x27e8 */;
2555: data_o = 32'h206d6f72 /* 0x27ec */;
2556: data_o = 32'h2041424c /* 0x27f0 */;
2557: data_o = 32'h6c257830 /* 0x27f4 */;
2558: data_o = 32'h6f742078 /* 0x27f8 */;
2559: data_o = 32'h25783020 /* 0x27fc */;
2560: data_o = 32'h0a0d786c /* 0x2800 */;
2561: data_o = 32'h00000000 /* 0x2804 */;
2562: data_o = 32'h5d64735b /* 0x2808 */;
2563: data_o = 32'h6c754d20 /* 0x280c */;
2564: data_o = 32'h62206974 /* 0x2810 */;
2565: data_o = 32'h6b636f6c /* 0x2814 */;
2566: data_o = 32'h61727420 /* 0x2818 */;
2567: data_o = 32'h6566736e /* 0x281c */;
2568: data_o = 32'h666f2072 /* 0x2820 */;
2569: data_o = 32'h20642520 /* 0x2824 */;
2570: data_o = 32'h636f6c62 /* 0x2828 */;
2571: data_o = 32'h6620736b /* 0x282c */;
2572: data_o = 32'h206d6f72 /* 0x2830 */;
2573: data_o = 32'h2041424c /* 0x2834 */;
2574: data_o = 32'h6c257830 /* 0x2838 */;
2575: data_o = 32'h6f742078 /* 0x283c */;
2576: data_o = 32'h25783020 /* 0x2840 */;
2577: data_o = 32'h0a0d786c /* 0x2844 */;
2578: data_o = 32'h00000000 /* 0x2848 */;
2579: data_o = 32'h00000000 /* 0x284c */;
2580: data_o = 32'h5d64735b /* 0x2850 */;
2581: data_o = 32'h746f4720 /* 0x2854 */;
2582: data_o = 32'h6f6c6220 /* 0x2858 */;
2583: data_o = 32'h72206b63 /* 0x285c */;
2584: data_o = 32'h20646165 /* 0x2860 */;
2585: data_o = 32'h6d6d6f63 /* 0x2864 */;
2586: data_o = 32'h20646e61 /* 0x2868 */;
2587: data_o = 32'h70736572 /* 0x286c */;
2588: data_o = 32'h65736e6f /* 0x2870 */;
2589: data_o = 32'h7830203a /* 0x2874 */;
2590: data_o = 32'h0a0d7825 /* 0x2878 */;
2591: data_o = 32'h00000000 /* 0x287c */;
2592: data_o = 32'h5d64735b /* 0x2880 */;
2593: data_o = 32'h72724520 /* 0x2884 */;
2594: data_o = 32'h7420726f /* 0x2888 */;
2595: data_o = 32'h6e656b6f /* 0x288c */;
2596: data_o = 32'h63657220 /* 0x2890 */;
2597: data_o = 32'h65766965 /* 0x2894 */;
2598: data_o = 32'h30203a64 /* 0x2898 */;
2599: data_o = 32'h0d782578 /* 0x289c */;
2600: data_o = 32'h0000000a /* 0x28a0 */;
2601: data_o = 32'h00000000 /* 0x28a4 */;
2602: data_o = 32'h5d64735b /* 0x28a8 */;
2603: data_o = 32'h444d4320 /* 0x28ac */;
2604: data_o = 32'h72203231 /* 0x28b0 */;
2605: data_o = 32'h6f707365 /* 0x28b4 */;
2606: data_o = 32'h3a65736e /* 0x28b8 */;
2607: data_o = 32'h25783020 /* 0x28bc */;
2608: data_o = 32'h000a0d78 /* 0x28c0 */;
2609: data_o = 32'h00000000 /* 0x28c4 */;
2610: data_o = 32'hffffffff /* 0x28c8 */;
2611: data_o = 32'h7fefffff /* 0x28cc */;
2612: data_o = 32'hffffffff /* 0x28d0 */;
2613: data_o = 32'hffefffff /* 0x28d4 */;
2614: data_o = 32'h509f79fb /* 0x28d8 */;
2615: data_o = 32'h3fd34413 /* 0x28dc */;
2616: data_o = 32'h8b60c8b3 /* 0x28e0 */;
2617: data_o = 32'h3fc68a28 /* 0x28e4 */;
2618: data_o = 32'h00000000 /* 0x28e8 */;
2619: data_o = 32'h3ff80000 /* 0x28ec */;
2620: data_o = 32'h636f4361 /* 0x28f0 */;
2621: data_o = 32'h3fd287a7 /* 0x28f4 */;
2622: data_o = 32'h0979a371 /* 0x28f8 */;
2623: data_o = 32'h400a934f /* 0x28fc */;
2624: data_o = 32'h00000000 /* 0x2900 */;
2625: data_o = 32'h3fe00000 /* 0x2904 */;
2626: data_o = 32'hfefa39ef /* 0x2908 */;
2627: data_o = 32'h3fe62e42 /* 0x290c */;
2628: data_o = 32'hbbb55516 /* 0x2910 */;
2629: data_o = 32'h40026bb1 /* 0x2914 */;
2630: data_o = 32'h00000000 /* 0x2918 */;
2631: data_o = 32'h402c0000 /* 0x291c */;
2632: data_o = 32'h00000000 /* 0x2920 */;
2633: data_o = 32'h40240000 /* 0x2924 */;
2634: data_o = 32'h00000000 /* 0x2928 */;
2635: data_o = 32'h40180000 /* 0x292c */;
2636: data_o = 32'h00000000 /* 0x2930 */;
2637: data_o = 32'h40000000 /* 0x2934 */;
2638: data_o = 32'h00000000 /* 0x2938 */;
2639: data_o = 32'h3ff00000 /* 0x293c */;
2640: data_o = 32'heb1c432d /* 0x2940 */;
2641: data_o = 32'h3f1a36e2 /* 0x2944 */;
2642: data_o = 32'h00000000 /* 0x2948 */;
2643: data_o = 32'h412e8480 /* 0x294c */;
2644: data_o = 32'h00000000 /* 0x2950 */;
2645: data_o = 32'h41cdcd65 /* 0x2954 */;
2646: data_o = 32'h00000000 /* 0x2958 */;
2647: data_o = 32'hc1cdcd65 /* 0x295c */;
2648: data_o = 32'h0001aa87 /* 0x2960 */;
2649: data_o = 32'h00004800 /* 0x2964 */;
2650: data_o = 32'h000200ff /* 0x2968 */;
2651: data_o = 32'h00005000 /* 0x296c */;
2652: data_o = 32'h05020101 /* 0x2970 */;
2653: data_o = 32'h05000000 /* 0x2974 */;
2654: data_o = 32'h00000000 /* 0x2978 */;
2655: data_o = 32'h00000000 /* 0x297c */;
2656: data_o = 32'h00000000 /* 0x2980 */;
2657: data_o = 32'h00000000 /* 0x2984 */;
2658: data_o = 32'h00000000 /* 0x2988 */;
2659: data_o = 32'h00000000 /* 0x298c */;
2660: data_o = 32'h00000000 /* 0x2990 */;
2661: data_o = 32'h00000000 /* 0x2994 */;
2662: data_o = 32'h00000000 /* 0x2998 */;
2663: data_o = 32'h00000000 /* 0x299c */;
2664: data_o = 32'h00000000 /* 0x29a0 */;
2665: data_o = 32'h00000000 /* 0x29a4 */;
2666: data_o = 32'h00000000 /* 0x29a8 */;
2667: data_o = 32'h00000000 /* 0x29ac */;
2668: data_o = 32'h00000000 /* 0x29b0 */;
2669: data_o = 32'h00000000 /* 0x29b4 */;
2670: data_o = 32'h00000000 /* 0x29b8 */;
2671: data_o = 32'h00000000 /* 0x29bc */;
2672: data_o = 32'h00000000 /* 0x29c0 */;
2673: data_o = 32'h00000000 /* 0x29c4 */;
2674: data_o = 32'h00000000 /* 0x29c8 */;
2675: data_o = 32'h00000000 /* 0x29cc */;
2676: data_o = 32'h00000000 /* 0x29d0 */;
2677: data_o = 32'h00000000 /* 0x29d4 */;
2678: data_o = 32'h00000000 /* 0x29d8 */;
2679: data_o = 32'h00000000 /* 0x29dc */;
2680: data_o = 32'h00000000 /* 0x29e0 */;
2681: data_o = 32'h00000000 /* 0x29e4 */;
2682: data_o = 32'h00000000 /* 0x29e8 */;
2683: data_o = 32'h00000000 /* 0x29ec */;
2684: data_o = 32'h00000000 /* 0x29f0 */;
2685: data_o = 32'h00000000 /* 0x29f4 */;
2686: data_o = 32'h00000000 /* 0x29f8 */;
2687: data_o = 32'h00000000 /* 0x29fc */;
2688: data_o = 32'h00000000 /* 0x2a00 */;
2689: data_o = 32'h00000000 /* 0x2a04 */;
2690: data_o = 32'h00000000 /* 0x2a08 */;
2691: data_o = 32'h00000000 /* 0x2a0c */;
2692: data_o = 32'h00000000 /* 0x2a10 */;
2693: data_o = 32'h00000000 /* 0x2a14 */;
2694: data_o = 32'h00000000 /* 0x2a18 */;
2695: data_o = 32'h00000000 /* 0x2a1c */;
2696: data_o = 32'h00000000 /* 0x2a20 */;
2697: data_o = 32'h00000000 /* 0x2a24 */;
2698: data_o = 32'h00000000 /* 0x2a28 */;
2699: data_o = 32'h00000000 /* 0x2a2c */;
2700: data_o = 32'h00000000 /* 0x2a30 */;
2701: data_o = 32'h00000000 /* 0x2a34 */;
2702: data_o = 32'h00000000 /* 0x2a38 */;
2703: data_o = 32'h00000000 /* 0x2a3c */;
2704: data_o = 32'h00000000 /* 0x2a40 */;
2705: data_o = 32'h00000000 /* 0x2a44 */;
2706: data_o = 32'h00000000 /* 0x2a48 */;
2707: data_o = 32'h00000000 /* 0x2a4c */;
2708: data_o = 32'h00000000 /* 0x2a50 */;
2709: data_o = 32'h00000000 /* 0x2a54 */;
2710: data_o = 32'h00000000 /* 0x2a58 */;
2711: data_o = 32'h00000000 /* 0x2a5c */;
2712: data_o = 32'h00000000 /* 0x2a60 */;
2713: data_o = 32'h00000000 /* 0x2a64 */;
2714: data_o = 32'h00000000 /* 0x2a68 */;
2715: data_o = 32'h00000000 /* 0x2a6c */;
2716: data_o = 32'h00000000 /* 0x2a70 */;
2717: data_o = 32'h00000000 /* 0x2a74 */;
2718: data_o = 32'h00000000 /* 0x2a78 */;
2719: data_o = 32'h00000000 /* 0x2a7c */;
2720: data_o = 32'h00000000 /* 0x2a80 */;
2721: data_o = 32'h00000000 /* 0x2a84 */;
2722: data_o = 32'h00000000 /* 0x2a88 */;
2723: data_o = 32'h00000000 /* 0x2a8c */;
2724: data_o = 32'h00000000 /* 0x2a90 */;
2725: data_o = 32'h00000000 /* 0x2a94 */;
2726: data_o = 32'h00000000 /* 0x2a98 */;
2727: data_o = 32'h00000000 /* 0x2a9c */;
2728: data_o = 32'h00000000 /* 0x2aa0 */;
2729: data_o = 32'h00000000 /* 0x2aa4 */;
2730: data_o = 32'h00000000 /* 0x2aa8 */;
2731: data_o = 32'h00000000 /* 0x2aac */;
2732: data_o = 32'h00000000 /* 0x2ab0 */;
2733: data_o = 32'h00000000 /* 0x2ab4 */;
2734: data_o = 32'h00000000 /* 0x2ab8 */;
2735: data_o = 32'h00000000 /* 0x2abc */;
2736: data_o = 32'h00000000 /* 0x2ac0 */;
2737: data_o = 32'h00000000 /* 0x2ac4 */;
2738: data_o = 32'h00000000 /* 0x2ac8 */;
2739: data_o = 32'h00000000 /* 0x2acc */;
2740: data_o = 32'h00000000 /* 0x2ad0 */;
2741: data_o = 32'h00000000 /* 0x2ad4 */;
2742: data_o = 32'h00000000 /* 0x2ad8 */;
2743: data_o = 32'h00000000 /* 0x2adc */;
2744: data_o = 32'h00000000 /* 0x2ae0 */;
2745: data_o = 32'h00000000 /* 0x2ae4 */;
2746: data_o = 32'h00000000 /* 0x2ae8 */;
2747: data_o = 32'h00000000 /* 0x2aec */;
2748: data_o = 32'h00000000 /* 0x2af0 */;
2749: data_o = 32'h00000000 /* 0x2af4 */;
2750: data_o = 32'h00000000 /* 0x2af8 */;
2751: data_o = 32'h00000000 /* 0x2afc */;
2752: data_o = 32'h00000000 /* 0x2b00 */;
2753: data_o = 32'h00000000 /* 0x2b04 */;
2754: data_o = 32'h00000000 /* 0x2b08 */;
2755: data_o = 32'h00000000 /* 0x2b0c */;
2756: data_o = 32'h00000000 /* 0x2b10 */;
2757: data_o = 32'h00000000 /* 0x2b14 */;
2758: data_o = 32'h00000000 /* 0x2b18 */;
2759: data_o = 32'h00000000 /* 0x2b1c */;
2760: data_o = 32'h00000000 /* 0x2b20 */;
2761: data_o = 32'h00000000 /* 0x2b24 */;
2762: data_o = 32'h00000000 /* 0x2b28 */;
2763: data_o = 32'h00000000 /* 0x2b2c */;
2764: data_o = 32'h00000000 /* 0x2b30 */;
2765: data_o = 32'h00000000 /* 0x2b34 */;
2766: data_o = 32'h00000000 /* 0x2b38 */;
2767: data_o = 32'h00000000 /* 0x2b3c */;
2768: data_o = 32'h00000000 /* 0x2b40 */;
2769: data_o = 32'h00000000 /* 0x2b44 */;
2770: data_o = 32'h00000000 /* 0x2b48 */;
2771: data_o = 32'h00000000 /* 0x2b4c */;
2772: data_o = 32'h00000000 /* 0x2b50 */;
2773: data_o = 32'h00000000 /* 0x2b54 */;
2774: data_o = 32'h00000000 /* 0x2b58 */;
2775: data_o = 32'h00000000 /* 0x2b5c */;
2776: data_o = 32'h00000000 /* 0x2b60 */;
2777: data_o = 32'h00000000 /* 0x2b64 */;
2778: data_o = 32'h00000000 /* 0x2b68 */;
2779: data_o = 32'h00000000 /* 0x2b6c */;
2780: data_o = 32'h00000000 /* 0x2b70 */;
2781: data_o = 32'h00000000 /* 0x2b74 */;
2782: data_o = 32'h00000000 /* 0x2b78 */;
2783: data_o = 32'h00000000 /* 0x2b7c */;
2784: data_o = 32'h00000000 /* 0x2b80 */;
2785: data_o = 32'h00000000 /* 0x2b84 */;
2786: data_o = 32'h00000000 /* 0x2b88 */;
2787: data_o = 32'h00000000 /* 0x2b8c */;
2788: data_o = 32'h00000000 /* 0x2b90 */;
2789: data_o = 32'h00000000 /* 0x2b94 */;
2790: data_o = 32'h00000000 /* 0x2b98 */;
2791: data_o = 32'h00000000 /* 0x2b9c */;
2792: data_o = 32'h00000000 /* 0x2ba0 */;
2793: data_o = 32'h00000000 /* 0x2ba4 */;
2794: data_o = 32'h00000000 /* 0x2ba8 */;
2795: data_o = 32'h00000000 /* 0x2bac */;
2796: data_o = 32'h00000000 /* 0x2bb0 */;
2797: data_o = 32'h00000000 /* 0x2bb4 */;
2798: data_o = 32'h00000000 /* 0x2bb8 */;
2799: data_o = 32'h00000000 /* 0x2bbc */;
2800: data_o = 32'h00000000 /* 0x2bc0 */;
2801: data_o = 32'h00000000 /* 0x2bc4 */;
2802: data_o = 32'h00000000 /* 0x2bc8 */;
2803: data_o = 32'h00000000 /* 0x2bcc */;
2804: data_o = 32'h00000000 /* 0x2bd0 */;
2805: data_o = 32'h00000000 /* 0x2bd4 */;
2806: data_o = 32'h00000000 /* 0x2bd8 */;
2807: data_o = 32'h00000000 /* 0x2bdc */;
2808: data_o = 32'h00000000 /* 0x2be0 */;
2809: data_o = 32'h00000000 /* 0x2be4 */;
2810: data_o = 32'h00000000 /* 0x2be8 */;
2811: data_o = 32'h00000000 /* 0x2bec */;
2812: data_o = 32'h00000000 /* 0x2bf0 */;
2813: data_o = 32'h00000000 /* 0x2bf4 */;
2814: data_o = 32'h00000000 /* 0x2bf8 */;
2815: data_o = 32'h00000000 /* 0x2bfc */;
2816: data_o = 32'h00000000 /* 0x2c00 */;
2817: data_o = 32'h00000000 /* 0x2c04 */;
2818: data_o = 32'h00000000 /* 0x2c08 */;
2819: data_o = 32'h00000000 /* 0x2c0c */;
2820: data_o = 32'h00000000 /* 0x2c10 */;
2821: data_o = 32'h00000000 /* 0x2c14 */;
2822: data_o = 32'h00000000 /* 0x2c18 */;
2823: data_o = 32'h00000000 /* 0x2c1c */;
2824: data_o = 32'h00000000 /* 0x2c20 */;
2825: data_o = 32'h00000000 /* 0x2c24 */;
2826: data_o = 32'h00000000 /* 0x2c28 */;
2827: data_o = 32'h00000000 /* 0x2c2c */;
2828: data_o = 32'h00000000 /* 0x2c30 */;
2829: data_o = 32'h00000000 /* 0x2c34 */;
2830: data_o = 32'h00000000 /* 0x2c38 */;
2831: data_o = 32'h00000000 /* 0x2c3c */;
2832: data_o = 32'h00000000 /* 0x2c40 */;
2833: data_o = 32'h00000000 /* 0x2c44 */;
2834: data_o = 32'h00000000 /* 0x2c48 */;
2835: data_o = 32'h00000000 /* 0x2c4c */;
2836: data_o = 32'h00000000 /* 0x2c50 */;
2837: data_o = 32'h00000000 /* 0x2c54 */;
2838: data_o = 32'h00000000 /* 0x2c58 */;
2839: data_o = 32'h00000000 /* 0x2c5c */;
2840: data_o = 32'h00000000 /* 0x2c60 */;
2841: data_o = 32'h00000000 /* 0x2c64 */;
2842: data_o = 32'h00000000 /* 0x2c68 */;
2843: data_o = 32'h00000000 /* 0x2c6c */;
2844: data_o = 32'h00000000 /* 0x2c70 */;
2845: data_o = 32'h00000000 /* 0x2c74 */;
2846: data_o = 32'h00000000 /* 0x2c78 */;
2847: data_o = 32'h00000000 /* 0x2c7c */;
2848: data_o = 32'h00000000 /* 0x2c80 */;
2849: data_o = 32'h00000000 /* 0x2c84 */;
2850: data_o = 32'h00000000 /* 0x2c88 */;
2851: data_o = 32'h00000000 /* 0x2c8c */;
2852: data_o = 32'h00000000 /* 0x2c90 */;
2853: data_o = 32'h00000000 /* 0x2c94 */;
2854: data_o = 32'h00000000 /* 0x2c98 */;
2855: data_o = 32'h00000000 /* 0x2c9c */;
2856: data_o = 32'h00000000 /* 0x2ca0 */;
2857: data_o = 32'h00000000 /* 0x2ca4 */;
2858: data_o = 32'h00000000 /* 0x2ca8 */;
2859: data_o = 32'h00000000 /* 0x2cac */;
2860: data_o = 32'h00000000 /* 0x2cb0 */;
2861: data_o = 32'h00000000 /* 0x2cb4 */;
2862: data_o = 32'h00000000 /* 0x2cb8 */;
2863: data_o = 32'h00000000 /* 0x2cbc */;
2864: data_o = 32'h00000000 /* 0x2cc0 */;
2865: data_o = 32'h00000000 /* 0x2cc4 */;
2866: data_o = 32'h00000000 /* 0x2cc8 */;
2867: data_o = 32'h00000000 /* 0x2ccc */;
2868: data_o = 32'h00000000 /* 0x2cd0 */;
2869: data_o = 32'h00000000 /* 0x2cd4 */;
2870: data_o = 32'h00000000 /* 0x2cd8 */;
2871: data_o = 32'h00000000 /* 0x2cdc */;
2872: data_o = 32'h00000000 /* 0x2ce0 */;
2873: data_o = 32'h00000000 /* 0x2ce4 */;
2874: data_o = 32'h00000000 /* 0x2ce8 */;
2875: data_o = 32'h00000000 /* 0x2cec */;
2876: data_o = 32'h00000000 /* 0x2cf0 */;
2877: data_o = 32'h00000000 /* 0x2cf4 */;
2878: data_o = 32'h00000000 /* 0x2cf8 */;
2879: data_o = 32'h00000000 /* 0x2cfc */;
2880: data_o = 32'h00000000 /* 0x2d00 */;
2881: data_o = 32'h00000000 /* 0x2d04 */;
2882: data_o = 32'h00000000 /* 0x2d08 */;
2883: data_o = 32'h00000000 /* 0x2d0c */;
2884: data_o = 32'h00000000 /* 0x2d10 */;
2885: data_o = 32'h00000000 /* 0x2d14 */;
2886: data_o = 32'h00000000 /* 0x2d18 */;
2887: data_o = 32'h00000000 /* 0x2d1c */;
2888: data_o = 32'h00000000 /* 0x2d20 */;
2889: data_o = 32'h00000000 /* 0x2d24 */;
2890: data_o = 32'h00000000 /* 0x2d28 */;
2891: data_o = 32'h00000000 /* 0x2d2c */;
2892: data_o = 32'h00000000 /* 0x2d30 */;
2893: data_o = 32'h00000000 /* 0x2d34 */;
2894: data_o = 32'h00000000 /* 0x2d38 */;
2895: data_o = 32'h00000000 /* 0x2d3c */;
2896: data_o = 32'h00000000 /* 0x2d40 */;
2897: data_o = 32'h00000000 /* 0x2d44 */;
2898: data_o = 32'h00000000 /* 0x2d48 */;
2899: data_o = 32'h00000000 /* 0x2d4c */;
2900: data_o = 32'h00000000 /* 0x2d50 */;
2901: data_o = 32'h00000000 /* 0x2d54 */;
2902: data_o = 32'h00000000 /* 0x2d58 */;
2903: data_o = 32'h00000000 /* 0x2d5c */;
2904: data_o = 32'h00000000 /* 0x2d60 */;
2905: data_o = 32'h00000000 /* 0x2d64 */;
2906: data_o = 32'h00000000 /* 0x2d68 */;
2907: data_o = 32'h00000000 /* 0x2d6c */;
2908: data_o = 32'h00000000 /* 0x2d70 */;
2909: data_o = 32'h00000000 /* 0x2d74 */;
2910: data_o = 32'h00000000 /* 0x2d78 */;
2911: data_o = 32'h00000000 /* 0x2d7c */;
2912: data_o = 32'h00000000 /* 0x2d80 */;
2913: data_o = 32'h00000000 /* 0x2d84 */;
2914: data_o = 32'h00000000 /* 0x2d88 */;
2915: data_o = 32'h00000000 /* 0x2d8c */;
2916: data_o = 32'h00000000 /* 0x2d90 */;
2917: data_o = 32'h00000000 /* 0x2d94 */;
2918: data_o = 32'h00000000 /* 0x2d98 */;
2919: data_o = 32'h00000000 /* 0x2d9c */;
2920: data_o = 32'h00000000 /* 0x2da0 */;
2921: data_o = 32'h00000000 /* 0x2da4 */;
2922: data_o = 32'h00000000 /* 0x2da8 */;
2923: data_o = 32'h00000000 /* 0x2dac */;
2924: data_o = 32'h00000000 /* 0x2db0 */;
2925: data_o = 32'h00000000 /* 0x2db4 */;
2926: data_o = 32'h00000000 /* 0x2db8 */;
2927: data_o = 32'h00000000 /* 0x2dbc */;
2928: data_o = 32'h00000000 /* 0x2dc0 */;
2929: data_o = 32'h00000000 /* 0x2dc4 */;
2930: data_o = 32'h00000000 /* 0x2dc8 */;
2931: data_o = 32'h00000000 /* 0x2dcc */;
2932: data_o = 32'h00000000 /* 0x2dd0 */;
2933: data_o = 32'h00000000 /* 0x2dd4 */;
2934: data_o = 32'h00000000 /* 0x2dd8 */;
2935: data_o = 32'h00000000 /* 0x2ddc */;
2936: data_o = 32'h00000000 /* 0x2de0 */;
2937: data_o = 32'h00000000 /* 0x2de4 */;
2938: data_o = 32'h00000000 /* 0x2de8 */;
2939: data_o = 32'h00000000 /* 0x2dec */;
2940: data_o = 32'h00000000 /* 0x2df0 */;
2941: data_o = 32'h00000000 /* 0x2df4 */;
2942: data_o = 32'h00000000 /* 0x2df8 */;
2943: data_o = 32'h00000000 /* 0x2dfc */;
2944: data_o = 32'h00000000 /* 0x2e00 */;
2945: data_o = 32'h00000000 /* 0x2e04 */;
2946: data_o = 32'h00000000 /* 0x2e08 */;
2947: data_o = 32'h00000000 /* 0x2e0c */;
2948: data_o = 32'h00000000 /* 0x2e10 */;
2949: data_o = 32'h00000000 /* 0x2e14 */;
2950: data_o = 32'h00000000 /* 0x2e18 */;
2951: data_o = 32'h00000000 /* 0x2e1c */;
2952: data_o = 32'h00000000 /* 0x2e20 */;
2953: data_o = 32'h00000000 /* 0x2e24 */;
2954: data_o = 32'h00000000 /* 0x2e28 */;
2955: data_o = 32'h00000000 /* 0x2e2c */;
2956: data_o = 32'h00000000 /* 0x2e30 */;
2957: data_o = 32'h00000000 /* 0x2e34 */;
2958: data_o = 32'h00000000 /* 0x2e38 */;
2959: data_o = 32'h00000000 /* 0x2e3c */;
2960: data_o = 32'h00000000 /* 0x2e40 */;
2961: data_o = 32'h00000000 /* 0x2e44 */;
2962: data_o = 32'h00000000 /* 0x2e48 */;
2963: data_o = 32'h00000000 /* 0x2e4c */;
2964: data_o = 32'h00000000 /* 0x2e50 */;
2965: data_o = 32'h00000000 /* 0x2e54 */;
2966: data_o = 32'h00000000 /* 0x2e58 */;
2967: data_o = 32'h00000000 /* 0x2e5c */;
2968: data_o = 32'h00000000 /* 0x2e60 */;
2969: data_o = 32'h00000000 /* 0x2e64 */;
2970: data_o = 32'h00000000 /* 0x2e68 */;
2971: data_o = 32'h00000000 /* 0x2e6c */;
2972: data_o = 32'h00000000 /* 0x2e70 */;
2973: data_o = 32'h00000000 /* 0x2e74 */;
2974: data_o = 32'h00000000 /* 0x2e78 */;
2975: data_o = 32'h00000000 /* 0x2e7c */;
2976: data_o = 32'h00000000 /* 0x2e80 */;
2977: data_o = 32'h00000000 /* 0x2e84 */;
2978: data_o = 32'h00000000 /* 0x2e88 */;
2979: data_o = 32'h00000000 /* 0x2e8c */;
2980: data_o = 32'h00000000 /* 0x2e90 */;
2981: data_o = 32'h00000000 /* 0x2e94 */;
2982: data_o = 32'h00000000 /* 0x2e98 */;
2983: data_o = 32'h00000000 /* 0x2e9c */;
2984: data_o = 32'h00000000 /* 0x2ea0 */;
2985: data_o = 32'h00000000 /* 0x2ea4 */;
2986: data_o = 32'h00000000 /* 0x2ea8 */;
2987: data_o = 32'h00000000 /* 0x2eac */;
2988: data_o = 32'h00000000 /* 0x2eb0 */;
2989: data_o = 32'h00000000 /* 0x2eb4 */;
2990: data_o = 32'h00000000 /* 0x2eb8 */;
2991: data_o = 32'h00000000 /* 0x2ebc */;
2992: data_o = 32'h00000000 /* 0x2ec0 */;
2993: data_o = 32'h00000000 /* 0x2ec4 */;
2994: data_o = 32'h00000000 /* 0x2ec8 */;
2995: data_o = 32'h00000000 /* 0x2ecc */;
2996: data_o = 32'h00000000 /* 0x2ed0 */;
2997: data_o = 32'h00000000 /* 0x2ed4 */;
2998: data_o = 32'h00000000 /* 0x2ed8 */;
2999: data_o = 32'h00000000 /* 0x2edc */;
3000: data_o = 32'h00000000 /* 0x2ee0 */;
3001: data_o = 32'h00000000 /* 0x2ee4 */;
3002: data_o = 32'h00000000 /* 0x2ee8 */;
3003: data_o = 32'h00000000 /* 0x2eec */;
3004: data_o = 32'h00000000 /* 0x2ef0 */;
3005: data_o = 32'h00000000 /* 0x2ef4 */;
3006: data_o = 32'h00000000 /* 0x2ef8 */;
3007: data_o = 32'h00000000 /* 0x2efc */;
3008: data_o = 32'h00000000 /* 0x2f00 */;
3009: data_o = 32'h00000000 /* 0x2f04 */;
3010: data_o = 32'h00000000 /* 0x2f08 */;
3011: data_o = 32'h00000000 /* 0x2f0c */;
3012: data_o = 32'h00000000 /* 0x2f10 */;
3013: data_o = 32'h00000000 /* 0x2f14 */;
3014: data_o = 32'h00000000 /* 0x2f18 */;
3015: data_o = 32'h00000000 /* 0x2f1c */;
3016: data_o = 32'h00000000 /* 0x2f20 */;
3017: data_o = 32'h00000000 /* 0x2f24 */;
3018: data_o = 32'h00000000 /* 0x2f28 */;
3019: data_o = 32'h00000000 /* 0x2f2c */;
3020: data_o = 32'h00000000 /* 0x2f30 */;
3021: data_o = 32'h00000000 /* 0x2f34 */;
3022: data_o = 32'h00000000 /* 0x2f38 */;
3023: data_o = 32'h00000000 /* 0x2f3c */;
3024: data_o = 32'h00000000 /* 0x2f40 */;
3025: data_o = 32'h00000000 /* 0x2f44 */;
3026: data_o = 32'h00000000 /* 0x2f48 */;
3027: data_o = 32'h00000000 /* 0x2f4c */;
3028: data_o = 32'h00000000 /* 0x2f50 */;
3029: data_o = 32'h00000000 /* 0x2f54 */;
3030: data_o = 32'h00000000 /* 0x2f58 */;
3031: data_o = 32'h00000000 /* 0x2f5c */;
3032: data_o = 32'h00000000 /* 0x2f60 */;
3033: data_o = 32'h00000000 /* 0x2f64 */;
3034: data_o = 32'h00000000 /* 0x2f68 */;
3035: data_o = 32'h00000000 /* 0x2f6c */;
3036: data_o = 32'h00000000 /* 0x2f70 */;
3037: data_o = 32'h00000000 /* 0x2f74 */;
3038: data_o = 32'h00000000 /* 0x2f78 */;
3039: data_o = 32'h00000000 /* 0x2f7c */;
3040: data_o = 32'h00000000 /* 0x2f80 */;
3041: data_o = 32'h00000000 /* 0x2f84 */;
3042: data_o = 32'h00000000 /* 0x2f88 */;
3043: data_o = 32'h00000000 /* 0x2f8c */;
3044: data_o = 32'h00000000 /* 0x2f90 */;
3045: data_o = 32'h00000000 /* 0x2f94 */;
3046: data_o = 32'h00000000 /* 0x2f98 */;
3047: data_o = 32'h00000000 /* 0x2f9c */;
3048: data_o = 32'h00000000 /* 0x2fa0 */;
3049: data_o = 32'h00000000 /* 0x2fa4 */;
3050: data_o = 32'h00000000 /* 0x2fa8 */;
3051: data_o = 32'h00000000 /* 0x2fac */;
3052: data_o = 32'h00000000 /* 0x2fb0 */;
3053: data_o = 32'h00000000 /* 0x2fb4 */;
3054: data_o = 32'h00000000 /* 0x2fb8 */;
3055: data_o = 32'h00000000 /* 0x2fbc */;
3056: data_o = 32'h00000000 /* 0x2fc0 */;
3057: data_o = 32'h00000000 /* 0x2fc4 */;
3058: data_o = 32'h00000000 /* 0x2fc8 */;
3059: data_o = 32'h00000000 /* 0x2fcc */;
3060: data_o = 32'h00000000 /* 0x2fd0 */;
3061: data_o = 32'h00000000 /* 0x2fd4 */;
3062: data_o = 32'h00000000 /* 0x2fd8 */;
3063: data_o = 32'h00000000 /* 0x2fdc */;
3064: data_o = 32'h00000000 /* 0x2fe0 */;
3065: data_o = 32'h00000000 /* 0x2fe4 */;
3066: data_o = 32'h00000000 /* 0x2fe8 */;
3067: data_o = 32'h00000000 /* 0x2fec */;
3068: data_o = 32'h00000000 /* 0x2ff0 */;
3069: data_o = 32'h00000000 /* 0x2ff4 */;
3070: data_o = 32'h00000000 /* 0x2ff8 */;
3071: data_o = 32'h00000000 /* 0x2ffc */;
3072: data_o = 32'h00000000 /* 0x3000 */;
3073: data_o = 32'h00000000 /* 0x3004 */;
3074: data_o = 32'h00000000 /* 0x3008 */;
3075: data_o = 32'h00000000 /* 0x300c */;
3076: data_o = 32'h00000000 /* 0x3010 */;
3077: data_o = 32'h00000000 /* 0x3014 */;
3078: data_o = 32'h00000000 /* 0x3018 */;
3079: data_o = 32'h00000000 /* 0x301c */;
3080: data_o = 32'h00000000 /* 0x3020 */;
3081: data_o = 32'h00000000 /* 0x3024 */;
3082: data_o = 32'h00000000 /* 0x3028 */;
3083: data_o = 32'h00000000 /* 0x302c */;
3084: data_o = 32'h00000000 /* 0x3030 */;
3085: data_o = 32'h00000000 /* 0x3034 */;
3086: data_o = 32'h00000000 /* 0x3038 */;
3087: data_o = 32'h00000000 /* 0x303c */;
3088: data_o = 32'h00000000 /* 0x3040 */;
3089: data_o = 32'h00000000 /* 0x3044 */;
3090: data_o = 32'h00000000 /* 0x3048 */;
3091: data_o = 32'h00000000 /* 0x304c */;
3092: data_o = 32'h00000000 /* 0x3050 */;
3093: data_o = 32'h00000000 /* 0x3054 */;
3094: data_o = 32'h00000000 /* 0x3058 */;
3095: data_o = 32'h00000000 /* 0x305c */;
3096: data_o = 32'h00000000 /* 0x3060 */;
3097: data_o = 32'h00000000 /* 0x3064 */;
3098: data_o = 32'h00000000 /* 0x3068 */;
3099: data_o = 32'h00000000 /* 0x306c */;
3100: data_o = 32'h00000000 /* 0x3070 */;
3101: data_o = 32'h00000000 /* 0x3074 */;
3102: data_o = 32'h00000000 /* 0x3078 */;
3103: data_o = 32'h00000000 /* 0x307c */;
3104: data_o = 32'h00000000 /* 0x3080 */;
3105: data_o = 32'h00000000 /* 0x3084 */;
3106: data_o = 32'h00000000 /* 0x3088 */;
3107: data_o = 32'h00000000 /* 0x308c */;
3108: data_o = 32'h00000000 /* 0x3090 */;
3109: data_o = 32'h00000000 /* 0x3094 */;
3110: data_o = 32'h00000000 /* 0x3098 */;
3111: data_o = 32'h00000000 /* 0x309c */;
3112: data_o = 32'h00000000 /* 0x30a0 */;
3113: data_o = 32'h00000000 /* 0x30a4 */;
3114: data_o = 32'h00000000 /* 0x30a8 */;
3115: data_o = 32'h00000000 /* 0x30ac */;
3116: data_o = 32'h00000000 /* 0x30b0 */;
3117: data_o = 32'h00000000 /* 0x30b4 */;
3118: data_o = 32'h00000000 /* 0x30b8 */;
3119: data_o = 32'h00000000 /* 0x30bc */;
3120: data_o = 32'h00000000 /* 0x30c0 */;
3121: data_o = 32'h00000000 /* 0x30c4 */;
3122: data_o = 32'h00000000 /* 0x30c8 */;
3123: data_o = 32'h00000000 /* 0x30cc */;
3124: data_o = 32'h00000000 /* 0x30d0 */;
3125: data_o = 32'h00000000 /* 0x30d4 */;
3126: data_o = 32'h00000000 /* 0x30d8 */;
3127: data_o = 32'h00000000 /* 0x30dc */;
3128: data_o = 32'h00000000 /* 0x30e0 */;
3129: data_o = 32'h00000000 /* 0x30e4 */;
3130: data_o = 32'h00000000 /* 0x30e8 */;
3131: data_o = 32'h00000000 /* 0x30ec */;
3132: data_o = 32'h00000000 /* 0x30f0 */;
3133: data_o = 32'h00000000 /* 0x30f4 */;
3134: data_o = 32'h00000000 /* 0x30f8 */;
3135: data_o = 32'h00000000 /* 0x30fc */;
3136: data_o = 32'h00000000 /* 0x3100 */;
3137: data_o = 32'h00000000 /* 0x3104 */;
3138: data_o = 32'h00000000 /* 0x3108 */;
3139: data_o = 32'h00000000 /* 0x310c */;
3140: data_o = 32'h00000000 /* 0x3110 */;
3141: data_o = 32'h00000000 /* 0x3114 */;
3142: data_o = 32'h00000000 /* 0x3118 */;
3143: data_o = 32'h00000000 /* 0x311c */;
3144: data_o = 32'h00000000 /* 0x3120 */;
3145: data_o = 32'h00000000 /* 0x3124 */;
3146: data_o = 32'h00000000 /* 0x3128 */;
3147: data_o = 32'h00000000 /* 0x312c */;
3148: data_o = 32'h00000000 /* 0x3130 */;
3149: data_o = 32'h00000000 /* 0x3134 */;
3150: data_o = 32'h00000000 /* 0x3138 */;
3151: data_o = 32'h00000000 /* 0x313c */;
3152: data_o = 32'h00000000 /* 0x3140 */;
3153: data_o = 32'h00000000 /* 0x3144 */;
3154: data_o = 32'h00000000 /* 0x3148 */;
3155: data_o = 32'h00000000 /* 0x314c */;
3156: data_o = 32'h00000000 /* 0x3150 */;
3157: data_o = 32'h00000000 /* 0x3154 */;
3158: data_o = 32'h00000000 /* 0x3158 */;
3159: data_o = 32'h00000000 /* 0x315c */;
3160: data_o = 32'h00000000 /* 0x3160 */;
3161: data_o = 32'h00000000 /* 0x3164 */;
3162: data_o = 32'h00000000 /* 0x3168 */;
3163: data_o = 32'h00000000 /* 0x316c */;
3164: data_o = 32'h00000000 /* 0x3170 */;
3165: data_o = 32'h00000000 /* 0x3174 */;
3166: data_o = 32'h00000000 /* 0x3178 */;
3167: data_o = 32'h00000000 /* 0x317c */;
3168: data_o = 32'h00000000 /* 0x3180 */;
3169: data_o = 32'h00000000 /* 0x3184 */;
3170: data_o = 32'h00000000 /* 0x3188 */;
3171: data_o = 32'h00000000 /* 0x318c */;
3172: data_o = 32'h00000000 /* 0x3190 */;
3173: data_o = 32'h00000000 /* 0x3194 */;
3174: data_o = 32'h00000000 /* 0x3198 */;
3175: data_o = 32'h00000000 /* 0x319c */;
3176: data_o = 32'h00000000 /* 0x31a0 */;
3177: data_o = 32'h00000000 /* 0x31a4 */;
3178: data_o = 32'h00000000 /* 0x31a8 */;
3179: data_o = 32'h00000000 /* 0x31ac */;
3180: data_o = 32'h00000000 /* 0x31b0 */;
3181: data_o = 32'h00000000 /* 0x31b4 */;
3182: data_o = 32'h00000000 /* 0x31b8 */;
3183: data_o = 32'h00000000 /* 0x31bc */;
3184: data_o = 32'h00000000 /* 0x31c0 */;
3185: data_o = 32'h00000000 /* 0x31c4 */;
3186: data_o = 32'h00000000 /* 0x31c8 */;
3187: data_o = 32'h00000000 /* 0x31cc */;
3188: data_o = 32'h00000000 /* 0x31d0 */;
3189: data_o = 32'h00000000 /* 0x31d4 */;
3190: data_o = 32'h00000000 /* 0x31d8 */;
3191: data_o = 32'h00000000 /* 0x31dc */;
3192: data_o = 32'h00000000 /* 0x31e0 */;
3193: data_o = 32'h00000000 /* 0x31e4 */;
3194: data_o = 32'h00000000 /* 0x31e8 */;
3195: data_o = 32'h00000000 /* 0x31ec */;
3196: data_o = 32'h00000000 /* 0x31f0 */;
3197: data_o = 32'h00000000 /* 0x31f4 */;
3198: data_o = 32'h00000000 /* 0x31f8 */;
3199: data_o = 32'h00000000 /* 0x31fc */;
3200: data_o = 32'h00000000 /* 0x3200 */;
3201: data_o = 32'h00000000 /* 0x3204 */;
3202: data_o = 32'h00000000 /* 0x3208 */;
3203: data_o = 32'h00000000 /* 0x320c */;
3204: data_o = 32'h00000000 /* 0x3210 */;
3205: data_o = 32'h00000000 /* 0x3214 */;
3206: data_o = 32'h00000000 /* 0x3218 */;
3207: data_o = 32'h00000000 /* 0x321c */;
3208: data_o = 32'h00000000 /* 0x3220 */;
3209: data_o = 32'h00000000 /* 0x3224 */;
3210: data_o = 32'h00000000 /* 0x3228 */;
3211: data_o = 32'h00000000 /* 0x322c */;
3212: data_o = 32'h00000000 /* 0x3230 */;
3213: data_o = 32'h00000000 /* 0x3234 */;
3214: data_o = 32'h00000000 /* 0x3238 */;
3215: data_o = 32'h00000000 /* 0x323c */;
3216: data_o = 32'h00000000 /* 0x3240 */;
3217: data_o = 32'h00000000 /* 0x3244 */;
3218: data_o = 32'h00000000 /* 0x3248 */;
3219: data_o = 32'h00000000 /* 0x324c */;
3220: data_o = 32'h00000000 /* 0x3250 */;
3221: data_o = 32'h00000000 /* 0x3254 */;
3222: data_o = 32'h00000000 /* 0x3258 */;
3223: data_o = 32'h00000000 /* 0x325c */;
3224: data_o = 32'h00000000 /* 0x3260 */;
3225: data_o = 32'h00000000 /* 0x3264 */;
3226: data_o = 32'h00000000 /* 0x3268 */;
3227: data_o = 32'h00000000 /* 0x326c */;
3228: data_o = 32'h00000000 /* 0x3270 */;
3229: data_o = 32'h00000000 /* 0x3274 */;
3230: data_o = 32'h00000000 /* 0x3278 */;
3231: data_o = 32'h00000000 /* 0x327c */;
3232: data_o = 32'h00000000 /* 0x3280 */;
3233: data_o = 32'h00000000 /* 0x3284 */;
3234: data_o = 32'h00000000 /* 0x3288 */;
3235: data_o = 32'h00000000 /* 0x328c */;
3236: data_o = 32'h00000000 /* 0x3290 */;
3237: data_o = 32'h00000000 /* 0x3294 */;
3238: data_o = 32'h00000000 /* 0x3298 */;
3239: data_o = 32'h00000000 /* 0x329c */;
3240: data_o = 32'h00000000 /* 0x32a0 */;
3241: data_o = 32'h00000000 /* 0x32a4 */;
3242: data_o = 32'h00000000 /* 0x32a8 */;
3243: data_o = 32'h00000000 /* 0x32ac */;
3244: data_o = 32'h00000000 /* 0x32b0 */;
3245: data_o = 32'h00000000 /* 0x32b4 */;
3246: data_o = 32'h00000000 /* 0x32b8 */;
3247: data_o = 32'h00000000 /* 0x32bc */;
3248: data_o = 32'h00000000 /* 0x32c0 */;
3249: data_o = 32'h00000000 /* 0x32c4 */;
3250: data_o = 32'h00000000 /* 0x32c8 */;
3251: data_o = 32'h00000000 /* 0x32cc */;
3252: data_o = 32'h00000000 /* 0x32d0 */;
3253: data_o = 32'h00000000 /* 0x32d4 */;
3254: data_o = 32'h00000000 /* 0x32d8 */;
3255: data_o = 32'h00000000 /* 0x32dc */;
3256: data_o = 32'h00000000 /* 0x32e0 */;
3257: data_o = 32'h00000000 /* 0x32e4 */;
3258: data_o = 32'h00000000 /* 0x32e8 */;
3259: data_o = 32'h00000000 /* 0x32ec */;
3260: data_o = 32'h00000000 /* 0x32f0 */;
3261: data_o = 32'h00000000 /* 0x32f4 */;
3262: data_o = 32'h00000000 /* 0x32f8 */;
3263: data_o = 32'h00000000 /* 0x32fc */;
3264: data_o = 32'h00000000 /* 0x3300 */;
3265: data_o = 32'h00000000 /* 0x3304 */;
3266: data_o = 32'h00000000 /* 0x3308 */;
3267: data_o = 32'h00000000 /* 0x330c */;
3268: data_o = 32'h00000000 /* 0x3310 */;
3269: data_o = 32'h00000000 /* 0x3314 */;
3270: data_o = 32'h00000000 /* 0x3318 */;
3271: data_o = 32'h00000000 /* 0x331c */;
3272: data_o = 32'h00000000 /* 0x3320 */;
3273: data_o = 32'h00000000 /* 0x3324 */;
3274: data_o = 32'h00000000 /* 0x3328 */;
3275: data_o = 32'h00000000 /* 0x332c */;
3276: data_o = 32'h00000000 /* 0x3330 */;
3277: data_o = 32'h00000000 /* 0x3334 */;
3278: data_o = 32'h00000000 /* 0x3338 */;
3279: data_o = 32'h00000000 /* 0x333c */;
3280: data_o = 32'h00000000 /* 0x3340 */;
3281: data_o = 32'h00000000 /* 0x3344 */;
3282: data_o = 32'h00000000 /* 0x3348 */;
3283: data_o = 32'h00000000 /* 0x334c */;
3284: data_o = 32'h00000000 /* 0x3350 */;
3285: data_o = 32'h00000000 /* 0x3354 */;
3286: data_o = 32'h00000000 /* 0x3358 */;
3287: data_o = 32'h00000000 /* 0x335c */;
3288: data_o = 32'h00000000 /* 0x3360 */;
3289: data_o = 32'h00000000 /* 0x3364 */;
3290: data_o = 32'h00000000 /* 0x3368 */;
3291: data_o = 32'h00000000 /* 0x336c */;
3292: data_o = 32'h00000000 /* 0x3370 */;
3293: data_o = 32'h00000000 /* 0x3374 */;
3294: data_o = 32'h00000000 /* 0x3378 */;
3295: data_o = 32'h00000000 /* 0x337c */;
3296: data_o = 32'h00000000 /* 0x3380 */;
3297: data_o = 32'h00000000 /* 0x3384 */;
3298: data_o = 32'h00000000 /* 0x3388 */;
3299: data_o = 32'h00000000 /* 0x338c */;
3300: data_o = 32'h00000000 /* 0x3390 */;
3301: data_o = 32'h00000000 /* 0x3394 */;
3302: data_o = 32'h00000000 /* 0x3398 */;
3303: data_o = 32'h00000000 /* 0x339c */;
3304: data_o = 32'h00000000 /* 0x33a0 */;
3305: data_o = 32'h00000000 /* 0x33a4 */;
3306: data_o = 32'h00000000 /* 0x33a8 */;
3307: data_o = 32'h00000000 /* 0x33ac */;
3308: data_o = 32'h00000000 /* 0x33b0 */;
3309: data_o = 32'h00000000 /* 0x33b4 */;
3310: data_o = 32'h00000000 /* 0x33b8 */;
3311: data_o = 32'h00000000 /* 0x33bc */;
3312: data_o = 32'h00000000 /* 0x33c0 */;
3313: data_o = 32'h00000000 /* 0x33c4 */;
3314: data_o = 32'h00000000 /* 0x33c8 */;
3315: data_o = 32'h00000000 /* 0x33cc */;
3316: data_o = 32'h00000000 /* 0x33d0 */;
3317: data_o = 32'h00000000 /* 0x33d4 */;
3318: data_o = 32'h00000000 /* 0x33d8 */;
3319: data_o = 32'h00000000 /* 0x33dc */;
3320: data_o = 32'h00000000 /* 0x33e0 */;
3321: data_o = 32'h00000000 /* 0x33e4 */;
3322: data_o = 32'h00000000 /* 0x33e8 */;
3323: data_o = 32'h00000000 /* 0x33ec */;
3324: data_o = 32'h00000000 /* 0x33f0 */;
3325: data_o = 32'h00000000 /* 0x33f4 */;
3326: data_o = 32'h00000000 /* 0x33f8 */;
3327: data_o = 32'h00000000 /* 0x33fc */;
3328: data_o = 32'h00000000 /* 0x3400 */;
3329: data_o = 32'h00000000 /* 0x3404 */;
3330: data_o = 32'h00000000 /* 0x3408 */;
3331: data_o = 32'h00000000 /* 0x340c */;
3332: data_o = 32'h00000000 /* 0x3410 */;
3333: data_o = 32'h00000000 /* 0x3414 */;
3334: data_o = 32'h00000000 /* 0x3418 */;
3335: data_o = 32'h00000000 /* 0x341c */;
3336: data_o = 32'h00000000 /* 0x3420 */;
3337: data_o = 32'h00000000 /* 0x3424 */;
3338: data_o = 32'h00000000 /* 0x3428 */;
3339: data_o = 32'h00000000 /* 0x342c */;
3340: data_o = 32'h00000000 /* 0x3430 */;
3341: data_o = 32'h00000000 /* 0x3434 */;
3342: data_o = 32'h00000000 /* 0x3438 */;
3343: data_o = 32'h00000000 /* 0x343c */;
3344: data_o = 32'h00000000 /* 0x3440 */;
3345: data_o = 32'h00000000 /* 0x3444 */;
3346: data_o = 32'h00000000 /* 0x3448 */;
3347: data_o = 32'h00000000 /* 0x344c */;
3348: data_o = 32'h00000000 /* 0x3450 */;
3349: data_o = 32'h00000000 /* 0x3454 */;
3350: data_o = 32'h00000000 /* 0x3458 */;
3351: data_o = 32'h00000000 /* 0x345c */;
3352: data_o = 32'h00000000 /* 0x3460 */;
3353: data_o = 32'h00000000 /* 0x3464 */;
3354: data_o = 32'h00000000 /* 0x3468 */;
3355: data_o = 32'h00000000 /* 0x346c */;
3356: data_o = 32'h00000000 /* 0x3470 */;
3357: data_o = 32'h00000000 /* 0x3474 */;
3358: data_o = 32'h00000000 /* 0x3478 */;
3359: data_o = 32'h00000000 /* 0x347c */;
3360: data_o = 32'h00000000 /* 0x3480 */;
3361: data_o = 32'h00000000 /* 0x3484 */;
3362: data_o = 32'h00000000 /* 0x3488 */;
3363: data_o = 32'h00000000 /* 0x348c */;
3364: data_o = 32'h00000000 /* 0x3490 */;
3365: data_o = 32'h00000000 /* 0x3494 */;
3366: data_o = 32'h00000000 /* 0x3498 */;
3367: data_o = 32'h00000000 /* 0x349c */;
3368: data_o = 32'h00000000 /* 0x34a0 */;
3369: data_o = 32'h00000000 /* 0x34a4 */;
3370: data_o = 32'h00000000 /* 0x34a8 */;
3371: data_o = 32'h00000000 /* 0x34ac */;
3372: data_o = 32'h00000000 /* 0x34b0 */;
3373: data_o = 32'h00000000 /* 0x34b4 */;
3374: data_o = 32'h00000000 /* 0x34b8 */;
3375: data_o = 32'h00000000 /* 0x34bc */;
3376: data_o = 32'h00000000 /* 0x34c0 */;
3377: data_o = 32'h00000000 /* 0x34c4 */;
3378: data_o = 32'h00000000 /* 0x34c8 */;
3379: data_o = 32'h00000000 /* 0x34cc */;
3380: data_o = 32'h00000000 /* 0x34d0 */;
3381: data_o = 32'h00000000 /* 0x34d4 */;
3382: data_o = 32'h00000000 /* 0x34d8 */;
3383: data_o = 32'h00000000 /* 0x34dc */;
3384: data_o = 32'h00000000 /* 0x34e0 */;
3385: data_o = 32'h00000000 /* 0x34e4 */;
3386: data_o = 32'h00000000 /* 0x34e8 */;
3387: data_o = 32'h00000000 /* 0x34ec */;
3388: data_o = 32'h00000000 /* 0x34f0 */;
3389: data_o = 32'h00000000 /* 0x34f4 */;
3390: data_o = 32'h00000000 /* 0x34f8 */;
3391: data_o = 32'h00000000 /* 0x34fc */;
3392: data_o = 32'h00000000 /* 0x3500 */;
3393: data_o = 32'h00000000 /* 0x3504 */;
3394: data_o = 32'h00000000 /* 0x3508 */;
3395: data_o = 32'h00000000 /* 0x350c */;
3396: data_o = 32'h00000000 /* 0x3510 */;
3397: data_o = 32'h00000000 /* 0x3514 */;
3398: data_o = 32'h00000000 /* 0x3518 */;
3399: data_o = 32'h00000000 /* 0x351c */;
3400: data_o = 32'h00000000 /* 0x3520 */;
3401: data_o = 32'h00000000 /* 0x3524 */;
3402: data_o = 32'h00000000 /* 0x3528 */;
3403: data_o = 32'h00000000 /* 0x352c */;
3404: data_o = 32'h00000000 /* 0x3530 */;
3405: data_o = 32'h00000000 /* 0x3534 */;
3406: data_o = 32'h00000000 /* 0x3538 */;
3407: data_o = 32'h00000000 /* 0x353c */;
3408: data_o = 32'h00000000 /* 0x3540 */;
3409: data_o = 32'h00000000 /* 0x3544 */;
3410: data_o = 32'h00000000 /* 0x3548 */;
3411: data_o = 32'h00000000 /* 0x354c */;
3412: data_o = 32'h00000000 /* 0x3550 */;
3413: data_o = 32'h00000000 /* 0x3554 */;
3414: data_o = 32'h00000000 /* 0x3558 */;
3415: data_o = 32'h00000000 /* 0x355c */;
3416: data_o = 32'h00000000 /* 0x3560 */;
3417: data_o = 32'h00000000 /* 0x3564 */;
3418: data_o = 32'h00000000 /* 0x3568 */;
3419: data_o = 32'h00000000 /* 0x356c */;
3420: data_o = 32'h00000000 /* 0x3570 */;
3421: data_o = 32'h00000000 /* 0x3574 */;
3422: data_o = 32'h00000000 /* 0x3578 */;
3423: data_o = 32'h00000000 /* 0x357c */;
3424: data_o = 32'h00000000 /* 0x3580 */;
3425: data_o = 32'h00000000 /* 0x3584 */;
3426: data_o = 32'h00000000 /* 0x3588 */;
3427: data_o = 32'h00000000 /* 0x358c */;
3428: data_o = 32'h00000000 /* 0x3590 */;
3429: data_o = 32'h00000000 /* 0x3594 */;
3430: data_o = 32'h00000000 /* 0x3598 */;
3431: data_o = 32'h00000000 /* 0x359c */;
3432: data_o = 32'h00000000 /* 0x35a0 */;
3433: data_o = 32'h00000000 /* 0x35a4 */;
3434: data_o = 32'h00000000 /* 0x35a8 */;
3435: data_o = 32'h00000000 /* 0x35ac */;
3436: data_o = 32'h00000000 /* 0x35b0 */;
3437: data_o = 32'h00000000 /* 0x35b4 */;
3438: data_o = 32'h00000000 /* 0x35b8 */;
3439: data_o = 32'h00000000 /* 0x35bc */;
3440: data_o = 32'h00000000 /* 0x35c0 */;
3441: data_o = 32'h00000000 /* 0x35c4 */;
3442: data_o = 32'h00000000 /* 0x35c8 */;
3443: data_o = 32'h00000000 /* 0x35cc */;
3444: data_o = 32'h00000000 /* 0x35d0 */;
3445: data_o = 32'h00000000 /* 0x35d4 */;
3446: data_o = 32'h00000000 /* 0x35d8 */;
3447: data_o = 32'h00000000 /* 0x35dc */;
3448: data_o = 32'h00000000 /* 0x35e0 */;
3449: data_o = 32'h00000000 /* 0x35e4 */;
3450: data_o = 32'h00000000 /* 0x35e8 */;
3451: data_o = 32'h00000000 /* 0x35ec */;
3452: data_o = 32'h00000000 /* 0x35f0 */;
3453: data_o = 32'h00000000 /* 0x35f4 */;
3454: data_o = 32'h00000000 /* 0x35f8 */;
3455: data_o = 32'h00000000 /* 0x35fc */;
3456: data_o = 32'h00000000 /* 0x3600 */;
3457: data_o = 32'h00000000 /* 0x3604 */;
3458: data_o = 32'h00000000 /* 0x3608 */;
3459: data_o = 32'h00000000 /* 0x360c */;
3460: data_o = 32'h00000000 /* 0x3610 */;
3461: data_o = 32'h00000000 /* 0x3614 */;
3462: data_o = 32'h00000000 /* 0x3618 */;
3463: data_o = 32'h00000000 /* 0x361c */;
3464: data_o = 32'h00000000 /* 0x3620 */;
3465: data_o = 32'h00000000 /* 0x3624 */;
3466: data_o = 32'h00000000 /* 0x3628 */;
3467: data_o = 32'h00000000 /* 0x362c */;
3468: data_o = 32'h00000000 /* 0x3630 */;
3469: data_o = 32'h00000000 /* 0x3634 */;
3470: data_o = 32'h00000000 /* 0x3638 */;
3471: data_o = 32'h00000000 /* 0x363c */;
3472: data_o = 32'h00000000 /* 0x3640 */;
3473: data_o = 32'h00000000 /* 0x3644 */;
3474: data_o = 32'h00000000 /* 0x3648 */;
3475: data_o = 32'h00000000 /* 0x364c */;
3476: data_o = 32'h00000000 /* 0x3650 */;
3477: data_o = 32'h00000000 /* 0x3654 */;
3478: data_o = 32'h00000000 /* 0x3658 */;
3479: data_o = 32'h00000000 /* 0x365c */;
3480: data_o = 32'h00000000 /* 0x3660 */;
3481: data_o = 32'h00000000 /* 0x3664 */;
3482: data_o = 32'h00000000 /* 0x3668 */;
3483: data_o = 32'h00000000 /* 0x366c */;
3484: data_o = 32'h00000000 /* 0x3670 */;
3485: data_o = 32'h00000000 /* 0x3674 */;
3486: data_o = 32'h00000000 /* 0x3678 */;
3487: data_o = 32'h00000000 /* 0x367c */;
3488: data_o = 32'h00000000 /* 0x3680 */;
3489: data_o = 32'h00000000 /* 0x3684 */;
3490: data_o = 32'h00000000 /* 0x3688 */;
3491: data_o = 32'h00000000 /* 0x368c */;
3492: data_o = 32'h00000000 /* 0x3690 */;
3493: data_o = 32'h00000000 /* 0x3694 */;
3494: data_o = 32'h00000000 /* 0x3698 */;
3495: data_o = 32'h00000000 /* 0x369c */;
3496: data_o = 32'h00000000 /* 0x36a0 */;
3497: data_o = 32'h00000000 /* 0x36a4 */;
3498: data_o = 32'h00000000 /* 0x36a8 */;
3499: data_o = 32'h00000000 /* 0x36ac */;
3500: data_o = 32'h00000000 /* 0x36b0 */;
3501: data_o = 32'h00000000 /* 0x36b4 */;
3502: data_o = 32'h00000000 /* 0x36b8 */;
3503: data_o = 32'h00000000 /* 0x36bc */;
3504: data_o = 32'h00000000 /* 0x36c0 */;
3505: data_o = 32'h00000000 /* 0x36c4 */;
3506: data_o = 32'h00000000 /* 0x36c8 */;
3507: data_o = 32'h00000000 /* 0x36cc */;
3508: data_o = 32'h00000000 /* 0x36d0 */;
3509: data_o = 32'h00000000 /* 0x36d4 */;
3510: data_o = 32'h00000000 /* 0x36d8 */;
3511: data_o = 32'h00000000 /* 0x36dc */;
3512: data_o = 32'h00000000 /* 0x36e0 */;
3513: data_o = 32'h00000000 /* 0x36e4 */;
3514: data_o = 32'h00000000 /* 0x36e8 */;
3515: data_o = 32'h00000000 /* 0x36ec */;
3516: data_o = 32'h00000000 /* 0x36f0 */;
3517: data_o = 32'h00000000 /* 0x36f4 */;
3518: data_o = 32'h00000000 /* 0x36f8 */;
3519: data_o = 32'h00000000 /* 0x36fc */;
3520: data_o = 32'h00000000 /* 0x3700 */;
3521: data_o = 32'h00000000 /* 0x3704 */;
3522: data_o = 32'h00000000 /* 0x3708 */;
3523: data_o = 32'h00000000 /* 0x370c */;
3524: data_o = 32'h00000000 /* 0x3710 */;
3525: data_o = 32'h00000000 /* 0x3714 */;
3526: data_o = 32'h00000000 /* 0x3718 */;
3527: data_o = 32'h00000000 /* 0x371c */;
3528: data_o = 32'h00000000 /* 0x3720 */;
3529: data_o = 32'h00000000 /* 0x3724 */;
3530: data_o = 32'h00000000 /* 0x3728 */;
3531: data_o = 32'h00000000 /* 0x372c */;
3532: data_o = 32'h00000000 /* 0x3730 */;
3533: data_o = 32'h00000000 /* 0x3734 */;
3534: data_o = 32'h00000000 /* 0x3738 */;
3535: data_o = 32'h00000000 /* 0x373c */;
3536: data_o = 32'h00000000 /* 0x3740 */;
3537: data_o = 32'h00000000 /* 0x3744 */;
3538: data_o = 32'h00000000 /* 0x3748 */;
3539: data_o = 32'h00000000 /* 0x374c */;
3540: data_o = 32'h00000000 /* 0x3750 */;
3541: data_o = 32'h00000000 /* 0x3754 */;
3542: data_o = 32'h00000000 /* 0x3758 */;
3543: data_o = 32'h00000000 /* 0x375c */;
3544: data_o = 32'h00000000 /* 0x3760 */;
3545: data_o = 32'h00000000 /* 0x3764 */;
3546: data_o = 32'h00000000 /* 0x3768 */;
3547: data_o = 32'h00000000 /* 0x376c */;
3548: data_o = 32'h00000000 /* 0x3770 */;
3549: data_o = 32'h00000000 /* 0x3774 */;
3550: data_o = 32'h00000000 /* 0x3778 */;
3551: data_o = 32'h00000000 /* 0x377c */;
3552: data_o = 32'h00000000 /* 0x3780 */;
3553: data_o = 32'h00000000 /* 0x3784 */;
3554: data_o = 32'h00000000 /* 0x3788 */;
3555: data_o = 32'h00000000 /* 0x378c */;
3556: data_o = 32'h00000000 /* 0x3790 */;
3557: data_o = 32'h00000000 /* 0x3794 */;
3558: data_o = 32'h00000000 /* 0x3798 */;
3559: data_o = 32'h00000000 /* 0x379c */;
3560: data_o = 32'h00000000 /* 0x37a0 */;
3561: data_o = 32'h00000000 /* 0x37a4 */;
3562: data_o = 32'h00000000 /* 0x37a8 */;
3563: data_o = 32'h00000000 /* 0x37ac */;
3564: data_o = 32'h00000000 /* 0x37b0 */;
3565: data_o = 32'h00000000 /* 0x37b4 */;
3566: data_o = 32'h00000000 /* 0x37b8 */;
3567: data_o = 32'h00000000 /* 0x37bc */;
3568: data_o = 32'h00000000 /* 0x37c0 */;
3569: data_o = 32'h00000000 /* 0x37c4 */;
3570: data_o = 32'h00000000 /* 0x37c8 */;
3571: data_o = 32'h00000000 /* 0x37cc */;
3572: data_o = 32'h00000000 /* 0x37d0 */;
3573: data_o = 32'h00000000 /* 0x37d4 */;
3574: data_o = 32'h00000000 /* 0x37d8 */;
3575: data_o = 32'h00000000 /* 0x37dc */;
3576: data_o = 32'h00000000 /* 0x37e0 */;
3577: data_o = 32'h00000000 /* 0x37e4 */;
3578: data_o = 32'h00000000 /* 0x37e8 */;
3579: data_o = 32'h00000000 /* 0x37ec */;
3580: data_o = 32'h00000000 /* 0x37f0 */;
3581: data_o = 32'h00000000 /* 0x37f4 */;
3582: data_o = 32'h00000000 /* 0x37f8 */;
3583: data_o = 32'h00000000 /* 0x37fc */;
3584: data_o = 32'h00000000 /* 0x3800 */;
3585: data_o = 32'h00000000 /* 0x3804 */;
3586: data_o = 32'h00000000 /* 0x3808 */;
3587: data_o = 32'h00000000 /* 0x380c */;
3588: data_o = 32'h00000000 /* 0x3810 */;
3589: data_o = 32'h00000000 /* 0x3814 */;
3590: data_o = 32'h00000000 /* 0x3818 */;
3591: data_o = 32'h00000000 /* 0x381c */;
3592: data_o = 32'h00000000 /* 0x3820 */;
3593: data_o = 32'h00000000 /* 0x3824 */;
3594: data_o = 32'h00000000 /* 0x3828 */;
3595: data_o = 32'h00000000 /* 0x382c */;
3596: data_o = 32'h00000000 /* 0x3830 */;
3597: data_o = 32'h00000000 /* 0x3834 */;
3598: data_o = 32'h00000000 /* 0x3838 */;
3599: data_o = 32'h00000000 /* 0x383c */;
3600: data_o = 32'h00000000 /* 0x3840 */;
3601: data_o = 32'h00000000 /* 0x3844 */;
3602: data_o = 32'h00000000 /* 0x3848 */;
3603: data_o = 32'h00000000 /* 0x384c */;
3604: data_o = 32'h00000000 /* 0x3850 */;
3605: data_o = 32'h00000000 /* 0x3854 */;
3606: data_o = 32'h00000000 /* 0x3858 */;
3607: data_o = 32'h00000000 /* 0x385c */;
3608: data_o = 32'h00000000 /* 0x3860 */;
3609: data_o = 32'h00000000 /* 0x3864 */;
3610: data_o = 32'h00000000 /* 0x3868 */;
3611: data_o = 32'h00000000 /* 0x386c */;
3612: data_o = 32'h00000000 /* 0x3870 */;
3613: data_o = 32'h00000000 /* 0x3874 */;
3614: data_o = 32'h00000000 /* 0x3878 */;
3615: data_o = 32'h00000000 /* 0x387c */;
3616: data_o = 32'h00000000 /* 0x3880 */;
3617: data_o = 32'h00000000 /* 0x3884 */;
3618: data_o = 32'h00000000 /* 0x3888 */;
3619: data_o = 32'h00000000 /* 0x388c */;
3620: data_o = 32'h00000000 /* 0x3890 */;
3621: data_o = 32'h00000000 /* 0x3894 */;
3622: data_o = 32'h00000000 /* 0x3898 */;
3623: data_o = 32'h00000000 /* 0x389c */;
3624: data_o = 32'h00000000 /* 0x38a0 */;
3625: data_o = 32'h00000000 /* 0x38a4 */;
3626: data_o = 32'h00000000 /* 0x38a8 */;
3627: data_o = 32'h00000000 /* 0x38ac */;
3628: data_o = 32'h00000000 /* 0x38b0 */;
3629: data_o = 32'h00000000 /* 0x38b4 */;
3630: data_o = 32'h00000000 /* 0x38b8 */;
3631: data_o = 32'h00000000 /* 0x38bc */;
3632: data_o = 32'h00000000 /* 0x38c0 */;
3633: data_o = 32'h00000000 /* 0x38c4 */;
3634: data_o = 32'h00000000 /* 0x38c8 */;
3635: data_o = 32'h00000000 /* 0x38cc */;
3636: data_o = 32'h00000000 /* 0x38d0 */;
3637: data_o = 32'h00000000 /* 0x38d4 */;
3638: data_o = 32'h00000000 /* 0x38d8 */;
3639: data_o = 32'h00000000 /* 0x38dc */;
3640: data_o = 32'h00000000 /* 0x38e0 */;
3641: data_o = 32'h00000000 /* 0x38e4 */;
3642: data_o = 32'h00000000 /* 0x38e8 */;
3643: data_o = 32'h00000000 /* 0x38ec */;
3644: data_o = 32'h00000000 /* 0x38f0 */;
3645: data_o = 32'h00000000 /* 0x38f4 */;
3646: data_o = 32'h00000000 /* 0x38f8 */;
3647: data_o = 32'h00000000 /* 0x38fc */;
3648: data_o = 32'h00000000 /* 0x3900 */;
3649: data_o = 32'h00000000 /* 0x3904 */;
3650: data_o = 32'h00000000 /* 0x3908 */;
3651: data_o = 32'h00000000 /* 0x390c */;
3652: data_o = 32'h00000000 /* 0x3910 */;
3653: data_o = 32'h00000000 /* 0x3914 */;
3654: data_o = 32'h00000000 /* 0x3918 */;
3655: data_o = 32'h00000000 /* 0x391c */;
3656: data_o = 32'h00000000 /* 0x3920 */;
3657: data_o = 32'h00000000 /* 0x3924 */;
3658: data_o = 32'h00000000 /* 0x3928 */;
3659: data_o = 32'h00000000 /* 0x392c */;
3660: data_o = 32'h00000000 /* 0x3930 */;
3661: data_o = 32'h00000000 /* 0x3934 */;
3662: data_o = 32'h00000000 /* 0x3938 */;
3663: data_o = 32'h00000000 /* 0x393c */;
3664: data_o = 32'h00000000 /* 0x3940 */;
3665: data_o = 32'h00000000 /* 0x3944 */;
3666: data_o = 32'h00000000 /* 0x3948 */;
3667: data_o = 32'h00000000 /* 0x394c */;
3668: data_o = 32'h00000000 /* 0x3950 */;
3669: data_o = 32'h00000000 /* 0x3954 */;
3670: data_o = 32'h00000000 /* 0x3958 */;
3671: data_o = 32'h00000000 /* 0x395c */;
3672: data_o = 32'h00000000 /* 0x3960 */;
3673: data_o = 32'h00000000 /* 0x3964 */;
3674: data_o = 32'h00000000 /* 0x3968 */;
3675: data_o = 32'h00000000 /* 0x396c */;
3676: data_o = 32'h00000000 /* 0x3970 */;
3677: data_o = 32'h00000000 /* 0x3974 */;
3678: data_o = 32'h00000000 /* 0x3978 */;
3679: data_o = 32'h00000000 /* 0x397c */;
3680: data_o = 32'h00000000 /* 0x3980 */;
3681: data_o = 32'h00000000 /* 0x3984 */;
3682: data_o = 32'h00000000 /* 0x3988 */;
3683: data_o = 32'h00000000 /* 0x398c */;
3684: data_o = 32'h00000000 /* 0x3990 */;
3685: data_o = 32'h00000000 /* 0x3994 */;
3686: data_o = 32'h00000000 /* 0x3998 */;
3687: data_o = 32'h00000000 /* 0x399c */;
3688: data_o = 32'h00000000 /* 0x39a0 */;
3689: data_o = 32'h00000000 /* 0x39a4 */;
3690: data_o = 32'h00000000 /* 0x39a8 */;
3691: data_o = 32'h00000000 /* 0x39ac */;
3692: data_o = 32'h00000000 /* 0x39b0 */;
3693: data_o = 32'h00000000 /* 0x39b4 */;
3694: data_o = 32'h00000000 /* 0x39b8 */;
3695: data_o = 32'h00000000 /* 0x39bc */;
3696: data_o = 32'h00000000 /* 0x39c0 */;
3697: data_o = 32'h00000000 /* 0x39c4 */;
3698: data_o = 32'h00000000 /* 0x39c8 */;
3699: data_o = 32'h00000000 /* 0x39cc */;
3700: data_o = 32'h00000000 /* 0x39d0 */;
3701: data_o = 32'h00000000 /* 0x39d4 */;
3702: data_o = 32'h00000000 /* 0x39d8 */;
3703: data_o = 32'h00000000 /* 0x39dc */;
3704: data_o = 32'h00000000 /* 0x39e0 */;
3705: data_o = 32'h00000000 /* 0x39e4 */;
3706: data_o = 32'h00000000 /* 0x39e8 */;
3707: data_o = 32'h00000000 /* 0x39ec */;
3708: data_o = 32'h00000000 /* 0x39f0 */;
3709: data_o = 32'h00000000 /* 0x39f4 */;
3710: data_o = 32'h00000000 /* 0x39f8 */;
3711: data_o = 32'h00000000 /* 0x39fc */;
3712: data_o = 32'h00000000 /* 0x3a00 */;
3713: data_o = 32'h00000000 /* 0x3a04 */;
3714: data_o = 32'h00000000 /* 0x3a08 */;
3715: data_o = 32'h00000000 /* 0x3a0c */;
3716: data_o = 32'h00000000 /* 0x3a10 */;
3717: data_o = 32'h00000000 /* 0x3a14 */;
3718: data_o = 32'h00000000 /* 0x3a18 */;
3719: data_o = 32'h00000000 /* 0x3a1c */;
3720: data_o = 32'h00000000 /* 0x3a20 */;
3721: data_o = 32'h00000000 /* 0x3a24 */;
3722: data_o = 32'h00000000 /* 0x3a28 */;
3723: data_o = 32'h00000000 /* 0x3a2c */;
3724: data_o = 32'h00000000 /* 0x3a30 */;
3725: data_o = 32'h00000000 /* 0x3a34 */;
3726: data_o = 32'h00000000 /* 0x3a38 */;
3727: data_o = 32'h00000000 /* 0x3a3c */;
3728: data_o = 32'h00000000 /* 0x3a40 */;
3729: data_o = 32'h00000000 /* 0x3a44 */;
3730: data_o = 32'h00000000 /* 0x3a48 */;
3731: data_o = 32'h00000000 /* 0x3a4c */;
3732: data_o = 32'h00000000 /* 0x3a50 */;
3733: data_o = 32'h00000000 /* 0x3a54 */;
3734: data_o = 32'h00000000 /* 0x3a58 */;
3735: data_o = 32'h00000000 /* 0x3a5c */;
3736: data_o = 32'h00000000 /* 0x3a60 */;
3737: data_o = 32'h00000000 /* 0x3a64 */;
3738: data_o = 32'h00000000 /* 0x3a68 */;
3739: data_o = 32'h00000000 /* 0x3a6c */;
3740: data_o = 32'h00000000 /* 0x3a70 */;
3741: data_o = 32'h00000000 /* 0x3a74 */;
3742: data_o = 32'h00000000 /* 0x3a78 */;
3743: data_o = 32'h00000000 /* 0x3a7c */;
3744: data_o = 32'h00000000 /* 0x3a80 */;
3745: data_o = 32'h00000000 /* 0x3a84 */;
3746: data_o = 32'h00000000 /* 0x3a88 */;
3747: data_o = 32'h00000000 /* 0x3a8c */;
3748: data_o = 32'h00000000 /* 0x3a90 */;
3749: data_o = 32'h00000000 /* 0x3a94 */;
3750: data_o = 32'h00000000 /* 0x3a98 */;
3751: data_o = 32'h00000000 /* 0x3a9c */;
3752: data_o = 32'h00000000 /* 0x3aa0 */;
3753: data_o = 32'h00000000 /* 0x3aa4 */;
3754: data_o = 32'h00000000 /* 0x3aa8 */;
3755: data_o = 32'h00000000 /* 0x3aac */;
3756: data_o = 32'h00000000 /* 0x3ab0 */;
3757: data_o = 32'h00000000 /* 0x3ab4 */;
3758: data_o = 32'h00000000 /* 0x3ab8 */;
3759: data_o = 32'h00000000 /* 0x3abc */;
3760: data_o = 32'h00000000 /* 0x3ac0 */;
3761: data_o = 32'h00000000 /* 0x3ac4 */;
3762: data_o = 32'h00000000 /* 0x3ac8 */;
3763: data_o = 32'h00000000 /* 0x3acc */;
3764: data_o = 32'h00000000 /* 0x3ad0 */;
3765: data_o = 32'h00000000 /* 0x3ad4 */;
3766: data_o = 32'h00000000 /* 0x3ad8 */;
3767: data_o = 32'h00000000 /* 0x3adc */;
3768: data_o = 32'h00000000 /* 0x3ae0 */;
3769: data_o = 32'h00000000 /* 0x3ae4 */;
3770: data_o = 32'h00000000 /* 0x3ae8 */;
3771: data_o = 32'h00000000 /* 0x3aec */;
3772: data_o = 32'h00000000 /* 0x3af0 */;
3773: data_o = 32'h00000000 /* 0x3af4 */;
3774: data_o = 32'h00000000 /* 0x3af8 */;
3775: data_o = 32'h00000000 /* 0x3afc */;
3776: data_o = 32'h00000000 /* 0x3b00 */;
3777: data_o = 32'h00000000 /* 0x3b04 */;
3778: data_o = 32'h00000000 /* 0x3b08 */;
3779: data_o = 32'h00000000 /* 0x3b0c */;
3780: data_o = 32'h00000000 /* 0x3b10 */;
3781: data_o = 32'h00000000 /* 0x3b14 */;
3782: data_o = 32'h00000000 /* 0x3b18 */;
3783: data_o = 32'h00000000 /* 0x3b1c */;
3784: data_o = 32'h00000000 /* 0x3b20 */;
3785: data_o = 32'h00000000 /* 0x3b24 */;
3786: data_o = 32'h00000000 /* 0x3b28 */;
3787: data_o = 32'h00000000 /* 0x3b2c */;
3788: data_o = 32'h00000000 /* 0x3b30 */;
3789: data_o = 32'h00000000 /* 0x3b34 */;
3790: data_o = 32'h00000000 /* 0x3b38 */;
3791: data_o = 32'h00000000 /* 0x3b3c */;
3792: data_o = 32'h00000000 /* 0x3b40 */;
3793: data_o = 32'h00000000 /* 0x3b44 */;
3794: data_o = 32'h00000000 /* 0x3b48 */;
3795: data_o = 32'h00000000 /* 0x3b4c */;
3796: data_o = 32'h00000000 /* 0x3b50 */;
3797: data_o = 32'h00000000 /* 0x3b54 */;
3798: data_o = 32'h00000000 /* 0x3b58 */;
3799: data_o = 32'h00000000 /* 0x3b5c */;
3800: data_o = 32'h00000000 /* 0x3b60 */;
3801: data_o = 32'h00000000 /* 0x3b64 */;
3802: data_o = 32'h00000000 /* 0x3b68 */;
3803: data_o = 32'h00000000 /* 0x3b6c */;
3804: data_o = 32'h00000000 /* 0x3b70 */;
3805: data_o = 32'h00000000 /* 0x3b74 */;
3806: data_o = 32'h00000000 /* 0x3b78 */;
3807: data_o = 32'h00000000 /* 0x3b7c */;
3808: data_o = 32'h00000000 /* 0x3b80 */;
3809: data_o = 32'h00000000 /* 0x3b84 */;
3810: data_o = 32'h00000000 /* 0x3b88 */;
3811: data_o = 32'h00000000 /* 0x3b8c */;
3812: data_o = 32'h00000000 /* 0x3b90 */;
3813: data_o = 32'h00000000 /* 0x3b94 */;
3814: data_o = 32'h00000000 /* 0x3b98 */;
3815: data_o = 32'h00000000 /* 0x3b9c */;
3816: data_o = 32'h00000000 /* 0x3ba0 */;
3817: data_o = 32'h00000000 /* 0x3ba4 */;
3818: data_o = 32'h00000000 /* 0x3ba8 */;
3819: data_o = 32'h00000000 /* 0x3bac */;
3820: data_o = 32'h00000000 /* 0x3bb0 */;
3821: data_o = 32'h00000000 /* 0x3bb4 */;
3822: data_o = 32'h00000000 /* 0x3bb8 */;
3823: data_o = 32'h00000000 /* 0x3bbc */;
3824: data_o = 32'h00000000 /* 0x3bc0 */;
3825: data_o = 32'h00000000 /* 0x3bc4 */;
3826: data_o = 32'h00000000 /* 0x3bc8 */;
3827: data_o = 32'h00000000 /* 0x3bcc */;
3828: data_o = 32'h00000000 /* 0x3bd0 */;
3829: data_o = 32'h00000000 /* 0x3bd4 */;
3830: data_o = 32'h00000000 /* 0x3bd8 */;
3831: data_o = 32'h00000000 /* 0x3bdc */;
3832: data_o = 32'h00000000 /* 0x3be0 */;
3833: data_o = 32'h00000000 /* 0x3be4 */;
3834: data_o = 32'h00000000 /* 0x3be8 */;
3835: data_o = 32'h00000000 /* 0x3bec */;
3836: data_o = 32'h00000000 /* 0x3bf0 */;
3837: data_o = 32'h00000000 /* 0x3bf4 */;
3838: data_o = 32'h00000000 /* 0x3bf8 */;
3839: data_o = 32'h00000000 /* 0x3bfc */;
3840: data_o = 32'h00000000 /* 0x3c00 */;
3841: data_o = 32'h00000000 /* 0x3c04 */;
3842: data_o = 32'h00000000 /* 0x3c08 */;
3843: data_o = 32'h00000000 /* 0x3c0c */;
3844: data_o = 32'h00000000 /* 0x3c10 */;
3845: data_o = 32'h00000000 /* 0x3c14 */;
3846: data_o = 32'h00000000 /* 0x3c18 */;
3847: data_o = 32'h00000000 /* 0x3c1c */;
3848: data_o = 32'h00000000 /* 0x3c20 */;
3849: data_o = 32'h00000000 /* 0x3c24 */;
3850: data_o = 32'h00000000 /* 0x3c28 */;
3851: data_o = 32'h00000000 /* 0x3c2c */;
3852: data_o = 32'h00000000 /* 0x3c30 */;
3853: data_o = 32'h00000000 /* 0x3c34 */;
3854: data_o = 32'h00000000 /* 0x3c38 */;
3855: data_o = 32'h00000000 /* 0x3c3c */;
3856: data_o = 32'h00000000 /* 0x3c40 */;
3857: data_o = 32'h00000000 /* 0x3c44 */;
3858: data_o = 32'h00000000 /* 0x3c48 */;
3859: data_o = 32'h00000000 /* 0x3c4c */;
3860: data_o = 32'h00000000 /* 0x3c50 */;
3861: data_o = 32'h00000000 /* 0x3c54 */;
3862: data_o = 32'h00000000 /* 0x3c58 */;
3863: data_o = 32'h00000000 /* 0x3c5c */;
3864: data_o = 32'h00000000 /* 0x3c60 */;
3865: data_o = 32'h00000000 /* 0x3c64 */;
3866: data_o = 32'h00000000 /* 0x3c68 */;
3867: data_o = 32'h00000000 /* 0x3c6c */;
3868: data_o = 32'h00000000 /* 0x3c70 */;
3869: data_o = 32'h00000000 /* 0x3c74 */;
3870: data_o = 32'h00000000 /* 0x3c78 */;
3871: data_o = 32'h00000000 /* 0x3c7c */;
3872: data_o = 32'h00000000 /* 0x3c80 */;
3873: data_o = 32'h00000000 /* 0x3c84 */;
3874: data_o = 32'h00000000 /* 0x3c88 */;
3875: data_o = 32'h00000000 /* 0x3c8c */;
3876: data_o = 32'h00000000 /* 0x3c90 */;
3877: data_o = 32'h00000000 /* 0x3c94 */;
3878: data_o = 32'h00000000 /* 0x3c98 */;
3879: data_o = 32'h00000000 /* 0x3c9c */;
3880: data_o = 32'h00000000 /* 0x3ca0 */;
3881: data_o = 32'h00000000 /* 0x3ca4 */;
3882: data_o = 32'h00000000 /* 0x3ca8 */;
3883: data_o = 32'h00000000 /* 0x3cac */;
3884: data_o = 32'h00000000 /* 0x3cb0 */;
3885: data_o = 32'h00000000 /* 0x3cb4 */;
3886: data_o = 32'h00000000 /* 0x3cb8 */;
3887: data_o = 32'h00000000 /* 0x3cbc */;
3888: data_o = 32'h00000000 /* 0x3cc0 */;
3889: data_o = 32'h00000000 /* 0x3cc4 */;
3890: data_o = 32'h00000000 /* 0x3cc8 */;
3891: data_o = 32'h00000000 /* 0x3ccc */;
3892: data_o = 32'h00000000 /* 0x3cd0 */;
3893: data_o = 32'h00000000 /* 0x3cd4 */;
3894: data_o = 32'h00000000 /* 0x3cd8 */;
3895: data_o = 32'h00000000 /* 0x3cdc */;
3896: data_o = 32'h00000000 /* 0x3ce0 */;
3897: data_o = 32'h00000000 /* 0x3ce4 */;
3898: data_o = 32'h00000000 /* 0x3ce8 */;
3899: data_o = 32'h00000000 /* 0x3cec */;
3900: data_o = 32'h00000000 /* 0x3cf0 */;
3901: data_o = 32'h00000000 /* 0x3cf4 */;
3902: data_o = 32'h00000000 /* 0x3cf8 */;
3903: data_o = 32'h00000000 /* 0x3cfc */;
3904: data_o = 32'h00000000 /* 0x3d00 */;
3905: data_o = 32'h00000000 /* 0x3d04 */;
3906: data_o = 32'h00000000 /* 0x3d08 */;
3907: data_o = 32'h00000000 /* 0x3d0c */;
3908: data_o = 32'h00000000 /* 0x3d10 */;
3909: data_o = 32'h00000000 /* 0x3d14 */;
3910: data_o = 32'h00000000 /* 0x3d18 */;
3911: data_o = 32'h00000000 /* 0x3d1c */;
3912: data_o = 32'h00000000 /* 0x3d20 */;
3913: data_o = 32'h00000000 /* 0x3d24 */;
3914: data_o = 32'h00000000 /* 0x3d28 */;
3915: data_o = 32'h00000000 /* 0x3d2c */;
3916: data_o = 32'h00000000 /* 0x3d30 */;
3917: data_o = 32'h00000000 /* 0x3d34 */;
3918: data_o = 32'h00000000 /* 0x3d38 */;
3919: data_o = 32'h00000000 /* 0x3d3c */;
3920: data_o = 32'h00000000 /* 0x3d40 */;
3921: data_o = 32'h00000000 /* 0x3d44 */;
3922: data_o = 32'h00000000 /* 0x3d48 */;
3923: data_o = 32'h00000000 /* 0x3d4c */;
3924: data_o = 32'h00000000 /* 0x3d50 */;
3925: data_o = 32'h00000000 /* 0x3d54 */;
3926: data_o = 32'h00000000 /* 0x3d58 */;
3927: data_o = 32'h00000000 /* 0x3d5c */;
3928: data_o = 32'h00000000 /* 0x3d60 */;
3929: data_o = 32'h00000000 /* 0x3d64 */;
3930: data_o = 32'h00000000 /* 0x3d68 */;
3931: data_o = 32'h00000000 /* 0x3d6c */;
3932: data_o = 32'h00000000 /* 0x3d70 */;
3933: data_o = 32'h00000000 /* 0x3d74 */;
3934: data_o = 32'h00000000 /* 0x3d78 */;
3935: data_o = 32'h00000000 /* 0x3d7c */;
3936: data_o = 32'h00000000 /* 0x3d80 */;
3937: data_o = 32'h00000000 /* 0x3d84 */;
3938: data_o = 32'h00000000 /* 0x3d88 */;
3939: data_o = 32'h00000000 /* 0x3d8c */;
3940: data_o = 32'h00000000 /* 0x3d90 */;
3941: data_o = 32'h00000000 /* 0x3d94 */;
3942: data_o = 32'h00000000 /* 0x3d98 */;
3943: data_o = 32'h00000000 /* 0x3d9c */;
3944: data_o = 32'h00000000 /* 0x3da0 */;
3945: data_o = 32'h00000000 /* 0x3da4 */;
3946: data_o = 32'h00000000 /* 0x3da8 */;
3947: data_o = 32'h00000000 /* 0x3dac */;
3948: data_o = 32'h00000000 /* 0x3db0 */;
3949: data_o = 32'h00000000 /* 0x3db4 */;
3950: data_o = 32'h00000000 /* 0x3db8 */;
3951: data_o = 32'h00000000 /* 0x3dbc */;
3952: data_o = 32'h00000000 /* 0x3dc0 */;
3953: data_o = 32'h00000000 /* 0x3dc4 */;
3954: data_o = 32'h00000000 /* 0x3dc8 */;
3955: data_o = 32'h00000000 /* 0x3dcc */;
3956: data_o = 32'h00000000 /* 0x3dd0 */;
3957: data_o = 32'h00000000 /* 0x3dd4 */;
3958: data_o = 32'h00000000 /* 0x3dd8 */;
3959: data_o = 32'h00000000 /* 0x3ddc */;
3960: data_o = 32'h00000000 /* 0x3de0 */;
3961: data_o = 32'h00000000 /* 0x3de4 */;
3962: data_o = 32'h00000000 /* 0x3de8 */;
3963: data_o = 32'h00000000 /* 0x3dec */;
3964: data_o = 32'h00000000 /* 0x3df0 */;
3965: data_o = 32'h00000000 /* 0x3df4 */;
3966: data_o = 32'h00000000 /* 0x3df8 */;
3967: data_o = 32'h00000000 /* 0x3dfc */;
3968: data_o = 32'h00000000 /* 0x3e00 */;
3969: data_o = 32'h00000000 /* 0x3e04 */;
3970: data_o = 32'h00000000 /* 0x3e08 */;
3971: data_o = 32'h00000000 /* 0x3e0c */;
3972: data_o = 32'h00000000 /* 0x3e10 */;
3973: data_o = 32'h00000000 /* 0x3e14 */;
3974: data_o = 32'h00000000 /* 0x3e18 */;
3975: data_o = 32'h00000000 /* 0x3e1c */;
3976: data_o = 32'h00000000 /* 0x3e20 */;
3977: data_o = 32'h00000000 /* 0x3e24 */;
3978: data_o = 32'h00000000 /* 0x3e28 */;
3979: data_o = 32'h00000000 /* 0x3e2c */;
3980: data_o = 32'h00000000 /* 0x3e30 */;
3981: data_o = 32'h00000000 /* 0x3e34 */;
3982: data_o = 32'h00000000 /* 0x3e38 */;
3983: data_o = 32'h00000000 /* 0x3e3c */;
3984: data_o = 32'h00000000 /* 0x3e40 */;
3985: data_o = 32'h00000000 /* 0x3e44 */;
3986: data_o = 32'h00000000 /* 0x3e48 */;
3987: data_o = 32'h00000000 /* 0x3e4c */;
3988: data_o = 32'h00000000 /* 0x3e50 */;
3989: data_o = 32'h00000000 /* 0x3e54 */;
3990: data_o = 32'h00000000 /* 0x3e58 */;
3991: data_o = 32'h00000000 /* 0x3e5c */;
3992: data_o = 32'h00000000 /* 0x3e60 */;
3993: data_o = 32'h00000000 /* 0x3e64 */;
3994: data_o = 32'h00000000 /* 0x3e68 */;
3995: data_o = 32'h00000000 /* 0x3e6c */;
3996: data_o = 32'h00000000 /* 0x3e70 */;
3997: data_o = 32'h00000000 /* 0x3e74 */;
3998: data_o = 32'h00000000 /* 0x3e78 */;
3999: data_o = 32'h00000000 /* 0x3e7c */;
4000: data_o = 32'h00000000 /* 0x3e80 */;
4001: data_o = 32'h00000000 /* 0x3e84 */;
4002: data_o = 32'h00000000 /* 0x3e88 */;
4003: data_o = 32'h00000000 /* 0x3e8c */;
4004: data_o = 32'h00000000 /* 0x3e90 */;
4005: data_o = 32'h00000000 /* 0x3e94 */;
4006: data_o = 32'h00000000 /* 0x3e98 */;
4007: data_o = 32'h00000000 /* 0x3e9c */;
4008: data_o = 32'h00000000 /* 0x3ea0 */;
4009: data_o = 32'h00000000 /* 0x3ea4 */;
4010: data_o = 32'h00000000 /* 0x3ea8 */;
4011: data_o = 32'h00000000 /* 0x3eac */;
4012: data_o = 32'h00000000 /* 0x3eb0 */;
4013: data_o = 32'h00000000 /* 0x3eb4 */;
4014: data_o = 32'h00000000 /* 0x3eb8 */;
4015: data_o = 32'h00000000 /* 0x3ebc */;
4016: data_o = 32'h00000000 /* 0x3ec0 */;
4017: data_o = 32'h00000000 /* 0x3ec4 */;
4018: data_o = 32'h00000000 /* 0x3ec8 */;
4019: data_o = 32'h00000000 /* 0x3ecc */;
4020: data_o = 32'h00000000 /* 0x3ed0 */;
4021: data_o = 32'h00000000 /* 0x3ed4 */;
4022: data_o = 32'h00000000 /* 0x3ed8 */;
4023: data_o = 32'h00000000 /* 0x3edc */;
4024: data_o = 32'h00000000 /* 0x3ee0 */;
4025: data_o = 32'h00000000 /* 0x3ee4 */;
4026: data_o = 32'h00000000 /* 0x3ee8 */;
4027: data_o = 32'h00000000 /* 0x3eec */;
4028: data_o = 32'h00000000 /* 0x3ef0 */;
4029: data_o = 32'h00000000 /* 0x3ef4 */;
4030: data_o = 32'h00000000 /* 0x3ef8 */;
4031: data_o = 32'h00000000 /* 0x3efc */;
4032: data_o = 32'h00000000 /* 0x3f00 */;
4033: data_o = 32'h00000000 /* 0x3f04 */;
4034: data_o = 32'h00000000 /* 0x3f08 */;
4035: data_o = 32'h00000000 /* 0x3f0c */;
4036: data_o = 32'h00000000 /* 0x3f10 */;
4037: data_o = 32'h00000000 /* 0x3f14 */;
4038: data_o = 32'h00000000 /* 0x3f18 */;
4039: data_o = 32'h00000000 /* 0x3f1c */;
4040: data_o = 32'h00000000 /* 0x3f20 */;
4041: data_o = 32'h00000000 /* 0x3f24 */;
4042: data_o = 32'h00000000 /* 0x3f28 */;
4043: data_o = 32'h00000000 /* 0x3f2c */;
4044: data_o = 32'h00000000 /* 0x3f30 */;
4045: data_o = 32'h00000000 /* 0x3f34 */;
4046: data_o = 32'h00000000 /* 0x3f38 */;
4047: data_o = 32'h00000000 /* 0x3f3c */;
4048: data_o = 32'h00000000 /* 0x3f40 */;
4049: data_o = 32'h00000000 /* 0x3f44 */;
4050: data_o = 32'h00000000 /* 0x3f48 */;
4051: data_o = 32'h00000000 /* 0x3f4c */;
4052: data_o = 32'h00000000 /* 0x3f50 */;
4053: data_o = 32'h00000000 /* 0x3f54 */;
4054: data_o = 32'h00000000 /* 0x3f58 */;
4055: data_o = 32'h00000000 /* 0x3f5c */;
4056: data_o = 32'h00000000 /* 0x3f60 */;
4057: data_o = 32'h00000000 /* 0x3f64 */;
4058: data_o = 32'h00000000 /* 0x3f68 */;
4059: data_o = 32'h00000000 /* 0x3f6c */;
4060: data_o = 32'h00000000 /* 0x3f70 */;
4061: data_o = 32'h00000000 /* 0x3f74 */;
4062: data_o = 32'h00000000 /* 0x3f78 */;
4063: data_o = 32'h00000000 /* 0x3f7c */;
4064: data_o = 32'h00000000 /* 0x3f80 */;
4065: data_o = 32'h00000000 /* 0x3f84 */;
4066: data_o = 32'h00000000 /* 0x3f88 */;
4067: data_o = 32'h00000000 /* 0x3f8c */;
4068: data_o = 32'h00000000 /* 0x3f90 */;
4069: data_o = 32'h00000000 /* 0x3f94 */;
4070: data_o = 32'h00000000 /* 0x3f98 */;
4071: data_o = 32'h00000000 /* 0x3f9c */;
4072: data_o = 32'h00000000 /* 0x3fa0 */;
4073: data_o = 32'h00000000 /* 0x3fa4 */;
4074: data_o = 32'h00000000 /* 0x3fa8 */;
4075: data_o = 32'h00000000 /* 0x3fac */;
4076: data_o = 32'h00000000 /* 0x3fb0 */;
4077: data_o = 32'h00000000 /* 0x3fb4 */;
4078: data_o = 32'h00000000 /* 0x3fb8 */;
4079: data_o = 32'h00000000 /* 0x3fbc */;
4080: data_o = 32'h00000000 /* 0x3fc0 */;
4081: data_o = 32'h00000000 /* 0x3fc4 */;
4082: data_o = 32'h00000000 /* 0x3fc8 */;
4083: data_o = 32'h00000000 /* 0x3fcc */;
4084: data_o = 32'h00000000 /* 0x3fd0 */;
4085: data_o = 32'h00000000 /* 0x3fd4 */;
4086: data_o = 32'h00000000 /* 0x3fd8 */;
4087: data_o = 32'h00000000 /* 0x3fdc */;
4088: data_o = 32'h00000000 /* 0x3fe0 */;
4089: data_o = 32'h00000000 /* 0x3fe4 */;
4090: data_o = 32'h00000000 /* 0x3fe8 */;
4091: data_o = 32'h00000000 /* 0x3fec */;
4092: data_o = 32'h00000000 /* 0x3ff0 */;
4093: data_o = 32'h00000000 /* 0x3ff4 */;
4094: data_o = 32'h00000000 /* 0x3ff8 */;
4095: data_o = 32'h00000000 /* 0x3ffc */;
default: data_o = '0;
endcase
end
endmodule
// Copyright 2022 ETH Zurich and University of Bologna.
// Solderpad Hardware License, Version 0.51, see LICENSE for details.
// SPDX-License-Identifier: SHL-0.51
//
// Nicole Narr <narrn@student.ethz.ch>
// Christopher Reinwardt <creinwar@student.ethz.ch>
/// Contains the structs and configurations necessary for the Cheshire Platform
package cheshire_pkg;
// Copyright (c) 2019 ETH Zurich, University of Bologna
//
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
//
// Authors:
// - Andreas Kurth <akurth@iis.ee.ethz.ch>
// - Florian Zaruba <zarubaf@iis.ee.ethz.ch>
// - Wolfgang Roenninger <wroennin@iis.ee.ethz.ch>
// Macros to define AXI and AXI-Lite Channel and Request/Response Structs
////////////////////////////////////////////////////////////////////////////////////////////////////
// AXI4+ATOP Channel and Request/Response Structs
//
// Usage Example:
// `AXI_TYPEDEF_AW_CHAN_T(axi_aw_t, axi_addr_t, axi_id_t, axi_user_t)
// `AXI_TYPEDEF_W_CHAN_T(axi_w_t, axi_data_t, axi_strb_t, axi_user_t)
// `AXI_TYPEDEF_B_CHAN_T(axi_b_t, axi_id_t, axi_user_t)
// `AXI_TYPEDEF_AR_CHAN_T(axi_ar_t, axi_addr_t, axi_id_t, axi_user_t)
// `AXI_TYPEDEF_R_CHAN_T(axi_r_t, axi_data_t, axi_id_t, axi_user_t)
// `AXI_TYPEDEF_REQ_T(axi_req_t, axi_aw_t, axi_w_t, axi_ar_t)
// `AXI_TYPEDEF_RESP_T(axi_resp_t, axi_b_t, axi_r_t)
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// All AXI4+ATOP Channels and Request/Response Structs in One Macro - Custom Type Name Version
//
// This can be used whenever the user is not interested in "precise" control of the naming of the
// individual channels.
//
// Usage Example:
// `AXI_TYPEDEF_ALL_CT(axi, axi_req_t, axi_rsp_t, addr_t, id_t, data_t, strb_t, user_t)
//
// This defines `axi_req_t` and `axi_rsp_t` request/response structs as well as `axi_aw_chan_t`,
// `axi_w_chan_t`, `axi_b_chan_t`, `axi_ar_chan_t`, and `axi_r_chan_t` channel structs.
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// All AXI4+ATOP Channels and Request/Response Structs in One Macro
//
// This can be used whenever the user is not interested in "precise" control of the naming of the
// individual channels.
//
// Usage Example:
// `AXI_TYPEDEF_ALL(axi, addr_t, id_t, data_t, strb_t, user_t)
//
// This defines `axi_req_t` and `axi_resp_t` request/response structs as well as `axi_aw_chan_t`,
// `axi_w_chan_t`, `axi_b_chan_t`, `axi_ar_chan_t`, and `axi_r_chan_t` channel structs.
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// AXI4-Lite Channel and Request/Response Structs
//
// Usage Example:
// `AXI_LITE_TYPEDEF_AW_CHAN_T(axi_lite_aw_t, axi_lite_addr_t)
// `AXI_LITE_TYPEDEF_W_CHAN_T(axi_lite_w_t, axi_lite_data_t, axi_lite_strb_t)
// `AXI_LITE_TYPEDEF_B_CHAN_T(axi_lite_b_t)
// `AXI_LITE_TYPEDEF_AR_CHAN_T(axi_lite_ar_t, axi_lite_addr_t)
// `AXI_LITE_TYPEDEF_R_CHAN_T(axi_lite_r_t, axi_lite_data_t)
// `AXI_LITE_TYPEDEF_REQ_T(axi_lite_req_t, axi_lite_aw_t, axi_lite_w_t, axi_lite_ar_t)
// `AXI_LITE_TYPEDEF_RESP_T(axi_lite_resp_t, axi_lite_b_t, axi_lite_r_t)
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// All AXI4-Lite Channels and Request/Response Structs in One Macro - Custom Type Name Version
//
// This can be used whenever the user is not interested in "precise" control of the naming of the
// individual channels.
//
// Usage Example:
// `AXI_LITE_TYPEDEF_ALL_CT(axi_lite, axi_lite_req_t, axi_lite_rsp_t, addr_t, data_t, strb_t)
//
// This defines `axi_lite_req_t` and `axi_lite_resp_t` request/response structs as well as
// `axi_lite_aw_chan_t`, `axi_lite_w_chan_t`, `axi_lite_b_chan_t`, `axi_lite_ar_chan_t`, and
// `axi_lite_r_chan_t` channel structs.
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// All AXI4-Lite Channels and Request/Response Structs in One Macro
//
// This can be used whenever the user is not interested in "precise" control of the naming of the
// individual channels.
//
// Usage Example:
// `AXI_LITE_TYPEDEF_ALL(axi_lite, addr_t, data_t, strb_t)
//
// This defines `axi_lite_req_t` and `axi_lite_resp_t` request/response structs as well as
// `axi_lite_aw_chan_t`, `axi_lite_w_chan_t`, `axi_lite_b_chan_t`, `axi_lite_ar_chan_t`, and
// `axi_lite_r_chan_t` channel structs.
////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2014-2018 ETH Zurich, University of Bologna
//
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
//
// Authors:
// - Andreas Kurth <akurth@iis.ee.ethz.ch>
// - Nils Wistoff <nwistoff@iis.ee.ethz.ch>
// Macros to assign AXI Interfaces and Structs
////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal implementation for assigning one AXI struct or interface to another struct or interface.
// The path to the signals on each side is defined by the `__sep*` arguments. The `__opt_as`
// argument allows to use this standalone (with `__opt_as = assign`) or in assignments inside
// processes (with `__opt_as` void).
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Assigning one AXI4+ATOP interface to another, as if you would do `assign slv = mst;`
//
// The channel assignments `AXI_ASSIGN_XX(dst, src)` assign all payload and the valid signal of the
// `XX` channel from the `src` to the `dst` interface and they assign the ready signal from the
// `src` to the `dst` interface.
// The interface assignment `AXI_ASSIGN(dst, src)` assigns all channels including handshakes as if
// `src` was the master of `dst`.
//
// Usage Example:
// `AXI_ASSIGN(slv, mst)
// `AXI_ASSIGN_AW(dst, src)
// `AXI_ASSIGN_R(dst, src)
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Assigning a AXI4+ATOP interface to a monitor modport, as if you would do `assign mon = axi_if;`
//
// The channel assignment `AXI_ASSIGN_MONITOR(mon_dv, axi_if)` assigns all signals from `axi_if`
// to the `mon_dv` interface.
//
// Usage Example:
// `AXI_ASSIGN_MONITOR(mon_dv, axi_if)
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Setting an interface from channel or request/response structs inside a process.
//
// The channel macros `AXI_SET_FROM_XX(axi_if, xx_struct)` set the payload signals of the `axi_if`
// interface from the signals in `xx_struct`. They do not set the handshake signals.
// The request macro `AXI_SET_FROM_REQ(axi_if, req_struct)` sets all request channels (AW, W, AR)
// and the request-side handshake signals (AW, W, and AR valid and B and R ready) of the `axi_if`
// interface from the signals in `req_struct`.
// The response macro `AXI_SET_FROM_RESP(axi_if, resp_struct)` sets both response channels (B and R)
// and the response-side handshake signals (B and R valid and AW, W, and AR ready) of the `axi_if`
// interface from the signals in `resp_struct`.
//
// Usage Example:
// always_comb begin
// `AXI_SET_FROM_REQ(my_if, my_req_struct)
// end
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Assigning an interface from channel or request/response structs outside a process.
//
// The channel macros `AXI_ASSIGN_FROM_XX(axi_if, xx_struct)` assign the payload signals of the
// `axi_if` interface from the signals in `xx_struct`. They do not assign the handshake signals.
// The request macro `AXI_ASSIGN_FROM_REQ(axi_if, req_struct)` assigns all request channels (AW, W,
// AR) and the request-side handshake signals (AW, W, and AR valid and B and R ready) of the
// `axi_if` interface from the signals in `req_struct`.
// The response macro `AXI_ASSIGN_FROM_RESP(axi_if, resp_struct)` assigns both response channels (B
// and R) and the response-side handshake signals (B and R valid and AW, W, and AR ready) of the
// `axi_if` interface from the signals in `resp_struct`.
//
// Usage Example:
// `AXI_ASSIGN_FROM_REQ(my_if, my_req_struct)
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Setting channel or request/response structs from an interface inside a process.
//
// The channel macros `AXI_SET_TO_XX(xx_struct, axi_if)` set the signals of `xx_struct` to the
// payload signals of that channel in the `axi_if` interface. They do not set the handshake
// signals.
// The request macro `AXI_SET_TO_REQ(axi_if, req_struct)` sets all signals of `req_struct` (i.e.,
// request channel (AW, W, AR) payload and request-side handshake signals (AW, W, and AR valid and
// B and R ready)) to the signals in the `axi_if` interface.
// The response macro `AXI_SET_TO_RESP(axi_if, resp_struct)` sets all signals of `resp_struct`
// (i.e., response channel (B and R) payload and response-side handshake signals (B and R valid and
// AW, W, and AR ready)) to the signals in the `axi_if` interface.
//
// Usage Example:
// always_comb begin
// `AXI_SET_TO_REQ(my_req_struct, my_if)
// end
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Assigning channel or request/response structs from an interface outside a process.
//
// The channel macros `AXI_ASSIGN_TO_XX(xx_struct, axi_if)` assign the signals of `xx_struct` to the
// payload signals of that channel in the `axi_if` interface. They do not assign the handshake
// signals.
// The request macro `AXI_ASSIGN_TO_REQ(axi_if, req_struct)` assigns all signals of `req_struct`
// (i.e., request channel (AW, W, AR) payload and request-side handshake signals (AW, W, and AR
// valid and B and R ready)) to the signals in the `axi_if` interface.
// The response macro `AXI_ASSIGN_TO_RESP(axi_if, resp_struct)` assigns all signals of `resp_struct`
// (i.e., response channel (B and R) payload and response-side handshake signals (B and R valid and
// AW, W, and AR ready)) to the signals in the `axi_if` interface.
//
// Usage Example:
// `AXI_ASSIGN_TO_REQ(my_req_struct, my_if)
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Setting channel or request/response structs from another struct inside a process.
//
// The channel macros `AXI_SET_XX_STRUCT(lhs, rhs)` set the fields of the `lhs` channel struct to
// the fields of the `rhs` channel struct. They do not set the handshake signals, which are not
// part of channel structs.
// The request macro `AXI_SET_REQ_STRUCT(lhs, rhs)` sets all fields of the `lhs` request struct to
// the fields of the `rhs` request struct. This includes all request channel (AW, W, AR) payload
// and request-side handshake signals (AW, W, and AR valid and B and R ready).
// The response macro `AXI_SET_RESP_STRUCT(lhs, rhs)` sets all fields of the `lhs` response struct
// to the fields of the `rhs` response struct. This includes all response channel (B and R) payload
// and response-side handshake signals (B and R valid and AW, W, and R ready).
//
// Usage Example:
// always_comb begin
// `AXI_SET_REQ_STRUCT(my_req_struct, another_req_struct)
// end
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Assigning channel or request/response structs from another struct outside a process.
//
// The channel macros `AXI_ASSIGN_XX_STRUCT(lhs, rhs)` assign the fields of the `lhs` channel struct
// to the fields of the `rhs` channel struct. They do not assign the handshake signals, which are
// not part of the channel structs.
// The request macro `AXI_ASSIGN_REQ_STRUCT(lhs, rhs)` assigns all fields of the `lhs` request
// struct to the fields of the `rhs` request struct. This includes all request channel (AW, W, AR)
// payload and request-side handshake signals (AW, W, and AR valid and B and R ready).
// The response macro `AXI_ASSIGN_RESP_STRUCT(lhs, rhs)` assigns all fields of the `lhs` response
// struct to the fields of the `rhs` response struct. This includes all response channel (B and R)
// payload and response-side handshake signals (B and R valid and AW, W, and R ready).
//
// Usage Example:
// `AXI_ASSIGN_REQ_STRUCT(my_req_struct, another_req_struct)
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal implementation for assigning one Lite structs or interface to another struct or
// interface. The path to the signals on each side is defined by the `__sep*` arguments. The
// `__opt_as` argument allows to use this standalne (with `__opt_as = assign`) or in assignments
// inside processes (with `__opt_as` void).
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Assigning one AXI-Lite interface to another, as if you would do `assign slv = mst;`
//
// The channel assignments `AXI_LITE_ASSIGN_XX(dst, src)` assign all payload and the valid signal of
// the `XX` channel from the `src` to the `dst` interface and they assign the ready signal from the
// `src` to the `dst` interface.
// The interface assignment `AXI_LITE_ASSIGN(dst, src)` assigns all channels including handshakes as
// if `src` was the master of `dst`.
//
// Usage Example:
// `AXI_LITE_ASSIGN(slv, mst)
// `AXI_LITE_ASSIGN_AW(dst, src)
// `AXI_LITE_ASSIGN_R(dst, src)
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Setting a Lite interface from channel or request/response structs inside a process.
//
// The channel macros `AXI_LITE_SET_FROM_XX(axi_if, xx_struct)` set the payload signals of the
// `axi_if` interface from the signals in `xx_struct`. They do not set the handshake signals.
// The request macro `AXI_LITE_SET_FROM_REQ(axi_if, req_struct)` sets all request channels (AW, W,
// AR) and the request-side handshake signals (AW, W, and AR valid and B and R ready) of the
// `axi_if` interface from the signals in `req_struct`.
// The response macro `AXI_LITE_SET_FROM_RESP(axi_if, resp_struct)` sets both response channels (B
// and R) and the response-side handshake signals (B and R valid and AW, W, and AR ready) of the
// `axi_if` interface from the signals in `resp_struct`.
//
// Usage Example:
// always_comb begin
// `AXI_LITE_SET_FROM_REQ(my_if, my_req_struct)
// end
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Assigning a Lite interface from channel or request/response structs outside a process.
//
// The channel macros `AXI_LITE_ASSIGN_FROM_XX(axi_if, xx_struct)` assign the payload signals of the
// `axi_if` interface from the signals in `xx_struct`. They do not assign the handshake signals.
// The request macro `AXI_LITE_ASSIGN_FROM_REQ(axi_if, req_struct)` assigns all request channels
// (AW, W, AR) and the request-side handshake signals (AW, W, and AR valid and B and R ready) of the
// `axi_if` interface from the signals in `req_struct`.
// The response macro `AXI_LITE_ASSIGN_FROM_RESP(axi_if, resp_struct)` assigns both response
// channels (B and R) and the response-side handshake signals (B and R valid and AW, W, and AR
// ready) of the `axi_if` interface from the signals in `resp_struct`.
//
// Usage Example:
// `AXI_LITE_ASSIGN_FROM_REQ(my_if, my_req_struct)
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Setting channel or request/response structs from an interface inside a process.
//
// The channel macros `AXI_LITE_SET_TO_XX(xx_struct, axi_if)` set the signals of `xx_struct` to the
// payload signals of that channel in the `axi_if` interface. They do not set the handshake
// signals.
// The request macro `AXI_LITE_SET_TO_REQ(axi_if, req_struct)` sets all signals of `req_struct`
// (i.e., request channel (AW, W, AR) payload and request-side handshake signals (AW, W, and AR
// valid and B and R ready)) to the signals in the `axi_if` interface.
// The response macro `AXI_LITE_SET_TO_RESP(axi_if, resp_struct)` sets all signals of `resp_struct`
// (i.e., response channel (B and R) payload and response-side handshake signals (B and R valid and
// AW, W, and AR ready)) to the signals in the `axi_if` interface.
//
// Usage Example:
// always_comb begin
// `AXI_LITE_SET_TO_REQ(my_req_struct, my_if)
// end
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Assigning channel or request/response structs from an interface outside a process.
//
// The channel macros `AXI_LITE_ASSIGN_TO_XX(xx_struct, axi_if)` assign the signals of `xx_struct`
// to the payload signals of that channel in the `axi_if` interface. They do not assign the
// handshake signals.
// The request macro `AXI_LITE_ASSIGN_TO_REQ(axi_if, req_struct)` assigns all signals of
// `req_struct` (i.e., request channel (AW, W, AR) payload and request-side handshake signals (AW,
// W, and AR valid and B and R ready)) to the signals in the `axi_if` interface.
// The response macro `AXI_LITE_ASSIGN_TO_RESP(axi_if, resp_struct)` assigns all signals of
// `resp_struct` (i.e., response channel (B and R) payload and response-side handshake signals (B
// and R valid and AW, W, and AR ready)) to the signals in the `axi_if` interface.
//
// Usage Example:
// `AXI_LITE_ASSIGN_TO_REQ(my_req_struct, my_if)
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Setting channel or request/response structs from another struct inside a process.
//
// The channel macros `AXI_LITE_SET_XX_STRUCT(lhs, rhs)` set the fields of the `lhs` channel struct
// to the fields of the `rhs` channel struct. They do not set the handshake signals, which are not
// part of channel structs.
// The request macro `AXI_LITE_SET_REQ_STRUCT(lhs, rhs)` sets all fields of the `lhs` request struct
// to the fields of the `rhs` request struct. This includes all request channel (AW, W, AR) payload
// and request-side handshake signals (AW, W, and AR valid and B and R ready).
// The response macro `AXI_LITE_SET_RESP_STRUCT(lhs, rhs)` sets all fields of the `lhs` response
// struct to the fields of the `rhs` response struct. This includes all response channel (B and R)
// payload and response-side handshake signals (B and R valid and AW, W, and R ready).
//
// Usage Example:
// always_comb begin
// `AXI_LITE_SET_REQ_STRUCT(my_req_struct, another_req_struct)
// end
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Assigning channel or request/response structs from another struct outside a process.
//
// The channel macros `AXI_LITE_ASSIGN_XX_STRUCT(lhs, rhs)` assign the fields of the `lhs` channel
// struct to the fields of the `rhs` channel struct. They do not assign the handshake signals,
// which are not part of the channel structs.
// The request macro `AXI_LITE_ASSIGN_REQ_STRUCT(lhs, rhs)` assigns all fields of the `lhs` request
// struct to the fields of the `rhs` request struct. This includes all request channel (AW, W, AR)
// payload and request-side handshake signals (AW, W, and AR valid and B and R ready).
// The response macro `AXI_LITE_ASSIGN_RESP_STRUCT(lhs, rhs)` assigns all fields of the `lhs`
// response struct to the fields of the `rhs` response struct. This includes all response channel
// (B and R) payload and response-side handshake signals (B and R valid and AW, W, and R ready).
//
// Usage Example:
// `AXI_LITE_ASSIGN_REQ_STRUCT(my_req_struct, another_req_struct)
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
// Macros for assigning flattened AXI ports to req/resp AXI structs
// Flat AXI ports are required by the Vivado IP Integrator. Vivado naming convention is followed.
//
// Usage Example:
// `AXI_ASSIGN_MASTER_TO_FLAT("my_bus", my_req_struct, my_rsp_struct)
////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2020 ETH Zurich, University of Bologna
//
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
// Florian Zaruba <zarubaf@iis.ee.ethz.ch>
/// Macros to define register bus request/response structs.
// Copyright (c) 2020 ETH Zurich, University of Bologna
//
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
// Author:
// Wolfgang Roenninger <wroennin@student.ethz.ch>
// Macros to define APB4 Request/Response Structs
////////////////////////////////////////////////////////////////////////////////////////////////////
// APB4 (v2.0) Request/Response Structs
//
// Usage Example:
// `APB_TYPEDEF_REQ_T ( apb_req_t, addr_t, data_t, strb_t )
// `APB_TYPEDEF_RESP_T ( apb_resp_t, data_t )
////////////////////////////////////////////////////////////////////////////////////////////////////
/// Inputs of X-Bar
typedef enum int {
AxiXbarInCva6,
AxiXbarInDebug,
AxiXbarInSerialLink,
AxiXbarInVga,
AxiXbarInDma,
AxiXbarNumInputs
} axi_xbar_inputs_e;
/// Outputs of X-Bar
typedef enum int {
AxiXbarOutDebug,
AxiXbarOutRegbus,
AxiXbarOutDmaConf,
AxiXbarOutLlc,
AxiXbarOutSerialLink,
AxiXbarNumOutputs
} axi_xbar_outputs_e;
/// Parameters for AXI types
localparam int unsigned AxiAddrWidth = 48;
localparam int unsigned AxiDataWidth = 64;
localparam int unsigned AxiUserWidth = 1;
localparam int unsigned AxiStrbWidth = AxiDataWidth/8; // Using byte strobes
localparam int unsigned AxiXbarMasterIdWidth = 2;
localparam int unsigned AxiXbarSlaveIdWidth = AxiXbarMasterIdWidth + $clog2(AxiXbarNumInputs);
localparam int unsigned AxiXbarCombs = AxiXbarNumInputs * AxiXbarNumOutputs;
localparam logic [AxiXbarCombs-1:0] AxiXbarConnectivity = {AxiXbarCombs{1'b1}};
/// Configuration struct of X-Bar
localparam axi_pkg::xbar_cfg_t AxiXbarCfg = '{
NoSlvPorts: AxiXbarNumInputs,
NoMstPorts: AxiXbarNumOutputs,
MaxMstTrans: 12,
MaxSlvTrans: 12,
FallThrough: 0,
LatencyMode: axi_pkg::CUT_ALL_PORTS,
PipelineStages: 1,
AxiIdWidthSlvPorts: AxiXbarMasterIdWidth,
AxiIdUsedSlvPorts: AxiXbarMasterIdWidth,
UniqueIds: 0,
AxiAddrWidth: 48,
AxiDataWidth: 64,
NoAddrRules: 6
};
/// Address rule struct
typedef struct packed {
logic [31:0] idx;
logic [47:0] start_addr;
logic [47:0] end_addr;
} address_rule_48_t;
/// Address map of the AXI X-Bar
/// NUM_OUTPUT rules + 1 additional for LLC (SPM and DRAM)
localparam address_rule_48_t [AxiXbarNumOutputs:0] AxiXbarAddrmap = '{
'{ idx: AxiXbarOutSerialLink, start_addr: 48'h100000000000, end_addr: 48'h200000000000},
'{ idx: AxiXbarOutLlc, start_addr: 48'h000080000000, end_addr: 48'h000100000000},
'{ idx: AxiXbarOutLlc, start_addr: 48'h000070000000, end_addr: 48'h000070020000},
'{ idx: AxiXbarOutDmaConf, start_addr: 48'h000060000000, end_addr: 48'h000060001000},
'{ idx: AxiXbarOutRegbus, start_addr: 48'h000001000000, end_addr: 48'h000060000000},
'{ idx: AxiXbarOutDebug, start_addr: 48'h000000000000, end_addr: 48'h000000001000}
};
/// Inputs of the Regbus Demux
typedef enum int {
RegbusInXbar,
RegbusNumInputs
} regbus_inputs_e;
/// Outputs of the Regbus Demux
typedef enum int {
RegbusOutBootrom,
RegbusOutCsr,
RegbusOutLlc,
RegbusOutSerialLink,
RegbusOutUart,
RegbusOutI2c,
RegbusOutSpim,
RegbusOutVga,
RegbusOutClint,
RegbusOutPlic,
RegbusOutExternal,
RegbusNumOutputs
} regbus_outputs_e;
/// Address map of the Regbus Demux
localparam address_rule_48_t [RegbusNumOutputs-1:0] RegbusAddrmap = '{
'{ idx: RegbusOutExternal, start_addr: 48'h10000000, end_addr: 48'h60000000 }, // EXTERNAL - 1.25 GiB
'{ idx: RegbusOutPlic, start_addr: 48'h0c000000, end_addr: 48'h10000000 }, // PLIC - 64 MiB
'{ idx: RegbusOutClint, start_addr: 48'h04000000, end_addr: 48'h04100000 }, // CLINT - 1 MiB
'{ idx: RegbusOutVga, start_addr: 48'h02006000, end_addr: 48'h02007000 }, // VGA - 4 KiB
'{ idx: RegbusOutSpim, start_addr: 48'h02005000, end_addr: 48'h02006000 }, // SPIM - 4 KiB
'{ idx: RegbusOutI2c, start_addr: 48'h02004000, end_addr: 48'h02005000 }, // I2C - 4 KiB
'{ idx: RegbusOutUart, start_addr: 48'h02003000, end_addr: 48'h02004000 }, // UART - 4 KiB
'{ idx: RegbusOutSerialLink, start_addr: 48'h02002000, end_addr: 48'h02003000 }, // Serial Link - 4 KiB
'{ idx: RegbusOutLlc, start_addr: 48'h02001000, end_addr: 48'h02002000 }, // LLC - 4 KiB
'{ idx: RegbusOutCsr, start_addr: 48'h02000000, end_addr: 48'h02001000 }, // CSR - 4 KiB
'{ idx: RegbusOutBootrom, start_addr: 48'h01000000, end_addr: 48'h01020000 } // Bootrom - 128 KiB
};
/// Type definitions
///
/// Register bus with 48 bit address and 32 bit data
typedef struct packed {
logic [47:0] addr;
logic write;
logic [31:0] wdata;
logic [3:0] wstrb;
logic valid;
} reg_a48_d32_req_t;
typedef struct packed {
logic [31:0] rdata;
logic error;
logic ready;
} reg_a48_d32_rsp_t;
/// Register bus with 48 bit address and 64 bit data
typedef struct packed {
logic [47:0] addr;
logic write;
logic [63:0] wdata;
logic [7:0] wstrb;
logic valid;
} reg_a48_d64_req_t;
typedef struct packed {
logic [63:0] rdata;
logic error;
logic ready;
} reg_a48_d64_rsp_t;
/// AXI bus with 48 bit address and 64 bit data
typedef struct packed {
logic [AxiXbarMasterIdWidth-1:0] id;
logic [47:0] addr;
axi_pkg::len_t len;
axi_pkg::size_t size;
axi_pkg::burst_t burst;
logic lock;
axi_pkg::cache_t cache;
axi_pkg::prot_t prot;
axi_pkg::qos_t qos;
axi_pkg::region_t region;
axi_pkg::atop_t atop;
logic [0:0] user;
} axi_a48_d64_mst_u0_aw_chan_t;
typedef struct packed {
logic [63:0] data;
logic [7:0] strb;
logic last;
logic [0:0] user;
} axi_a48_d64_mst_u0_w_chan_t;
typedef struct packed {
logic [AxiXbarMasterIdWidth-1:0] id;
axi_pkg::resp_t resp;
logic [0:0] user;
} axi_a48_d64_mst_u0_b_chan_t;
typedef struct packed {
logic [AxiXbarMasterIdWidth-1:0] id;
logic [47:0] addr;
axi_pkg::len_t len;
axi_pkg::size_t size;
axi_pkg::burst_t burst;
logic lock;
axi_pkg::cache_t cache;
axi_pkg::prot_t prot;
axi_pkg::qos_t qos;
axi_pkg::region_t region;
logic [0:0] user;
} axi_a48_d64_mst_u0_ar_chan_t;
typedef struct packed {
logic [AxiXbarMasterIdWidth-1:0] id;
logic [63:0] data;
axi_pkg::resp_t resp;
logic last;
logic [0:0] user;
} axi_a48_d64_mst_u0_r_chan_t;
typedef struct packed {
axi_a48_d64_mst_u0_aw_chan_t aw;
logic aw_valid;
axi_a48_d64_mst_u0_w_chan_t w;
logic w_valid;
logic b_ready;
axi_a48_d64_mst_u0_ar_chan_t ar;
logic ar_valid;
logic r_ready;
} axi_a48_d64_mst_u0_req_t;
typedef struct packed {
logic aw_ready;
logic ar_ready;
logic w_ready;
logic b_valid;
axi_a48_d64_mst_u0_b_chan_t b;
logic r_valid;
axi_a48_d64_mst_u0_r_chan_t r;
} axi_a48_d64_mst_u0_resp_t;
typedef struct packed {
logic [AxiXbarSlaveIdWidth-1:0] id;
logic [47:0] addr;
axi_pkg::len_t len;
axi_pkg::size_t size;
axi_pkg::burst_t burst;
logic lock;
axi_pkg::cache_t cache;
axi_pkg::prot_t prot;
axi_pkg::qos_t qos;
axi_pkg::region_t region;
axi_pkg::atop_t atop;
logic [0:0] user;
} axi_a48_d64_slv_u0_aw_chan_t;
typedef struct packed {
logic [63:0] data;
logic [7:0] strb;
logic last;
logic [0:0] user;
} axi_a48_d64_slv_u0_w_chan_t;
typedef struct packed {
logic [AxiXbarSlaveIdWidth-1:0] id;
axi_pkg::resp_t resp;
logic [0:0] user;
} axi_a48_d64_slv_u0_b_chan_t;
typedef struct packed {
logic [AxiXbarSlaveIdWidth-1:0] id;
logic [47:0] addr;
axi_pkg::len_t len;
axi_pkg::size_t size;
axi_pkg::burst_t burst;
logic lock;
axi_pkg::cache_t cache;
axi_pkg::prot_t prot;
axi_pkg::qos_t qos;
axi_pkg::region_t region;
logic [0:0] user;
} axi_a48_d64_slv_u0_ar_chan_t;
typedef struct packed {
logic [AxiXbarSlaveIdWidth-1:0] id;
logic [63:0] data;
axi_pkg::resp_t resp;
logic last;
logic [0:0] user;
} axi_a48_d64_slv_u0_r_chan_t;
typedef struct packed {
axi_a48_d64_slv_u0_aw_chan_t aw;
logic aw_valid;
axi_a48_d64_slv_u0_w_chan_t w;
logic w_valid;
logic b_ready;
axi_a48_d64_slv_u0_ar_chan_t ar;
logic ar_valid;
logic r_ready;
} axi_a48_d64_slv_u0_req_t;
typedef struct packed {
logic aw_ready;
logic ar_ready;
logic w_ready;
logic b_valid;
axi_a48_d64_slv_u0_b_chan_t b;
logic r_valid;
axi_a48_d64_slv_u0_r_chan_t r;
} axi_a48_d64_slv_u0_resp_t;
/// Same AXI bus with 48 bit address and 64 bit data but with CVA6s 4 bit ID
typedef struct packed {
logic [3:0] id;
logic [47:0] addr;
axi_pkg::len_t len;
axi_pkg::size_t size;
axi_pkg::burst_t burst;
logic lock;
axi_pkg::cache_t cache;
axi_pkg::prot_t prot;
axi_pkg::qos_t qos;
axi_pkg::region_t region;
axi_pkg::atop_t atop;
logic [0:0] user;
} axi_cva6_aw_chan_t;
typedef struct packed {
logic [63:0] data;
logic [7:0] strb;
logic last;
logic [0:0] user;
} axi_cva6_w_chan_t;
typedef struct packed {
logic [3:0] id;
axi_pkg::resp_t resp;
logic [0:0] user;
} axi_cva6_b_chan_t;
typedef struct packed {
logic [3:0] id;
logic [47:0] addr;
axi_pkg::len_t len;
axi_pkg::size_t size;
axi_pkg::burst_t burst;
logic lock;
axi_pkg::cache_t cache;
axi_pkg::prot_t prot;
axi_pkg::qos_t qos;
axi_pkg::region_t region;
logic [0:0] user;
} axi_cva6_ar_chan_t;
typedef struct packed {
logic [3:0] id;
logic [63:0] data;
axi_pkg::resp_t resp;
logic last;
logic [0:0] user;
} axi_cva6_r_chan_t;
typedef struct packed {
axi_cva6_aw_chan_t aw;
logic aw_valid;
axi_cva6_w_chan_t w;
logic w_valid;
logic b_ready;
axi_cva6_ar_chan_t ar;
logic ar_valid;
logic r_ready;
} axi_cva6_req_t;
typedef struct packed {
logic aw_ready;
logic ar_ready;
logic w_ready;
logic b_valid;
axi_cva6_b_chan_t b;
logic r_valid;
axi_cva6_r_chan_t r;
} axi_cva6_resp_t;
/// AXI bus for LLC (one additional ID bit)
typedef struct packed {
logic [AxiXbarSlaveIdWidth:0] id;
logic [47:0] addr;
axi_pkg::len_t len;
axi_pkg::size_t size;
axi_pkg::burst_t burst;
logic lock;
axi_pkg::cache_t cache;
axi_pkg::prot_t prot;
axi_pkg::qos_t qos;
axi_pkg::region_t region;
axi_pkg::atop_t atop;
logic [0:0] user;
} axi_a48_d64_mst_u0_llc_aw_chan_t;
typedef struct packed {
logic [63:0] data;
logic [7:0] strb;
logic last;
logic [0:0] user;
} axi_a48_d64_mst_u0_llc_w_chan_t;
typedef struct packed {
logic [AxiXbarSlaveIdWidth:0] id;
axi_pkg::resp_t resp;
logic [0:0] user;
} axi_a48_d64_mst_u0_llc_b_chan_t;
typedef struct packed {
logic [AxiXbarSlaveIdWidth:0] id;
logic [47:0] addr;
axi_pkg::len_t len;
axi_pkg::size_t size;
axi_pkg::burst_t burst;
logic lock;
axi_pkg::cache_t cache;
axi_pkg::prot_t prot;
axi_pkg::qos_t qos;
axi_pkg::region_t region;
logic [0:0] user;
} axi_a48_d64_mst_u0_llc_ar_chan_t;
typedef struct packed {
logic [AxiXbarSlaveIdWidth:0] id;
logic [63:0] data;
axi_pkg::resp_t resp;
logic last;
logic [0:0] user;
} axi_a48_d64_mst_u0_llc_r_chan_t;
typedef struct packed {
axi_a48_d64_mst_u0_llc_aw_chan_t aw;
logic aw_valid;
axi_a48_d64_mst_u0_llc_w_chan_t w;
logic w_valid;
logic b_ready;
axi_a48_d64_mst_u0_llc_ar_chan_t ar;
logic ar_valid;
logic r_ready;
} axi_a48_d64_mst_u0_llc_req_t;
typedef struct packed {
logic aw_ready;
logic ar_ready;
logic w_ready;
logic b_valid;
axi_a48_d64_mst_u0_llc_b_chan_t b;
logic r_valid;
axi_a48_d64_mst_u0_llc_r_chan_t r;
} axi_a48_d64_mst_u0_llc_resp_t;
/// AXI bus with 48 bit address and 32 bit data
typedef struct packed {
logic [AxiXbarSlaveIdWidth-1:0] id;
logic [47:0] addr;
axi_pkg::len_t len;
axi_pkg::size_t size;
axi_pkg::burst_t burst;
logic lock;
axi_pkg::cache_t cache;
axi_pkg::prot_t prot;
axi_pkg::qos_t qos;
axi_pkg::region_t region;
axi_pkg::atop_t atop;
logic [0:0] user;
} axi_a48_d32_slv_u0_aw_chan_t;
typedef struct packed {
logic [31:0] data;
logic [3:0] strb;
logic last;
logic [0:0] user;
} axi_a48_d32_slv_u0_w_chan_t;
typedef struct packed {
logic [AxiXbarSlaveIdWidth-1:0] id;
axi_pkg::resp_t resp;
logic [0:0] user;
} axi_a48_d32_slv_u0_b_chan_t;
typedef struct packed {
logic [AxiXbarSlaveIdWidth-1:0] id;
logic [47:0] addr;
axi_pkg::len_t len;
axi_pkg::size_t size;
axi_pkg::burst_t burst;
logic lock;
axi_pkg::cache_t cache;
axi_pkg::prot_t prot;
axi_pkg::qos_t qos;
axi_pkg::region_t region;
logic [0:0] user;
} axi_a48_d32_slv_u0_ar_chan_t;
typedef struct packed {
logic [AxiXbarSlaveIdWidth-1:0] id;
logic [31:0] data;
axi_pkg::resp_t resp;
logic last;
logic [0:0] user;
} axi_a48_d32_slv_u0_r_chan_t;
typedef struct packed {
axi_a48_d32_slv_u0_aw_chan_t aw;
logic aw_valid;
axi_a48_d32_slv_u0_w_chan_t w;
logic w_valid;
logic b_ready;
axi_a48_d32_slv_u0_ar_chan_t ar;
logic ar_valid;
logic r_ready;
} axi_a48_d32_slv_u0_req_t;
typedef struct packed {
logic aw_ready;
logic ar_ready;
logic w_ready;
logic b_valid;
axi_a48_d32_slv_u0_b_chan_t b;
logic r_valid;
axi_a48_d32_slv_u0_r_chan_t r;
} axi_a48_d32_slv_u0_resp_t;
/// Identifier used for user-signal based ATOPs by CVA6
localparam logic [0:0] Cva6Identifier = 1'b1;
/// CVA6 Configuration struct
localparam ariane_pkg::ariane_cfg_t CheshireArianeConfig = '{
/// Default config
RASDepth: 2,
BTBEntries: 32,
BHTEntries: 128,
/// Non idempotent regions
NrNonIdempotentRules: 1,
NonIdempotentAddrBase: {
64'h0100_0000
},
// Everything up until the SPM is assumed non idempotent
NonIdempotentLength: {
64'h6F00_0000
},
/// DRAM, SPM, Boot ROM, Debug Module
NrExecuteRegionRules: 4,
ExecuteRegionAddrBase: {
64'h8000_0000, 64'h7000_0000, 64'h0100_0000, 64'h0
},
ExecuteRegionLength: {
64'h8000_0000, 64'h0002_0000, 64'h0002_0000, 64'h1000
},
/// Cached regions: DRAM, Upper half of SPM
NrCachedRegionRules: 2,
CachedRegionAddrBase: {
64'h8000_0000, 64'h7001_0000
},
CachedRegionLength: {
64'h8000_0000, 64'h0001_0000
},
Axi64BitCompliant: 1'b1,
SwapEndianess: 1'b0,
/// Debug
DmBaseAddress: 64'h0,
NrPMPEntries: 0
};
/// Interrupts
typedef struct packed {
logic uart;
logic spim_spi_event;
logic spim_error;
logic i2c_host_timeout;
logic i2c_ack_stop;
logic i2c_acq_overflow;
logic i2c_tx_overflow;
logic i2c_tx_nonempty;
logic i2c_tx_empty;
logic i2c_trans_complete;
logic i2c_sda_unstable;
logic i2c_stretch_timeout;
logic i2c_sda_interference;
logic i2c_scl_interference;
logic i2c_nak;
logic i2c_rx_overflow;
logic i2c_fmt_overflow;
logic i2c_rx_watermark;
logic i2c_fmt_watermark;
logic zero;
} cheshire_interrupt_t;
/// Debug Module parameter
localparam logic [15:0] PartNum = 1012;
localparam logic [31:0] IDCode = (dm::DbgVersion013 << 28) | (PartNum << 12) | 32'h1;
/// Testbench start adresses
localparam logic [47:0] SpmBase = AxiXbarAddrmap[AxiXbarOutLlc].start_addr;
localparam logic [47:0] ScratchRegsBase = RegbusAddrmap[RegbusOutCsr].start_addr;
/// Cheshire Config
/// Can be used to exclude parts of the system
typedef struct packed {
bit Uart;
bit Spim;
bit I2c;
bit Dma;
bit SerialLink;
bit Dram;
bit Vga;
/// Width of the VGA red channel, ignored if VGA set to 0
logic [31:0] VgaRedWidth;
/// Width of the VGA green channel, ignored if VGA set to 0
logic [31:0] VgaGreenWidth;
/// Width of the VGA blue channel, ignored if VGA set to 0
logic [31:0] VgaBlueWidth;
/// The Clock frequency after coming out of reset
logic [31:0] ResetFreq;
} cheshire_cfg_t;
/// Default FPGA config for Cheshire Platform
localparam cheshire_cfg_t CheshireCfgFPGADefault = '{
Uart: 1'b1,
Spim: 1'b1,
I2c: 1'b1,
Dma: 1'b1,
SerialLink: 1'b0,
Dram: 1'b1,
Vga: 1'b1,
VgaRedWidth: 32'd5,
VgaGreenWidth: 32'd6,
VgaBlueWidth: 32'd5,
ResetFreq: 32'd50000000
};
/// Default ASIC config for Cheshire Platform
localparam cheshire_cfg_t CheshireCfgASICDefault = '{
Uart: 1'b1,
Spim: 1'b1,
I2c: 1'b1,
Dma: 1'b1,
SerialLink: 1'b1,
Dram: 1'b1,
Vga: 1'b1,
VgaRedWidth: 32'd2,
VgaGreenWidth: 32'd3,
VgaBlueWidth: 32'd3,
ResetFreq: 32'd200000000
};
endpackage
// Copyright 2023 ETH Zurich and University of Bologna.
// Solderpad Hardware License, Version 0.51, see LICENSE for details.
// SPDX-License-Identifier: SHL-0.51
//
// Thomas Benz <tbenz@ethz.ch>
/// Top-level implementation of Baby Iguana <3
module baby_iguana import cheshire_pkg::*;#(
) (
input logic clk_i,
input logic rst_ni,
input logic testmode_i,
// JTAG Interface
input logic jtag_tck_i,
input logic jtag_trst_ni,
input logic jtag_tms_i,
input logic jtag_tdi_i,
output logic jtag_tdo_o
);
axi_a48_d64_slv_u0_req_t axi_req;
axi_a48_d64_slv_u0_resp_t axi_rsp;
axi_a48_d32_slv_u0_req_t axi_narrow_req;
axi_a48_d32_slv_u0_resp_t axi_narrow_rsp;
// Regbus Peripherals
reg_a48_d32_req_t reg_req;
reg_a48_d32_rsp_t reg_rsp;
/////////////
// Debug //
/////////////
// DMI signals for JTAG DMI <-> DM communication
logic dmi_rst_n;
dm::dmi_req_t dmi_req;
logic dmi_req_ready;
logic dmi_req_valid;
dm::dmi_resp_t dmi_resp;
logic dmi_resp_ready;
logic dmi_resp_valid;
// System Bus Access for the debug module
logic sba_req;
logic [15:0] sba_addr;
logic [63:0] sba_addr_long;
logic [31:0] sba_rdata, sba_rdata_q;
logic sba_rvalid;
// Ignore the upper 16 bits
assign sba_addr = sba_addr_long[47:0];
dm::hartinfo_t [0:0] hartinfo;
assign hartinfo[0] = ariane_pkg::DebugHartInfo;
// Debug Module
dm_top #(
.NrHarts ( 1 ),
.BusWidth ( 64 ),
.DmBaseAddress ( 'h0 )
) i_dm_top (
.clk_i,
.rst_ni,
.testmode_i,
.ndmreset_o ( ),
.dmactive_o ( ),
.debug_req_o ( /* NC */ ),
.unavailable_i ( '0 ),
.hartinfo_i ( hartinfo ),
.slave_req_i ( '0 ),
.slave_we_i ( '0 ),
.slave_addr_i ( '0 ),
.slave_be_i ( '0 ),
.slave_wdata_i ( '0 ),
.slave_rdata_o ( /* NC */ ),
.master_req_o ( sba_req ),
.master_add_o ( sba_addr_long ),
.master_we_o ( /* NC */ ),
.master_wdata_o ( /* NC */ ),
.master_be_o ( /* NC */ ),
.master_gnt_i ( sba_req ),
.master_r_valid_i ( sba_rvalid ),
.master_r_rdata_i ( {32'd0, sba_rdata_q} ),
.master_r_err_i ( 1'b0 ),
.master_r_other_err_i ( 1'b0 ),
.dmi_rst_ni ( dmi_rst_n ),
.dmi_req_valid_i ( dmi_req_valid ),
.dmi_req_ready_o ( dmi_req_ready ),
.dmi_req_i ( dmi_req ),
.dmi_resp_valid_o ( dmi_resp_valid ),
.dmi_resp_ready_i ( dmi_resp_ready ),
.dmi_resp_o ( dmi_resp )
);
// Debug Transfer Module + Debug Module Interface
dmi_jtag #(
.IdcodeValue ( IDCode )
) i_dmi_jtag (
.clk_i,
.rst_ni,
.testmode_i,
.dmi_rst_no ( dmi_rst_n ),
.dmi_req_o ( dmi_req ),
.dmi_req_ready_i ( dmi_req_ready ),
.dmi_req_valid_o ( dmi_req_valid ),
.dmi_resp_i ( dmi_resp ),
.dmi_resp_ready_o ( dmi_resp_ready ),
.dmi_resp_valid_i ( dmi_resp_valid ),
.tck_i ( jtag_tck_i ),
.tms_i ( jtag_tms_i ),
.trst_ni ( jtag_trst_ni ),
.td_i ( jtag_tdi_i ),
.td_o ( jtag_tdo_o ),
.tdo_oe_o ( )
);
///////////////
// Bootrom //
///////////////
cheshire_bootrom #(
.AddrWidth ( 16 ),
.DataWidth ( 32 )
) i_bootrom (
.clk_i,
.rst_ni,
.req_i ( sba_req ),
.addr_i ( sba_addr ),
.data_o ( sba_rdata )
);
// State
always_ff @(posedge clk_i or negedge rst_ni) begin : proc_state
if(~rst_ni) begin
sba_rdata_q <= '0;
sba_rvalid <= '0;
end else begin
sba_rdata_q <= sba_rdata;
sba_rvalid <= sba_req;
end
end
endmodule
This file has been truncated, but you can view the full file.
/* Generated by Yosys 0.27+3 (git sha1 b58664d44, gcc 11.2.0 -fPIC -Os) */
(* cells_not_processed = 1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:631.1-752.10" *)
module \$paramod$188f56f715bf7113e85efc07128579a48c3ed873\cdc_4phase_dst (rst_ni, clk_i, data_o, valid_o, ready_i, async_req_i, async_ack_o, async_data_i);
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:670.3-708.6" *)
wire _00_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:670.3-708.6" *)
wire _01_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:670.3-708.6" *)
wire [1:0] _02_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:670.3-708.6" *)
wire [1:0] _03_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:670.3-708.6" *)
wire [1:0] _04_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:670.3-708.6" *)
wire [1:0] _05_;
wire _06_;
wire _07_;
wire _08_;
wire _09_;
wire _10_;
wire _11_;
wire _12_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:647.10-647.19" *)
wire ack_dst_d;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:647.21-647.30" *)
reg ack_dst_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:642.16-642.27" *)
output async_ack_o;
wire async_ack_o;
(* enum_value_00 = "\\CLEAR_PHASE_IDLE" *)
(* enum_value_01 = "\\CLEAR_PHASE_ISOLATE" *)
(* enum_value_10 = "\\CLEAR_PHASE_CLEAR" *)
(* enum_value_11 = "\\CLEAR_PHASE_POST_CLEAR" *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:643.16-643.28" *)
(* wiretype = "\\clear_seq_phase_e" *)
input [1:0] async_data_i;
wire [1:0] async_data_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:641.16-641.27" *)
input async_req_i;
wire async_req_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:637.16-637.21" *)
input clk_i;
wire clk_i;
(* enum_value_00 = "\\CLEAR_PHASE_IDLE" *)
(* enum_value_01 = "\\CLEAR_PHASE_ISOLATE" *)
(* enum_value_10 = "\\CLEAR_PHASE_CLEAR" *)
(* enum_value_11 = "\\CLEAR_PHASE_POST_CLEAR" *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:638.16-638.22" *)
(* wiretype = "\\clear_seq_phase_e" *)
output [1:0] data_o;
wire [1:0] data_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:651.10-651.20" *)
wire data_valid;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:653.10-653.22" *)
wire output_ready;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:640.16-640.23" *)
input ready_i;
wire ready_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:649.10-649.20" *)
wire req_synced;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:636.16-636.22" *)
input rst_ni;
wire rst_ni;
(* enum_value_00 = "\\IDLE" *)
(* enum_value_01 = "\\WAIT_DOWNSTREAM_ACK" *)
(* enum_value_10 = "\\WAIT_REQ_DEASSERT" *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:657.11-657.18" *)
(* wiretype = "\\state_e" *)
wire [1:0] state_d;
(* enum_value_00 = "\\IDLE" *)
(* enum_value_01 = "\\WAIT_DOWNSTREAM_ACK" *)
(* enum_value_10 = "\\WAIT_REQ_DEASSERT" *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:657.20-657.27" *)
(* wiretype = "\\state_e" *)
reg [1:0] state_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:639.16-639.23" *)
output valid_o;
wire valid_o;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:710.3-716.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) state_q <= 2'h0;
else if (_09_) state_q <= state_d;
assign _06_ = { _11_, ready_i } != 2'h2;
assign _07_ = { _12_, req_synced } != 2'h2;
assign _08_ = { _10_, req_synced } != 2'h3;
assign _09_ = & { _07_, _06_, _08_ };
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:719.3-725.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) ack_dst_q <= 1'h0;
else ack_dst_q <= ack_dst_d;
assign _05_ = req_synced ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:698.9-701.12" *) 2'hx : 2'h0;
assign _10_ = state_q == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:696.7-702.10|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:675.5-707.12" *) 2'h2;
assign _00_ = ready_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:690.9-693.12" *) 1'h1 : 1'h0;
assign _11_ = state_q == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:688.7-694.10|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:675.5-707.12" *) 2'h1;
assign _04_ = ready_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:690.9-693.12" *) 2'h2 : 2'hx;
assign _03_ = ready_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:680.11-684.14" *) 2'h2 : 2'h1;
assign _12_ = ! (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:676.7-686.10|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:675.5-707.12" *) state_q;
assign _02_ = req_synced ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:678.9-685.12" *) _03_ : 2'hx;
assign _01_ = req_synced ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:678.9-685.12" *) 1'h1 : 1'h0;
function [0:0] _28_;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* full_case = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:688.7-694.10|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:675.5-707.12" *)
(* parallel_case *)
casez (s)
2'b?1:
_28_ = b[0:0];
2'b1?:
_28_ = b[1:1];
default:
_28_ = a;
endcase
endfunction
assign valid_o = _28_(1'h0, { _01_, 1'h1 }, { _12_, _11_ });
function [1:0] _29_;
input [1:0] a;
input [5:0] b;
input [2:0] s;
(* full_case = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:696.7-702.10|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:675.5-707.12" *)
(* parallel_case *)
casez (s)
3'b??1:
_29_ = b[1:0];
3'b?1?:
_29_ = b[3:2];
3'b1??:
_29_ = b[5:4];
default:
_29_ = a;
endcase
endfunction
assign state_d = _29_(2'h0, { _02_, _04_, _05_ }, { _12_, _11_, _10_ });
function [0:0] _30_;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* full_case = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:696.7-702.10|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:675.5-707.12" *)
(* parallel_case *)
casez (s)
2'b?1:
_30_ = b[0:0];
2'b1?:
_30_ = b[1:1];
default:
_30_ = a;
endcase
endfunction
assign ack_dst_d = _30_(1'h0, { _00_, _01_ }, { _11_, _10_ });
(* module_not_derived = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:660.3-667.5" *)
\$paramod$252136d4adf4135cccabc504f7353066b499cb78\sync i_sync (
.clk_i(clk_i),
.rst_ni(rst_ni),
.serial_i(async_req_i),
.serial_o(req_synced)
);
assign async_ack_o = ack_dst_q;
assign data_o = async_data_i;
assign data_valid = valid_o;
assign output_ready = ready_i;
endmodule
(* cells_not_processed = 1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:375.1-399.10" *)
module \$paramod$252136d4adf4135cccabc504f7353066b499cb78\sync (clk_i, rst_ni, serial_i, serial_o);
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:379.18-379.23" *)
input clk_i;
wire clk_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:387.23-387.28" *)
reg [1:0] reg_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:380.18-380.24" *)
input rst_ni;
wire rst_ni;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:381.18-381.26" *)
input serial_i;
wire serial_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:382.18-382.26" *)
output serial_o;
wire serial_o;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:389.5-395.8" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) reg_q <= 2'h0;
else reg_q <= { reg_q[0], serial_i };
assign serial_o = reg_q[1];
endmodule
(* cells_not_processed = 1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1826.1-1887.10" *)
module \$paramod$2ae3818c383ec9e4b5fcbe86cfd2b09270f9b0c9\fifo_v2 (clk_i, rst_ni, flush_i, testmode_i, full_o, empty_o, alm_full_o, alm_empty_o, data_i, push_i, data_o, pop_i);
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1844.19-1844.30" *)
output alm_empty_o;
wire alm_empty_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1843.19-1843.29" *)
output alm_full_o;
wire alm_full_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1836.19-1836.24" *)
input clk_i;
wire clk_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1846.19-1846.25" *)
input [33:0] data_i;
wire [33:0] data_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1849.19-1849.25" *)
output [33:0] data_o;
wire [33:0] data_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1842.19-1842.26" *)
output empty_o;
wire empty_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1838.19-1838.26" *)
input flush_i;
wire flush_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1841.19-1841.25" *)
output full_o;
wire full_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1850.19-1850.24" *)
input pop_i;
wire pop_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1847.19-1847.25" *)
input push_i;
wire push_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1837.19-1837.25" *)
input rst_ni;
wire rst_ni;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1839.19-1839.29" *)
input testmode_i;
wire testmode_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1853.28-1853.33" *)
wire usage;
assign alm_full_o = usage >= (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1860.32-1860.68" *) 1'h1;
assign alm_empty_o = usage <= (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1861.32-1861.69" *) 1'h1;
(* module_not_derived = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1864.5-1881.7" *)
\$paramod$e494a19f6a2dfa4742b0f2a81ce288d4c04acfe9\fifo_v3 i_fifo_v3 (
.clk_i(clk_i),
.data_i(data_i),
.data_o(data_o),
.empty_o(empty_o),
.flush_i(flush_i),
.full_o(full_o),
.pop_i(pop_i),
.push_i(push_i),
.rst_ni(rst_ni),
.testmode_i(testmode_i),
.usage_o(usage)
);
endmodule
(* cells_not_processed = 1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3013.1-3658.20" *)
module \$paramod$347fe71c49e01963bcd82bfabe5c4311a43ce920\dm_csrs (clk_i, rst_ni, testmode_i, dmi_rst_ni, dmi_req_valid_i, dmi_req_ready_o, dmi_resp_valid_o, dmi_resp_ready_i, ndmreset_o, dmactive_o, halted_i, unavailable_i, resumeack_i, hartsel_o, haltreq_o, resumereq_o, clear_resumeack_o, cmd_valid_o, cmderror_valid_i, cmderror_i, cmdbusy_i
, progbuf_o, data_o, data_i, data_valid_i, sbaddress_o, sbaddress_i, sbaddress_write_valid_o, sbreadonaddr_o, sbautoincrement_o, sbaccess_o, sbreadondata_o, sbdata_o, sbdata_read_valid_o, sbdata_write_valid_o, sbdata_i, sbdata_valid_i, sbbusy_i, sberror_valid_i, sberror_i, hartinfo_i, dmi_req_i
, dmi_resp_o, cmd_o);
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
wire [31:0] _000_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
wire _001_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
wire [2:0] _002_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
wire [31:0] _003_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
wire [63:0] _004_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
(* unused_bits = "0" *)
wire [31:0] _005_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
wire [255:0] _006_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
wire [63:0] _007_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
wire [31:0] _008_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
wire [63:0] _009_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire _010_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [2:0] _011_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [1:0] _012_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire _013_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [2:0] _014_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [2:0] _015_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [1:0] _016_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [1:0] _017_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire _018_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [2:0] _019_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [63:0] _020_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
(* unused_bits = "0 2 3 4 5 26 27 28 29" *)
wire [31:0] _021_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
(* unused_bits = "1" *)
wire [1:0] _022_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [33:0] _023_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire _024_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [63:0] _025_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [31:0] _026_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire _027_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [2:0] _028_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [31:0] _029_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [63:0] _030_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [31:0] _031_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [1:0] _032_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [255:0] _033_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [33:0] _034_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [63:0] _035_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire _036_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire _037_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [63:0] _038_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire _039_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [31:0] _040_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire _041_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [2:0] _042_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [31:0] _043_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [63:0] _044_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [1:0] _045_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [255:0] _046_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [1:0] _047_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [31:0] _048_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire _049_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire _050_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [31:0] _051_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire _052_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [2:0] _053_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [31:0] _054_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [33:0] _055_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
(* unused_bits = "0 1 2 3 4 5 6 7 8 9 10 11 21 29 30 31" *)
wire [31:0] _056_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire _057_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [33:0] _058_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [31:0] _059_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire _060_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [2:0] _061_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [31:0] _062_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [2:0] _063_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire [1:0] _064_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3220.3-3557.6" *)
wire _065_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [31:0] _066_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [63:0] _067_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [1:0] _068_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [255:0] _069_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3399.38-3399.69" *)
wire [2:0] _070_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3460.34-3460.74" *)
wire _071_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3461.34-3461.83" *)
wire [2:0] _072_;
wire _073_;
wire _074_;
wire _075_;
wire _076_;
wire _077_;
wire _078_;
wire _079_;
wire _080_;
wire _081_;
wire _082_;
wire _083_;
wire _084_;
wire _085_;
wire _086_;
wire _087_;
wire _088_;
wire _089_;
wire _090_;
wire _091_;
wire _092_;
wire _093_;
wire _094_;
wire _095_;
wire _096_;
wire _097_;
wire _098_;
wire _099_;
wire _100_;
wire _101_;
wire _102_;
wire _103_;
wire _104_;
wire _105_;
wire _106_;
wire _107_;
wire _108_;
wire _109_;
wire _110_;
wire _111_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3289.47-3289.69" *)
wire _112_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3299.17-3299.43" *)
wire _113_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3345.36-3345.56" *)
wire _114_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.47-3363.70" *)
wire _115_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3461.60-3461.80" *)
wire _116_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3565.9-3565.48" *)
wire _117_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3289.9-3289.43" *)
wire _118_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3289.9-3289.69" *)
wire _119_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.9-3363.70" *)
wire _120_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3542.9-3542.56" *)
wire _121_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3545.9-3545.45" *)
wire _122_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3542.9-3542.31" *)
wire _123_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3341.15-3341.45" *)
wire _124_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3109.9-3109.47" *)
wire _125_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3126.9-3126.50" *)
wire _126_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3143.9-3143.49" *)
wire _127_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [32:0] _128_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [31:0] _129_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [32:0] _130_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [63:0] _131_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [1:0] _132_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [255:0] _133_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3248.61-3248.96" *)
wire _134_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3251.29-3251.59" *)
wire _135_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3399.38-3399.58" *)
wire [2:0] _136_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3460.56-3460.73" *)
wire _137_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3461.58-3461.81" *)
wire _138_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3588.25-3588.36" *)
wire _139_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [63:0] _140_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [1:0] _141_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [255:0] _142_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire _143_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire _144_;
wire _145_;
wire _146_;
wire _147_;
wire _148_;
wire _149_;
wire [7:0] _150_;
wire _151_;
wire _152_;
wire _153_;
wire _154_;
wire _155_;
wire [1:0] _156_;
wire _157_;
wire _158_;
wire _159_;
wire _160_;
wire _161_;
wire _162_;
wire _163_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [63:0] _164_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [63:0] _165_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [1:0] _166_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [1:0] _167_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [255:0] _168_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [255:0] _169_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [31:0] _170_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [31:0] _171_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [31:0] _172_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire _173_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [31:0] _174_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire _175_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [31:0] _176_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire [31:0] _177_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *)
wire _178_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3218.32-3218.59" *)
(* unused_bits = "4 5 6 7" *)
wire [7:0] _179_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3164.23-3164.37" *)
(* wiretype = "\\abstractauto_t" *)
wire [31:0] abstractauto_d;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3164.39-3164.53" *)
(* wiretype = "\\abstractauto_t" *)
wire [31:0] abstractauto_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3160.23-3160.33" *)
(* wiretype = "\\abstractcs_t" *)
wire [31:0] abstractcs;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3212.15-3212.31" *)
wire [3:0] autoexecdata_idx;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3043.45-3043.62" *)
output clear_resumeack_o;
wire clear_resumeack_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3018.45-3018.50" *)
input clk_i;
wire clk_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3046.45-3046.50" *)
(* wiretype = "\\command_t" *)
output [31:0] cmd_o;
wire [31:0] cmd_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3163.23-3163.34" *)
wire cmd_valid_d;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3045.45-3045.56" *)
output cmd_valid_o;
wire cmd_valid_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3163.36-3163.47" *)
reg cmd_valid_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3049.45-3049.54" *)
input cmdbusy_i;
wire cmdbusy_i;
(* enum_value_000 = "\\CmdErrNone" *)
(* enum_value_001 = "\\CmdErrBusy" *)
(* enum_value_010 = "\\CmdErrNotSupported" *)
(* enum_value_011 = "\\CmdErrorException" *)
(* enum_value_100 = "\\CmdErrorHaltResume" *)
(* enum_value_101 = "\\CmdErrorBus" *)
(* enum_value_111 = "\\CmdErrorOther" *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3161.23-3161.31" *)
(* wiretype = "\\cmderr_e" *)
wire [2:0] cmderr_d;
(* enum_value_000 = "\\CmdErrNone" *)
(* enum_value_001 = "\\CmdErrBusy" *)
(* enum_value_010 = "\\CmdErrNotSupported" *)
(* enum_value_011 = "\\CmdErrorException" *)
(* enum_value_100 = "\\CmdErrorHaltResume" *)
(* enum_value_101 = "\\CmdErrorBus" *)
(* enum_value_111 = "\\CmdErrorOther" *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3161.33-3161.41" *)
(* wiretype = "\\cmderr_e" *)
reg [2:0] cmderr_q;
(* enum_value_000 = "\\CmdErrNone" *)
(* enum_value_001 = "\\CmdErrBusy" *)
(* enum_value_010 = "\\CmdErrNotSupported" *)
(* enum_value_011 = "\\CmdErrorException" *)
(* enum_value_100 = "\\CmdErrorHaltResume" *)
(* enum_value_101 = "\\CmdErrorBus" *)
(* enum_value_111 = "\\CmdErrorOther" *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3048.45-3048.55" *)
(* wiretype = "\\cmderr_e" *)
input [2:0] cmderror_i;
wire [2:0] cmderror_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3047.45-3047.61" *)
input cmderror_valid_i;
wire cmderror_valid_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3162.23-3162.32" *)
(* wiretype = "\\command_t" *)
wire [31:0] command_d;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3162.34-3162.43" *)
(* wiretype = "\\command_t" *)
reg [31:0] command_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3172.35-3172.41" *)
wire [63:0] data_d;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3054.45-3054.51" *)
input [63:0] data_i;
wire [63:0] data_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3052.45-3052.51" *)
output [63:0] data_o;
wire [63:0] data_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3172.43-3172.49" *)
reg [63:0] data_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3055.45-3055.57" *)
input data_valid_i;
wire data_valid_i;
(* enum_value_00000100 = "\\Data0" *)
(* enum_value_00000101 = "\\Data1" *)
(* enum_value_00000110 = "\\Data2" *)
(* enum_value_00000111 = "\\Data3" *)
(* enum_value_00001000 = "\\Data4" *)
(* enum_value_00001001 = "\\Data5" *)
(* enum_value_00001010 = "\\Data6" *)
(* enum_value_00001011 = "\\Data7" *)
(* enum_value_00001100 = "\\Data8" *)
(* enum_value_00001101 = "\\Data9" *)
(* enum_value_00001110 = "\\Data10" *)
(* enum_value_00001111 = "\\Data11" *)
(* enum_value_00010000 = "\\DMControl" *)
(* enum_value_00010001 = "\\DMStatus" *)
(* enum_value_00010010 = "\\Hartinfo" *)
(* enum_value_00010011 = "\\HaltSum1" *)
(* enum_value_00010100 = "\\HAWindowSel" *)
(* enum_value_00010101 = "\\HAWindow" *)
(* enum_value_00010110 = "\\AbstractCS" *)
(* enum_value_00010111 = "\\Command" *)
(* enum_value_00011000 = "\\AbstractAuto" *)
(* enum_value_00011001 = "\\DevTreeAddr0" *)
(* enum_value_00011010 = "\\DevTreeAddr1" *)
(* enum_value_00011011 = "\\DevTreeAddr2" *)
(* enum_value_00011100 = "\\DevTreeAddr3" *)
(* enum_value_00011101 = "\\NextDM" *)
(* enum_value_00100000 = "\\ProgBuf0" *)
(* enum_value_00100001 = "\\ProgBuf1" *)
(* enum_value_00100010 = "\\ProgBuf2" *)
(* enum_value_00100011 = "\\ProgBuf3" *)
(* enum_value_00100100 = "\\ProgBuf4" *)
(* enum_value_00100101 = "\\ProgBuf5" *)
(* enum_value_00100110 = "\\ProgBuf6" *)
(* enum_value_00100111 = "\\ProgBuf7" *)
(* enum_value_00101000 = "\\ProgBuf8" *)
(* enum_value_00101001 = "\\ProgBuf9" *)
(* enum_value_00101010 = "\\ProgBuf10" *)
(* enum_value_00101011 = "\\ProgBuf11" *)
(* enum_value_00101100 = "\\ProgBuf12" *)
(* enum_value_00101101 = "\\ProgBuf13" *)
(* enum_value_00101110 = "\\ProgBuf14" *)
(* enum_value_00101111 = "\\ProgBuf15" *)
(* enum_value_00110000 = "\\AuthData" *)
(* enum_value_00110100 = "\\HaltSum2" *)
(* enum_value_00110101 = "\\HaltSum3" *)
(* enum_value_00110111 = "\\SBAddress3" *)
(* enum_value_00111000 = "\\SBCS" *)
(* enum_value_00111001 = "\\SBAddress0" *)
(* enum_value_00111010 = "\\SBAddress1" *)
(* enum_value_00111011 = "\\SBAddress2" *)
(* enum_value_00111100 = "\\SBData0" *)
(* enum_value_00111101 = "\\SBData1" *)
(* enum_value_00111110 = "\\SBData2" *)
(* enum_value_00111111 = "\\SBData3" *)
(* enum_value_01000000 = "\\HaltSum0" *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3209.16-3209.27" *)
(* wiretype = "\\dm_csr_e" *)
wire [7:0] dm_csr_addr;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3032.45-3032.55" *)
output dmactive_o;
wire dmactive_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3159.23-3159.34" *)
(* unused_bits = "0" *)
(* wiretype = "\\dmcontrol_t" *)
wire [31:0] dmcontrol_d;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3159.36-3159.47" *)
(* wiretype = "\\dmcontrol_t" *)
wire [31:0] dmcontrol_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3025.45-3025.54" *)
(* wiretype = "\\dmi_req_t" *)
input [40:0] dmi_req_i;
wire [40:0] dmi_req_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3024.45-3024.60" *)
output dmi_req_ready_o;
wire dmi_req_ready_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3023.45-3023.60" *)
input dmi_req_valid_i;
wire dmi_req_valid_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3029.45-3029.55" *)
(* wiretype = "\\dmi_resp_t" *)
output [33:0] dmi_resp_o;
wire [33:0] dmi_resp_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3028.45-3028.61" *)
input dmi_resp_ready_i;
wire dmi_resp_ready_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3027.45-3027.61" *)
output dmi_resp_valid_o;
wire dmi_resp_valid_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3021.45-3021.55" *)
input dmi_rst_ni;
wire dmi_rst_ni;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3158.23-3158.31" *)
(* wiretype = "\\dmstatus_t" *)
wire [31:0] dmstatus;
(* enum_value_00 = "\\DTM_NOP" *)
(* enum_value_01 = "\\DTM_READ" *)
(* enum_value_10 = "\\DTM_WRITE" *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3081.16-3081.22" *)
(* wiretype = "\\dtm_op_e" *)
wire [1:0] dtm_op;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3093.47-3093.53" *)
wire [31:0] halted;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3194.30-3194.44" *)
wire [1:0] halted_aligned;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3097.40-3097.52" *)
wire [31:0] halted_flat1;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3098.40-3098.52" *)
wire [31:0] halted_flat2;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3099.16-3099.28" *)
wire [31:0] halted_flat3;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3036.45-3036.53" *)
input halted_i;
wire halted_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3094.36-3094.52" *)
wire [31:0] halted_reshaped0;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3095.37-3095.53" *)
wire [31:0] halted_reshaped1;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3096.37-3096.53" *)
wire [31:0] halted_reshaped2;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3041.45-3041.54" *)
output haltreq_o;
wire haltreq_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3092.16-3092.24" *)
wire [31:0] haltsum0;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3092.26-3092.34" *)
wire [31:0] haltsum1;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3092.36-3092.44" *)
wire [31:0] haltsum2;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3092.46-3092.54" *)
wire [31:0] haltsum3;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3202.39-3202.55" *)
(* wiretype = "\\hartinfo_t" *)
wire [63:0] hartinfo_aligned;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3035.45-3035.55" *)
(* wiretype = "\\hartinfo_t" *)
input [31:0] hartinfo_i;
wire [31:0] hartinfo_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3102.16-3102.28" *)
wire [14:0] hartsel_idx0;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3115.15-3115.27" *)
wire [9:0] hartsel_idx1;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3132.15-3132.27" *)
wire [4:0] hartsel_idx2;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3040.45-3040.54" *)
output [19:0] hartsel_o;
wire [19:0] hartsel_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3169.23-3169.34" *)
wire havereset_d;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3192.30-3192.49" *)
(* unused_bits = "1" *)
wire [1:0] havereset_d_aligned;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3169.36-3169.47" *)
reg havereset_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3192.51-3192.70" *)
wire [1:0] havereset_q_aligned;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3031.45-3031.55" *)
output ndmreset_o;
wire ndmreset_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3171.37-3171.46" *)
wire [255:0] progbuf_d;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3051.45-3051.54" *)
output [255:0] progbuf_o;
wire [255:0] progbuf_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3171.48-3171.57" *)
reg [255:0] progbuf_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3085.16-3085.32" *)
wire resp_queue_empty;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3084.16-3084.31" *)
wire resp_queue_full;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3176.18-3176.32" *)
(* wiretype = "\\dmi_resp_t" *)
wire [33:0] resp_queue_inp;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3087.16-3087.30" *)
wire resp_queue_pop;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3086.16-3086.31" *)
wire resp_queue_push;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3193.30-3193.47" *)
wire [1:0] resumeack_aligned;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3038.45-3038.56" *)
input resumeack_i;
wire resumeack_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3042.45-3042.56" *)
output resumereq_o;
wire resumereq_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3019.45-3019.51" *)
input rst_ni;
wire rst_ni;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3063.45-3063.55" *)
output [2:0] sbaccess_o;
wire [2:0] sbaccess_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3166.23-3166.31" *)
wire [63:0] sbaddr_d;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3166.33-3166.41" *)
reg [63:0] sbaddr_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3058.45-3058.56" *)
input [63:0] sbaddress_i;
wire [63:0] sbaddress_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3057.45-3057.56" *)
output [63:0] sbaddress_o;
wire [63:0] sbaddress_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3059.45-3059.68" *)
output sbaddress_write_valid_o;
wire sbaddress_write_valid_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3062.45-3062.62" *)
output sbautoincrement_o;
wire sbautoincrement_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3073.45-3073.53" *)
input sbbusy_i;
wire sbbusy_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3165.23-3165.29" *)
(* wiretype = "\\sbcs_t" *)
wire [31:0] sbcs_d;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3165.31-3165.37" *)
(* wiretype = "\\sbcs_t" *)
wire [31:0] sbcs_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3167.23-3167.31" *)
wire [63:0] sbdata_d;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3070.45-3070.53" *)
input [63:0] sbdata_i;
wire [63:0] sbdata_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3066.45-3066.53" *)
output [63:0] sbdata_o;
wire [63:0] sbdata_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3167.33-3167.41" *)
reg [63:0] sbdata_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3067.45-3067.64" *)
output sbdata_read_valid_o;
wire sbdata_read_valid_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3071.45-3071.59" *)
input sbdata_valid_i;
wire sbdata_valid_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3068.45-3068.65" *)
output sbdata_write_valid_o;
wire sbdata_write_valid_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3075.45-3075.54" *)
input [2:0] sberror_i;
wire [2:0] sberror_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3074.45-3074.60" *)
input sberror_valid_i;
wire sberror_valid_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3061.45-3061.59" *)
output sbreadonaddr_o;
wire sbreadonaddr_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3065.45-3065.59" *)
output sbreadondata_o;
wire sbreadondata_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3174.26-3174.39" *)
wire selected_hart;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3020.45-3020.55" *)
input testmode_i;
wire testmode_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3193.49-3193.68" *)
wire [1:0] unavailable_aligned;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3037.45-3037.58" *)
input unavailable_i;
wire unavailable_i;
assign _066_ = 32'd16 + (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *) { 28'h0000001, dmi_req_i[37:34] };
assign _067_ = data_q & (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *) _131_;
assign _068_ = { 1'h0, havereset_q } & (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *) _132_;
assign _069_ = progbuf_q & (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *) _133_;
assign resp_queue_push = dmi_req_valid_i & (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3180.33-3180.66" *) dmi_req_ready_o;
assign dmstatus[9] = _173_ & (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3248.29-3248.96" *) _134_;
assign dmstatus[11] = _135_ & (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3251.29-3251.97" *) _134_;
assign _070_ = _136_ & (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3399.38-3399.69" *) cmderr_q;
assign _071_ = sbcs_q[22] & (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3460.34-3460.74" *) _137_;
assign _072_ = sbcs_q[14:12] & (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3461.34-3461.83" *) { _138_, _138_, _138_ };
assign resp_queue_pop = dmi_resp_ready_i & (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3577.27-3577.63" *) dmi_resp_valid_o;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) progbuf_q <= 256'h0000000000000000000000000000000000000000000000000000000000000000;
else if (_097_) progbuf_q <= _006_;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) sbdata_q[63:32] <= 32'd0;
else if (_098_) sbdata_q[63:32] <= _009_[63:32];
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) sbdata_q[31:0] <= 32'd0;
else if (_099_) sbdata_q[31:0] <= _009_[31:0];
reg [2:0] _194_;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) _194_ <= 3'h0;
else if (_100_) _194_ <= _008_[14:12];
assign sbcs_q[14:12] = _194_;
reg [11:0] _195_;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) _195_ <= 12'h000;
else if (_101_) _195_ <= { _008_[28:23], _008_[20:15] };
assign { sbcs_q[28:23], sbcs_q[20:15] } = _195_;
reg [16:0] _196_;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) _196_ <= 17'h00000;
else _196_ <= { _008_[31:29], _008_[22:21], _008_[11:0] };
assign { sbcs_q[31:29], sbcs_q[22:21], sbcs_q[11:0] } = _196_;
reg [27:0] _197_;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) _197_ <= 28'h0000000;
else if (_102_) _197_ <= { _000_[31:16], _000_[11:0] };
assign { abstractauto_q[31:16], abstractauto_q[11:0] } = _197_;
reg [3:0] _198_;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) _198_ <= 4'h0;
else _198_ <= _000_[15:12];
assign abstractauto_q[15:12] = _198_;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) command_q <= 32'd0;
else if (_103_) command_q <= _003_;
reg \dmcontrol_q_reg[0] ;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) \dmcontrol_q_reg[0] <= 1'h0;
else if (_120_) \dmcontrol_q_reg[0] <= _031_[0];
assign dmcontrol_q[0] = \dmcontrol_q_reg[0] ;
reg [21:0] _201_;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) _201_ <= 22'h000000;
else if (_104_) _201_ <= { _005_[31], _005_[25:6], _005_[1] };
assign { dmcontrol_q[31], dmcontrol_q[25:6], dmcontrol_q[1] } = _201_;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) data_q <= 64'h0000000000000000;
else if (_105_) data_q <= _004_;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) havereset_q <= 1'h1;
else if (_106_) havereset_q <= havereset_d;
reg \dmcontrol_q_reg[30] ;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) \dmcontrol_q_reg[30] <= 1'h0;
else \dmcontrol_q_reg[30] <= _005_[30];
assign dmcontrol_q[30] = \dmcontrol_q_reg[30] ;
assign _073_ = { _151_, _120_, dmcontrol_q[0], cmdbusy_i } != 4'hf;
assign _074_ = { _120_, dmcontrol_q[0] } != 2'h1;
assign _075_ = { _151_, _120_, dmcontrol_q[0] } != 3'h3;
assign _076_ = { _145_, _120_, _124_, dmcontrol_q[0], sbdata_valid_i } != 5'h1e;
assign _077_ = { _120_, dmcontrol_q[0], sbdata_valid_i } != 3'h2;
assign _078_ = { _145_, _120_, dmcontrol_q[0], sbdata_valid_i } != 4'h6;
assign _079_ = { _147_, _120_, _124_, dmcontrol_q[0], sbdata_valid_i } != 5'h1e;
assign _080_ = { _147_, _120_, dmcontrol_q[0], sbdata_valid_i } != 4'h6;
assign _081_ = { _149_, _120_, dmcontrol_q[0], sberror_valid_i, sbbusy_i } != 5'h1d;
assign _082_ = { _120_, dmcontrol_q[0], sberror_valid_i } != 3'h2;
assign _083_ = { _149_, _120_, dmcontrol_q[0], sberror_valid_i } != 4'h6;
assign _084_ = { _149_, _120_, dmcontrol_q[0], sbbusy_i } != 4'hf;
assign _085_ = { _149_, _120_, dmcontrol_q[0] } != 3'h3;
assign _086_ = { _152_, _120_, dmcontrol_q[0], cmdbusy_i } != 4'hf;
assign _087_ = { _152_, _120_, dmcontrol_q[0] } != 3'h3;
assign _088_ = { _153_, _120_, dmcontrol_q[0], cmdbusy_i } != 4'hf;
assign _089_ = { _153_, _120_, dmcontrol_q[0] } != 3'h3;
assign _090_ = { _155_, _120_, dmcontrol_q[0] } != 3'h3;
assign _091_ = { _157_, _120_, dmcontrol_q[0], data_valid_i, cmdbusy_i } != 5'h1d;
assign _092_ = { _120_, dmcontrol_q[0], data_valid_i } != 3'h2;
assign _093_ = { _157_, _120_, dmcontrol_q[0], data_valid_i } != 4'h6;
assign _094_ = { _155_, _120_, dmcontrol_q[1], dmi_req_i[28] } != 4'hc;
assign _095_ = | { _120_, dmcontrol_q[1] };
assign _096_ = { _155_, _120_, dmcontrol_q[1] } != 3'h2;
assign _097_ = & { _073_, _074_, _075_ };
assign _098_ = & { _076_, _077_, _078_ };
assign _099_ = & { _077_, _079_, _080_ };
assign _100_ = & { _082_, _083_, _081_ };
assign _101_ = & { _084_, _085_, _074_ };
assign _102_ = & { _086_, _087_, _074_ };
assign _103_ = & { _089_, _088_, _074_ };
assign _104_ = & { _090_, _074_ };
assign _105_ = & { _091_, _092_, _093_ };
assign _106_ = & { _096_, _094_, _095_ };
assign _107_ = | { _148_, _147_, _146_, _145_ };
assign _108_ = | { _156_, _154_, _153_, _152_, _150_ };
assign _109_ = | { _156_, _153_, _152_, _150_ };
assign _111_ = | { _156_, _150_ };
assign _110_ = | { _147_, _145_ };
assign _112_ = dmi_req_i[33:32] == (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3289.47-3289.69" *) 2'h1;
assign _113_ = ! (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3299.17-3299.43" *) cmderr_q;
assign _114_ = ! (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3345.36-3345.56" *) sbcs_q[14:12];
assign _115_ = dmi_req_i[33:32] == (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.47-3363.70" *) 2'h2;
assign _116_ = dmi_req_i[14:12] == (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3461.60-3461.80" *) 3'h1;
assign dmstatus[15] = { dmcontrol_q[15:6], dmcontrol_q[25:16] } > (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3243.38-3243.68" *) 32'd0;
assign _117_ = dmcontrol_q[16] <= (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3565.9-3565.48" *) 32'd0;
assign _118_ = dmi_req_ready_o && (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3289.9-3289.43" *) dmi_req_valid_i;
assign _119_ = _118_ && (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3289.9-3289.69" *) _112_;
assign _120_ = _118_ && (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.9-3363.70" *) _115_;
assign _121_ = _123_ && (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3542.9-3542.56" *) _021_[30];
assign _122_ = dmcontrol_q[30] && (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3545.9-3545.45" *) resumeack_i;
assign _123_ = ! (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3542.9-3542.31" *) dmcontrol_q[30];
assign _124_ = sbbusy_i || (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3341.15-3341.45" *) sbcs_q[22];
assign _125_ = { dmcontrol_q[15:6], dmcontrol_q[25:21] } < (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3109.9-3109.47" *) 32'd1;
assign _126_ = dmcontrol_q[15:6] < (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3126.9-3126.50" *) 32'd1;
assign _127_ = dmcontrol_q[15:11] < (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3143.9-3143.49" *) 32'd1;
assign _128_ = - (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *) $signed({ 27'h0000000, dmi_req_i[34], 5'h00 });
assign _129_ = - (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *) $signed({ 31'h00000000, dmcontrol_q[16] });
assign _130_ = - (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *) $signed({ 25'h0000000, dmi_req_i[36:34], 5'h00 });
assign _131_ = ~ (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *) _164_;
assign _132_ = ~ (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *) _166_;
assign _133_ = ~ (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *) _168_;
assign dmi_resp_valid_o = ~ (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3178.33-3178.50" *) resp_queue_empty;
assign dmi_req_ready_o = ~ (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3179.33-3179.49" *) resp_queue_full;
assign _134_ = ~ (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3248.61-3248.96" *) dmstatus[13];
assign _135_ = ~ (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3251.29-3251.59" *) _173_;
assign _136_ = ~ (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3399.38-3399.58" *) dmi_req_i[10:8];
assign _137_ = ~ (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3460.56-3460.73" *) dmi_req_i[22];
assign _138_ = ~ (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3461.58-3461.81" *) _116_;
assign _139_ = ~ (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3588.25-3588.36" *) dmi_rst_ni;
assign _140_ = _067_ | (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *) _165_;
assign _141_ = _068_ | (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *) _167_;
assign _142_ = _069_ | (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:0.0-0.0" *) _169_;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) cmderr_q <= 3'h0;
else cmderr_q <= _002_;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) cmd_valid_q <= 1'h0;
else cmd_valid_q <= _001_;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3601.3-3656.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) sbaddr_q <= 64'h0000000000000000;
else sbaddr_q <= _007_;
assign _005_[31] = dmcontrol_q[0] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3619.7-3654.10" *) dmcontrol_d[31] : 1'h0;
assign _007_ = dmcontrol_q[0] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3619.7-3654.10" *) sbaddr_d : 64'h0000000000000000;
assign _008_ = dmcontrol_q[0] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3619.7-3654.10" *) { 3'h1, sbcs_d[28:22], sbbusy_i, sbcs_d[20:12], 12'h80f } : 32'd0;
assign _004_ = dmcontrol_q[0] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3619.7-3654.10" *) data_d : 64'h0000000000000000;
assign _006_ = dmcontrol_q[0] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3619.7-3654.10" *) progbuf_d : 256'h0000000000000000000000000000000000000000000000000000000000000000;
assign _000_ = dmcontrol_q[0] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3619.7-3654.10" *) abstractauto_d : 32'd0;
assign _001_ = dmcontrol_q[0] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3619.7-3654.10" *) cmd_valid_d : 1'h0;
assign _003_ = dmcontrol_q[0] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3619.7-3654.10" *) command_d : 32'd0;
assign _002_ = dmcontrol_q[0] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3619.7-3654.10" *) cmderr_d : 3'h0;
assign _009_ = dmcontrol_q[0] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3619.7-3654.10" *) sbdata_d : 64'h0000000000000000;
assign _005_[1] = dmcontrol_q[0] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3619.7-3654.10" *) dmcontrol_d[1] : 1'h0;
assign _005_[15:6] = dmcontrol_q[0] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3619.7-3654.10" *) dmcontrol_d[15:6] : 10'h000;
assign _005_[25:16] = dmcontrol_q[0] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3619.7-3654.10" *) dmcontrol_d[25:16] : 10'h000;
assign _005_[30] = dmcontrol_q[0] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3619.7-3654.10" *) dmcontrol_d[30] : 1'h0;
assign resumereq_o = _117_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3565.5-3568.8" *) _144_ : 1'h0;
assign haltreq_o = _117_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3565.5-3568.8" *) _143_ : 1'h0;
assign dmcontrol_d[30] = _122_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3545.5-3547.8" *) 1'h0 : _021_[30];
assign clear_resumeack_o = _121_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3542.5-3544.8" *) 1'h1 : 1'h0;
assign sbdata_d = sbdata_valid_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3527.5-3529.8" *) sbdata_i : _025_;
assign sbcs_d[14:12] = sberror_valid_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3523.5-3525.8" *) sberror_i : _056_[14:12];
assign havereset_d = dmcontrol_q[1] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3516.5-3518.8" *) 1'h1 : _022_[0];
assign data_d = data_valid_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3511.5-3513.8" *) data_i : _020_;
assign cmderr_d = cmderror_valid_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3506.5-3508.8" *) cmderror_i : _061_;
assign _038_[63:32] = _145_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3493.9-3501.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) _051_ : 32'hxxxxxxxx;
assign _145_ = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3493.9-3501.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h3d;
assign _051_ = _124_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3495.11-3500.14" *) 32'hxxxxxxxx : dmi_req_i[31:0];
assign _035_[31:0] = _146_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3464.9-3473.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) _048_ : sbaddress_i[31:0];
assign _146_ = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3464.9-3473.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h39;
assign _147_ = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3483.9-3492.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h3c;
assign _038_[31:0] = _147_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3483.9-3492.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) _051_ : 32'hxxxxxxxx;
assign _035_[63:32] = _148_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3474.9-3482.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) _054_ : sbaddress_i[63:32];
assign _148_ = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3474.9-3482.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h3a;
assign _013_ = _124_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3476.11-3481.14" *) 1'h1 : _024_;
assign _054_ = _124_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3476.11-3481.14" *) sbaddress_i[63:32] : dmi_req_i[31:0];
assign _017_ = _124_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3485.11-3491.14" *) 2'h3 : _023_[1:0];
assign _048_ = _124_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3466.11-3472.14" *) sbaddress_i[31:0] : dmi_req_i[31:0];
function [0:0] _317_;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* full_case = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3493.9-3501.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *)
(* parallel_case *)
casez (s)
2'b?1:
_317_ = b[0:0];
2'b1?:
_317_ = b[1:1];
default:
_317_ = a;
endcase
endfunction
assign _059_[22] = _317_(_024_, { _062_[22], _013_ }, { _149_, _107_ });
assign _149_ = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3451.9-3463.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h38;
assign _059_[21:0] = _149_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3451.9-3463.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) _062_[21:0] : { sbcs_q[21], 9'hxxx, sbcs_q[11:0] };
assign _062_[14:12] = sbbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3453.11-3462.14" *) 3'hx : _072_;
assign _062_[11:0] = sbbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3453.11-3462.14" *) sbcs_q[11:0] : dmi_req_i[11:0];
assign _062_[22] = sbbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3453.11-3462.14" *) 1'h1 : _071_;
assign _016_ = sbbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3453.11-3462.14" *) 2'h3 : _023_[1:0];
assign _150_[0] = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3434.9-3450.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h20;
assign _150_[1] = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3434.9-3450.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h21;
assign _150_[2] = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3434.9-3450.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h22;
assign _150_[3] = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3434.9-3450.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h23;
assign _150_[4] = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3434.9-3450.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h24;
assign _150_[5] = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3434.9-3450.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h25;
assign _150_[6] = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3434.9-3450.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h26;
assign _150_[7] = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3434.9-3450.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h27;
assign _010_ = cmdbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3436.11-3449.14" *) _018_ : _178_;
assign _046_ = cmdbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3436.11-3449.14" *) 256'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx : _142_;
assign _152_ = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3421.9-3433.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h18;
assign _040_[31:16] = cmdbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3423.11-3432.14" *) 16'hxxxx : { 8'h00, dmi_req_i[23:16] };
assign _040_[11:0] = cmdbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3423.11-3432.14" *) 12'hxxx : { 10'h000, dmi_req_i[1:0] };
assign _153_ = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3407.9-3420.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h17;
assign _043_ = cmdbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3409.11-3419.14" *) 32'hxxxxxxxx : dmi_req_i[31:0];
assign _065_ = cmdbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3409.11-3419.14" *) _018_ : 1'h1;
assign _011_ = cmdbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3409.11-3419.14" *) _014_ : _019_;
assign _154_ = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3391.9-3406.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h16;
assign _015_ = cmdbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3398.11-3405.14" *) _014_ : _070_;
assign _012_ = cmdbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3398.11-3405.14" *) 2'h3 : _023_[1:0];
assign _045_ = dmi_req_i[28] ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3384.11-3386.14" *) _141_ : 2'b0x;
assign _155_ = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3381.9-3387.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h10;
assign _014_ = _113_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3375.15-3377.18" *) 3'h1 : _019_;
assign _157_ = | (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3365.9-3380.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) _156_;
assign _156_[0] = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3365.9-3380.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h04;
assign _156_[1] = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3365.9-3380.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) 7'h05;
assign _060_ = cmdbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3368.13-3378.16" *) _018_ : _175_;
assign _044_ = cmdbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3368.13-3378.16" *) 64'hxxxxxxxxxxxxxxxx : _140_;
function [1:0] _352_;
input [1:0] a;
input [5:0] b;
input [2:0] s;
(* full_case = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3493.9-3501.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *)
(* parallel_case *)
casez (s)
3'b??1:
_352_ = b[1:0];
3'b?1?:
_352_ = b[3:2];
3'b1??:
_352_ = b[5:4];
default:
_352_ = a;
endcase
endfunction
assign _064_ = _352_(_023_[1:0], { _012_, _016_, _017_ }, { _108_, _149_, _107_ });
assign _151_ = | (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3434.9-3450.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) _150_;
function [0:0] _354_;
input [0:0] a;
input [2:0] b;
input [2:0] s;
(* full_case = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3434.9-3450.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *)
(* parallel_case *)
casez (s)
3'b??1:
_354_ = b[0:0];
3'b?1?:
_354_ = b[1:1];
3'b1??:
_354_ = b[2:2];
default:
_354_ = a;
endcase
endfunction
assign _057_ = _354_(_018_, { _060_, _065_, _010_ }, { _157_, _153_, _151_ });
function [2:0] _355_;
input [2:0] a;
input [5:0] b;
input [1:0] s;
(* full_case = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3434.9-3450.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *)
(* parallel_case *)
casez (s)
2'b?1:
_355_ = b[2:0];
2'b1?:
_355_ = b[5:3];
default:
_355_ = a;
endcase
endfunction
assign _063_ = _355_(_019_, { _015_, _011_ }, { _154_, _109_ });
assign _030_ = _157_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3365.9-3380.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) _044_ : 64'hxxxxxxxxxxxxxxxx;
assign _032_ = _155_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3381.9-3387.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) _045_ : 2'b0x;
assign _033_ = _151_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3434.9-3450.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) _046_ : 256'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
assign _059_[31:23] = _149_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3451.9-3463.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) _062_[31:23] : { sbcs_q[31:29], 6'hxx };
assign { _062_[31:23], _062_[21:15] } = sbbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3453.11-3462.14" *) { sbcs_q[31:29], 6'hxx, sbcs_q[21], 6'hxx } : { dmi_req_i[31:23], dmi_req_i[21:15] };
assign _026_ = _152_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3421.9-3433.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) { _040_[31:16], 4'h0, _040_[11:0] } : 32'hxxxx0xxx;
assign _029_ = _153_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3407.9-3420.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) _043_ : 32'hxxxxxxxx;
assign _031_ = _155_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3381.9-3387.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) dmi_req_i[31:0] : { 1'hx, dmcontrol_q[30], 29'b0000xxxxxxxxxxxxxxxxxxxx0000x, dmcontrol_q[0] };
assign _039_ = _147_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3483.9-3492.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) _049_ : 1'h0;
assign _036_ = _146_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3464.9-3473.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3364.7-3503.14" *) _049_ : 1'h0;
assign { havereset_d_aligned[1], _022_[0] } = _120_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.5-3504.8" *) _032_ : 2'b0x;
assign resp_queue_inp[1:0] = _120_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.5-3504.8" *) _064_ : _023_[1:0];
assign progbuf_d = _120_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.5-3504.8" *) _033_ : 256'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
assign _025_ = _120_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.5-3504.8" *) _038_ : 64'hxxxxxxxxxxxxxxxx;
assign sbaddr_d = _120_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.5-3504.8" *) _035_ : sbaddress_i;
assign { _056_[31:29], sbcs_d[28:22], _056_[21], sbcs_d[20:15], _056_[14:0] } = _120_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.5-3504.8" *) _059_ : { sbcs_q[31:29], 6'hxx, _024_, sbcs_q[21], 9'hxxx, sbcs_q[11:0] };
assign abstractauto_d = _120_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.5-3504.8" *) _026_ : 32'hxxxx0xxx;
assign cmd_valid_d = _120_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.5-3504.8" *) _057_ : _018_;
assign command_d = _120_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.5-3504.8" *) _029_ : 32'hxxxxxxxx;
assign _061_ = _120_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.5-3504.8" *) _063_ : _019_;
assign { dmcontrol_d[31], _021_[30:26], dmcontrol_d[25:6], _021_[5:2], dmcontrol_d[1:0] } = _120_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.5-3504.8" *) _031_ : { 1'hx, dmcontrol_q[30], 29'b0000xxxxxxxxxxxxxxxxxxxx0000x, dmcontrol_q[0] };
assign sbdata_write_valid_o = _120_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.5-3504.8" *) _039_ : 1'h0;
assign sbaddress_write_valid_o = _120_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.5-3504.8" *) _036_ : 1'h0;
assign _020_ = _120_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3363.5-3504.8" *) _030_ : 64'hxxxxxxxxxxxxxxxx;
function [31:0] _380_;
input [31:0] a;
input [511:0] b;
input [15:0] s;
(* full_case = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3349.9-3357.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3290.7-3359.14" *)
(* parallel_case *)
casez (s)
16'b???????????????1:
_380_ = b[31:0];
16'b??????????????1?:
_380_ = b[63:32];
16'b?????????????1??:
_380_ = b[95:64];
16'b????????????1???:
_380_ = b[127:96];
16'b???????????1????:
_380_ = b[159:128];
16'b??????????1?????:
_380_ = b[191:160];
16'b?????????1??????:
_380_ = b[223:192];
16'b????????1???????:
_380_ = b[255:224];
16'b???????1????????:
_380_ = b[287:256];
16'b??????1?????????:
_380_ = b[319:288];
16'b?????1??????????:
_380_ = b[351:320];
16'b????1???????????:
_380_ = b[383:352];
16'b???1????????????:
_380_ = b[415:384];
16'b??1?????????????:
_380_ = b[447:416];
16'b?1??????????????:
_380_ = b[479:448];
16'b1???????????????:
_380_ = b[511:480];
default:
_380_ = a;
endcase
endfunction
assign _034_[33:2] = _380_(32'd0, { _174_, dmcontrol_q[31:30], 4'h0, dmcontrol_q[25:6], 4'h0, dmcontrol_q[1:0], 12'h000, dmstatus[19], dmstatus[19], dmstatus[17], dmstatus[17], dmstatus[15], dmstatus[15], dmstatus[13], dmstatus[13], dmstatus[11], dmstatus[11], dmstatus[9], dmstatus[9], 8'h82, _176_, 19'h04000, cmdbusy_i, 1'h0, cmderr_q, 8'h02, abstractauto_q, _177_, haltsum0, haltsum1, haltsum2, 31'h00000000, halted_i, sbcs_q, sbaddr_q[31:0], sbaddr_q[63:32], _055_[33:2], _058_[33:2] }, { _157_, _155_, _163_, _162_, _154_, _152_, _151_, _161_, _160_, _159_, _158_, _149_, _146_, _148_, _147_, _145_ });
assign _158_ = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3329.9-3329.54|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3290.7-3359.14" *) 7'h35;
assign _159_ = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3328.9-3328.54|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3290.7-3359.14" *) 7'h34;
assign _160_ = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3327.9-3327.54|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3290.7-3359.14" *) 7'h13;
assign _161_ = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3326.9-3326.54|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3290.7-3359.14" *) 7'h40;
assign _162_ = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3306.9-3306.81|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3290.7-3359.14" *) 7'h12;
assign _163_ = dmi_req_i[40:34] == (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3305.9-3305.58|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3290.7-3359.14" *) 7'h11;
assign _050_ = _124_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3351.11-3356.14" *) 1'h1 : sbcs_q[22];
assign _058_[33:2] = _124_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3351.11-3356.14" *) 32'd0 : sbdata_q[63:32];
function [1:0] _389_;
input [1:0] a;
input [3:0] b;
input [1:0] s;
(* full_case = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3349.9-3357.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3290.7-3359.14" *)
(* parallel_case *)
casez (s)
2'b?1:
_389_ = b[1:0];
2'b1?:
_389_ = b[3:2];
default:
_389_ = a;
endcase
endfunction
assign _034_[1:0] = _389_(2'h0, { _047_, _055_[1:0] }, { _111_, _110_ });
assign _055_[33:2] = _124_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3341.11-3347.14" *) 32'd0 : sbdata_q[31:0];
assign _049_ = _124_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3341.11-3347.14" *) 1'h0 : _114_;
assign _055_[1:0] = _124_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3351.11-3356.14" *) 2'h3 : 2'h0;
assign _052_ = cmdbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3313.11-3324.14" *) 1'h0 : _178_;
assign _047_ = cmdbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3313.11-3324.14" *) 2'h3 : 2'h0;
assign _042_ = cmdbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3313.11-3324.14" *) _053_ : cmderr_q;
assign _053_ = _113_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3299.13-3301.16" *) 3'h1 : cmderr_q;
assign _041_ = cmdbusy_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3293.11-3302.14" *) 1'h0 : _175_;
function [0:0] _398_;
input [0:0] a;
input [1:0] b;
input [1:0] s;
(* full_case = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3311.9-3325.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3290.7-3359.14" *)
(* parallel_case *)
casez (s)
2'b?1:
_398_ = b[0:0];
2'b1?:
_398_ = b[1:1];
default:
_398_ = a;
endcase
endfunction
assign _027_ = _398_(1'h0, { _041_, _052_ }, { _157_, _151_ });
assign _028_ = _111_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3311.9-3325.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3290.7-3359.14" *) _042_ : cmderr_q;
assign _037_ = _110_ ? (* full_case = 32'd1 *) (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3349.9-3357.12|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3290.7-3359.14" *) _050_ : sbcs_q[22];
assign { resp_queue_inp[33:2], _023_[1:0] } = _119_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3289.5-3360.8" *) _034_ : 34'h000000000;
assign _024_ = _119_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3289.5-3360.8" *) _037_ : sbcs_q[22];
assign _018_ = _119_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3289.5-3360.8" *) _027_ : 1'h0;
assign _019_ = _119_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3289.5-3360.8" *) _028_ : cmderr_q;
assign sbdata_read_valid_o = _119_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3289.5-3360.8" *) _039_ : 1'h0;
assign haltsum2 = _127_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3143.5-3145.8" *) _172_ : 32'd0;
assign haltsum1 = _126_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3126.5-3128.8" *) _171_ : 32'd0;
assign haltsum0 = _125_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3109.5-3111.8" *) _170_ : 32'd0;
assign _164_ = $signed(_128_) < 0 ? 32'd4294967295 << - _128_ : 32'd4294967295 >> _128_;
assign _165_ = $signed(_128_) < 0 ? dmi_req_i[31:0] << - _128_ : dmi_req_i[31:0] >> _128_;
assign _166_ = $signed(_129_) < 0 ? 1'h1 << - _129_ : 1'h1 >> _129_;
assign _167_ = $signed(_129_) < 0 ? 1'h0 << - _129_ : 1'h0 >> _129_;
assign _168_ = $signed(_130_) < 0 ? 32'd4294967295 << - _130_ : 32'd4294967295 >> _130_;
assign _169_ = $signed(_130_) < 0 ? dmi_req_i[31:0] << - _130_ : dmi_req_i[31:0] >> _130_;
assign _143_ = $signed(_129_) < 0 ? dmcontrol_q[31] << - _129_ : dmcontrol_q[31] >> _129_;
assign _144_ = $signed(_129_) < 0 ? dmcontrol_q[30] << - _129_ : dmcontrol_q[30] >> _129_;
wire [31:0] _430_ = { 31'h00000000, halted_i };
assign _170_ = _430_[$signed({ 12'h000, dmcontrol_q[15:6], dmcontrol_q[25:21], 5'h00 }) +: 32];
wire [31:0] _431_ = { 31'h00000000, halted_i };
assign _171_ = _431_[$signed({ 17'h00000, dmcontrol_q[15:6], 5'h00 }) +: 32];
wire [31:0] _432_ = { 31'h00000000, halted_i };
assign _172_ = _432_[$signed({ 22'h000000, dmcontrol_q[15:11], 5'h00 }) +: 32];
wire [1:0] _433_ = { 1'h0, havereset_q };
assign dmstatus[19] = _433_[dmcontrol_q[16] +: 1];
wire [1:0] _434_ = { 1'h0, resumeack_i };
assign dmstatus[17] = _434_[dmcontrol_q[16] +: 1];
wire [1:0] _435_ = { 1'h0, unavailable_i };
assign dmstatus[13] = _435_[dmcontrol_q[16] +: 1];
wire [1:0] _436_ = { 1'h0, halted_i };
assign _173_ = _436_[dmcontrol_q[16] +: 1];
wire [63:0] _437_ = data_q;
assign _174_ = _437_[$signed({ 23'h000000, autoexecdata_idx, 5'h00 }) +: 32];
wire [31:0] _438_ = abstractauto_q;
assign _175_ = _438_[$signed({ 28'h0000000, autoexecdata_idx }) +: 1];
wire [63:0] _439_ = { 32'h00000000, hartinfo_i };
assign _176_ = _439_[$signed({ 26'h0000000, dmcontrol_q[16], 5'h00 }) +: 32];
wire [255:0] _440_ = progbuf_q;
assign _177_ = _440_[$signed({ 24'h000000, dmi_req_i[36:34], 5'h00 }) +: 32];
wire [31:0] _441_ = abstractauto_q;
assign _178_ = _441_[$signed(_066_) +: 1];
assign { _179_[7:4], autoexecdata_idx } = { 1'h0, dmi_req_i[40:34] } - (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3218.32-3218.59" *) 8'h04;
(* module_not_derived = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:3582.3-3599.5" *)
\$paramod$2ae3818c383ec9e4b5fcbe86cfd2b09270f9b0c9\fifo_v2 i_fifo (
.clk_i(clk_i),
.data_i(resp_queue_inp),
.data_o(dmi_resp_o),
.empty_o(resp_queue_empty),
.flush_i(_139_),
.full_o(resp_queue_full),
.pop_i(resp_queue_pop),
.push_i(resp_queue_push),
.rst_ni(rst_ni),
.testmode_i(testmode_i)
);
assign { _005_[29:26], _005_[5:2], _005_[0] } = { 8'h00, dmcontrol_d[0] };
assign { _021_[31], _021_[25:6], _021_[1:0] } = { dmcontrol_d[31], dmcontrol_d[25:6], dmcontrol_d[1:0] };
assign _022_[1] = havereset_d_aligned[1];
assign _023_[33:2] = resp_queue_inp[33:2];
assign _040_[15:12] = 4'h0;
assign { _056_[28:22], _056_[20:15] } = { sbcs_d[28:22], sbcs_d[20:15] };
assign _058_[1:0] = _055_[1:0];
assign _179_[3:0] = autoexecdata_idx;
assign abstractcs = { 19'h04000, cmdbusy_i, 1'h0, cmderr_q, 8'h02 };
assign cmd_o = command_q;
assign cmd_valid_o = cmd_valid_q;
assign data_o = data_q;
assign dm_csr_addr = { 1'h0, dmi_req_i[40:34] };
assign dmactive_o = dmcontrol_q[0];
assign { dmcontrol_d[29:26], dmcontrol_d[5:2] } = 8'h00;
assign { dmcontrol_q[29:26], dmcontrol_q[5:2] } = 8'h00;
assign { dmstatus[31:20], dmstatus[18], dmstatus[16], dmstatus[14], dmstatus[12], dmstatus[10], dmstatus[8:0] } = { 12'h000, dmstatus[19], dmstatus[17], dmstatus[15], dmstatus[13], dmstatus[11], dmstatus[9], 8'h82 };
assign dtm_op = dmi_req_i[33:32];
assign halted = { 31'h00000000, halted_i };
assign halted_aligned = { 1'h0, halted_i };
assign halted_flat1 = { 31'h00000000, halted_i };
assign halted_flat2 = { 31'h00000000, halted_i };
assign halted_flat3 = { 31'h00000000, halted_i };
assign halted_reshaped0 = { 31'h00000000, halted_i };
assign halted_reshaped1 = { 31'h00000000, halted_i };
assign halted_reshaped2 = { 31'h00000000, halted_i };
assign haltsum3 = { 31'h00000000, halted_i };
assign hartinfo_aligned = { 32'h00000000, hartinfo_i };
assign hartsel_idx0 = { dmcontrol_q[15:6], dmcontrol_q[25:21] };
assign hartsel_idx1 = dmcontrol_q[15:6];
assign hartsel_idx2 = dmcontrol_q[15:11];
assign hartsel_o = { dmcontrol_q[15:6], dmcontrol_q[25:16] };
assign havereset_d_aligned[0] = havereset_d;
assign havereset_q_aligned = { 1'h0, havereset_q };
assign ndmreset_o = dmcontrol_q[1];
assign progbuf_o = progbuf_q;
assign resumeack_aligned = { 1'h0, resumeack_i };
assign sbaccess_o = sbcs_q[19:17];
assign sbaddress_o = sbaddr_q;
assign sbautoincrement_o = sbcs_q[16];
assign { sbcs_d[31:29], sbcs_d[21], sbcs_d[11:0] } = { 3'h1, sbbusy_i, 12'h80f };
assign sbdata_o = sbdata_q;
assign sbreadonaddr_o = sbcs_q[20];
assign sbreadondata_o = sbcs_q[15];
assign selected_hart = dmcontrol_q[16];
assign unavailable_aligned = { 1'h0, unavailable_i };
endmodule
(* cells_not_processed = 1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1740.1-1812.10" *)
module \$paramod$38ced3394f1fba8e40a3783f4da982c2eea9558c\cdc_2phase_dst_clearable (rst_ni, clk_i, clear_i, valid_o, ready_i, async_req_i, async_ack_o, data_o, async_data_i);
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1773.3-1780.6" *)
wire _00_;
wire _01_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1777.18-1777.36" *)
wire _02_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1786.9-1786.48" *)
wire _03_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1786.40-1786.48" *)
wire _04_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1786.9-1786.36" *)
wire _05_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1778.19-1778.29" *)
wire _06_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1757.8-1757.17" *)
wire ack_dst_d;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1757.19-1757.28" *)
reg ack_dst_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1751.16-1751.27" *)
output async_ack_o;
wire async_ack_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1752.16-1752.28" *)
(* wiretype = "\\dmi_resp_t" *)
input [33:0] async_data_i;
wire [33:0] async_data_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1750.16-1750.27" *)
input async_req_i;
wire async_req_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1746.16-1746.23" *)
input clear_i;
wire clear_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1745.16-1745.21" *)
input clk_i;
wire clk_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1759.17-1759.27" *)
(* wiretype = "\\dmi_resp_t" *)
reg [33:0] data_dst_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1747.16-1747.22" *)
(* wiretype = "\\dmi_resp_t" *)
output [33:0] data_o;
wire [33:0] data_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1749.16-1749.23" *)
input ready_i;
wire ready_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1757.30-1757.40" *)
wire req_synced;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1757.42-1757.55" *)
reg req_synced_q1;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1744.16-1744.22" *)
input rst_ni;
wire rst_ni;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1748.16-1748.23" *)
output valid_o;
wire valid_o;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1791.5-1793.6" *)
always @(posedge clk_i)
if (_03_) data_dst_q <= async_data_i;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1795.3-1805.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) ack_dst_q <= 1'h0;
else if (_01_) ack_dst_q <= ack_dst_d;
assign _01_ = | { _02_, clear_i };
assign _02_ = valid_o && (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1777.18-1777.36" *) ready_i;
assign _03_ = _05_ && (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1786.9-1786.48" *) _04_;
assign _04_ = ! (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1786.40-1786.48" *) valid_o;
assign _05_ = req_synced != (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1786.9-1786.36" *) req_synced_q1;
assign valid_o = ack_dst_q != (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1808.21-1808.47" *) req_synced_q1;
assign _06_ = ~ (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1778.19-1778.29" *) ack_dst_q;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1795.3-1805.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) req_synced_q1 <= 1'h0;
else req_synced_q1 <= req_synced;
assign _00_ = _02_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1777.14-1779.8" *) _06_ : 1'hx;
assign ack_dst_d = clear_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1775.5-1779.8" *) 1'h0 : _00_;
(* module_not_derived = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1763.3-1770.5" *)
\$paramod$f7f58dd6ce736fb4beabd5397d315fdd90d5df9e\sync i_sync (
.clk_i(clk_i),
.rst_ni(rst_ni),
.serial_i(async_req_i),
.serial_o(req_synced)
);
assign async_ack_o = ack_dst_q;
assign data_o = data_dst_q;
endmodule
(* cells_not_processed = 1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1671.1-1735.10" *)
module \$paramod$38ced3394f1fba8e40a3783f4da982c2eea9558c\cdc_2phase_src_clearable (rst_ni, clk_i, clear_i, valid_i, ready_o, async_req_o, async_ack_i, data_i, async_data_o);
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1703.3-1713.6" *)
wire _00_;
wire _01_;
wire _02_;
wire _03_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1709.18-1709.36" *)
wire _04_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1710.20-1710.30" *)
wire _05_;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1687.32-1687.42" *)
wire ack_synced;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1682.16-1682.27" *)
input async_ack_i;
wire async_ack_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1683.16-1683.28" *)
(* wiretype = "\\dmi_resp_t" *)
output [33:0] async_data_o;
wire [33:0] async_data_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1681.16-1681.27" *)
output async_req_o;
wire async_req_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1677.16-1677.23" *)
input clear_i;
wire clear_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1676.16-1676.21" *)
input clk_i;
wire clk_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1678.16-1678.22" *)
(* wiretype = "\\dmi_resp_t" *)
input [33:0] data_i;
wire [33:0] data_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1689.17-1689.27" *)
(* wiretype = "\\dmi_resp_t" *)
reg [33:0] data_src_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1680.16-1680.23" *)
output ready_o;
wire ready_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1687.10-1687.19" *)
wire req_src_d;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1687.21-1687.30" *)
reg req_src_q;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1675.16-1675.22" *)
input rst_ni;
wire rst_ni;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1679.16-1679.23" *)
input valid_i;
wire valid_i;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1719.3-1725.6" *)
always @(posedge clk_i, negedge rst_ni)
if (!rst_ni) req_src_q <= 1'h0;
else if (_01_) req_src_q <= req_src_d;
(* \always_ff = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1715.5-1717.6" *)
always @(posedge clk_i)
if (_02_) data_src_q <= data_i;
assign _01_ = | { _04_, clear_i };
assign _03_ = ~ clear_i;
assign _02_ = & { _03_, _04_ };
assign ready_o = req_src_q == (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1728.21-1728.44" *) ack_synced;
assign _04_ = valid_i && (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1709.18-1709.36" *) ready_o;
assign _05_ = ~ (* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1710.20-1710.30" *) req_src_q;
assign _00_ = _04_ ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1709.14-1712.8" *) _05_ : 1'hx;
assign req_src_d = clear_i ? (* full_case = 32'd1 *) (* src = "build/baby_iguana_top.pickle.sv:0.0-0.0|/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1706.5-1712.8" *) 1'h0 : _00_;
(* module_not_derived = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:1692.3-1699.5" *)
\$paramod$f7f58dd6ce736fb4beabd5397d315fdd90d5df9e\sync i_sync (
.clk_i(clk_i),
.rst_ni(rst_ni),
.serial_i(async_ack_i),
.serial_o(ack_synced)
);
assign async_data_o = data_src_q;
assign async_req_o = req_src_q;
endmodule
(* cells_not_processed = 1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4873.1-5083.19" *)
module \$paramod$3cf1bba3ee2aa7c1453982cd2e859db4b0334b1e\dm_top (clk_i, rst_ni, testmode_i, ndmreset_o, dmactive_o, debug_req_o, unavailable_i, slave_req_i, slave_we_i, slave_addr_i, slave_be_i, slave_wdata_i, slave_rdata_o, master_req_o, master_add_o, master_we_o, master_wdata_o, master_be_o, master_gnt_i, master_r_valid_i, master_r_err_i
, master_r_other_err_i, master_r_rdata_i, dmi_rst_ni, dmi_req_valid_i, dmi_req_ready_o, dmi_resp_valid_o, dmi_resp_ready_i, hartinfo_i, dmi_req_i, dmi_resp_o);
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4931.37-4931.52" *)
wire clear_resumeack;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4883.33-4883.38" *)
input clk_i;
wire clk_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4933.37-4933.40" *)
(* wiretype = "\\command_t" *)
wire [31:0] cmd;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4932.37-4932.46" *)
wire cmd_valid;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4937.37-4937.44" *)
wire cmdbusy;
(* enum_value_000 = "\\CmdErrNone" *)
(* enum_value_001 = "\\CmdErrBusy" *)
(* enum_value_010 = "\\CmdErrNotSupported" *)
(* enum_value_011 = "\\CmdErrorException" *)
(* enum_value_100 = "\\CmdErrorHaltResume" *)
(* enum_value_101 = "\\CmdErrorBus" *)
(* enum_value_111 = "\\CmdErrorOther" *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4936.37-4936.45" *)
(* wiretype = "\\cmderr_e" *)
wire [2:0] cmderror;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4935.37-4935.51" *)
wire cmderror_valid;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4939.37-4939.50" *)
wire [63:0] data_csrs_mem;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4940.37-4940.50" *)
wire [63:0] data_mem_csrs;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4941.37-4941.47" *)
wire data_valid;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4889.33-4889.44" *)
output debug_req_o;
wire debug_req_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4888.33-4888.43" *)
output dmactive_o;
wire dmactive_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4918.33-4918.42" *)
(* wiretype = "\\dmi_req_t" *)
input [40:0] dmi_req_i;
wire [40:0] dmi_req_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4917.33-4917.48" *)
output dmi_req_ready_o;
wire dmi_req_ready_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4916.33-4916.48" *)
input dmi_req_valid_i;
wire dmi_req_valid_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4922.33-4922.43" *)
(* wiretype = "\\dmi_resp_t" *)
output [33:0] dmi_resp_o;
wire [33:0] dmi_resp_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4921.33-4921.49" *)
input dmi_resp_ready_i;
wire dmi_resp_ready_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4920.33-4920.49" *)
output dmi_resp_valid_o;
wire dmi_resp_valid_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4913.33-4913.43" *)
input dmi_rst_ni;
wire dmi_rst_ni;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4926.37-4926.43" *)
wire halted;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4929.37-4929.44" *)
wire haltreq;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4892.39-4892.49" *)
(* wiretype = "\\hartinfo_t" *)
input [31:0] hartinfo_i;
wire [31:0] hartinfo_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4943.37-4943.44" *)
wire [19:0] hartsel;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4902.33-4902.45" *)
output [63:0] master_add_o;
wire [63:0] master_add_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4905.33-4905.44" *)
output [7:0] master_be_o;
wire [7:0] master_be_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4906.33-4906.45" *)
input master_gnt_i;
wire master_gnt_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4908.33-4908.47" *)
input master_r_err_i;
wire master_r_err_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4909.33-4909.53" *)
input master_r_other_err_i;
wire master_r_other_err_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4910.33-4910.49" *)
input [63:0] master_r_rdata_i;
wire [63:0] master_r_rdata_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4907.33-4907.49" *)
input master_r_valid_i;
wire master_r_valid_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4901.33-4901.45" *)
output master_req_o;
wire master_req_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4904.33-4904.47" *)
output [63:0] master_wdata_o;
wire [63:0] master_wdata_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4903.33-4903.44" *)
output master_we_o;
wire master_we_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4942.37-4942.45" *)
wire ndmreset;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4887.33-4887.43" *)
output ndmreset_o;
wire ndmreset_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4938.37-4938.44" *)
wire [255:0] progbuf;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4928.37-4928.46" *)
wire resumeack;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4930.37-4930.46" *)
wire resumereq;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4885.33-4885.39" *)
input rst_ni;
wire rst_ni;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4950.37-4950.45" *)
wire [2:0] sbaccess;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4945.37-4945.55" *)
wire [63:0] sbaddress_csrs_sba;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4946.37-4946.55" *)
wire [63:0] sbaddress_sba_csrs;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4947.37-4947.58" *)
wire sbaddress_write_valid;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4949.37-4949.52" *)
wire sbautoincrement;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4957.37-4957.43" *)
wire sbbusy;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4955.37-4955.48" *)
wire [63:0] sbdata_read;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4953.37-4953.54" *)
wire sbdata_read_valid;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4956.37-4956.49" *)
wire sbdata_valid;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4952.37-4952.49" *)
wire [63:0] sbdata_write;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4954.37-4954.55" *)
wire sbdata_write_valid;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4959.37-4959.44" *)
wire [2:0] sberror;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4958.37-4958.50" *)
wire sberror_valid;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4948.37-4948.49" *)
wire sbreadonaddr;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4951.37-4951.49" *)
wire sbreadondata;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4896.33-4896.45" *)
input [63:0] slave_addr_i;
wire [63:0] slave_addr_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4897.33-4897.43" *)
input [7:0] slave_be_i;
wire [7:0] slave_be_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4899.33-4899.46" *)
output [63:0] slave_rdata_o;
wire [63:0] slave_rdata_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4894.33-4894.44" *)
input slave_req_i;
wire slave_req_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4898.33-4898.46" *)
input [63:0] slave_wdata_i;
wire [63:0] slave_wdata_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4895.33-4895.43" *)
input slave_we_i;
wire slave_we_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4886.33-4886.43" *)
input testmode_i;
wire testmode_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4891.33-4891.46" *)
input unavailable_i;
wire unavailable_i;
(* module_not_derived = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:4963.3-5012.5" *)
\$paramod$347fe71c49e01963bcd82bfabe5c4311a43ce920\dm_csrs i_dm_csrs (
.clear_resumeack_o(clear_resumeack),
.clk_i(clk_i),
.cmd_o(cmd),
.cmd_valid_o(cmd_valid),
.cmdbusy_i(cmdbusy),
.cmderror_i(cmderror),
.cmderror_valid_i(cmderror_valid),
.data_i(data_mem_csrs),
.data_o(data_csrs_mem),
.data_valid_i(data_valid),
.dmactive_o(dmactive_o),
.dmi_req_i(dmi_req_i),
.dmi_req_ready_o(dmi_req_ready_o),
.dmi_req_valid_i(dmi_req_valid_i),
.dmi_resp_o(dmi_resp_o),
.dmi_resp_ready_i(dmi_resp_ready_i),
.dmi_resp_valid_o(dmi_resp_valid_o),
.dmi_rst_ni(dmi_rst_ni),
.halted_i(halted),
.haltreq_o(haltreq),
.hartinfo_i(hartinfo_i),
.hartsel_o(hartsel),
.ndmreset_o(ndmreset),
.progbuf_o(progbuf),
.resumeack_i(resumeack),
.resumereq_o(resumereq),
.rst_ni(rst_ni),
.sbaccess_o(sbaccess),
.sbaddress_i(sbaddress_sba_csrs),
.sbaddress_o(sbaddress_csrs_sba),
.sbaddress_write_valid_o(sbaddress_write_valid),
.sbautoincrement_o(sbautoincrement),
.sbbusy_i(sbbusy),
.sbdata_i(sbdata_read),
.sbdata_o(sbdata_write),
.sbdata_read_valid_o(sbdata_read_valid),
.sbdata_valid_i(sbdata_valid),
.sbdata_write_valid_o(sbdata_write_valid),
.sberror_i(sberror),
.sberror_valid_i(sberror_valid),
.sbreadonaddr_o(sbreadonaddr),
.sbreadondata_o(sbreadondata),
.testmode_i(testmode_i),
.unavailable_i(unavailable_i)
);
(* module_not_derived = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:5050.3-5081.5" *)
\$paramod$e22adeaf5eb5338a46d8ba81a9e74d8e3d4962e1\dm_mem i_dm_mem (
.addr_i(slave_addr_i),
.be_i(slave_be_i),
.clear_resumeack_i(clear_resumeack),
.clk_i(clk_i),
.cmd_i(cmd),
.cmd_valid_i(cmd_valid),
.cmdbusy_o(cmdbusy),
.cmderror_o(cmderror),
.cmderror_valid_o(cmderror_valid),
.data_i(data_csrs_mem),
.data_o(data_mem_csrs),
.data_valid_o(data_valid),
.debug_req_o(debug_req_o),
.halted_o(halted),
.haltreq_i(haltreq),
.hartsel_i(hartsel),
.ndmreset_i(ndmreset),
.progbuf_i(progbuf),
.rdata_o(slave_rdata_o),
.req_i(slave_req_i),
.resumereq_i(resumereq),
.resuming_o(resumeack),
.rst_ni(rst_ni),
.wdata_i(slave_wdata_i),
.we_i(slave_we_i)
);
(* module_not_derived = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:5014.3-5048.5" *)
\$paramod$578d4d815db3db7bef3f8d5ed31ac23e3db5d81b\dm_sba i_dm_sba (
.clk_i(clk_i),
.dmactive_i(dmactive_o),
.master_add_o(master_add_o),
.master_be_o(master_be_o),
.master_gnt_i(master_gnt_i),
.master_r_err_i(master_r_err_i),
.master_r_other_err_i(master_r_other_err_i),
.master_r_rdata_i(master_r_rdata_i),
.master_r_valid_i(master_r_valid_i),
.master_req_o(master_req_o),
.master_wdata_o(master_wdata_o),
.master_we_o(master_we_o),
.rst_ni(rst_ni),
.sbaccess_i(sbaccess),
.sbaddress_i(sbaddress_csrs_sba),
.sbaddress_o(sbaddress_sba_csrs),
.sbaddress_write_valid_i(sbaddress_write_valid),
.sbautoincrement_i(sbautoincrement),
.sbbusy_o(sbbusy),
.sbdata_i(sbdata_write),
.sbdata_o(sbdata_read),
.sbdata_read_valid_i(sbdata_read_valid),
.sbdata_valid_o(sbdata_valid),
.sbdata_write_valid_i(sbdata_write_valid),
.sberror_o(sberror),
.sberror_valid_o(sberror_valid),
.sbreadonaddr_i(sbreadonaddr),
.sbreadondata_i(sbreadondata)
);
assign ndmreset_o = ndmreset;
endmodule
(* cells_not_processed = 1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:7063.1-11181.10" *)
module \$paramod$4dc9cd64b1a21a9d65f5fcbc72f43abe868eb8aa\cheshire_bootrom (clk_i, rst_ni, req_i, addr_i, data_o);
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:7070.34-7070.40" *)
input [15:0] addr_i;
wire [15:0] addr_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:7067.34-7067.39" *)
input clk_i;
wire clk_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:7071.34-7071.40" *)
output [31:0] data_o;
wire [31:0] data_o;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:7069.34-7069.39" *)
input req_i;
wire req_i;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:7068.34-7068.40" *)
input rst_ni;
wire rst_ni;
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:7074.34-7074.38" *)
wire [11:0] word;
(* full_case = 32'd1 *)
(* src = "/home/janniss/Documents/iguana/build/baby_iguana_top.pickle.sv:7080.9-11178.16" *)
reg [31:0] \$auto$proc_rom.cc:150:do_switch$987 [4095:0];
initial begin
\$auto$proc_rom.cc:150:do_switch$987 [0] = 32'd1862402327;
\$auto$proc_rom.cc:150:do_switch$987 [1] = 32'd4286644499;
\$auto$proc_rom.cc:150:do_switch$987 [2] = 32'd8599;
\$auto$proc_rom.cc:150:do_switch$987 [3] = 32'd1392607635;
\$auto$proc_rom.cc:150:do_switch$987 [4] = 32'd1107378305;
\$auto$proc_rom.cc:150:do_switch$987 [5] = 32'd1124156033;
\$auto$proc_rom.cc:150:do_switch$987 [6] = 32'd1140933505;
\$auto$proc_rom.cc:150:do_switch$987 [7] = 32'd1157710977;
\$auto$proc_rom.cc:150:do_switch$987 [8] = 32'd1174488449;
\$auto$proc_rom.cc:150:do_switch$987 [9] = 32'd1191265921;
\$auto$proc_rom.cc:150:do_switch$987 [10] = 32'd1208043393;
\$auto$proc_rom.cc:150:do_switch$987 [11] = 32'd1224820865;
\$auto$proc_rom.cc:150:do_switch$987 [12] = 32'd1241598337;
\$auto$proc_rom.cc:150:do_switch$987 [13] = 32'd1258375809;
\$auto$proc_rom.cc:150:do_switch$987 [14] = 32'd1275153281;
\$auto$proc_rom.cc:150:do_switch$987 [15] = 32'd1291930753;
\$auto$proc_rom.cc:150:do_switch$987 [16] = 32'd1308708225;
\$auto$proc_rom.cc:150:do_switch$987 [17] = 32'd1325485697;
\$auto$proc_rom.cc:150:do_switch$987 [18] = 32'd16781975;
\$auto$proc_rom.cc:150:do_switch$987 [19] = 32'd4219634323;
\$auto$proc_rom.cc:150:do_switch$987 [20] = 32'd2686669693;
\$auto$proc_rom.cc:150:do_switch$987 [21] = 32'd2720202850;
\$auto$proc_rom.cc:150:do_switch$987 [22] = 32'd1124401250;
\$auto$proc_rom.cc:150:do_switch$987 [23] = 32'd6465571;
\$auto$proc_rom.cc:150:do_switch$987 [24] = 32'd1124156033;
\$auto$proc_rom.cc:150:do_switch$987 [25] = 32'd4111;
\$auto$proc_rom.cc:150:do_switch$987 [26] = 32'd333447407;
\$auto$proc_rom.cc:150:do_switch$987 [27] = 32'd84320265;
\$auto$proc_rom.cc:150:do_switch$987 [28] = 32'd1402131;
\$auto$proc_rom.cc:150:do_switch$987 [29] = 32'd16777879;
\$auto$proc_rom.cc:150:do_switch$987 [30] = 32'd4173496979;
\$auto$proc_rom.cc:150:do_switch$987 [31] = 32'd10658339;
\$auto$proc_rom.cc:150:do_switch$987 [32] = 32'd273678451;
\$auto$proc_rom.cc:150:do_switch$987 [33] = 32'd289521653;
\$auto$proc_rom.cc:150:do_switch$987 [34] = 32'd3760382982;
\$auto$proc_rom.cc:150:do_switch$987 [35] = 32'd15696938;
\$auto$proc_rom.cc:150:do_switch$987 [36] = 32'd2242518208;
\$auto$proc_rom.cc:150:do_switch$987 [37] = 32'd3154216211;
\$auto$proc_rom.cc:150:do_switch$987 [38] = 32'd562041071;
\$auto$proc_rom.cc:150:do_switch$987 [39] = 32'd15697186;
\$auto$proc_rom.cc:150:do_switch$987 [40] = 32'd2242517280;
\$auto$proc_rom.cc:150:do_switch$987 [41] = 32'd3204547859;
\$auto$proc_rom.cc:150:do_switch$987 [42] = 32'd545263855;
\$auto$proc_rom.cc:150:do_switch$987 [43] = 32'd15697186;
\$auto$proc_rom.cc:150:do_switch$987 [44] = 32'd2242517472;
\$auto$proc_rom.cc:150:do_switch$987 [45] = 32'd3254879507;
\$auto$proc_rom.cc:150:do_switch$987 [46] = 32'd528486639;
\$auto$proc_rom.cc:150:do_switch$987 [47] = 32'd15697186;
\$auto$proc_rom.cc:150:do_switch$987 [48] = 32'd2242516992;
\$auto$proc_rom.cc:150:do_switch$987 [49] = 32'd3305211155;
\$auto$proc_rom.cc:150:do_switch$987 [50] = 32'd511709423;
\$auto$proc_rom.cc:150:do_switch$987 [51] = 32'd15697186;
\$auto$proc_rom.cc:150:do_switch$987 [52] = 32'd1677858112;
\$auto$proc_rom.cc:150:do_switch$987 [53] = 32'd2242535586;
\$auto$proc_rom.cc:150:do_switch$987 [54] = 32'd3355542803;
\$auto$proc_rom.cc:150:do_switch$987 [55] = 32'd275710273;
\$auto$proc_rom.cc:150:do_switch$987 [56] = 32'd1899568416;
\$auto$proc_rom.cc:150:do_switch$987 [57] = 32'd1444644266;
\$auto$proc_rom.cc:150:do_switch$987 [58] = 32'd1429667861;
\$auto$proc_rom.cc:150:do_switch$987 [59] = 32'd3408384;
\$auto$proc_rom.cc:150:do_switch$987 [60] = 32'd328979;
\$auto$proc_rom.cc:150:do_switch$987 [61] = 32'd4163042310;
\$auto$proc_rom.cc:150:do_switch$987 [62] = 32'd3221419046;
\$auto$proc_rom.cc:150:do_switch$987 [63] = 32'd284148226;
\$auto$proc_rom.cc:150:do_switch$987 [64] = 32'd2649888;
\$auto$proc_rom.cc:150:do_switch$987 [65] = 32'd1904218351;
\$auto$proc_rom.cc:150:do_switch$987 [66] = 32'd402871;
\$auto$proc_rom.cc:150:do_switch$987 [67] = 32'd2818934163;
\$auto$proc_rom.cc:150:do_switch$987 [68] = 32'd284098600;
\$auto$proc_rom.cc:150:do_switch$987 [69] = 32'd1166082864;
\$auto$proc_rom.cc:150:do_switch$987 [70] = 32'd284098600;
\$auto$proc_rom.cc:150:do_switch$987 [71] = 32'd2623248;
\$auto$proc_rom.cc:150:do_switch$987 [72] = 32'd1072697583;
\$auto$proc_rom.cc:150:do_switch$987 [73] = 32'd3317169517;
\$auto$proc_rom.cc:150:do_switch$987 [74] = 32'd2241003710;
\$auto$proc_rom.cc:150:do_switch$987 [75] = 32'd2671109;
\$auto$proc_rom.cc:150:do_switch$987 [76] = 32'd22024431;
\$auto$proc_rom.cc:150:do_switch$987 [77] = 32'd284098600;
\$auto$proc_rom.cc:150:do_switch$987 [78] = 32'd2248804144;
\$auto$proc_rom.cc:150:do_switch$987 [79] = 32'd2639233;
\$auto$proc_rom.cc:150:do_switch$987 [80] = 32'd506466543;
\$auto$proc_rom.cc:150:do_switch$987 [81] = 32'd1166344272;
\$auto$proc_rom.cc:150:do_switch$987 [82] = 32'd284098600;
\$auto$proc_rom.cc:150:do_switch$987 [83] = 32'd1166155152;
\$auto$proc_rom.cc:150:do_switch$987 [84] = 32'd1879049399;
\$auto$proc_rom.cc:150:do_switch$987 [85] = 32'd296467;
\$auto$proc_rom.cc:150:do_switch$987 [86] = 32'd2639521;
\$auto$proc_rom.cc:150:do_switch$987 [87] = 32'd1460670703;
\$auto$proc_rom.cc:150:do_switch$987 [88] = 32'd296339;
\$auto$proc_rom.cc:150:do_switch$987 [89] = 32'd3405874451;
\$auto$proc_rom.cc:150:do_switch$987 [90] = 32'd343937263;
\$auto$proc_rom.cc:150:do_switch$987 [91] = 32'd1141196178;
\$auto$proc_rom.cc:150:do_switch$987 [92] = 32'd2257806985;
\$auto$proc_rom.cc:150:do_switch$987 [93] = 32'd370376710;
\$auto$proc_rom.cc:150:do_switch$987 [94] = 32'd2621940;
\$auto$proc_rom.cc:150:do_switch$987 [95] = 32'd1427116271;
\$auto$proc_rom.cc:150:do_switch$987 [96] = 32'd32773523;
\$auto$proc_rom.cc:150:do_switch$987 [97] = 32'd3439428883;
\$auto$proc_rom.cc:150:do_switch$987 [98] = 32'd310382831;
\$auto$proc_rom.cc:150:do_switch$987 [99] = 32'd4111;
\$auto$proc_rom.cc:150:do_switch$987 [100] = 32'd75384321;
\$auto$proc_rom.cc:150:do_switch$987 [101] = 32'd296339;
\$auto$proc_rom.cc:150:do_switch$987 [102] = 32'd2483176705;
\$auto$proc_rom.cc:150:do_switch$987 [103] = 32'd1950511330;
\$auto$proc_rom.cc:150:do_switch$987 [104] = 32'd1629582498;
\$auto$proc_rom.cc:150:do_switch$987 [105] = 32'd289505410;
\$auto$proc_rom.cc:150:do_switch$987 [106] = 32'd70770722;
\$auto$proc_rom.cc:150:do_switch$987 [107] = 32'd68354560;
\$auto$proc_rom.cc:150:do_switch$987 [108] = 32'd1409810436;
\$auto$proc_rom.cc:150:do_switch$987 [109] = 32'd2241029617;
\$auto$proc_rom.cc:150:do_switch$987 [110] = 32'd3825606661;
\$auto$proc_rom.cc:150:do_switch$987 [111] = 32'd341840111;
\$auto$proc_rom.cc:150:do_switch$987 [112] = 32'd33559863;
\$auto$proc_rom.cc:150:do_switch$987 [113] = 32'd328979;
\$auto$proc_rom.cc:150:do_switch$987 [114] = 32'd3959419119;
\$auto$proc_rom.cc:150:do_switch$987 [115] = 32'd1191790676;
\$auto$proc_rom.cc:150:do_switch$987 [116] = 32'd48662115;
\$auto$proc_rom.cc:150:do_switch$987 [117] = 32'd427931;
\$auto$proc_rom.cc:150:do_switch$987 [118] = 32'd16214627;
\$auto$proc_rom.cc:150:do_switch$987 [119] = 32'd2232667037;
\$auto$proc_rom.cc:150:do_switch$987 [120] = 32'd284152193;
\$auto$proc_rom.cc:150:do_switch$987 [121] = 32'd7539936;
\$auto$proc_rom.cc:150:do_switch$987 [122] = 32'd3220508752;
\$auto$proc_rom.cc:150:do_switch$987 [123] = 32'd2623751949;
\$auto$proc_rom.cc:150:do_switch$987 [124] = 32'd2232615143;
\$auto$proc_rom.cc:150:do_switch$987 [125] = 32'd284153217;
\$auto$proc_rom.cc:150:do_switch$987 [126] = 32'd3086289824;
\$auto$proc_rom.cc:150:do_switch$987 [127] = 32'd3548480787;
\$auto$proc_rom.cc:150:do_switch$987 [128] = 32'd184553711;
\$auto$proc_rom.cc:150:do_switch$987 [129] = 32'd1212987341;
\$auto$proc_rom.cc:150:do_switch$987 [130] = 32'd3615589651;
\$auto$proc_rom.cc:150:do_switch$987 [131] = 32'd171970799;
\$auto$proc_rom.cc:150:do_switch$987 [132] = 32'd2232664025;
\$auto$proc_rom.cc:150:do_switch$987 [133] = 32'd284151553;
\$auto$proc_rom.cc:150:do_switch$987 [134] = 32'd1409812896;
\$auto$proc_rom.cc:150:do_switch$987 [135] = 32'd3967807727;
\$auto$proc_rom.cc:150:do_switch$987 [136] = 32'd1365030873;
\$auto$proc_rom.cc:150:do_switch$987 [137] = 32'd394416392;
\$auto$proc_rom.cc:150:do_switch$987 [138] = 32'd2432767234;
\$auto$proc_rom.cc:150:do_switch$987 [139] = 32'd2156039517;
\$auto$proc_rom.cc:150:do_switch$987 [140] = 32'd1426609500;
\$auto$proc_rom.cc:150:do_switch$987 [141] = 32'd352458626;
\$auto$proc_rom.cc:150:do_switch$987 [142] = 32'd2371719425;
\$auto$proc_rom.cc:150:do_switch$987 [143] = 32'd1499234434;
\$auto$proc_rom.cc:150:do_switch$987 [144] = 32'd394418440;
\$auto$proc_rom.cc:150:do_switch$987 [145] = 32'd2432767234;
\$auto$proc_rom.cc:150:do_switch$987 [146] = 32'd2156039517;
\$auto$proc_rom.cc:150:do_switch$987 [147] = 32'd1560829276;
\$auto$proc_rom.cc:150:do_switch$987 [148] = 32'd352458626;
\$auto$proc_rom.cc:150:do_switch$987 [149] = 32'd2371719425;
\$auto$proc_rom.cc:150:do_switch$987 [150] = 32'd1098678402;
\$auto$proc_rom.cc:150:do_switch$987 [151] = 32'd394412328;
\$auto$proc_rom.cc:150:do_switch$987 [152] = 32'd2432767234;
\$auto$proc_rom.cc:150:do_switch$987 [153] = 32'd2156039517;
\$auto$proc_rom.cc:150:do_switch$987 [154] = 32'd1897758850;
\$auto$proc_rom.cc:150:do_switch$987 [155] = 32'd3771393190;
\$auto$proc_rom.cc:150:do_switch$987 [156] = 32'd4166188110;
\$auto$proc_rom.cc:150:do_switch$987 [157] = 32'd4032492630;
\$auto$proc_rom.cc:150:do_switch$987 [158] = 32'd3898772146;
\$auto$proc_rom.cc:150:do_switch$987 [159] = 32'd3765101670;
\$auto$proc_rom.cc:150:do_switch$987 [160] = 32'd3902991494;
\$auto$proc_rom.cc:150:do_switch$987 [161] = 32'd4128500830;
\$auto$proc_rom.cc:150:do_switch$987 [162] = 32'd2361786424;
\$auto$proc_rom.cc:150:do_switch$987 [163] = 32'd2309916970;
\$auto$proc_rom.cc:150:do_switch$987 [164] = 32'd2335869494;
\$auto$proc_rom.cc:150:do_switch$987 [165] = 32'd2353171774;
\$auto$proc_rom.cc:150:do_switch$987 [166] = 32'd3793585366;
\$auto$proc_rom.cc:150:do_switch$987 [167] = 32'd34084755;
\$auto$proc_rom.cc:150:do_switch$987 [168] = 32'd2226361217;
\$auto$proc_rom.cc:150:do_switch$987 [169] = 32'd2497069479;
\$auto$proc_rom.cc:150:do_switch$987 [170] = 32'd1885570134;
\$auto$proc_rom.cc:150:do_switch$987 [171] = 32'd2250377469;
\$auto$proc_rom.cc:150:do_switch$987 [172] = 32'd67471058;
\$auto$proc_rom.cc:150:do_switch$987 [173] = 32'd85165518;
\$auto$proc_rom.cc:150:do_switch$987 [174] = 32'd2567045632;
\$auto$proc_rom.cc:150:do_switch$987 [175] = 32'd4271118819;
\$auto$proc_rom.cc:150:do_switch$987 [176] = 32'd27984947;
\$auto$proc_rom.cc:150:do_switch$987 [177] = 32'd8686515;
\$auto$proc_rom.cc:150:do_switch$987 [178] = 32'd855395;
\$auto$proc_rom.cc:150:do_switch$987 [179] = 32'd4294198531;
\$auto$proc_rom.cc:150:do_switch$987 [180] = 32'd1082885683;
\$auto$proc_rom.cc:150:do_switch$987 [181] = 32'd343770834;
\$auto$proc_rom.cc:150:do_switch$987 [182] = 32'd2567079374;
\$auto$proc_rom.cc:150:do_switch$987 [183] = 32'd4270528739;
\$auto$proc_rom.cc:150:do_switch$987 [184] = 32'd4237530346;
\$auto$proc_rom.cc:150:do_switch$987 [185] = 32'd2204303404;
\$auto$proc_rom.cc:150:do_switch$987 [186] = 32'd469893644;
\$auto$proc_rom.cc:150:do_switch$987 [187] = 32'd1096059571;
\$auto$proc_rom.cc:150:do_switch$987 [188] = 32'd34364435;
\$auto$proc_rom.cc:150:do_switch$987 [189] = 32'd25885795;
\$auto$proc_rom.cc:150:do_switch$987 [190] = 32'd176522790;
\$auto$proc_rom.cc:150:do_switch$987 [191] = 32'd2244904658;
\$auto$proc_rom.cc:150:do_switch$987 [192] = 32'd33555731;
\$auto$proc_rom.cc:150:do_switch$987 [193] = 32'd2567046277;
\$auto$proc_rom.cc:150:do_switch$987 [194] = 32'd4287293667;
\$auto$proc_rom.cc:150:do_switch$987 [195] = 32'd1682333926;
\$auto$proc_rom.cc:150:do_switch$987 [196] = 32'd2044881158;
\$auto$proc_rom.cc:150:do_switch$987 [197] = 32'd2057468482;
\$auto$proc_rom.cc:150:do_switch$987 [198] = 32'd1810004738;
\$auto$proc_rom.cc:150:do_switch$987 [199] = 32'd1822583874;
\$auto$proc_rom.cc:150:do_switch$987 [200] = 32'd2233888002;
\$auto$proc_rom.cc:150:do_switch$987 [201] = 32'd1629840550;
\$auto$proc_rom.cc:150:do_switch$987 [202] = 32'd2228650114;
\$auto$proc_rom.cc:150:do_switch$987 [203] = 32'd1901969233;
\$auto$proc_rom.cc:150:do_switch$987 [204] = 32'd1088873606;
\$auto$proc_rom.cc:150:do_switch$987 [205] = 32'd4098817062;
\$auto$proc_rom.cc:150:do_switch$987 [206] = 32'd4165656738;
\$auto$proc_rom.cc:150:do_switch$987 [207] = 32'd2386202306;
\$auto$proc_rom.cc:150:do_switch$987 [208] = 32'd2227062854;
\$auto$proc_rom.cc:150:do_switch$987 [209] = 32'd1073805715;
\$auto$proc_rom.cc:150:do_switch$987 [210] = 32'd2298931029;
\$auto$proc_rom.cc:150:do_switch$987 [211] = 32'd4277203091;
\$auto$proc_rom.cc:150:do_switch$987 [212] = 32'd168402019;
\$auto$proc_rom.cc:150:do_switch$987 [213] = 32'd33617811;
\$auto$proc_rom.cc:150:do_switch$987 [214] = 32'd43206913;
\$auto$proc_rom.cc:150:do_switch$987 [215] = 32'd3822388752;
\$auto$proc_rom.cc:150:do_switch$987 [216] = 32'd2265597825;
\$auto$proc_rom.cc:150:do_switch$987 [217] = 32'd853099429;
\$auto$proc_rom.cc:150:do_switch$987 [218] = 32'd33555475;
\$auto$proc_rom.cc:150:do_switch$987 [219] = 32'd2321784865;
\$auto$proc_rom.cc:150:do_switch$987 [220] = 32'd2384069255;
\$auto$proc_rom.cc:150:do_switch$987 [221] = 32'd64913203;
\$auto$proc_rom.cc:150:do_switch$987 [222] = 32'd268399379;
\$auto$proc_rom.cc:150:do_switch$987 [223] = 32'd50532251;
\$auto$proc_rom.cc:150:do_switch$987 [224] = 32'd6456123;
\$auto$proc_rom.cc:150:do_switch$987 [225] = 32'd267612947;
\$auto$proc_rom.cc:150:do_switch$987 [226] = 32'd31712355;
\$auto$proc_rom.cc:150:do_switch$987 [227] = 32'd268432147;
\$auto$proc_rom.cc:150:do_switch$987 [228] = 32'd255002501;
\$auto$proc_rom.cc:150:do_switch$987 [229] = 32'd262340855;
\$auto$proc_rom.cc:150:do_switch$987 [230] = 32'd1395916399;
\$auto$proc_rom.cc:150:do_switch$987 [231] = 32'd2028143582;
\$auto$proc_rom.cc:150:do_switch$987 [232] = 32'd4078173662;
\$auto$proc_rom.cc:150:do_switch$987 [233] = 32'd123928608;
\$auto$proc_rom.cc:150:do_switch$987 [234] = 32'd241370627;
\$auto$proc_rom.cc:150:do_switch$987 [235] = 32'd2539851785;
\$auto$proc_rom.cc:150:do_switch$987 [236] = 32'd3957919241;
\$auto$proc_rom.cc:150:do_switch$987 [237] = 32'd2221098945;
\$auto$proc_rom.cc:150:do_switch$987 [238] = 32'd1200169214;
\$auto$proc_rom.cc:150:do_switch$987 [239] = 32'd587104355;
\$auto$proc_rom.cc:150:do_switch$987 [240] = 32'd50333587;
\$auto$proc_rom.cc:150:do_switch$987 [241] = 32'd15794211;
\$auto$proc_rom.cc:150:do_switch$987 [242] = 32'd2338539397;
\$auto$proc_rom.cc:150:do_switch$987 [243] = 32'd2215842308;
\$auto$proc_rom.cc:150:do_switch$987 [244] = 32'd145949191;
\$auto$proc_rom.cc:150:do_switch$987 [245] = 32'd51576868;
\$auto$proc_rom.cc:150:do_switch$987 [246] = 32'd2149778128;
\$auto$proc_rom.cc:150:do_switch$987 [247] = 32'd126221928;
\$auto$proc_rom.cc:150:do_switch$987 [248] = 32'd4042229894;
\$auto$proc_rom.cc:150:do_switch$987 [249] = 32'd1621551263;
\$auto$proc_rom.cc:150:do_switch$987 [250] = 32'd1960993798;
\$auto$proc_rom.cc:150:do_switch$987 [251] = 32'd2040691010;
\$auto$proc_rom.cc:150:do_switch$987 [252] = 32'd2156028257;
\$auto$proc_rom.cc:150:do_switch$987 [253] = 32'd33617811;
\$auto$proc_rom.cc:150:do_switch$987 [254] = 32'd16840979;
\$auto$proc_rom.cc:150:do_switch$987 [255] = 32'd101712531;
\$auto$proc_rom.cc:150:do_switch$987 [256] = 32'd43242405;
\$auto$proc_rom.cc:150:do_switch$987 [257] = 32'd3215524880;
\$auto$proc_rom.cc:150:do_switch$987 [258] = 32'd2717971;
\$auto$proc_rom.cc:150:do_switch$987 [259] = 32'd2265597825;
\$auto$proc_rom.cc:150:do_switch$987 [260] = 32'd4194901475;
\$auto$proc_rom.cc:150:do_switch$987 [261] = 32'd34119187;
\$auto$proc_rom.cc:150:do_switch$987 [262] = 32'd34496019;
\$auto$proc_rom.cc:150:do_switch$987 [263] = 32'd4069753606;
\$auto$proc_rom.cc:150:do_switch$987 [264] = 32'd425918480;
\$auto$proc_rom.cc:150:do_switch$987 [265] = 32'd4100131336;
\$auto$proc_rom.cc:150:do_switch$987 [266] = 32'd51577799;
\$auto$proc_rom.cc:150:do_switch$987 [267] = 32'd2153972224;
\$auto$proc_rom.cc:150:do_switch$987 [268] = 32'd252904039;
\$auto$proc_rom.cc:150:do_switch$987 [269] = 32'd261292800;
\$auto$proc_rom.cc:150:do_switch$987 [270] = 32'd2685993472;
\$auto$proc_rom.cc:150:do_switch$987 [271] = 32'd32999779;
\$auto$proc_rom.cc:150:do_switch$987 [272] = 32'd53675909;
\$auto$proc_rom.cc:150:do_switch$987 [273] = 32'd262340855;
\$auto$proc_rom.cc:150:do_switch$987 [274] = 32'd3924033507;
\$auto$proc_rom.cc:150:do_switch$987 [275] = 32'd2397306823;
\$auto$proc_rom.cc:150:do_switch$987 [276] = 32'd521401346;
\$auto$proc_rom.cc:150:do_switch$987 [277] = 32'd1595081224;
\$auto$proc_rom.cc:150:do_switch$987 [278] = 32'd4175626767;
\$auto$proc_rom.cc:150:do_switch$987 [279] = 32'd51639783;
\$auto$proc_rom.cc:150:do_switch$987 [280] = 32'd261292544;
\$auto$proc_rom.cc:150:do_switch$987 [281] = 32'd43188992;
\$auto$proc_rom.cc:150:do_switch$987 [282] = 32'd2506293760;
\$auto$proc_rom.cc:150:do_switch$987 [283] = 32'd2689663079;
\$auto$proc_rom.cc:150:do_switch$987 [284] = 32'd139952483;
\$auto$proc_rom.cc:150:do_switch$987 [285] = 32'd53675909;
\$auto$proc_rom.cc:150:do_switch$987 [286] = 32'd262340855;
\$auto$proc_rom.cc:150:do_switch$987 [287] = 32'd2581856243;
\$auto$proc_rom.cc:150:do_switch$987 [288] = 32'd3072720871;
\$auto$proc_rom.cc:150:do_switch$987 [289] = 32'd34119187;
\$auto$proc_rom.cc:150:do_switch$987 [290] = 32'd34496019;
\$auto$proc_rom.cc:150:do_switch$987 [291] = 32'd217975651;
\$auto$proc_rom.cc:150:do_switch$987 [292] = 32'd34085011;
\$auto$proc_rom.cc:150:do_switch$987 [293] = 32'd34134163;
\$auto$proc_rom.cc:150:do_switch$987 [294] = 32'd217613667;
\$auto$proc_rom.cc:150:do_switch$987 [295] = 32'd2187544769;
\$auto$proc_rom.cc:150:do_switch$987 [296] = 32'd1216941854;
\$auto$proc_rom.cc:150:do_switch$987 [297] = 32'd186549603;
\$auto$proc_rom.cc:150:do_switch$987 [298] = 32'd33556627;
\$auto$proc_rom.cc:150:do_switch$987 [299] = 32'd4078406371;
\$auto$proc_rom.cc:150:do_switch$987 [300] = 32'd2274592958;
\$auto$proc_rom.cc:150:do_switch$987 [301] = 32'd2201158152;
\$auto$proc_rom.cc:150:do_switch$987 [302] = 32'd2274557991;
\$auto$proc_rom.cc:150:do_switch$987 [303] = 32'd143851544;
\$auto$proc_rom.cc:150:do_switch$987 [304] = 32'd2294528;
\$auto$proc_rom.cc:150:do_switch$987 [305] = 32'd143916819;
\$auto$proc_rom.cc:150:do_switch$987 [306] = 32'd2430796288;
\$auto$proc_rom.cc:150:do_switch$987 [307] = 32'd127136023;
\$auto$proc_rom.cc:150:do_switch$987 [308] = 32'd3073966592;
\$auto$proc_rom.cc:150:do_switch$987 [309] = 32'd67274851;
\$auto$proc_rom.cc:150:do_switch$987 [310] = 32'd1930682585;
\$auto$proc_rom.cc:150:do_switch$987 [311] = 32'd274923715;
\$auto$proc_rom.cc:150:do_switch$987 [312] = 32'd4175628291;
\$auto$proc_rom.cc:150:do_switch$987 [313] = 32'd51640263;
\$auto$proc_rom.cc:150:do_switch$987 [314] = 32'd2497905152;
\$auto$proc_rom.cc:150:do_switch$987 [315] = 32'd4276352103;
\$auto$proc_rom.cc:150:do_switch$987 [316] = 32'd249817863;
\$auto$proc_rom.cc:150:do_switch$987 [317] = 32'd127138825;
\$auto$proc_rom.cc:150:do_switch$987 [318] = 32'd2313355776;
\$auto$proc_rom.cc:150:do_switch$987 [319] = 32'd3212441609;
\$auto$proc_rom.cc:150:do_switch$987 [320] = 32'd4257939;
\$auto$proc_rom.cc:150:do_switch$987 [321] = 32'd34118499;
\$auto$proc_rom.cc:150:do_switch$987 [322] = 32'd8452243;
\$auto$proc_rom.cc:150:do_switch$987 [323] = 32'd3959982819;
\$auto$proc_rom.cc:150:do_switch$987 [324] = 32'd34046995;
\$auto$proc_rom.cc:150:do_switch$987 [325] = 32'd2361523;
\$auto$proc_rom.cc:150:do_switch$987 [326] = 32'd33555219;
\$auto$proc_rom.cc:150:do_switch$987 [327] = 32'd4268261411;
\$auto$proc_rom.cc:150:do_switch$987 [328] = 32'd3179087749;
\$auto$proc_rom.cc:150:do_switch$987 [329] = 32'd3922195427;
\$auto$proc_rom.cc:150:do_switch$987 [330] = 32'd33555219;
\$auto$proc_rom.cc:150:do_switch$987 [331] = 32'd4033319907;
\$auto$proc_rom.cc:150:do_switch$987 [332] = 32'd3859357667;
\$auto$proc_rom.cc:150:do_switch$987 [333] = 32'd33556371;
\$auto$proc_rom.cc:150:do_switch$987 [334] = 32'd2215884133;
\$auto$proc_rom.cc:150:do_switch$987 [335] = 32'd145949191;
\$auto$proc_rom.cc:150:do_switch$987 [336] = 32'd51576868;
\$auto$proc_rom.cc:150:do_switch$987 [337] = 32'd2149778096;
\$auto$proc_rom.cc:150:do_switch$987 [338] = 32'd126221928;
\$auto$proc_rom.cc:150:do_switch$987 [339] = 32'd143899985;
\$auto$proc_rom.cc:150:do_switch$987 [340] = 32'd2279801344;
\$auto$proc_rom.cc:150:do_switch$987 [341] = 32'd146008343;
\$auto$proc_rom.cc:150:do_switch$987 [342] = 32'd126157047;
\$auto$proc_rom.cc:150:do_switch$987 [343] = 32'd947759153;
\$auto$proc_rom.cc:150:do_switch$987 [344] = 32'd2291382089;
\$auto$proc_rom.cc:150:do_switch$987 [345] = 32'd2279866359;
\$auto$proc_rom.cc:150:do_switch$987 [346] = 32'd1128391688;
\$auto$proc_rom.cc:150:do_switch$987 [347] = 32'd107908707;
\$auto$proc_rom.cc:150:do_switch$987 [348] = 32'd2430812937;
\$auto$proc_rom.cc:150:do_switch$987 [349] = 32'd2562389102;
\$auto$proc_rom.cc:150:do_switch$987 [350] = 32'd102761235;
\$auto$proc_rom.cc:150:do_switch$987 [351] = 32'd6848547;
\$auto$proc_rom.cc:150:do_switch$987 [352] = 32'd4170430245;
\$auto$proc_rom.cc:150:do_switch$987 [353] = 32'd2657288704;
\$auto$proc_rom.cc:150:do_switch$987 [354] = 32'd143851528;
\$auto$proc_rom.cc:150:do_switch$987 [355] = 32'd2313355776;
\$auto$proc_rom.cc:150:do_switch$987 [356] = 32'd53732631;
\$auto$proc_rom.cc:150:do_switch$987 [357] = 32'd126157047;
\$auto$proc_rom.cc:150:do_switch$987 [358] = 32'd125831315;
\$auto$proc_rom.cc:150:do_switch$987 [359] = 32'd18022435;
\$auto$proc_rom.cc:150:do_switch$987 [360] = 32'd143898401;
\$auto$proc_rom.cc:150:do_switch$987 [361] = 32'd2380464640;
\$auto$proc_rom.cc:150:do_switch$987 [362] = 32'd2215895831;
\$auto$proc_rom.cc:150:do_switch$987 [363] = 32'd145949191;
\$auto$proc_rom.cc:150:do_switch$987 [364] = 32'd51576868;
\$auto$proc_rom.cc:150:do_switch$987 [365] = 32'd2149778816;
\$auto$proc_rom.cc:150:do_switch$987 [366] = 32'd126221928;
\$auto$proc_rom.cc:150:do_switch$987 [367] = 32'd4153652725;
\$auto$proc_rom.cc:150:do_switch$987 [368] = 32'd3885564416;
\$auto$proc_rom.cc:150:do_switch$987 [369] = 32'd125831059;
\$auto$proc_rom.cc:150:do_switch$987 [370] = 32'd15794211;
\$auto$proc_rom.cc:150:do_switch$987 [371] = 32'd3050653829;
\$auto$proc_rom.cc:150:do_switch$987 [372] = 32'd92276627;
\$auto$proc_rom.cc:150:do_switch$987 [373] = 32'd15794211;
\$auto$proc_rom.cc:150:do_switch$987 [374] = 32'd3185657989;
\$auto$proc_rom.cc:150:do_switch$987 [375] = 32'd102762387;
\$auto$proc_rom.cc:150:do_switch$987 [376] = 32'd15794211;
\$auto$proc_rom.cc:150:do_switch$987 [377] = 32'd3052488837;
\$auto$proc_rom.cc:150:do_switch$987 [378] = 32'd33616659;
\$auto$proc_rom.cc:150:do_switch$987 [379] = 32'd518199289;
\$auto$proc_rom.cc:150:do_switch$987 [380] = 32'd53737987;
\$auto$proc_rom.cc:150:do_switch$987 [381] = 32'd2277900535;
\$auto$proc_rom.cc:150:do_switch$987 [382] = 32'd684963653;
\$auto$proc_rom.cc:150:do_switch$987 [383] = 32'd1901699749;
\$auto$proc_rom.cc:150:do_switch$987 [384] = 32'd3970363554;
\$auto$proc_rom.cc:150:do_switch$987 [385] = 32'd3838765258;
\$auto$proc_rom.cc:150:do_switch$987 [386] = 32'd4233552082;
\$auto$proc_rom.cc:150:do_switch$987 [387] = 32'd4166710406;
\$auto$proc_rom.cc:150:do_switch$987 [388] = 32'd4033016926;
\$auto$proc_rom.cc:150:do_switch$987 [389] = 32'd2309680230;
\$auto$proc_rom.cc:150:do_switch$987 [390] = 32'd2217904686;
\$auto$proc_rom.cc:150:do_switch$987 [391] = 32'd2302577334;
\$auto$proc_rom.cc:150:do_switch$987 [392] = 32'd2372109506;
\$auto$proc_rom.cc:150:do_switch$987 [393] = 32'd664217096;
\$auto$proc_rom.cc:150:do_switch$987 [394] = 32'd3079077888;
\$auto$proc_rom.cc:150:do_switch$987 [395] = 32'd2547198503;
\$auto$proc_rom.cc:150:do_switch$987 [396] = 32'd2506334887;
\$auto$proc_rom.cc:150:do_switch$987 [397] = 32'd664217095;
\$auto$proc_rom.cc:150:do_switch$987 [398] = 32'd3079077888;
\$auto$proc_rom.cc:150:do_switch$987 [399] = 32'd399714727;
\$auto$proc_rom.cc:150:do_switch$987 [400] = 32'd2640552693;
\$auto$proc_rom.cc:150:do_switch$987 [401] = 32'd131277831;
\$auto$proc_rom.cc:150:do_switch$987 [402] = 32'd114553344;
\$auto$proc_rom.cc:150:do_switch$987 [403] = 32'd399761925;
\$auto$proc_rom.cc:150:do_switch$987 [404] = 32'd3347686133;
\$auto$proc_rom.cc:150:do_switch$987 [405] = 32'd581244883;
\$auto$proc_rom.cc:150:do_switch$987 [406] = 32'd3792144083;
\$auto$proc_rom.cc:150:do_switch$987 [407] = 32'd1074066963;
\$auto$proc_rom.cc:150:do_switch$987 [408] = 32'd1192878609;
\$auto$proc_rom.cc:150:do_switch$987 [409] = 32'd54974355;
\$auto$proc_rom.cc:150:do_switch$987 [410] = 32'd2146957203;
\$auto$proc_rom.cc:150:do_switch$987 [411] = 32'd3222767515;
\$auto$proc_rom.cc:150:do_switch$987 [412] = 32'd3523708755;
\$auto$proc_rom.cc:150:do_switch$987 [413] = 32'd1072694675;
\$auto$proc_rom.cc:150:do_switch$987 [414] = 32'd13014931;
\$auto$proc_rom.cc:150:do_switch$987 [415] = 32'd2209420754;
\$auto$proc_rom.cc:150:do_switch$987 [416] = 32'd630689741;
\$auto$proc_rom.cc:150:do_switch$987 [417] = 32'd3062300672;
\$auto$proc_rom.cc:150:do_switch$987 [418] = 32'd630662501;
\$auto$proc_rom.cc:150:do_switch$987 [419] = 32'd3079077888;
\$auto$proc_rom.cc:150:do_switch$987 [420] = 32'd630662501;
\$auto$proc_rom.cc:150:do_switch$987 [421] = 32'd622264320;
\$auto$proc_rom.cc:150:do_switch$987 [422] = 32'd2000879616;
\$auto$proc_rom.cc:150:do_switch$987 [423] = 32'd2262006487;
\$auto$proc_rom.cc:150:do_switch$987 [424] = 32'd3079139847;
\$auto$proc_rom.cc:150:do_switch$987 [425] = 32'd664216933;
\$auto$proc_rom.cc:150:do_switch$987 [426] = 32'd4157800448;
\$auto$proc_rom.cc:150:do_switch$987 [427] = 32'd3062303478;
\$auto$proc_rom.cc:150:do_switch$987 [428] = 32'd664216743;
\$auto$proc_rom.cc:150:do_switch$987 [429] = 32'd3045523456;
\$auto$proc_rom.cc:150:do_switch$987 [430] = 32'd664217319;
\$auto$proc_rom.cc:150:do_switch$987 [431] = 32'd4156751872;
\$auto$proc_rom.cc:150:do_switch$987 [432] = 32'd3070718679;
\$auto$proc_rom.cc:150:do_switch$987 [433] = 32'd664216551;
\$auto$proc_rom.cc:150:do_switch$987 [434] = 32'd3062300672;
\$auto$proc_rom.cc:150:do_switch$987 [435] = 32'd2513642407;
\$auto$proc_rom.cc:150:do_switch$987 [436] = 32'd2278801927;
\$auto$proc_rom.cc:150:do_switch$987 [437] = 32'd2350633477;
\$auto$proc_rom.cc:150:do_switch$987 [438] = 32'd4148363269;
\$auto$proc_rom.cc:150:do_switch$987 [439] = 32'd914844391;
\$auto$proc_rom.cc:150:do_switch$987 [440] = 32'd622274341;
\$auto$proc_rom.cc:150:do_switch$987 [441] = 32'd399704064;
\$auto$proc_rom.cc:150:do_switch$987 [442] = 32'd2270413319;
\$auto$proc_rom.cc:150:do_switch$987 [443] = 32'd2275136007;
\$auto$proc_rom.cc:150:do_switch$987 [444] = 32'd399654903;
\$auto$proc_rom.cc:150:do_switch$987 [445] = 32'd316110675;
\$auto$proc_rom.cc:150:do_switch$987 [446] = 32'd585447047;
\$auto$proc_rom.cc:150:do_switch$987 [447] = 32'd9495;
\$auto$proc_rom.cc:150:do_switch$987 [448] = 32'd591738375;
\$auto$proc_rom.cc:150:do_switch$987 [449] = 32'd9495;
\$auto$proc_rom.cc:150:do_switch$987 [450] = 32'd1926756295;
\$auto$proc_rom.cc:150:do_switch$987 [451] = 32'd558184199;
\$auto$proc_rom.cc:150:do_switch$987 [452] = 32'd9495;
\$auto$proc_rom.cc:150:do_switch$987 [453] = 32'd562376711;
\$auto$proc_rom.cc:150:do_switch$987 [454] = 32'd9495;
\$auto$proc_rom.cc:150:do_switch$987 [455] = 32'd318240467;
\$auto$proc_rom.cc:150:do_switch$987 [456] = 32'd183924307;
\$auto$proc_rom.cc:150:do_switch$987 [457] = 32'd49805267;
\$auto$proc_rom.cc:150:do_switch$987 [458] = 32'd451344211;
\$auto$proc_rom.cc:150:do_switch$987 [459] = 32'd45578067;
\$auto$proc_rom.cc:150:do_switch$987 [460] = 32'd451344211;
\$auto$proc_rom.cc:150:do_switch$987 [461] = 32'd34043731;
\$auto$proc_rom.cc:150:do_switch$987 [462] = 32'd451344083;
\$auto$proc_rom.cc:150:do_switch$987 [463] = 32'd570767111;
\$auto$proc_rom.cc:150:do_switch$987 [464] = 32'd46593747;
\$auto$proc_rom.cc:150:do_switch$987 [465] = 32'd450361299;
\$auto$proc_rom.cc:150:do_switch$987 [466] = 32'd48756691;
\$auto$proc_rom.cc:150:do_switch$987 [467] = 32'd4060579667;
\$auto$proc_rom.cc:150:do_switch$987 [468] = 32'd317192147;
\$auto$proc_rom.cc:150:do_switch$987 [469] = 32'd4060514131;
\$auto$proc_rom.cc:150:do_switch$987 [470] = 32'd2734102483;
\$auto$proc_rom.cc:150:do_switch$987 [471] = 32'd3792144595;
\$auto$proc_rom.cc:150:do_switch$987 [472] = 32'd4157851545;
\$auto$proc_rom.cc:150:do_switch$987 [473] = 32'd2350586551;
\$auto$proc_rom.cc:150:do_switch$987 [474] = 32'd2295594997;
\$auto$proc_rom.cc:150:do_switch$987 [475] = 32'd211542535;
\$auto$proc_rom.cc:150:do_switch$987 [476] = 32'd3616736828;
\$auto$proc_rom.cc:150:do_switch$987 [477] = 32'd93520052;
\$auto$proc_rom.cc:150:do_switch$987 [478] = 32'd3165850720;
\$auto$proc_rom.cc:150:do_switch$987 [479] = 32'd2340749717;
\$auto$proc_rom.cc:150:do_switch$987 [480] = 32'd3282111633;
\$auto$proc_rom.cc:150:do_switch$987 [481] = 32'd10135;
\$auto$proc_rom.cc:150:do_switch$987 [482] = 32'd466073479;
\$auto$proc_rom.cc:150:do_switch$987 [483] = 32'd4060514131;
\$auto$proc_rom.cc:150:do_switch$987 [484] = 32'd2733082579;
\$auto$proc_rom.cc:150:do_switch$987 [485] = 32'd336035939;
\$auto$proc_rom.cc:150:do_switch$987 [486] = 32'd10135;
\$auto$proc_rom.cc:150:do_switch$987 [487] = 32'd453490567;
\$auto$proc_rom.cc:150:do_switch$987 [488] = 32'd2734102483;
\$auto$proc_rom.cc:150:do_switch$987 [489] = 32'd302483555;
\$auto$proc_rom.cc:150:do_switch$987 [490] = 32'd460699;
\$auto$proc_rom.cc:150:do_switch$987 [491] = 32'd1449346817;
\$auto$proc_rom.cc:150:do_switch$987 [492] = 32'd2277179644;
\$auto$proc_rom.cc:150:do_switch$987 [493] = 32'd2266710407;
\$auto$proc_rom.cc:150:do_switch$987 [494] = 32'd3834904567;
\$auto$proc_rom.cc:150:do_switch$987 [495] = 32'd1283538948;
\$auto$proc_rom.cc:150:do_switch$987 [496] = 32'd1199655937;
\$auto$proc_rom.cc:150:do_switch$987 [497] = 32'd19723363;
\$auto$proc_rom.cc:150:do_switch$987 [498] = 32'd1100548027;
\$auto$proc_rom.cc:150:do_switch$987 [499] = 32'd2423699;
\$auto$proc_rom.cc:150:do_switch$987 [500] = 32'd755555;
\$auto$proc_rom.cc:150:do_switch$987 [501] = 32'd1881619;
\$auto$proc_rom.cc:150:do_switch$987 [502] = 32'd1086326323;
\$auto$proc_rom.cc:150:do_switch$987 [503] = 32'd308514801;
\$auto$proc_rom.cc:150:do_switch$987 [504] = 32'd131272204;
\$auto$proc_rom.cc:150:do_switch$987 [505] = 32'd374600192;
\$auto$proc_rom.cc:150:do_switch$987 [506] = 32'd3323568885;
\$auto$proc_rom.cc:150:do_switch$987 [507] = 32'd4060514259;
\$auto$proc_rom.cc:150:do_switch$987 [508] = 32'd586651603;
\$auto$proc_rom.cc:150:do_switch$987 [509] = 32'd3792144083;
\$auto$proc_rom.cc:150:do_switch$987 [510] = 32'd4060513619;
\$auto$proc_rom.cc:150:do_switch$987 [511] = 32'd135493757;
\$auto$proc_rom.cc:150:do_switch$987 [512] = 32'd4164124664;
\$auto$proc_rom.cc:150:do_switch$987 [513] = 32'd2262171908;
\$auto$proc_rom.cc:150:do_switch$987 [514] = 32'd2245166626;
\$auto$proc_rom.cc:150:do_switch$987 [515] = 32'd15697230;
\$auto$proc_rom.cc:150:do_switch$987 [516] = 32'd2334788896;
\$auto$proc_rom.cc:150:do_switch$987 [517] = 32'd101484131;
\$auto$proc_rom.cc:150:do_switch$987 [518] = 32'd33879187;
\$auto$proc_rom.cc:150:do_switch$987 [519] = 32'd72353043;
\$auto$proc_rom.cc:150:do_switch$987 [520] = 32'd85188761;
\$auto$proc_rom.cc:150:do_switch$987 [521] = 32'd2254046800;
\$auto$proc_rom.cc:150:do_switch$987 [522] = 32'd2245166806;
\$auto$proc_rom.cc:150:do_switch$987 [523] = 32'd1461426562;
\$auto$proc_rom.cc:150:do_switch$987 [524] = 32'd1186152956;
\$auto$proc_rom.cc:150:do_switch$987 [525] = 32'd1200947436;
\$auto$proc_rom.cc:150:do_switch$987 [526] = 32'd101924093;
\$auto$proc_rom.cc:150:do_switch$987 [527] = 32'd3829268507;
\$auto$proc_rom.cc:150:do_switch$987 [528] = 32'd1088849723;
\$auto$proc_rom.cc:150:do_switch$987 [529] = 32'd1216471142;
\$auto$proc_rom.cc:150:do_switch$987 [530] = 32'd1469794345;
\$auto$proc_rom.cc:150:do_switch$987 [531] = 32'd2262172156;
\$auto$proc_rom.cc:150:do_switch$987 [532] = 32'd2236515794;
\$auto$proc_rom.cc:150:do_switch$987 [533] = 32'd2915037423;
\$auto$proc_rom.cc:150:do_switch$987 [534] = 32'd2204338986;
\$auto$proc_rom.cc:150:do_switch$987 [535] = 32'd419561995;
\$auto$proc_rom.cc:150:do_switch$987 [536] = 32'd1082459187;
\$auto$proc_rom.cc:150:do_switch$987 [537] = 32'd34167059;
\$auto$proc_rom.cc:150:do_switch$987 [538] = 32'd19168355;
\$auto$proc_rom.cc:150:do_switch$987 [539] = 32'd67470938;
\$auto$proc_rom.cc:150:do_switch$987 [540] = 32'd2245166806;
\$auto$proc_rom.cc:150:do_switch$987 [541] = 32'd33555731;
\$auto$proc_rom.cc:150:do_switch$987 [542] = 32'd2575436549;
\$auto$proc_rom.cc:150:do_switch$987 [543] = 32'd4280576227;
\$auto$proc_rom.cc:150:do_switch$987 [544] = 32'd1946579110;
\$auto$proc_rom.cc:150:do_switch$987 [545] = 32'd1766221030;
\$auto$proc_rom.cc:150:do_switch$987 [546] = 32'd1778805158;
\$auto$proc_rom.cc:150:do_switch$987 [547] = 32'd2074245858;
\$auto$proc_rom.cc:150:do_switch$987 [548] = 32'd1826782210;
\$auto$proc_rom.cc:150:do_switch$987 [549] = 32'd2067957082;
\$auto$proc_rom.cc:150:do_switch$987 [550] = 32'd2156028261;
\$auto$proc_rom.cc:150:do_switch$987 [551] = 32'd1946584610;
\$auto$proc_rom.cc:150:do_switch$987 [552] = 32'd2067951782;
\$auto$proc_rom.cc:150:do_switch$987 [553] = 32'd2080537506;
\$auto$proc_rom.cc:150:do_switch$987 [554] = 32'd2284219618;
\$auto$proc_rom.cc:150:do_switch$987 [555] = 32'd1692829642;
\$auto$proc_rom.cc:150:do_switch$987 [556] = 32'd2262198598;
\$auto$proc_rom.cc:150:do_switch$987 [557] = 32'd2061665746;
\$auto$proc_rom.cc:150:do_switch$987 [558] = 32'd2236508678;
\$auto$proc_rom.cc:150:do_switch$987 [559] = 32'd1634036134;
\$auto$proc_rom.cc:150:do_switch$987 [560] = 32'd2278793221;
\$auto$proc_rom.cc:150:do_switch$987 [561] = 32'd2270425606;
\$auto$proc_rom.cc:150:do_switch$987 [562] = 32'd4157862408;
\$auto$proc_rom.cc:150:do_switch$987 [563] = 32'd2261981927;
\$auto$proc_rom.cc:150:do_switch$987 [564] = 32'd3204571655;
\$auto$proc_rom.cc:150:do_switch$987 [565] = 32'd3993438179;
\$auto$proc_rom.cc:150:do_switch$987 [566] = 32'd3993372131;
\$auto$proc_rom.cc:150:do_switch$987 [567] = 32'd3050649469;
\$auto$proc_rom.cc:150:do_switch$987 [568] = 32'd2728731475;
\$auto$proc_rom.cc:150:do_switch$987 [569] = 32'd2294452158;
\$auto$proc_rom.cc:150:do_switch$987 [570] = 32'd402851683;
\$auto$proc_rom.cc:150:do_switch$987 [571] = 32'd10135;
\$auto$proc_rom.cc:150:do_switch$987 [572] = 32'd4266112903;
\$auto$proc_rom.cc:150:do_switch$987 [573] = 32'd2733971411;
\$auto$proc_rom.cc:150:do_switch$987 [574] = 32'd604477027;
\$auto$proc_rom.cc:150:do_switch$987 [575] = 32'd10135;
\$auto$proc_rom.cc:150:do_switch$987 [576] = 32'd4240947079;
\$auto$proc_rom.cc:150:do_switch$987 [577] = 32'd4163006777;
\$auto$proc_rom.cc:150:do_switch$987 [578] = 32'd2728892371;
\$auto$proc_rom.cc:150:do_switch$987 [579] = 32'd4228314150;
\$auto$proc_rom.cc:150:do_switch$987 [580] = 32'd2209252010;
\$auto$proc_rom.cc:150:do_switch$987 [581] = 32'd2226553906;
\$auto$proc_rom.cc:150:do_switch$987 [582] = 32'd302488675;
\$auto$proc_rom.cc:150:do_switch$987 [583] = 32'd10135;
\$auto$proc_rom.cc:150:do_switch$987 [584] = 32'd55031687;
\$auto$proc_rom.cc:150:do_switch$987 [585] = 32'd2728892371;
\$auto$proc_rom.cc:150:do_switch$987 [586] = 32'd537367395;
\$auto$proc_rom.cc:150:do_switch$987 [587] = 32'd10135;
\$auto$proc_rom.cc:150:do_switch$987 [588] = 32'd46643079;
\$auto$proc_rom.cc:150:do_switch$987 [589] = 32'd2733971411;
\$auto$proc_rom.cc:150:do_switch$987 [590] = 32'd503815011;
\$auto$proc_rom.cc:150:do_switch$987 [591] = 32'd4060088275;
\$auto$proc_rom.cc:150:do_switch$987 [592] = 32'd399721857;
\$auto$proc_rom.cc:150:do_switch$987 [593] = 32'd2422448885;
\$auto$proc_rom.cc:150:do_switch$987 [594] = 32'd4153613831;
\$auto$proc_rom.cc:150:do_switch$987 [595] = 32'd3817947144;
\$auto$proc_rom.cc:150:do_switch$987 [596] = 32'd1124157209;
\$auto$proc_rom.cc:150:do_switch$987 [597] = 32'd101926821;
\$auto$proc_rom.cc:150:do_switch$987 [598] = 32'd110297856;
\$auto$proc_rom.cc:150:do_switch$987 [599] = 32'd4200792576;
\$auto$proc_rom.cc:150:do_switch$987 [600] = 32'd50659559;
\$auto$proc_rom.cc:150:do_switch$987 [601] = 32'd6360627;
\$auto$proc_rom.cc:150:do_switch$987 [602] = 32'd4274917283;
\$auto$proc_rom.cc:150:do_switch$987 [603] = 32'd417544061;
\$auto$proc_rom.cc:150:do_switch$987 [604] = 32'd382992083;
\$auto$proc_rom.cc:150:do_switch$987 [605] = 32'd353616389;
\$auto$proc_rom.cc:150:do_switch$987 [606] = 32'd2278752775;
\$auto$proc_rom.cc:150:do_switch$987 [607] = 32'd2274611718;
\$auto$proc_rom.cc:150:do_switch$987 [608] = 32'd1444148609;
\$auto$proc_rom.cc:150:do_switch$987 [609] = 32'd2010317269;
\$auto$proc_rom.cc:150:do_switch$987 [610] = 32'd2545027829;
\$auto$proc_rom.cc:150:do_switch$987 [611] = 32'd664216468;
\$auto$proc_rom.cc:150:do_switch$987 [612] = 32'd3070689280;
\$auto$proc_rom.cc:150:do_switch$987 [613] = 32'd2384197415;
\$auto$proc_rom.cc:150:do_switch$987 [614] = 32'd4157800454;
\$auto$proc_rom.cc:150:do_switch$987 [615] = 32'd2673021655;
\$auto$proc_rom.cc:150:do_switch$987 [616] = 32'd1985200695;
\$auto$proc_rom.cc:150:do_switch$987 [617] = 32'd4157854271;
\$auto$proc_rom.cc:150:do_switch$987 [618] = 32'd399706823;
\$auto$proc_rom.cc:150:do_switch$987 [619] = 32'd3487671031;
\$auto$proc_rom.cc:150:do_switch$987 [620] = 32'd2010320645;
\$auto$proc_rom.cc:150:do_switch$987 [621] = 32'd2278806079;
\$auto$proc_rom.cc:150:do_switch$987 [622] = 32'd3347161846;
\$auto$proc_rom.cc:150:do_switch$987 [623] = 32'd1478171;
\$auto$proc_rom.cc:150:do_switch$987 [624] = 32'd3949547265;
\$auto$proc_rom.cc:150:do_switch$987 [625] = 32'd3524134867;
\$auto$proc_rom.cc:150:do_switch$987 [626] = 32'd10135;
\$auto$proc_rom.cc:150:do_switch$987 [627] = 32'd4085757703;
\$auto$proc_rom.cc:150:do_switch$987 [628] = 32'd183858515;
\$auto$proc_rom.cc:150:do_switch$987 [629] = 32'd2732922835;
\$auto$proc_rom.cc:150:do_switch$987 [630] = 32'd399755137;
\$auto$proc_rom.cc:150:do_switch$987 [631] = 32'd3347686055;
\$auto$proc_rom.cc:150:do_switch$987 [632] = 32'd1996691;
\$auto$proc_rom.cc:150:do_switch$987 [633] = 32'd772129681;
\$auto$proc_rom.cc:150:do_switch$987 [634] = 32'd33555987;
\$auto$proc_rom.cc:150:do_switch$987 [635] = 32'd258164649;
\$auto$proc_rom.cc:150:do_switch$987 [636] = 32'd1731923139;
\$auto$proc_rom.cc:150:do_switch$987 [637] = 32'd50660094;
\$auto$proc_rom.cc:150:do_switch$987 [638] = 32'd6358707;
\$auto$proc_rom.cc:150:do_switch$987 [639] = 32'd50220603;
\$auto$proc_rom.cc:150:do_switch$987 [640] = 32'd50792219;
\$auto$proc_rom.cc:150:do_switch$987 [641] = 32'd4276522915;
\$auto$proc_rom.cc:150:do_switch$987 [642] = 32'd4262335459;
\$auto$proc_rom.cc:150:do_switch$987 [643] = 32'd3733395;
\$auto$proc_rom.cc:150:do_switch$987 [644] = 32'd2304984837;
\$auto$proc_rom.cc:150:do_switch$987 [645] = 32'd118693095;
\$auto$proc_rom.cc:150:do_switch$987 [646] = 32'd241369600;
\$auto$proc_rom.cc:150:do_switch$987 [647] = 32'd2338527971;
\$auto$proc_rom.cc:150:do_switch$987 [648] = 32'd127078917;
\$auto$proc_rom.cc:150:do_switch$987 [649] = 32'd2268267011;
\$auto$proc_rom.cc:150:do_switch$987 [650] = 32'd110297127;
\$auto$proc_rom.cc:150:do_switch$987 [651] = 32'd127075024;
\$auto$proc_rom.cc:150:do_switch$987 [652] = 32'd2293779;
\$auto$proc_rom.cc:150:do_switch$987 [653] = 32'd2265644759;
\$auto$proc_rom.cc:150:do_switch$987 [654] = 32'd2250409638;
\$auto$proc_rom.cc:150:do_switch$987 [655] = 32'd2241759358;
\$auto$proc_rom.cc:150:do_switch$987 [656] = 32'd4042229014;
\$auto$proc_rom.cc:150:do_switch$987 [657] = 32'd1893892767;
\$auto$proc_rom.cc:150:do_switch$987 [658] = 32'd1956803650;
\$auto$proc_rom.cc:150:do_switch$987 [659] = 32'd2156028193;
\$auto$proc_rom.cc:150:do_switch$987 [660] = 32'd4749203;
\$auto$proc_rom.cc:150:do_switch$987 [661] = 32'd655877113;
\$auto$proc_rom.cc:150:do_switch$987 [662] = 32'd118685696;
\$auto$proc_rom.cc:150:do_switch$987 [663] = 32'd1200457767;
\$auto$proc_rom.cc:150:do_switch$987 [664] = 32'd1950516770;
\$auto$proc_rom.cc:150:do_switch$987 [665] = 32'd2259054818;
\$auto$proc_rom.cc:150:do_switch$987 [666] = 32'd2289988770;
\$auto$proc_rom.cc:150:do_switch$987 [667] = 32'd2232845726;
\$auto$proc_rom.cc:150:do_switch$987 [668] = 32'd4033831201;
\$auto$proc_rom.cc:150:do_switch$987 [669] = 32'd655884175;
\$auto$proc_rom.cc:150:do_switch$987 [670] = 32'd2285764608;
\$auto$proc_rom.cc:150:do_switch$987 [671] = 32'd2259093267;
\$auto$proc_rom.cc:150:do_switch$987 [672] = 32'd4033824653;
\$auto$proc_rom.cc:150:do_switch$987 [673] = 32'd2547252879;
\$auto$proc_rom.cc:150:do_switch$987 [674] = 32'd4286948071;
\$auto$proc_rom.cc:150:do_switch$987 [675] = 32'd302980963;
\$auto$proc_rom.cc:150:do_switch$987 [676] = 32'd3675066117;
\$auto$proc_rom.cc:150:do_switch$987 [677] = 32'd4261873691;
\$auto$proc_rom.cc:150:do_switch$987 [678] = 32'd6817851;
\$auto$proc_rom.cc:150:do_switch$987 [679] = 32'd1084573353;
\$auto$proc_rom.cc:150:do_switch$987 [680] = 32'd2008260613;
\$auto$proc_rom.cc:150:do_switch$987 [681] = 32'd85656287;
\$auto$proc_rom.cc:150:do_switch$987 [682] = 32'd2275147767;
\$auto$proc_rom.cc:150:do_switch$987 [683] = 32'd262341383;
\$auto$proc_rom.cc:150:do_switch$987 [684] = 32'd1471414006;
\$auto$proc_rom.cc:150:do_switch$987 [685] = 32'd4284678879;
\$auto$proc_rom.cc:150:do_switch$987 [686] = 32'd2267679712;
\$auto$proc_rom.cc:150:do_switch$987 [687] = 32'd2403238774;
\$auto$proc_rom.cc:150:do_switch$987 [688] = 32'd1248915;
\$auto$proc_rom.cc:150:do_switch$987 [689] = 32'd30475827;
\$auto$proc_rom.cc:150:do_switch$987 [690] = 32'd4245102051;
\$auto$proc_rom.cc:150:do_switch$987 [691] = 32'd3733395;
\$auto$proc_rom.cc:150:do_switch$987 [692] = 32'd2455979781;
\$auto$proc_rom.cc:150:do_switch$987 [693] = 32'd127078631;
\$auto$proc_rom.cc:150:do_switch$987 [694] = 32'd2397241856;
\$auto$proc_rom.cc:150:do_switch$987 [695] = 32'd2674127887;
\$auto$proc_rom.cc:150:do_switch$987 [696] = 32'd4145221125;
\$auto$proc_rom.cc:150:do_switch$987 [697] = 32'd3676373192;
\$auto$proc_rom.cc:150:do_switch$987 [698] = 32'd2467512317;
\$auto$proc_rom.cc:150:do_switch$987 [699] = 32'd1393754639;
\$auto$proc_rom.cc:150:do_switch$987 [700] = 32'd4066574851;
\$auto$proc_rom.cc:150:do_switch$987 [701] = 32'd118689895;
\$auto$proc_rom.cc:150:do_switch$987 [702] = 32'd101908992;
\$auto$proc_rom.cc:150:do_switch$987 [703] = 32'd110297856;
\$auto$proc_rom.cc:150:do_switch$987 [704] = 32'd2330132992;
\$auto$proc_rom.cc:150:do_switch$987 [705] = 32'd126218983;
\$auto$proc_rom.cc:150:do_switch$987 [706] = 32'd15796019;
\$auto$proc_rom.cc:150:do_switch$987 [707] = 32'd4274458531;
\$auto$proc_rom.cc:150:do_switch$987 [708] = 32'd4033315811;
\$auto$proc_rom.cc:150:do_switch$987 [709] = 32'd4275542499;
\$auto$proc_rom.cc:150:do_switch$987 [710] = 32'd387432249;
\$auto$proc_rom.cc:150:do_switch$987 [711] = 32'd118685696;
\$auto$proc_rom.cc:150:do_switch$987 [712] = 32'd1200716647;
\$auto$proc_rom.cc:150:do_switch$987 [713] = 32'd4115906357;
\$auto$proc_rom.cc:150:do_switch$987 [714] = 32'd1166346919;
\$auto$proc_rom.cc:150:do_switch$987 [715] = 32'd2250423609;
\$auto$proc_rom.cc:150:do_switch$987 [716] = 32'd1893889090;
\$auto$proc_rom.cc:150:do_switch$987 [717] = 32'd1956808358;
\$auto$proc_rom.cc:150:do_switch$987 [718] = 32'd2281605190;
\$auto$proc_rom.cc:150:do_switch$987 [719] = 32'd2232845726;
\$auto$proc_rom.cc:150:do_switch$987 [720] = 32'd3160760609;
\$auto$proc_rom.cc:150:do_switch$987 [721] = 32'd5911;
\$auto$proc_rom.cc:150:do_switch$987 [722] = 32'd1200719998;
\$auto$proc_rom.cc:150:do_switch$987 [723] = 32'd2051475219;
\$auto$proc_rom.cc:150:do_switch$987 [724] = 32'd4054839407;
\$auto$proc_rom.cc:150:do_switch$987 [725] = 32'd4781971;
\$auto$proc_rom.cc:150:do_switch$987 [726] = 32'd4136890289;
\$auto$proc_rom.cc:150:do_switch$987 [727] = 32'd2275016840;
\$auto$proc_rom.cc:150:do_switch$987 [728] = 32'd3959852003;
\$auto$proc_rom.cc:150:do_switch$987 [729] = 32'd33752723;
\$auto$proc_rom.cc:150:do_switch$987 [730] = 32'd2523955;
\$auto$proc_rom.cc:150:do_switch$987 [731] = 32'd2295685;
\$auto$proc_rom.cc:150:do_switch$987 [732] = 32'd3050438371;
\$auto$proc_rom.cc:150:do_switch$987 [733] = 32'd33556371;
\$auto$proc_rom.cc:150:do_switch$987 [734] = 32'd4110322403;
\$auto$proc_rom.cc:150:do_switch$987 [735] = 32'd3240966009;
\$auto$proc_rom.cc:150:do_switch$987 [736] = 32'd2466322178;
\$auto$proc_rom.cc:150:do_switch$987 [737] = 32'd2470052617;
\$auto$proc_rom.cc:150:do_switch$987 [738] = 32'd50333331;
\$auto$proc_rom.cc:150:do_switch$987 [739] = 32'd33556243;
\$auto$proc_rom.cc:150:do_switch$987 [740] = 32'd129175173;
\$auto$proc_rom.cc:150:do_switch$987 [741] = 32'd2409824721;
\$auto$proc_rom.cc:150:do_switch$987 [742] = 32'd2313420503;
\$auto$proc_rom.cc:150:do_switch$987 [743] = 32'd2581852910;
\$auto$proc_rom.cc:150:do_switch$987 [744] = 32'd127139438;
\$auto$proc_rom.cc:150:do_switch$987 [745] = 32'd2542404099;
\$auto$proc_rom.cc:150:do_switch$987 [746] = 32'd48236307;
\$auto$proc_rom.cc:150:do_switch$987 [747] = 32'd2149778181;
\$auto$proc_rom.cc:150:do_switch$987 [748] = 32'd3172859623;
\$auto$proc_rom.cc:150:do_switch$987 [749] = 32'd33752979;
\$auto$proc_rom.cc:150:do_switch$987 [750] = 32'd2590515;
\$auto$proc_rom.cc:150:do_switch$987 [751] = 32'd45090451;
\$auto$proc_rom.cc:150:do_switch$987 [752] = 32'd1247123;
\$auto$proc_rom.cc:150:do_switch$987 [753] = 32'd4275503139;
\$auto$proc_rom.cc:150:do_switch$987 [754] = 32'd2006169021;
\$auto$proc_rom.cc:150:do_switch$987 [755] = 32'd2330132511;
\$auto$proc_rom.cc:150:do_switch$987 [756] = 32'd252042759;
\$auto$proc_rom.cc:150:do_switch$987 [757] = 32'd127122813;
\$auto$proc_rom.cc:150:do_switch$987 [758] = 32'd3182494208;
\$auto$proc_rom.cc:150:do_switch$987 [759] = 32'd3181461501;
\$auto$proc_rom.cc:150:do_switch$987 [760] = 32'd3082912630;
\$auto$proc_rom.cc:150:do_switch$987 [761] = 32'd3792669155;
\$auto$proc_rom.cc:150:do_switch$987 [762] = 32'd4145277321;
\$auto$proc_rom.cc:150:do_switch$987 [763] = 32'd2275016904;
\$auto$proc_rom.cc:150:do_switch$987 [764] = 32'd3993439715;
\$auto$proc_rom.cc:150:do_switch$987 [765] = 32'd2201927125;
\$auto$proc_rom.cc:150:do_switch$987 [766] = 32'd2275065145;
\$auto$proc_rom.cc:150:do_switch$987 [767] = 32'd3776034293;
\$auto$proc_rom.cc:150:do_switch$987 [768] = 32'd2781708418;
\$auto$proc_rom.cc:150:do_switch$987 [769] = 32'd3978719601;
\$auto$proc_rom.cc:150:do_switch$987 [770] = 32'd3847153994;
\$auto$proc_rom.cc:150:do_switch$987 [771] = 32'd4041406682;
\$auto$proc_rom.cc:150:do_switch$987 [772] = 32'd4294965655;
\$auto$proc_rom.cc:150:do_switch$987 [773] = 32'd4045600006;
\$auto$proc_rom.cc:150:do_switch$987 [774] = 32'd4241940818;
\$auto$proc_rom.cc:150:do_switch$987 [775] = 32'd3974558942;
\$auto$proc_rom.cc:150:do_switch$987 [776] = 32'd3840862442;
\$auto$proc_rom.cc:150:do_switch$987 [777] = 32'd2226293038;
\$auto$proc_rom.cc:150:do_switch$987 [778] = 32'd2352646966;
\$auto$proc_rom.cc:150:do_switch$987 [779] = 32'd1703512467;
\$auto$proc_rom.cc:150:do_switch$987 [780] = 32'd2309669265;
\$auto$proc_rom.cc:150:do_switch$987 [781] = 32'd738563;
\$auto$proc_rom.cc:150:do_switch$987 [782] = 32'd23284609;
\$auto$proc_rom.cc:150:do_switch$987 [783] = 32'd1740722693;
\$auto$proc_rom.cc:150:do_switch$987 [784] = 32'd1789204477;
\$auto$proc_rom.cc:150:do_switch$987 [785] = 32'd2274621502;
\$auto$proc_rom.cc:150:do_switch$987 [786] = 32'd3963487258;
\$auto$proc_rom.cc:150:do_switch$987 [787] = 32'd2274584453;
\$auto$proc_rom.cc:150:do_switch$987 [788] = 32'd169050119;
\$auto$proc_rom.cc:150:do_switch$987 [789] = 32'd4097704528;
\$auto$proc_rom.cc:150:do_switch$987 [790] = 32'd2254350353;
\$auto$proc_rom.cc:150:do_switch$987 [791] = 32'd2244642470;
\$auto$proc_rom.cc:150:do_switch$987 [792] = 32'd2575436677;
\$auto$proc_rom.cc:150:do_switch$987 [793] = 32'd738563;
\$auto$proc_rom.cc:150:do_switch$987 [794] = 32'd302318179;
\$auto$proc_rom.cc:150:do_switch$987 [795] = 32'd383978245;
\$auto$proc_rom.cc:150:do_switch$987 [796] = 32'd1208090437;
\$auto$proc_rom.cc:150:do_switch$987 [797] = 32'd1157842497;
\$auto$proc_rom.cc:150:do_switch$987 [798] = 32'd110297099;
\$auto$proc_rom.cc:150:do_switch$987 [799] = 32'd127598619;
\$auto$proc_rom.cc:150:do_switch$987 [800] = 32'd4153671173;
\$auto$proc_rom.cc:150:do_switch$987 [801] = 32'd1768099831;
\$auto$proc_rom.cc:150:do_switch$987 [802] = 32'd2266169590;
\$auto$proc_rom.cc:150:do_switch$987 [803] = 32'd126540673;
\$auto$proc_rom.cc:150:do_switch$987 [804] = 32'd1134335930;
\$auto$proc_rom.cc:150:do_switch$987 [805] = 32'd2273482682;
\$auto$proc_rom.cc:150:do_switch$987 [806] = 32'd4244965275;
\$auto$proc_rom.cc:150:do_switch$987 [807] = 32'd267909011;
\$auto$proc_rom.cc:150:do_switch$987 [808] = 32'd1935886117;
\$auto$proc_rom.cc:150:do_switch$987 [809] = 32'd118691063;
\$auto$proc_rom.cc:150:do_switch$987 [810] = 32'd1249968800;
\$auto$proc_rom.cc:150:do_switch$987 [811] = 32'd384107619;
\$auto$proc_rom.cc:150:do_switch$987 [812] = 32'd48236307;
\$auto$proc_rom.cc:150:do_switch$987 [813] = 32'd107168769;
\$auto$proc_rom.cc:150:do_switch$987 [814] = 32'd119214309;
\$auto$proc_rom.cc:150:do_switch$987 [815] = 32'd1997797765;
\$auto$proc_rom.cc:150:do_switch$987 [816] = 32'd1179193335;
\$auto$proc_rom.cc:150:do_switch$987 [817] = 32'd15101539;
\$auto$proc_rom.cc:150:do_switch$987 [818] = 32'd3754001939;
\$auto$proc_rom.cc:150:do_switch$987 [819] = 32'd2536638218;
\$auto$proc_rom.cc:150:do_switch$987 [820] = 32'd2536653592;
\$auto$proc_rom.cc:150:do_switch$987 [821] = 32'd1157859074;
\$auto$proc_rom.cc:150:do_switch$987 [822] = 32'd1746075675;
\$auto$proc_rom.cc:150:do_switch$987 [823] = 32'd109383688;
\$auto$proc_rom.cc:150:do_switch$987 [824] = 32'd108005139;
\$auto$proc_rom.cc:150:do_switch$987 [825] = 32'd1768131382;
\$auto$proc_rom.cc:150:do_switch$987 [826] = 32'd118686887;
\$auto$proc_rom.cc:150:do_switch$987 [827] = 32'd1994588736;
\$auto$proc_rom.cc:150:do_switch$987 [828] = 32'd119273127;
\$auto$proc_rom.cc:150:do_switch$987 [829] = 32'd1997798837;
\$auto$proc_rom.cc:150:do_switch$987 [830] = 32'd110301175;
\$auto$proc_rom.cc:150:do_switch$987 [831] = 32'd4007855136;
\$auto$proc_rom.cc:150:do_switch$987 [832] = 32'd2257843430;
\$auto$proc_rom.cc:150:do_switch$987 [833] = 32'd118154369;
\$auto$proc_rom.cc:150:do_switch$987 [834] = 32'd1125685046;
\$auto$proc_rom.cc:150:do_switch$987 [835] = 32'd2265093942;
\$auto$proc_rom.cc:150:do_switch$987 [836] = 32'd1599507;
\$auto$proc_rom.cc:150:do_switch$987 [837] = 32'd3078982454;
\$auto$proc_rom.cc:150:do_switch$987 [838] = 32'd2648083;
\$auto$proc_rom.cc:150:do_switch$987 [839] = 32'd3215035190;
\$auto$proc_rom.cc:150:do_switch$987 [840] = 32'd4745235;
\$auto$proc_rom.cc:150:do_switch$987 [841] = 32'd3212938038;
\$auto$proc_rom.cc:150:do_switch$987 [842] = 32'd17328147;
\$auto$proc_rom.cc:150:do_switch$987 [843] = 32'd3080817462;
\$auto$proc_rom.cc:150:do_switch$987 [844] = 32'd8939539;
\$auto$proc_rom.cc:150:do_switch$987 [845] = 32'd3078720310;
\$auto$proc_rom.cc:150:do_switch$987 [846] = 32'd4185196315;
\$auto$proc_rom.cc:150:do_switch$987 [847] = 32'd267876115;
\$auto$proc_rom.cc:150:do_switch$987 [848] = 32'd3974317757;
\$auto$proc_rom.cc:150:do_switch$987 [849] = 32'd1742926054;
\$auto$proc_rom.cc:150:do_switch$987 [850] = 32'd2528331397;
\$auto$proc_rom.cc:150:do_switch$987 [851] = 32'd2398945510;
\$auto$proc_rom.cc:150:do_switch$987 [852] = 32'd839293283;
\$auto$proc_rom.cc:150:do_switch$987 [853] = 32'd140723881;
\$auto$proc_rom.cc:150:do_switch$987 [854] = 32'd1201477847;
\$auto$proc_rom.cc:150:do_switch$987 [855] = 32'd4009172963;
\$auto$proc_rom.cc:150:do_switch$987 [856] = 32'd800515;
\$auto$proc_rom.cc:150:do_switch$987 [857] = 32'd35153811;
\$auto$proc_rom.cc:150:do_switch$987 [858] = 32'd1203889214;
\$auto$proc_rom.cc:150:do_switch$987 [859] = 32'd3762194014;
\$auto$proc_rom.cc:150:do_switch$987 [860] = 32'd1212254370;
\$auto$proc_rom.cc:150:do_switch$987 [861] = 32'd2259044225;
\$auto$proc_rom.cc:150:do_switch$987 [862] = 32'd2236515786;
\$auto$proc_rom.cc:150:do_switch$987 [863] = 32'd3677352175;
\$auto$proc_rom.cc:150:do_switch$987 [864] = 32'd1157860266;
\$auto$proc_rom.cc:150:do_switch$987 [865] = 32'd203489291;
\$auto$proc_rom.cc:150:do_switch$987 [866] = 32'd3993309923;
\$auto$proc_rom.cc:150:do_switch$987 [867] = 32'd754715;
\$auto$proc_rom.cc:150:do_switch$987 [868] = 32'd10216547;
\$auto$proc_rom.cc:150:do_switch$987 [869] = 32'd4294216595;
\$auto$proc_rom.cc:150:do_switch$987 [870] = 32'd2254341798;
\$auto$proc_rom.cc:150:do_switch$987 [871] = 32'd1157727690;
\$auto$proc_rom.cc:150:do_switch$987 [872] = 32'd1890228610;
\$auto$proc_rom.cc:150:do_switch$987 [873] = 32'd1946846498;
\$auto$proc_rom.cc:150:do_switch$987 [874] = 32'd1766483178;
\$auto$proc_rom.cc:150:do_switch$987 [875] = 32'd1779067306;
\$auto$proc_rom.cc:150:do_switch$987 [876] = 32'd2068216550;
\$auto$proc_rom.cc:150:do_switch$987 [877] = 32'd2080799654;
\$auto$proc_rom.cc:150:do_switch$987 [878] = 32'd1833331942;
\$auto$proc_rom.cc:150:do_switch$987 [879] = 32'd1632464294;
\$auto$proc_rom.cc:150:do_switch$987 [880] = 32'd1157857410;
\$auto$proc_rom.cc:150:do_switch$987 [881] = 32'd1168441371;
\$auto$proc_rom.cc:150:do_switch$987 [882] = 32'd119244342;
\$auto$proc_rom.cc:150:do_switch$987 [883] = 32'd1997798661;
\$auto$proc_rom.cc:150:do_switch$987 [884] = 32'd1746079735;
\$auto$proc_rom.cc:150:do_switch$987 [885] = 32'd4184031240;
\$auto$proc_rom.cc:150:do_switch$987 [886] = 32'd118692069;
\$auto$proc_rom.cc:150:do_switch$987 [887] = 32'd191038112;
\$auto$proc_rom.cc:150:do_switch$987 [888] = 32'd2335578853;
\$auto$proc_rom.cc:150:do_switch$987 [889] = 32'd3184592517;
\$auto$proc_rom.cc:150:do_switch$987 [890] = 32'd1176849025;
\$auto$proc_rom.cc:150:do_switch$987 [891] = 32'd2791195;
\$auto$proc_rom.cc:150:do_switch$987 [892] = 32'd22480699;
\$auto$proc_rom.cc:150:do_switch$987 [893] = 32'd1513243;
\$auto$proc_rom.cc:150:do_switch$987 [894] = 32'd3305348905;
\$auto$proc_rom.cc:150:do_switch$987 [895] = 32'd177930246;
\$auto$proc_rom.cc:150:do_switch$987 [896] = 32'd2335636743;
\$auto$proc_rom.cc:150:do_switch$987 [897] = 32'd4244965147;
\$auto$proc_rom.cc:150:do_switch$987 [898] = 32'd267876115;
\$auto$proc_rom.cc:150:do_switch$987 [899] = 32'd2145584773;
\$auto$proc_rom.cc:150:do_switch$987 [900] = 32'd3178888422;
\$auto$proc_rom.cc:150:do_switch$987 [901] = 32'd796419;
\$auto$proc_rom.cc:150:do_switch$987 [902] = 32'd177933345;
\$auto$proc_rom.cc:150:do_switch$987 [903] = 32'd1197670407;
\$auto$proc_rom.cc:150:do_switch$987 [904] = 32'd1157824519;
\$auto$proc_rom.cc:150:do_switch$987 [905] = 32'd2335571995;
\$auto$proc_rom.cc:150:do_switch$987 [906] = 32'd3042510469;
\$auto$proc_rom.cc:150:do_switch$987 [907] = 32'd1787139;
\$auto$proc_rom.cc:150:do_switch$987 [908] = 32'd2648083;
\$auto$proc_rom.cc:150:do_switch$987 [909] = 32'd180063030;
\$auto$proc_rom.cc:150:do_switch$987 [910] = 32'd109396192;
\$auto$proc_rom.cc:150:do_switch$987 [911] = 32'd1157873045;
\$auto$proc_rom.cc:150:do_switch$987 [912] = 32'd118685723;
\$auto$proc_rom.cc:150:do_switch$987 [913] = 32'd451086016;
\$auto$proc_rom.cc:150:do_switch$987 [914] = 32'd1157884133;
\$auto$proc_rom.cc:150:do_switch$987 [915] = 32'd1746075691;
\$auto$proc_rom.cc:150:do_switch$987 [916] = 32'd110309384;
\$auto$proc_rom.cc:150:do_switch$987 [917] = 32'd3043557435;
\$auto$proc_rom.cc:150:do_switch$987 [918] = 32'd1787139;
\$auto$proc_rom.cc:150:do_switch$987 [919] = 32'd109053715;
\$auto$proc_rom.cc:150:do_switch$987 [920] = 32'd786760547;
\$auto$proc_rom.cc:150:do_switch$987 [921] = 32'd134768659;
\$auto$proc_rom.cc:150:do_switch$987 [922] = 32'd3181184645;
\$auto$proc_rom.cc:150:do_switch$987 [923] = 32'd73402131;
\$auto$proc_rom.cc:150:do_switch$987 [924] = 32'd551880291;
\$auto$proc_rom.cc:150:do_switch$987 [925] = 32'd800007;
\$auto$proc_rom.cc:150:do_switch$987 [926] = 32'd2278983262;
\$auto$proc_rom.cc:150:do_switch$987 [927] = 32'd2259060514;
\$auto$proc_rom.cc:150:do_switch$987 [928] = 32'd2236515786;
\$auto$proc_rom.cc:150:do_switch$987 [929] = 32'd2782916847;
\$auto$proc_rom.cc:150:do_switch$987 [930] = 32'd2343177249;
\$auto$proc_rom.cc:150:do_switch$987 [931] = 32'd1947450337;
\$auto$proc_rom.cc:150:do_switch$987 [932] = 32'd210960424;
\$auto$proc_rom.cc:150:do_switch$987 [933] = 32'd56819852;
\$auto$proc_rom.cc:150:do_switch$987 [934] = 32'd1157837316;
\$auto$proc_rom.cc:150:do_switch$987 [935] = 32'd2259025932;
\$auto$proc_rom.cc:150:do_switch$987 [936] = 32'd2244642398;
\$auto$proc_rom.cc:150:do_switch$987 [937] = 32'd1191549314;
\$auto$proc_rom.cc:150:do_switch$987 [938] = 32'd1803283;
\$auto$proc_rom.cc:150:do_switch$987 [939] = 32'd995586659;
\$auto$proc_rom.cc:150:do_switch$987 [940] = 32'd4293560219;
\$auto$proc_rom.cc:150:do_switch$987 [941] = 32'd2383615874;
\$auto$proc_rom.cc:150:do_switch$987 [942] = 32'd2474704939;
\$auto$proc_rom.cc:150:do_switch$987 [943] = 32'd16649139;
\$auto$proc_rom.cc:150:do_switch$987 [944] = 32'd2259060258;
\$auto$proc_rom.cc:150:do_switch$987 [945] = 32'd2244609029;
\$auto$proc_rom.cc:150:do_switch$987 [946] = 32'd33555731;
\$auto$proc_rom.cc:150:do_switch$987 [947] = 32'd2581830018;
\$auto$proc_rom.cc:150:do_switch$987 [948] = 32'd2355560075;
\$auto$proc_rom.cc:150:do_switch$987 [949] = 32'd2254355265;
\$auto$proc_rom.cc:150:do_switch$987 [950] = 32'd2244642470;
\$auto$proc_rom.cc:150:do_switch$987 [951] = 32'd38798611;
\$auto$proc_rom.cc:150:do_switch$987 [952] = 32'd2575436677;
\$auto$proc_rom.cc:150:do_switch$987 [953] = 32'd1023652673;
\$auto$proc_rom.cc:150:do_switch$987 [954] = 32'd127074316;
\$auto$proc_rom.cc:150:do_switch$987 [955] = 32'd4231921804;
\$auto$proc_rom.cc:150:do_switch$987 [956] = 32'd869891;
\$auto$proc_rom.cc:150:do_switch$987 [957] = 32'd3965027634;
\$auto$proc_rom.cc:150:do_switch$987 [958] = 32'd90397945;
\$auto$proc_rom.cc:150:do_switch$987 [959] = 32'd210057734;
\$auto$proc_rom.cc:150:do_switch$987 [960] = 32'd2271911146;
\$auto$proc_rom.cc:150:do_switch$987 [961] = 32'd2271453209;
\$auto$proc_rom.cc:150:do_switch$987 [962] = 32'd1182999788;
\$auto$proc_rom.cc:150:do_switch$987 [963] = 32'd117768215;
\$auto$proc_rom.cc:150:do_switch$987 [964] = 32'd129759997;
\$auto$proc_rom.cc:150:do_switch$987 [965] = 32'd4030611879;
\$auto$proc_rom.cc:150:do_switch$987 [966] = 32'd1074298259;
\$auto$proc_rom.cc:150:do_switch$987 [967] = 32'd887395;
\$auto$proc_rom.cc:150:do_switch$987 [968] = 32'd2267182978;
\$auto$proc_rom.cc:150:do_switch$987 [969] = 32'd8909667;
\$auto$proc_rom.cc:150:do_switch$987 [970] = 32'd127633214;
\$auto$proc_rom.cc:150:do_switch$987 [971] = 32'd4030595079;
\$auto$proc_rom.cc:150:do_switch$987 [972] = 32'd2653203;
\$auto$proc_rom.cc:150:do_switch$987 [973] = 32'd571215459;
\$auto$proc_rom.cc:150:do_switch$987 [974] = 32'd436604259;
\$auto$proc_rom.cc:150:do_switch$987 [975] = 32'd2271446622;
\$auto$proc_rom.cc:150:do_switch$987 [976] = 32'd119209997;
\$auto$proc_rom.cc:150:do_switch$987 [977] = 32'd40108020;
\$auto$proc_rom.cc:150:do_switch$987 [978] = 32'd2218400260;
\$auto$proc_rom.cc:150:do_switch$987 [979] = 32'd2244642470;
\$auto$proc_rom.cc:150:do_switch$987 [980] = 32'd1445011;
\$auto$proc_rom.cc:150:do_switch$987 [981] = 32'd2268305794;
\$auto$proc_rom.cc:150:do_switch$987 [982] = 32'd2540323196;
\$auto$proc_rom.cc:150:do_switch$987 [983] = 32'd476419;
\$auto$proc_rom.cc:150:do_switch$987 [984] = 32'd402982499;
\$auto$proc_rom.cc:150:do_switch$987 [985] = 32'd3219228262;
\$auto$proc_rom.cc:150:do_switch$987 [986] = 32'd387663525;
\$auto$proc_rom.cc:150:do_switch$987 [987] = 32'd2669740068;
\$auto$proc_rom.cc:150:do_switch$987 [988] = 32'd387646981;
\$auto$proc_rom.cc:150:do_switch$987 [989] = 32'd2670264343;
\$auto$proc_rom.cc:150:do_switch$987 [990] = 32'd410883;
\$auto$proc_rom.cc:150:do_switch$987 [991] = 32'd4245095451;
\$auto$proc_rom.cc:150:do_switch$987 [992] = 32'd4244965147;
\$auto$proc_rom.cc:150:do_switch$987 [993] = 32'd267876115;
\$auto$proc_rom.cc:150:do_switch$987 [994] = 32'd4276548067;
\$auto$proc_rom.cc:150:do_switch$987 [995] = 32'd110332722;
\$auto$proc_rom.cc:150:do_switch$987 [996] = 32'd3005546518;
\$auto$proc_rom.cc:150:do_switch$987 [997] = 32'd796419;
\$auto$proc_rom.cc:150:do_switch$987 [998] = 32'd2835715;
\$auto$proc_rom.cc:150:do_switch$987 [999] = 32'd1217596169;
\$auto$proc_rom.cc:150:do_switch$987 [1000] = 32'd3633577975;
\$auto$proc_rom.cc:150:do_switch$987 [1001] = 32'd4097000440;
\$auto$proc_rom.cc:150:do_switch$987 [1002] = 32'd203489512;
\$auto$proc_rom.cc:150:do_switch$987 [1003] = 32'd1771155;
\$auto$proc_rom.cc:150:do_switch$987 [1004] = 32'd479441705;
\$auto$proc_rom.cc:150:do_switch$987 [1005] = 32'd3700621828;
\$auto$proc_rom.cc:150:do_switch$987 [1006] = 32'd90374668;
\$auto$proc_rom.cc:150:do_switch$987 [1007] = 32'd486354438;
\$auto$proc_rom.cc:150:do_switch$987 [1008] = 32'd1997782845;
\$auto$proc_rom.cc:150:do_switch$987 [1009] = 32'd110300661;
\$auto$proc_rom.cc:150:do_switch$987 [1010] = 32'd40043632;
\$auto$proc_rom.cc:150:do_switch$987 [1011] = 32'd118691543;
\$auto$proc_rom.cc:150:do_switch$987 [1012] = 32'd123929680;
\$auto$proc_rom.cc:150:do_switch$987 [1013] = 32'd889657061;
\$auto$proc_rom.cc:150:do_switch$987 [1014] = 32'd2254307340;
\$auto$proc_rom.cc:150:do_switch$987 [1015] = 32'd2267187158;
\$auto$proc_rom.cc:150:do_switch$987 [1016] = 32'd2244642470;
\$auto$proc_rom.cc:150:do_switch$987 [1017] = 32'd4042229070;
\$auto$proc_rom.cc:150:do_switch$987 [1018] = 32'd203546959;
\$auto$proc_rom.cc:150:do_switch$987 [1019] = 32'd3114109866;
\$auto$proc_rom.cc:150:do_switch$987 [1020] = 32'd102762259;
\$auto$proc_rom.cc:150:do_switch$987 [1021] = 32'd551880035;
\$auto$proc_rom.cc:150:do_switch$987 [1022] = 32'd116393747;
\$auto$proc_rom.cc:150:do_switch$987 [1023] = 32'd551881571;
\$auto$proc_rom.cc:150:do_switch$987 [1024] = 32'd92276499;
\$auto$proc_rom.cc:150:do_switch$987 [1025] = 32'd384106595;
\$auto$proc_rom.cc:150:do_switch$987 [1026] = 32'd4277696531;
\$auto$proc_rom.cc:150:do_switch$987 [1027] = 32'd1997751977;
\$auto$proc_rom.cc:150:do_switch$987 [1028] = 32'd101924872;
\$auto$proc_rom.cc:150:do_switch$987 [1029] = 32'd2243561104;
\$auto$proc_rom.cc:150:do_switch$987 [1030] = 32'd516232803;
\$auto$proc_rom.cc:150:do_switch$987 [1031] = 32'd211021229;
\$auto$proc_rom.cc:150:do_switch$987 [1032] = 32'd1997734028;
\$auto$proc_rom.cc:150:do_switch$987 [1033] = 32'd2252480520;
\$auto$proc_rom.cc:150:do_switch$987 [1034] = 32'd503781219;
\$auto$proc_rom.cc:150:do_switch$987 [1035] = 32'd268990227;
\$auto$proc_rom.cc:150:do_switch$987 [1036] = 32'd570891363;
\$auto$proc_rom.cc:150:do_switch$987 [1037] = 32'd67532563;
\$auto$proc_rom.cc:150:do_switch$987 [1038] = 32'd796035;
\$auto$proc_rom.cc:150:do_switch$987 [1039] = 32'd537334627;
\$auto$proc_rom.cc:150:do_switch$987 [1040] = 32'd134641171;
\$auto$proc_rom.cc:150:do_switch$987 [1041] = 32'd604375651;
\$auto$proc_rom.cc:150:do_switch$987 [1042] = 32'd17143195;
\$auto$proc_rom.cc:150:do_switch$987 [1043] = 32'd1090901403;
\$auto$proc_rom.cc:150:do_switch$987 [1044] = 32'd1089852955;
\$auto$proc_rom.cc:150:do_switch$987 [1045] = 32'd12961587;
\$auto$proc_rom.cc:150:do_switch$987 [1046] = 32'd390242065;
\$auto$proc_rom.cc:150:do_switch$987 [1047] = 32'd3829568321;
\$auto$proc_rom.cc:150:do_switch$987 [1048] = 32'd3763766878;
\$auto$proc_rom.cc:150:do_switch$987 [1049] = 32'd2285275298;
\$auto$proc_rom.cc:150:do_switch$987 [1050] = 32'd32888731;
\$auto$proc_rom.cc:150:do_switch$987 [1051] = 32'd2244642470;
\$auto$proc_rom.cc:150:do_switch$987 [1052] = 32'd4042229070;
\$auto$proc_rom.cc:150:do_switch$987 [1053] = 32'd2343218127;
\$auto$proc_rom.cc:150:do_switch$987 [1054] = 32'd3069021286;
\$auto$proc_rom.cc:150:do_switch$987 [1055] = 32'd34105363;
\$auto$proc_rom.cc:150:do_switch$987 [1056] = 32'd118733781;
\$auto$proc_rom.cc:150:do_switch$987 [1057] = 32'd367200128;
\$auto$proc_rom.cc:150:do_switch$987 [1058] = 32'd1187116773;
\$auto$proc_rom.cc:150:do_switch$987 [1059] = 32'd1074296595;
\$auto$proc_rom.cc:150:do_switch$987 [1060] = 32'd4281890835;
\$auto$proc_rom.cc:150:do_switch$987 [1061] = 32'd2014562049;
\$auto$proc_rom.cc:150:do_switch$987 [1062] = 32'd671219688;
\$auto$proc_rom.cc:150:do_switch$987 [1063] = 32'd110102291;
\$auto$proc_rom.cc:150:do_switch$987 [1064] = 32'd9178259;
\$auto$proc_rom.cc:150:do_switch$987 [1065] = 32'd4142206947;
\$auto$proc_rom.cc:150:do_switch$987 [1066] = 32'd104859411;
\$auto$proc_rom.cc:150:do_switch$987 [1067] = 32'd4142205923;
\$auto$proc_rom.cc:150:do_switch$987 [1068] = 32'd537425683;
\$auto$proc_rom.cc:150:do_switch$987 [1069] = 32'd274957890;
\$auto$proc_rom.cc:150:do_switch$987 [1070] = 32'd1997740551;
\$auto$proc_rom.cc:150:do_switch$987 [1071] = 32'd342036488;
\$auto$proc_rom.cc:150:do_switch$987 [1072] = 32'd1997741063;
\$auto$proc_rom.cc:150:do_switch$987 [1073] = 32'd308478982;
\$auto$proc_rom.cc:150:do_switch$987 [1074] = 32'd1980962823;
\$auto$proc_rom.cc:150:do_switch$987 [1075] = 32'd654510086;
\$auto$proc_rom.cc:150:do_switch$987 [1076] = 32'd3256418316;
\$auto$proc_rom.cc:150:do_switch$987 [1077] = 32'd2407364546;
\$auto$proc_rom.cc:150:do_switch$987 [1078] = 32'd3829536514;
\$auto$proc_rom.cc:150:do_switch$987 [1079] = 32'd3763766878;
\$auto$proc_rom.cc:150:do_switch$987 [1080] = 32'd2285275298;
\$auto$proc_rom.cc:150:do_switch$987 [1081] = 32'd2466334593;
\$auto$proc_rom.cc:150:do_switch$987 [1082] = 32'd2360522577;
\$auto$proc_rom.cc:150:do_switch$987 [1083] = 32'd34344547;
\$auto$proc_rom.cc:150:do_switch$987 [1084] = 32'd2005044198;
\$auto$proc_rom.cc:150:do_switch$987 [1085] = 32'd223867491;
\$auto$proc_rom.cc:150:do_switch$987 [1086] = 32'd4294608923;
\$auto$proc_rom.cc:150:do_switch$987 [1087] = 32'd1089996859;
\$auto$proc_rom.cc:150:do_switch$987 [1088] = 32'd1477646338;
\$auto$proc_rom.cc:150:do_switch$987 [1089] = 32'd2266169864;
\$auto$proc_rom.cc:150:do_switch$987 [1090] = 32'd213057563;
\$auto$proc_rom.cc:150:do_switch$987 [1091] = 32'd2685468904;
\$auto$proc_rom.cc:150:do_switch$987 [1092] = 32'd2254309125;
\$auto$proc_rom.cc:150:do_switch$987 [1093] = 32'd2259087418;
\$auto$proc_rom.cc:150:do_switch$987 [1094] = 32'd85165514;
\$auto$proc_rom.cc:150:do_switch$987 [1095] = 32'd2344223232;
\$auto$proc_rom.cc:150:do_switch$987 [1096] = 32'd1996659074;
\$auto$proc_rom.cc:150:do_switch$987 [1097] = 32'd4276917987;
\$auto$proc_rom.cc:150:do_switch$987 [1098] = 32'd2347138146;
\$auto$proc_rom.cc:150:do_switch$987 [1099] = 32'd2007154213;
\$auto$proc_rom.cc:150:do_switch$987 [1100] = 32'd265647379;
\$auto$proc_rom.cc:150:do_switch$987 [1101] = 32'd72353555;
\$auto$proc_rom.cc:150:do_switch$987 [1102] = 32'd16279603;
\$auto$proc_rom.cc:150:do_switch$987 [1103] = 32'd3907329507;
\$auto$proc_rom.cc:150:do_switch$987 [1104] = 32'd34105363;
\$auto$proc_rom.cc:150:do_switch$987 [1105] = 32'd1157872969;
\$auto$proc_rom.cc:150:do_switch$987 [1106] = 32'd1746075691;
\$auto$proc_rom.cc:150:do_switch$987 [1107] = 32'd110300168;
\$auto$proc_rom.cc:150:do_switch$987 [1108] = 32'd3061383227;
\$auto$proc_rom.cc:150:do_switch$987 [1109] = 32'd1101825979;
\$auto$proc_rom.cc:150:do_switch$987 [1110] = 32'd3145592894;
\$auto$proc_rom.cc:150:do_switch$987 [1111] = 32'd3991094273;
\$auto$proc_rom.cc:150:do_switch$987 [1112] = 32'd3104686747;
\$auto$proc_rom.cc:150:do_switch$987 [1113] = 32'd34105363;
\$auto$proc_rom.cc:150:do_switch$987 [1114] = 32'd1997752001;
\$auto$proc_rom.cc:150:do_switch$987 [1115] = 32'd3071098888;
\$auto$proc_rom.cc:150:do_switch$987 [1116] = 32'd2266724226;
\$auto$proc_rom.cc:150:do_switch$987 [1117] = 32'd4217569303;
\$auto$proc_rom.cc:150:do_switch$987 [1118] = 32'd2266698583;
\$auto$proc_rom.cc:150:do_switch$987 [1119] = 32'd213647354;
\$auto$proc_rom.cc:150:do_switch$987 [1120] = 32'd478298359;
\$auto$proc_rom.cc:150:do_switch$987 [1121] = 32'd34397331;
\$auto$proc_rom.cc:150:do_switch$987 [1122] = 32'd1804051;
\$auto$proc_rom.cc:150:do_switch$987 [1123] = 32'd2686033082;
\$auto$proc_rom.cc:150:do_switch$987 [1124] = 32'd117798658;
\$auto$proc_rom.cc:150:do_switch$987 [1125] = 32'd2259060318;
\$auto$proc_rom.cc:150:do_switch$987 [1126] = 32'd4030368698;
\$auto$proc_rom.cc:150:do_switch$987 [1127] = 32'd85165514;
\$auto$proc_rom.cc:150:do_switch$987 [1128] = 32'd2575434240;
\$auto$proc_rom.cc:150:do_switch$987 [1129] = 32'd4286355171;
\$auto$proc_rom.cc:150:do_switch$987 [1130] = 32'd869891;
\$auto$proc_rom.cc:150:do_switch$987 [1131] = 32'd1738651;
\$auto$proc_rom.cc:150:do_switch$987 [1132] = 32'd2234708030;
\$auto$proc_rom.cc:150:do_switch$987 [1133] = 32'd3624277219;
\$auto$proc_rom.cc:150:do_switch$987 [1134] = 32'd3082652894;
\$auto$proc_rom.cc:150:do_switch$987 [1135] = 32'd1969440517;
\$auto$proc_rom.cc:150:do_switch$987 [1136] = 32'd2216365911;
\$auto$proc_rom.cc:150:do_switch$987 [1137] = 32'd335740906;
\$auto$proc_rom.cc:150:do_switch$987 [1138] = 32'd1804051;
\$auto$proc_rom.cc:150:do_switch$987 [1139] = 32'd2486865921;
\$auto$proc_rom.cc:150:do_switch$987 [1140] = 32'd117809169;
\$auto$proc_rom.cc:150:do_switch$987 [1141] = 32'd4030367326;
\$auto$proc_rom.cc:150:do_switch$987 [1142] = 32'd2244642470;
\$auto$proc_rom.cc:150:do_switch$987 [1143] = 32'd33555731;
\$auto$proc_rom.cc:150:do_switch$987 [1144] = 32'd2575469498;
\$auto$proc_rom.cc:150:do_switch$987 [1145] = 32'd384005890;
\$auto$proc_rom.cc:150:do_switch$987 [1146] = 32'd1157889671;
\$auto$proc_rom.cc:150:do_switch$987 [1147] = 32'd2259025932;
\$auto$proc_rom.cc:150:do_switch$987 [1148] = 32'd2244642338;
\$auto$proc_rom.cc:150:do_switch$987 [1149] = 32'd1313683;
\$auto$proc_rom.cc:150:do_switch$987 [1150] = 32'd2355534210;
\$auto$proc_rom.cc:150:do_switch$987 [1151] = 32'd1183429797;
\$auto$proc_rom.cc:150:do_switch$987 [1152] = 32'd1074296595;
\$auto$proc_rom.cc:150:do_switch$987 [1153] = 32'd104859155;
\$auto$proc_rom.cc:150:do_switch$987 [1154] = 32'd3905230051;
\$auto$proc_rom.cc:150:do_switch$987 [1155] = 32'd3758557667;
\$auto$proc_rom.cc:150:do_switch$987 [1156] = 32'd1185002841;
\$auto$proc_rom.cc:150:do_switch$987 [1157] = 32'd931380205;
\$auto$proc_rom.cc:150:do_switch$987 [1158] = 32'd2254307340;
\$auto$proc_rom.cc:150:do_switch$987 [1159] = 32'd3608405058;
\$auto$proc_rom.cc:150:do_switch$987 [1160] = 32'd1160987639;
\$auto$proc_rom.cc:150:do_switch$987 [1161] = 32'd3763732727;
\$auto$proc_rom.cc:150:do_switch$987 [1162] = 32'd2285275298;
\$auto$proc_rom.cc:150:do_switch$987 [1163] = 32'd120820733;
\$auto$proc_rom.cc:150:do_switch$987 [1164] = 32'd2259042533;
\$auto$proc_rom.cc:150:do_switch$987 [1165] = 32'd2236515786;
\$auto$proc_rom.cc:150:do_switch$987 [1166] = 32'd2406478063;
\$auto$proc_rom.cc:150:do_switch$987 [1167] = 32'd2355530666;
\$auto$proc_rom.cc:150:do_switch$987 [1168] = 32'd4120097813;
\$auto$proc_rom.cc:150:do_switch$987 [1169] = 32'd2267942901;
\$auto$proc_rom.cc:150:do_switch$987 [1170] = 32'd1191427353;
\$auto$proc_rom.cc:150:do_switch$987 [1171] = 32'd3043557388;
\$auto$proc_rom.cc:150:do_switch$987 [1172] = 32'd2355530658;
\$auto$proc_rom.cc:150:do_switch$987 [1173] = 32'd922991617;
\$auto$proc_rom.cc:150:do_switch$987 [1174] = 32'd2254307340;
\$auto$proc_rom.cc:150:do_switch$987 [1175] = 32'd3763790914;
\$auto$proc_rom.cc:150:do_switch$987 [1176] = 32'd2285275298;
\$auto$proc_rom.cc:150:do_switch$987 [1177] = 32'd3086043009;
\$auto$proc_rom.cc:150:do_switch$987 [1178] = 32'd800643;
\$auto$proc_rom.cc:150:do_switch$987 [1179] = 32'd3829565022;
\$auto$proc_rom.cc:150:do_switch$987 [1180] = 32'd1140315923;
\$auto$proc_rom.cc:150:do_switch$987 [1181] = 32'd16205107;
\$auto$proc_rom.cc:150:do_switch$987 [1182] = 32'd2292375638;
\$auto$proc_rom.cc:150:do_switch$987 [1183] = 32'd2482866230;
\$auto$proc_rom.cc:150:do_switch$987 [1184] = 32'd1088751411;
\$auto$proc_rom.cc:150:do_switch$987 [1185] = 32'd922989541;
\$auto$proc_rom.cc:150:do_switch$987 [1186] = 32'd2254307340;
\$auto$proc_rom.cc:150:do_switch$987 [1187] = 32'd3763790914;
\$auto$proc_rom.cc:150:do_switch$987 [1188] = 32'd2285275298;
\$auto$proc_rom.cc:150:do_switch$987 [1189] = 32'd3151579009;
\$auto$proc_rom.cc:150:do_switch$987 [1190] = 32'd1106630171;
\$auto$proc_rom.cc:150:do_switch$987 [1191] = 32'd12961587;
\$auto$proc_rom.cc:150:do_switch$987 [1192] = 32'd3145047825;
\$auto$proc_rom.cc:150:do_switch$987 [1193] = 32'd3113086978;
\$auto$proc_rom.cc:150:do_switch$987 [1194] = 32'd3078718558;
\$auto$proc_rom.cc:150:do_switch$987 [1195] = 32'd3071406138;
\$auto$proc_rom.cc:150:do_switch$987 [1196] = 32'd51605789;
\$auto$proc_rom.cc:150:do_switch$987 [1197] = 32'd2385117825;
\$auto$proc_rom.cc:150:do_switch$987 [1198] = 32'd1303;
\$auto$proc_rom.cc:150:do_switch$987 [1199] = 32'd4164088878;
\$auto$proc_rom.cc:150:do_switch$987 [1200] = 32'd3770350646;
\$auto$proc_rom.cc:150:do_switch$987 [1201] = 32'd2264040842;
\$auto$proc_rom.cc:150:do_switch$987 [1202] = 32'd1451067162;
\$auto$proc_rom.cc:150:do_switch$987 [1203] = 32'd2489648403;
\$auto$proc_rom.cc:150:do_switch$987 [1204] = 32'd3837717510;
\$auto$proc_rom.cc:150:do_switch$987 [1205] = 32'd3972458690;
\$auto$proc_rom.cc:150:do_switch$987 [1206] = 32'd4042253338;
\$auto$proc_rom.cc:150:do_switch$987 [1207] = 32'd1625461439;
\$auto$proc_rom.cc:150:do_switch$987 [1208] = 32'd2156028197;
\$auto$proc_rom.cc:150:do_switch$987 [1209] = 32'd16787223;
\$auto$proc_rom.cc:150:do_switch$987 [1210] = 32'd3519481619;
\$auto$proc_rom.cc:150:do_switch$987 [1211] = 32'd1199769425;
\$auto$proc_rom.cc:150:do_switch$987 [1212] = 32'd4153606151;
\$auto$proc_rom.cc:150:do_switch$987 [1213] = 32'd3756327431;
\$auto$proc_rom.cc:150:do_switch$987 [1214] = 32'd16787351;
\$auto$proc_rom.cc:150:do_switch$987 [1215] = 32'd3500639267;
\$auto$proc_rom.cc:150:do_switch$987 [1216] = 32'd2509996162;
\$auto$proc_rom.cc:150:do_switch$987 [1217] = 32'd1429930053;
\$auto$proc_rom.cc:150:do_switch$987 [1218] = 32'd664208053;
\$auto$proc_rom.cc:150:do_switch$987 [1219] = 32'd2274558208;
\$auto$proc_rom.cc:150:do_switch$987 [1220] = 32'd2183384935;
\$auto$proc_rom.cc:150:do_switch$987 [1221] = 32'd118685703;
\$auto$proc_rom.cc:150:do_switch$987 [1222] = 32'd2250504192;
\$auto$proc_rom.cc:150:do_switch$987 [1223] = 32'd655818983;
\$auto$proc_rom.cc:150:do_switch$987 [1224] = 32'd1989345536;
\$auto$proc_rom.cc:150:do_switch$987 [1225] = 32'd1427836917;
\$auto$proc_rom.cc:150:do_switch$987 [1226] = 32'd19071109;
\$auto$proc_rom.cc:150:do_switch$987 [1227] = 32'd1964232407;
\$auto$proc_rom.cc:150:do_switch$987 [1228] = 32'd2183335925;
\$auto$proc_rom.cc:150:do_switch$987 [1229] = 32'd1192034471;
\$auto$proc_rom.cc:150:do_switch$987 [1230] = 32'd15173155;
\$auto$proc_rom.cc:150:do_switch$987 [1231] = 32'd4235200275;
\$auto$proc_rom.cc:150:do_switch$987 [1232] = 32'd15172643;
\$auto$proc_rom.cc:150:do_switch$987 [1233] = 32'd33556243;
\$auto$proc_rom.cc:150:do_switch$987 [1234] = 32'd15173667;
\$auto$proc_rom.cc:150:do_switch$987 [1235] = 32'd2022932610;
\$auto$proc_rom.cc:150:do_switch$987 [1236] = 32'd1208025126;
\$auto$proc_rom.cc:150:do_switch$987 [1237] = 32'd2506328581;
\$auto$proc_rom.cc:150:do_switch$987 [1238] = 32'd1226571784;
\$auto$proc_rom.cc:150:do_switch$987 [1239] = 32'd3416868869;
\$auto$proc_rom.cc:150:do_switch$987 [1240] = 32'd1629275665;
\$auto$proc_rom.cc:150:do_switch$987 [1241] = 32'd3373811461;
\$auto$proc_rom.cc:150:do_switch$987 [1242] = 32'd34054179;
\$auto$proc_rom.cc:150:do_switch$987 [1243] = 32'd1737082281;
\$auto$proc_rom.cc:150:do_switch$987 [1244] = 32'd2274582804;
\$auto$proc_rom.cc:150:do_switch$987 [1245] = 32'd2685497607;
\$auto$proc_rom.cc:150:do_switch$987 [1246] = 32'd1255719845;
\$auto$proc_rom.cc:150:do_switch$987 [1247] = 32'd1575172093;
\$auto$proc_rom.cc:150:do_switch$987 [1248] = 32'd4153671175;
\$auto$proc_rom.cc:150:do_switch$987 [1249] = 32'd939335669;
\$auto$proc_rom.cc:150:do_switch$987 [1250] = 32'd9967643;
\$auto$proc_rom.cc:150:do_switch$987 [1251] = 32'd17295283;
\$auto$proc_rom.cc:150:do_switch$987 [1252] = 32'd3537643393;
\$auto$proc_rom.cc:150:do_switch$987 [1253] = 32'd1073743671;
\$auto$proc_rom.cc:150:do_switch$987 [1254] = 32'd2415479516;
\$auto$proc_rom.cc:150:do_switch$987 [1255] = 32'd4293732225;
\$auto$proc_rom.cc:150:do_switch$987 [1256] = 32'd558691;
\$auto$proc_rom.cc:150:do_switch$987 [1257] = 32'd337955;
\$auto$proc_rom.cc:150:do_switch$987 [1258] = 32'd3533457285;
\$auto$proc_rom.cc:150:do_switch$987 [1259] = 32'd2156020993;
\$auto$proc_rom.cc:150:do_switch$987 [1260] = 32'd395291;
\$auto$proc_rom.cc:150:do_switch$987 [1261] = 32'd2346956661;
\$auto$proc_rom.cc:150:do_switch$987 [1262] = 32'd289537544;
\$auto$proc_rom.cc:150:do_switch$987 [1263] = 32'd3825623324;
\$auto$proc_rom.cc:150:do_switch$987 [1264] = 32'd337955;
\$auto$proc_rom.cc:150:do_switch$987 [1265] = 32'd3549972229;
\$auto$proc_rom.cc:150:do_switch$987 [1266] = 32'd1168197121;
\$auto$proc_rom.cc:150:do_switch$987 [1267] = 32'd4164940015;
\$auto$proc_rom.cc:150:do_switch$987 [1268] = 32'd1157718178;
\$auto$proc_rom.cc:150:do_switch$987 [1269] = 32'd2156003649;
\$auto$proc_rom.cc:150:do_switch$987 [1270] = 32'd2156025213;
\$auto$proc_rom.cc:150:do_switch$987 [1271] = 32'd2276362410;
\$auto$proc_rom.cc:150:do_switch$987 [1272] = 32'd436604003;
\$auto$proc_rom.cc:150:do_switch$987 [1273] = 32'd7861523;
\$auto$proc_rom.cc:150:do_switch$987 [1274] = 32'd1074074211;
\$auto$proc_rom.cc:150:do_switch$987 [1275] = 32'd1930654009;
\$auto$proc_rom.cc:150:do_switch$987 [1276] = 32'd4228251687;
\$auto$proc_rom.cc:150:do_switch$987 [1277] = 32'd4096194594;
\$auto$proc_rom.cc:150:do_switch$987 [1278] = 32'd3964596298;
\$auto$proc_rom.cc:150:do_switch$987 [1279] = 32'd1115785989;
\$auto$proc_rom.cc:150:do_switch$987 [1280] = 32'd202851;
\$auto$proc_rom.cc:150:do_switch$987 [1281] = 32'd17343875;
\$auto$proc_rom.cc:150:do_switch$987 [1282] = 32'd3784917637;
\$auto$proc_rom.cc:150:do_switch$987 [1283] = 32'd459419;
\$auto$proc_rom.cc:150:do_switch$987 [1284] = 32'd268898659;
\$auto$proc_rom.cc:150:do_switch$987 [1285] = 32'd268929123;
\$auto$proc_rom.cc:150:do_switch$987 [1286] = 32'd12597043;
\$auto$proc_rom.cc:150:do_switch$987 [1287] = 32'd13645235;
\$auto$proc_rom.cc:150:do_switch$987 [1288] = 32'd1513243;
\$auto$proc_rom.cc:150:do_switch$987 [1289] = 32'd1436258125;
\$auto$proc_rom.cc:150:do_switch$987 [1290] = 32'd521863191;
\$auto$proc_rom.cc:150:do_switch$987 [1291] = 32'd4120052103;
\$auto$proc_rom.cc:150:do_switch$987 [1292] = 32'd3087208437;
\$auto$proc_rom.cc:150:do_switch$987 [1293] = 32'd3734700040;
\$auto$proc_rom.cc:150:do_switch$987 [1294] = 32'd3726311479;
\$auto$proc_rom.cc:150:do_switch$987 [1295] = 32'd1595605047;
\$auto$proc_rom.cc:150:do_switch$987 [1296] = 32'd3316990351;
\$auto$proc_rom.cc:150:do_switch$987 [1297] = 32'd5756699;
\$auto$proc_rom.cc:150:do_switch$987 [1298] = 32'd5756315;
\$auto$proc_rom.cc:150:do_switch$987 [1299] = 32'd2677264185;
\$auto$proc_rom.cc:150:do_switch$987 [1300] = 32'd3750953477;
\$auto$proc_rom.cc:150:do_switch$987 [1301] = 32'd2276590063;
\$auto$proc_rom.cc:150:do_switch$987 [1302] = 32'd2031329202;
\$auto$proc_rom.cc:150:do_switch$987 [1303] = 32'd2039676982;
\$auto$proc_rom.cc:150:do_switch$987 [1304] = 32'd2688352278;
\$auto$proc_rom.cc:150:do_switch$987 [1305] = 32'd3655427;
\$auto$proc_rom.cc:150:do_switch$987 [1306] = 32'd509059;
\$auto$proc_rom.cc:150:do_switch$987 [1307] = 32'd1557507;
\$auto$proc_rom.cc:150:do_switch$987 [1308] = 32'd2605955;
\$auto$proc_rom.cc:150:do_switch$987 [1309] = 32'd9504163;
\$auto$proc_rom.cc:150:do_switch$987 [1310] = 32'd8455459;
\$auto$proc_rom.cc:150:do_switch$987 [1311] = 32'd7406755;
\$auto$proc_rom.cc:150:do_switch$987 [1312] = 32'd14746659;
\$auto$proc_rom.cc:150:do_switch$987 [1313] = 32'd126961442;
\$auto$proc_rom.cc:150:do_switch$987 [1314] = 32'd48768035;
\$auto$proc_rom.cc:150:do_switch$987 [1315] = 32'd33000803;
\$auto$proc_rom.cc:150:do_switch$987 [1316] = 32'd21546755;
\$auto$proc_rom.cc:150:do_switch$987 [1317] = 32'd325311329;
\$auto$proc_rom.cc:150:do_switch$987 [1318] = 32'd1134038025;
\$auto$proc_rom.cc:150:do_switch$987 [1319] = 32'd606275473;
\$auto$proc_rom.cc:150:do_switch$987 [1320] = 32'd2548237032;
\$auto$proc_rom.cc:150:do_switch$987 [1321] = 32'd2535194615;
\$auto$proc_rom.cc:150:do_switch$987 [1322] = 32'd1801650213;
\$auto$proc_rom.cc:150:do_switch$987 [1323] = 32'd4128444359;
\$auto$proc_rom.cc:150:do_switch$987 [1324] = 32'd396042238;
\$auto$proc_rom.cc:150:do_switch$987 [1325] = 32'd914161871;
\$auto$proc_rom.cc:150:do_switch$987 [1326] = 32'd2459668061;
\$auto$proc_rom.cc:150:do_switch$987 [1327] = 32'd1714618514;
\$auto$proc_rom.cc:150:do_switch$987 [1328] = 32'd1737031766;
\$auto$proc_rom.cc:150:do_switch$987 [1329] = 32'd2274567681;
\$auto$proc_rom.cc:150:do_switch$987 [1330] = 32'd2686021895;
\$auto$proc_rom.cc:150:do_switch$987 [1331] = 32'd268929379;
\$auto$proc_rom.cc:150:do_switch$987 [1332] = 32'd21505795;
\$auto$proc_rom.cc:150:do_switch$987 [1333] = 32'd1541617661;
\$auto$proc_rom.cc:150:do_switch$987 [1334] = 32'd572784135;
\$auto$proc_rom.cc:150:do_switch$987 [1335] = 32'd2810381000;
\$auto$proc_rom.cc:150:do_switch$987 [1336] = 32'd3482386696;
\$auto$proc_rom.cc:150:do_switch$987 [1337] = 32'd986467;
\$auto$proc_rom.cc:150:do_switch$987 [1338] = 32'd2062099;
\$auto$proc_rom.cc:150:do_switch$987 [1339] = 32'd302455651;
\$auto$proc_rom.cc:150:do_switch$987 [1340] = 32'd1073743671;
\$auto$proc_rom.cc:150:do_switch$987 [1341] = 32'd21505923;
\$auto$proc_rom.cc:150:do_switch$987 [1342] = 32'd662802425;
\$auto$proc_rom.cc:150:do_switch$987 [1343] = 32'd291766245;
\$auto$proc_rom.cc:150:do_switch$987 [1344] = 32'd1893860355;
\$auto$proc_rom.cc:150:do_switch$987 [1345] = 32'd1956803650;
\$auto$proc_rom.cc:150:do_switch$987 [1346] = 32'd1776449794;
\$auto$proc_rom.cc:150:do_switch$987 [1347] = 32'd1629570305;
\$auto$proc_rom.cc:150:do_switch$987 [1348] = 32'd3070460034;
\$auto$proc_rom.cc:150:do_switch$987 [1349] = 32'd1166344200;
\$auto$proc_rom.cc:150:do_switch$987 [1350] = 32'd12101667;
\$auto$proc_rom.cc:150:do_switch$987 [1351] = 32'd34021411;
\$auto$proc_rom.cc:150:do_switch$987 [1352] = 32'd3993476323;
\$auto$proc_rom.cc:150:do_switch$987 [1353] = 32'd4228059107;
\$auto$proc_rom.cc:150:do_switch$987 [1354] = 32'd571267;
\$auto$proc_rom.cc:150:do_switch$987 [1355] = 32'd567331;
\$auto$proc_rom.cc:150:do_switch$987 [1356] = 32'd3549972229;
\$auto$proc_rom.cc:150:do_switch$987 [1357] = 32'd1168197121;
\$auto$proc_rom.cc:150:do_switch$987 [1358] = 32'd4042229062;
\$auto$proc_rom.cc:150:do_switch$987 [1359] = 32'd3083985247;
\$auto$proc_rom.cc:150:do_switch$987 [1360] = 32'd571267;
\$auto$proc_rom.cc:150:do_switch$987 [1361] = 32'd1950511330;
\$auto$proc_rom.cc:150:do_switch$987 [1362] = 32'd567331;
\$auto$proc_rom.cc:150:do_switch$987 [1363] = 32'd3549972229;
\$auto$proc_rom.cc:150:do_switch$987 [1364] = 32'd2030204066;
\$auto$proc_rom.cc:150:do_switch$987 [1365] = 32'd1157720546;
\$auto$proc_rom.cc:150:do_switch$987 [1366] = 32'd2156028193;
\$auto$proc_rom.cc:150:do_switch$987 [1367] = 32'd629859;
\$auto$proc_rom.cc:150:do_switch$987 [1368] = 32'd2610947;
\$auto$proc_rom.cc:150:do_switch$987 [1369] = 32'd512899;
\$auto$proc_rom.cc:150:do_switch$987 [1370] = 32'd14751011;
\$auto$proc_rom.cc:150:do_switch$987 [1371] = 32'd7410723;
\$auto$proc_rom.cc:150:do_switch$987 [1372] = 32'd3205580578;
\$auto$proc_rom.cc:150:do_switch$987 [1373] = 32'd3655427;
\$auto$proc_rom.cc:150:do_switch$987 [1374] = 32'd509059;
\$auto$proc_rom.cc:150:do_switch$987 [1375] = 32'd1557507;
\$auto$proc_rom.cc:150:do_switch$987 [1376] = 32'd2605955;
\$auto$proc_rom.cc:150:do_switch$987 [1377] = 32'd9503779;
\$auto$proc_rom.cc:150:do_switch$987 [1378] = 32'd8455331;
\$auto$proc_rom.cc:150:do_switch$987 [1379] = 32'd7406883;
\$auto$proc_rom.cc:150:do_switch$987 [1380] = 32'd14747043;
\$auto$proc_rom.cc:150:do_switch$987 [1381] = 32'd3183822626;
\$auto$proc_rom.cc:150:do_switch$987 [1382] = 32'd3825637091;
\$auto$proc_rom.cc:150:do_switch$987 [1383] = 32'd3141895738;
\$auto$proc_rom.cc:150:do_switch$987 [1384] = 32'd21546883;
\$auto$proc_rom.cc:150:do_switch$987 [1385] = 32'd15074739;
\$auto$proc_rom.cc:150:do_switch$987 [1386] = 32'd380803;
\$auto$proc_rom.cc:150:do_switch$987 [1387] = 32'd1089373627;
\$auto$proc_rom.cc:150:do_switch$987 [1388] = 32'd94629789;
\$auto$proc_rom.cc:150:do_switch$987 [1389] = 32'd1334116849;
\$auto$proc_rom.cc:150:do_switch$987 [1390] = 32'd482344035;
\$auto$proc_rom.cc:150:do_switch$987 [1391] = 32'd15077299;
\$auto$proc_rom.cc:150:do_switch$987 [1392] = 32'd2081667;
\$auto$proc_rom.cc:150:do_switch$987 [1393] = 32'd86200205;
\$auto$proc_rom.cc:150:do_switch$987 [1394] = 32'd2506293361;
\$auto$proc_rom.cc:150:do_switch$987 [1395] = 32'd2536636917;
\$auto$proc_rom.cc:150:do_switch$987 [1396] = 32'd2574211;
\$auto$proc_rom.cc:150:do_switch$987 [1397] = 32'd15795363;
\$auto$proc_rom.cc:150:do_switch$987 [1398] = 32'd66595;
\$auto$proc_rom.cc:150:do_switch$987 [1399] = 32'd1893902397;
\$auto$proc_rom.cc:150:do_switch$987 [1400] = 32'd1956803650;
\$auto$proc_rom.cc:150:do_switch$987 [1401] = 32'd1776449794;
\$auto$proc_rom.cc:150:do_switch$987 [1402] = 32'd1629574525;
\$auto$proc_rom.cc:150:do_switch$987 [1403] = 32'd69435522;
\$auto$proc_rom.cc:150:do_switch$987 [1404] = 32'd1199899121;
\$auto$proc_rom.cc:150:do_switch$987 [1405] = 32'd414710371;
\$auto$proc_rom.cc:150:do_switch$987 [1406] = 32'd15075251;
\$auto$proc_rom.cc:150:do_switch$987 [1407] = 32'd1557379;
\$auto$proc_rom.cc:150:do_switch$987 [1408] = 32'd1199656845;
\$auto$proc_rom.cc:150:do_switch$987 [1409] = 32'd7406755;
\$auto$proc_rom.cc:150:do_switch$987 [1410] = 32'd32871779;
\$auto$proc_rom.cc:150:do_switch$987 [1411] = 32'd1199806010;
\$auto$proc_rom.cc:150:do_switch$987 [1412] = 32'd86179878;
\$auto$proc_rom.cc:150:do_switch$987 [1413] = 32'd94568689;
\$auto$proc_rom.cc:150:do_switch$987 [1414] = 32'd1201799169;
\$auto$proc_rom.cc:150:do_switch$987 [1415] = 32'd49816611;
\$auto$proc_rom.cc:150:do_switch$987 [1416] = 32'd104314233;
\$auto$proc_rom.cc:150:do_switch$987 [1417] = 32'd1326268416;
\$auto$proc_rom.cc:150:do_switch$987 [1418] = 32'd662916997;
\$auto$proc_rom.cc:150:do_switch$987 [1419] = 32'd3608871240;
\$auto$proc_rom.cc:150:do_switch$987 [1420] = 32'd1997734023;
\$auto$proc_rom.cc:150:do_switch$987 [1421] = 32'd662769655;
\$auto$proc_rom.cc:150:do_switch$987 [1422] = 32'd662948641;
\$auto$proc_rom.cc:150:do_switch$987 [1423] = 32'd1994588808;
\$auto$proc_rom.cc:150:do_switch$987 [1424] = 32'd121372613;
\$auto$proc_rom.cc:150:do_switch$987 [1425] = 32'd3313713326;
\$auto$proc_rom.cc:150:do_switch$987 [1426] = 32'd662765896;
\$auto$proc_rom.cc:150:do_switch$987 [1427] = 32'd183465571;
\$auto$proc_rom.cc:150:do_switch$987 [1428] = 32'd268800355;
\$auto$proc_rom.cc:150:do_switch$987 [1429] = 32'd8902683;
\$auto$proc_rom.cc:150:do_switch$987 [1430] = 32'd17290651;
\$auto$proc_rom.cc:150:do_switch$987 [1431] = 32'd25679643;
\$auto$proc_rom.cc:150:do_switch$987 [1432] = 32'd16155043;
\$auto$proc_rom.cc:150:do_switch$987 [1433] = 32'd17203491;
\$auto$proc_rom.cc:150:do_switch$987 [1434] = 32'd11960483;
\$auto$proc_rom.cc:150:do_switch$987 [1435] = 32'd15106083;
\$auto$proc_rom.cc:150:do_switch$987 [1436] = 32'd571395;
\$auto$proc_rom.cc:150:do_switch$987 [1437] = 32'd21505923;
\$auto$proc_rom.cc:150:do_switch$987 [1438] = 32'd621872785;
\$auto$proc_rom.cc:150:do_switch$987 [1439] = 32'd8902427;
\$auto$proc_rom.cc:150:do_switch$987 [1440] = 32'd267876115;
\$auto$proc_rom.cc:150:do_switch$987 [1441] = 32'd4216661889;
\$auto$proc_rom.cc:150:do_switch$987 [1442] = 32'd662802417;
\$auto$proc_rom.cc:150:do_switch$987 [1443] = 32'd2028208089;
\$auto$proc_rom.cc:150:do_switch$987 [1444] = 32'd1728702405;
\$auto$proc_rom.cc:150:do_switch$987 [1445] = 32'd1896285971;
\$auto$proc_rom.cc:150:do_switch$987 [1446] = 32'd3543244817;
\$auto$proc_rom.cc:150:do_switch$987 [1447] = 32'd21505923;
\$auto$proc_rom.cc:150:do_switch$987 [1448] = 32'd3617273725;
\$auto$proc_rom.cc:150:do_switch$987 [1449] = 32'd4153606279;
\$auto$proc_rom.cc:150:do_switch$987 [1450] = 32'd3689222135;
\$auto$proc_rom.cc:150:do_switch$987 [1451] = 32'd42477443;
\$auto$proc_rom.cc:150:do_switch$987 [1452] = 32'd21546499;
\$auto$proc_rom.cc:150:do_switch$987 [1453] = 32'd1378075;
\$auto$proc_rom.cc:150:do_switch$987 [1454] = 32'd4000130945;
\$auto$proc_rom.cc:150:do_switch$987 [1455] = 32'd25679387;
\$auto$proc_rom.cc:150:do_switch$987 [1456] = 32'd13008931;
\$auto$proc_rom.cc:150:do_switch$987 [1457] = 32'd3807251939;
\$auto$proc_rom.cc:150:do_switch$987 [1458] = 32'd17291035;
\$auto$proc_rom.cc:150:do_switch$987 [1459] = 32'd15106211;
\$auto$proc_rom.cc:150:do_switch$987 [1460] = 32'd2426651;
\$auto$proc_rom.cc:150:do_switch$987 [1461] = 32'd15599715;
\$auto$proc_rom.cc:150:do_switch$987 [1462] = 32'd8902427;
\$auto$proc_rom.cc:150:do_switch$987 [1463] = 32'd15106339;
\$auto$proc_rom.cc:150:do_switch$987 [1464] = 32'd3475227;
\$auto$proc_rom.cc:150:do_switch$987 [1465] = 32'd1089374011;
\$auto$proc_rom.cc:150:do_switch$987 [1466] = 32'd451102213;
\$auto$proc_rom.cc:150:do_switch$987 [1467] = 32'd2175000775;
\$auto$proc_rom.cc:150:do_switch$987 [1468] = 32'd149094646;
\$auto$proc_rom.cc:150:do_switch$987 [1469] = 32'd3047809027;
\$auto$proc_rom.cc:150:do_switch$987 [1470] = 32'd1378075;
\$auto$proc_rom.cc:150:do_switch$987 [1471] = 32'd3583764877;
\$auto$proc_rom.cc:150:do_switch$987 [1472] = 32'd2149777799;
\$auto$proc_rom.cc:150:do_switch$987 [1473] = 32'd191037622;
\$auto$proc_rom.cc:150:do_switch$987 [1474] = 32'd3583706350;
\$auto$proc_rom.cc:150:do_switch$987 [1475] = 32'd119210247;
\$auto$proc_rom.cc:150:do_switch$987 [1476] = 32'd2158166053;
\$auto$proc_rom.cc:150:do_switch$987 [1477] = 32'd96141494;
\$auto$proc_rom.cc:150:do_switch$987 [1478] = 32'd2556641518;
\$auto$proc_rom.cc:150:do_switch$987 [1479] = 32'd3617260533;
\$auto$proc_rom.cc:150:do_switch$987 [1480] = 32'd2166554759;
\$auto$proc_rom.cc:150:do_switch$987 [1481] = 32'd3087204598;
\$auto$proc_rom.cc:150:do_switch$987 [1482] = 32'd621608968;
\$auto$proc_rom.cc:150:do_switch$987 [1483] = 32'd2149826045;
\$auto$proc_rom.cc:150:do_switch$987 [1484] = 32'd90374390;
\$auto$proc_rom.cc:150:do_switch$987 [1485] = 32'd3583705838;
\$auto$proc_rom.cc:150:do_switch$987 [1486] = 32'd119210119;
\$auto$proc_rom.cc:150:do_switch$987 [1487] = 32'd2158166053;
\$auto$proc_rom.cc:150:do_switch$987 [1488] = 32'd96141494;
\$auto$proc_rom.cc:150:do_switch$987 [1489] = 32'd2304983278;
\$auto$proc_rom.cc:150:do_switch$987 [1490] = 32'd3087205365;
\$auto$proc_rom.cc:150:do_switch$987 [1491] = 32'd2235170824;
\$auto$proc_rom.cc:150:do_switch$987 [1492] = 32'd4145266153;
\$auto$proc_rom.cc:150:do_switch$987 [1493] = 32'd3877175350;
\$auto$proc_rom.cc:150:do_switch$987 [1494] = 32'd3207185052;
\$auto$proc_rom.cc:150:do_switch$987 [1495] = 32'd571395;
\$auto$proc_rom.cc:150:do_switch$987 [1496] = 32'd3051455858;
\$auto$proc_rom.cc:150:do_switch$987 [1497] = 32'd1505043;
\$auto$proc_rom.cc:150:do_switch$987 [1498] = 32'd17290651;
\$auto$proc_rom.cc:150:do_switch$987 [1499] = 32'd2418272013;
\$auto$proc_rom.cc:150:do_switch$987 [1500] = 32'd2434990326;
\$auto$proc_rom.cc:150:do_switch$987 [1501] = 32'd3187474614;
\$auto$proc_rom.cc:150:do_switch$987 [1502] = 32'd17291163;
\$auto$proc_rom.cc:150:do_switch$987 [1503] = 32'd16154915;
\$auto$proc_rom.cc:150:do_switch$987 [1504] = 32'd571395;
\$auto$proc_rom.cc:150:do_switch$987 [1505] = 32'd3042256141;
\$auto$proc_rom.cc:150:do_switch$987 [1506] = 32'd66723;
\$auto$proc_rom.cc:150:do_switch$987 [1507] = 32'd3042002817;
\$auto$proc_rom.cc:150:do_switch$987 [1508] = 32'd66851;
\$auto$proc_rom.cc:150:do_switch$987 [1509] = 32'd3625694593;
\$auto$proc_rom.cc:150:do_switch$987 [1510] = 32'd3608871047;
\$auto$proc_rom.cc:150:do_switch$987 [1511] = 32'd2149777799;
\$auto$proc_rom.cc:150:do_switch$987 [1512] = 32'd2158166262;
\$auto$proc_rom.cc:150:do_switch$987 [1513] = 32'd2166554886;
\$auto$proc_rom.cc:150:do_switch$987 [1514] = 32'd2174943414;
\$auto$proc_rom.cc:150:do_switch$987 [1515] = 32'd3087204582;
\$auto$proc_rom.cc:150:do_switch$987 [1516] = 32'd3049848840;
\$auto$proc_rom.cc:150:do_switch$987 [1517] = 32'd16154659;
\$auto$proc_rom.cc:150:do_switch$987 [1518] = 32'd3572368355;
\$auto$proc_rom.cc:150:do_switch$987 [1519] = 32'd8902427;
\$auto$proc_rom.cc:150:do_switch$987 [1520] = 32'd15106211;
\$auto$proc_rom.cc:150:do_switch$987 [1521] = 32'd2426651;
\$auto$proc_rom.cc:150:do_switch$987 [1522] = 32'd15599715;
\$auto$proc_rom.cc:150:do_switch$987 [1523] = 32'd17291035;
\$auto$proc_rom.cc:150:do_switch$987 [1524] = 32'd15106339;
\$auto$proc_rom.cc:150:do_switch$987 [1525] = 32'd3475227;
\$auto$proc_rom.cc:150:do_switch$987 [1526] = 32'd1089374011;
\$auto$proc_rom.cc:150:do_switch$987 [1527] = 32'd283330053;
\$auto$proc_rom.cc:150:do_switch$987 [1528] = 32'd3617313479;
\$auto$proc_rom.cc:150:do_switch$987 [1529] = 32'd2174943623;
\$auto$proc_rom.cc:150:do_switch$987 [1530] = 32'd3072393462;
\$auto$proc_rom.cc:150:do_switch$987 [1531] = 32'd2156025213;
\$auto$proc_rom.cc:150:do_switch$987 [1532] = 32'd3800614533;
\$auto$proc_rom.cc:150:do_switch$987 [1533] = 32'd3331113237;
\$auto$proc_rom.cc:150:do_switch$987 [1534] = 32'd3389112709;
\$auto$proc_rom.cc:150:do_switch$987 [1535] = 32'd1430939;
\$auto$proc_rom.cc:150:do_switch$987 [1536] = 32'd12969315;
\$auto$proc_rom.cc:150:do_switch$987 [1537] = 32'd1157744336;
\$auto$proc_rom.cc:150:do_switch$987 [1538] = 32'd2813821058;
\$auto$proc_rom.cc:150:do_switch$987 [1539] = 32'd2274557959;
\$auto$proc_rom.cc:150:do_switch$987 [1540] = 32'd3336311303;
\$auto$proc_rom.cc:150:do_switch$987 [1541] = 32'd2156020993;
\$auto$proc_rom.cc:150:do_switch$987 [1542] = 32'd2156025213;
\$auto$proc_rom.cc:150:do_switch$987 [1543] = 32'd129458448;
\$auto$proc_rom.cc:150:do_switch$987 [1544] = 32'd1186414592;
\$auto$proc_rom.cc:150:do_switch$987 [1545] = 32'd572719119;
\$auto$proc_rom.cc:150:do_switch$987 [1546] = 32'd706936838;
\$auto$proc_rom.cc:150:do_switch$987 [1547] = 32'd3390833158;
\$auto$proc_rom.cc:150:do_switch$987 [1548] = 32'd2284472924;
\$auto$proc_rom.cc:150:do_switch$987 [1549] = 32'd603358867;
\$auto$proc_rom.cc:150:do_switch$987 [1550] = 32'd1073743287;
\$auto$proc_rom.cc:150:do_switch$987 [1551] = 32'd2686527361;
\$auto$proc_rom.cc:150:do_switch$987 [1552] = 32'd662784604;
\$auto$proc_rom.cc:150:do_switch$987 [1553] = 32'd4147365525;
\$auto$proc_rom.cc:150:do_switch$987 [1554] = 32'd2543517879;
\$auto$proc_rom.cc:150:do_switch$987 [1555] = 32'd2413363463;
\$auto$proc_rom.cc:150:do_switch$987 [1556] = 32'd922560385;
\$auto$proc_rom.cc:150:do_switch$987 [1557] = 32'd129497077;
\$auto$proc_rom.cc:150:do_switch$987 [1558] = 32'd3390865408;
\$auto$proc_rom.cc:150:do_switch$987 [1559] = 32'd3525068677;
\$auto$proc_rom.cc:150:do_switch$987 [1560] = 32'd1157712476;
\$auto$proc_rom.cc:150:do_switch$987 [1561] = 32'd23582619;
\$auto$proc_rom.cc:150:do_switch$987 [1562] = 32'd170101637;
\$auto$proc_rom.cc:150:do_switch$987 [1563] = 32'd2156003576;
\$auto$proc_rom.cc:150:do_switch$987 [1564] = 32'd403491;
\$auto$proc_rom.cc:150:do_switch$987 [1565] = 32'd2156025213;
\$auto$proc_rom.cc:150:do_switch$987 [1566] = 32'd4099305757;
\$auto$proc_rom.cc:150:do_switch$987 [1567] = 32'd3968232069;
\$auto$proc_rom.cc:150:do_switch$987 [1568] = 32'd3836143778;
\$auto$proc_rom.cc:150:do_switch$987 [1569] = 32'd4233027786;
\$auto$proc_rom.cc:150:do_switch$987 [1570] = 32'd4032493650;
\$auto$proc_rom.cc:150:do_switch$987 [1571] = 32'd3898797150;
\$auto$proc_rom.cc:150:do_switch$987 [1572] = 32'd2324948070;
\$auto$proc_rom.cc:150:do_switch$987 [1573] = 32'd4200824842;
\$auto$proc_rom.cc:150:do_switch$987 [1574] = 32'd2317027514;
\$auto$proc_rom.cc:150:do_switch$987 [1575] = 32'd2335866869;
\$auto$proc_rom.cc:150:do_switch$987 [1576] = 32'd12212123;
\$auto$proc_rom.cc:150:do_switch$987 [1577] = 32'd2332394670;
\$auto$proc_rom.cc:150:do_switch$987 [1578] = 32'd2849555;
\$auto$proc_rom.cc:150:do_switch$987 [1579] = 32'd12212763;
\$auto$proc_rom.cc:150:do_switch$987 [1580] = 32'd981322685;
\$auto$proc_rom.cc:150:do_switch$987 [1581] = 32'd658459;
\$auto$proc_rom.cc:150:do_switch$987 [1582] = 32'd2343180802;
\$auto$proc_rom.cc:150:do_switch$987 [1583] = 32'd2310441266;
\$auto$proc_rom.cc:150:do_switch$987 [1584] = 32'd34232851;
\$auto$proc_rom.cc:150:do_switch$987 [1585] = 32'd2362852353;
\$auto$proc_rom.cc:150:do_switch$987 [1586] = 32'd241412129;
\$auto$proc_rom.cc:150:do_switch$987 [1587] = 32'd127599940;
\$auto$proc_rom.cc:150:do_switch$987 [1588] = 32'd2270822420;
\$auto$proc_rom.cc:150:do_switch$987 [1589] = 32'd25658211;
\$auto$proc_rom.cc:150:do_switch$987 [1590] = 32'd67454721;
\$auto$proc_rom.cc:150:do_switch$987 [1591] = 32'd2147779739;
\$auto$proc_rom.cc:150:do_switch$987 [1592] = 32'd296347;
\$auto$proc_rom.cc:150:do_switch$987 [1593] = 32'd10155107;
\$auto$proc_rom.cc:150:do_switch$987 [1594] = 32'd820635;
\$auto$proc_rom.cc:150:do_switch$987 [1595] = 32'd90392065;
\$auto$proc_rom.cc:150:do_switch$987 [1596] = 32'd370343945;
\$auto$proc_rom.cc:150:do_switch$987 [1597] = 32'd2521432196;
\$auto$proc_rom.cc:150:do_switch$987 [1598] = 32'd2237875841;
\$auto$proc_rom.cc:150:do_switch$987 [1599] = 32'd378732553;
\$auto$proc_rom.cc:150:do_switch$987 [1600] = 32'd2530082948;
\$auto$proc_rom.cc:150:do_switch$987 [1601] = 32'd4042229086;
\$auto$proc_rom.cc:150:do_switch$987 [1602] = 32'd3512839551;
\$auto$proc_rom.cc:150:do_switch$987 [1603] = 32'd1682333926;
\$auto$proc_rom.cc:150:do_switch$987 [1604] = 32'd1762026662;
\$auto$proc_rom.cc:150:do_switch$987 [1605] = 32'd2051176930;
\$auto$proc_rom.cc:150:do_switch$987 [1606] = 32'd2063760034;
\$auto$proc_rom.cc:150:do_switch$987 [1607] = 32'd1816292322;
\$auto$proc_rom.cc:150:do_switch$987 [1608] = 32'd1629842594;
\$auto$proc_rom.cc:150:do_switch$987 [1609] = 32'd1157726338;
\$auto$proc_rom.cc:150:do_switch$987 [1610] = 32'd1682356181;
\$auto$proc_rom.cc:150:do_switch$987 [1611] = 32'd1688625382;
\$auto$proc_rom.cc:150:do_switch$987 [1612] = 32'd2044881158;
\$auto$proc_rom.cc:150:do_switch$987 [1613] = 32'd2057468482;
\$auto$proc_rom.cc:150:do_switch$987 [1614] = 32'd1810004738;
\$auto$proc_rom.cc:150:do_switch$987 [1615] = 32'd1822583874;
\$auto$proc_rom.cc:150:do_switch$987 [1616] = 32'd3161022757;
\$auto$proc_rom.cc:150:do_switch$987 [1617] = 32'd2269005148;
\$auto$proc_rom.cc:150:do_switch$987 [1618] = 32'd16118627;
\$auto$proc_rom.cc:150:do_switch$987 [1619] = 32'd1159497518;
\$auto$proc_rom.cc:150:do_switch$987 [1620] = 32'd1513243;
\$auto$proc_rom.cc:150:do_switch$987 [1621] = 32'd34018963;
\$auto$proc_rom.cc:150:do_switch$987 [1622] = 32'd394436537;
\$auto$proc_rom.cc:150:do_switch$987 [1623] = 32'd2457965441;
\$auto$proc_rom.cc:150:do_switch$987 [1624] = 32'd3618838525;
\$auto$proc_rom.cc:150:do_switch$987 [1625] = 32'd1732313815;
\$auto$proc_rom.cc:150:do_switch$987 [1626] = 32'd402462589;
\$auto$proc_rom.cc:150:do_switch$987 [1627] = 32'd15201971;
\$auto$proc_rom.cc:150:do_switch$987 [1628] = 32'd16155491;
\$auto$proc_rom.cc:150:do_switch$987 [1629] = 32'd1628735418;
\$auto$proc_rom.cc:150:do_switch$987 [1630] = 32'd1157723713;
\$auto$proc_rom.cc:150:do_switch$987 [1631] = 32'd2406567576;
\$auto$proc_rom.cc:150:do_switch$987 [1632] = 32'd662802393;
\$auto$proc_rom.cc:150:do_switch$987 [1633] = 32'd3470577308;
\$auto$proc_rom.cc:150:do_switch$987 [1634] = 32'd1628995714;
\$auto$proc_rom.cc:150:do_switch$987 [1635] = 32'd31823259;
\$auto$proc_rom.cc:150:do_switch$987 [1636] = 32'd268371639;
\$auto$proc_rom.cc:150:do_switch$987 [1637] = 32'd1157713692;
\$auto$proc_rom.cc:150:do_switch$987 [1638] = 32'd2478905282;
\$auto$proc_rom.cc:150:do_switch$987 [1639] = 32'd2413137869;
\$auto$proc_rom.cc:150:do_switch$987 [1640] = 32'd3474728833;
\$auto$proc_rom.cc:150:do_switch$987 [1641] = 32'd2156056412;
\$auto$proc_rom.cc:150:do_switch$987 [1642] = 32'd4163006777;
\$auto$proc_rom.cc:150:do_switch$987 [1643] = 32'd4031444006;
\$auto$proc_rom.cc:150:do_switch$987 [1644] = 32'd3964599302;
\$auto$proc_rom.cc:150:do_switch$987 [1645] = 32'd3830900818;
\$auto$proc_rom.cc:150:do_switch$987 [1646] = 32'd1895891072;
\$auto$proc_rom.cc:150:do_switch$987 [1647] = 32'd1183155338;
\$auto$proc_rom.cc:150:do_switch$987 [1648] = 32'd2250666241;
\$auto$proc_rom.cc:150:do_switch$987 [1649] = 32'd2301248901;
\$auto$proc_rom.cc:150:do_switch$987 [1650] = 32'd1346371823;
\$auto$proc_rom.cc:150:do_switch$987 [1651] = 32'd302324835;
\$auto$proc_rom.cc:150:do_switch$987 [1652] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1653] = 32'd3011839251;
\$auto$proc_rom.cc:150:do_switch$987 [1654] = 32'd2376069359;
\$auto$proc_rom.cc:150:do_switch$987 [1655] = 32'd353853580;
\$auto$proc_rom.cc:150:do_switch$987 [1656] = 32'd85131264;
\$auto$proc_rom.cc:150:do_switch$987 [1657] = 32'd4042241189;
\$auto$proc_rom.cc:150:do_switch$987 [1658] = 32'd1150061759;
\$auto$proc_rom.cc:150:do_switch$987 [1659] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1660] = 32'd3041199379;
\$auto$proc_rom.cc:150:do_switch$987 [1661] = 32'd2346709231;
\$auto$proc_rom.cc:150:do_switch$987 [1662] = 32'd353846476;
\$auto$proc_rom.cc:150:do_switch$987 [1663] = 32'd85131264;
\$auto$proc_rom.cc:150:do_switch$987 [1664] = 32'd4042241509;
\$auto$proc_rom.cc:150:do_switch$987 [1665] = 32'd1221364479;
\$auto$proc_rom.cc:150:do_switch$987 [1666] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1667] = 32'd3062170899;
\$auto$proc_rom.cc:150:do_switch$987 [1668] = 32'd2317349103;
\$auto$proc_rom.cc:150:do_switch$987 [1669] = 32'd353856652;
\$auto$proc_rom.cc:150:do_switch$987 [1670] = 32'd85131264;
\$auto$proc_rom.cc:150:do_switch$987 [1671] = 32'd4042241829;
\$auto$proc_rom.cc:150:do_switch$987 [1672] = 32'd1888258367;
\$auto$proc_rom.cc:150:do_switch$987 [1673] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1674] = 32'd3083142419;
\$auto$proc_rom.cc:150:do_switch$987 [1675] = 32'd2287988975;
\$auto$proc_rom.cc:150:do_switch$987 [1676] = 32'd353854636;
\$auto$proc_rom.cc:150:do_switch$987 [1677] = 32'd85131264;
\$auto$proc_rom.cc:150:do_switch$987 [1678] = 32'd4042242277;
\$auto$proc_rom.cc:150:do_switch$987 [1679] = 32'd1219266431;
\$auto$proc_rom.cc:150:do_switch$987 [1680] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1681] = 32'd3120891155;
\$auto$proc_rom.cc:150:do_switch$987 [1682] = 32'd2258628847;
\$auto$proc_rom.cc:150:do_switch$987 [1683] = 32'd353847532;
\$auto$proc_rom.cc:150:do_switch$987 [1684] = 32'd85131264;
\$auto$proc_rom.cc:150:do_switch$987 [1685] = 32'd4042242981;
\$auto$proc_rom.cc:150:do_switch$987 [1686] = 32'd1152157119;
\$auto$proc_rom.cc:150:do_switch$987 [1687] = 32'd1183155530;
\$auto$proc_rom.cc:150:do_switch$987 [1688] = 32'd15697418;
\$auto$proc_rom.cc:150:do_switch$987 [1689] = 32'd2318026400;
\$auto$proc_rom.cc:150:do_switch$987 [1690] = 32'd134285587;
\$auto$proc_rom.cc:150:do_switch$987 [1691] = 32'd1251035521;
\$auto$proc_rom.cc:150:do_switch$987 [1692] = 32'd353886549;
\$auto$proc_rom.cc:150:do_switch$987 [1693] = 32'd2244870144;
\$auto$proc_rom.cc:150:do_switch$987 [1694] = 32'd3202680083;
\$auto$proc_rom.cc:150:do_switch$987 [1695] = 32'd2204102895;
\$auto$proc_rom.cc:150:do_switch$987 [1696] = 32'd4194907523;
\$auto$proc_rom.cc:150:do_switch$987 [1697] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1698] = 32'd3217360147;
\$auto$proc_rom.cc:150:do_switch$987 [1699] = 32'd2187325679;
\$auto$proc_rom.cc:150:do_switch$987 [1700] = 32'd4203296131;
\$auto$proc_rom.cc:150:do_switch$987 [1701] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1702] = 32'd3225748755;
\$auto$proc_rom.cc:150:do_switch$987 [1703] = 32'd2170548463;
\$auto$proc_rom.cc:150:do_switch$987 [1704] = 32'd4211684739;
\$auto$proc_rom.cc:150:do_switch$987 [1705] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1706] = 32'd3234137363;
\$auto$proc_rom.cc:150:do_switch$987 [1707] = 32'd2153771247;
\$auto$proc_rom.cc:150:do_switch$987 [1708] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1709] = 32'd3246720275;
\$auto$proc_rom.cc:150:do_switch$987 [1710] = 32'd4287623407;
\$auto$proc_rom.cc:150:do_switch$987 [1711] = 32'd4220060819;
\$auto$proc_rom.cc:150:do_switch$987 [1712] = 32'd312707;
\$auto$proc_rom.cc:150:do_switch$987 [1713] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1714] = 32'd85132421;
\$auto$proc_rom.cc:150:do_switch$987 [1715] = 32'd4042244293;
\$auto$proc_rom.cc:150:do_switch$987 [1716] = 32'd2548301359;
\$auto$proc_rom.cc:150:do_switch$987 [1717] = 32'd85458724;
\$auto$proc_rom.cc:150:do_switch$987 [1718] = 32'd85131264;
\$auto$proc_rom.cc:150:do_switch$987 [1719] = 32'd696612645;
\$auto$proc_rom.cc:150:do_switch$987 [1720] = 32'd4245680367;
\$auto$proc_rom.cc:150:do_switch$987 [1721] = 32'd134809875;
\$auto$proc_rom.cc:150:do_switch$987 [1722] = 32'd4183397859;
\$auto$proc_rom.cc:150:do_switch$987 [1723] = 32'd4228120851;
\$auto$proc_rom.cc:150:do_switch$987 [1724] = 32'd2236772578;
\$auto$proc_rom.cc:150:do_switch$987 [1725] = 32'd1956803650;
\$auto$proc_rom.cc:150:do_switch$987 [1726] = 32'd1776449794;
\$auto$proc_rom.cc:150:do_switch$987 [1727] = 32'd1789028930;
\$auto$proc_rom.cc:150:do_switch$987 [1728] = 32'd2156028193;
\$auto$proc_rom.cc:150:do_switch$987 [1729] = 32'd353864234;
\$auto$proc_rom.cc:150:do_switch$987 [1730] = 32'd85131264;
\$auto$proc_rom.cc:150:do_switch$987 [1731] = 32'd4042235301;
\$auto$proc_rom.cc:150:do_switch$987 [1732] = 32'd3219782191;
\$auto$proc_rom.cc:150:do_switch$987 [1733] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1734] = 32'd2982479123;
\$auto$proc_rom.cc:150:do_switch$987 [1735] = 32'd4182765807;
\$auto$proc_rom.cc:150:do_switch$987 [1736] = 32'd1899608049;
\$auto$proc_rom.cc:150:do_switch$987 [1737] = 32'd4031445026;
\$auto$proc_rom.cc:150:do_switch$987 [1738] = 32'd3897748558;
\$auto$proc_rom.cc:150:do_switch$987 [1739] = 32'd4228310102;
\$auto$proc_rom.cc:150:do_switch$987 [1740] = 32'd8451110;
\$auto$proc_rom.cc:150:do_switch$987 [1741] = 32'd2324328705;
\$auto$proc_rom.cc:150:do_switch$987 [1742] = 32'd2318567726;
\$auto$proc_rom.cc:150:do_switch$987 [1743] = 32'd1183150337;
\$auto$proc_rom.cc:150:do_switch$987 [1744] = 32'd1166378582;
\$auto$proc_rom.cc:150:do_switch$987 [1745] = 32'd15698346;
\$auto$proc_rom.cc:150:do_switch$987 [1746] = 32'd3977590880;
\$auto$proc_rom.cc:150:do_switch$987 [1747] = 32'd76195203;
\$auto$proc_rom.cc:150:do_switch$987 [1748] = 32'd2248820357;
\$auto$proc_rom.cc:150:do_switch$987 [1749] = 32'd15697230;
\$auto$proc_rom.cc:150:do_switch$987 [1750] = 32'd2225747808;
\$auto$proc_rom.cc:150:do_switch$987 [1751] = 32'd396094733;
\$auto$proc_rom.cc:150:do_switch$987 [1752] = 32'd394395769;
\$auto$proc_rom.cc:150:do_switch$987 [1753] = 32'd2542441345;
\$auto$proc_rom.cc:150:do_switch$987 [1754] = 32'd539194268;
\$auto$proc_rom.cc:150:do_switch$987 [1755] = 32'd18022650;
\$auto$proc_rom.cc:150:do_switch$987 [1756] = 32'd1893923844;
\$auto$proc_rom.cc:150:do_switch$987 [1757] = 32'd1950516518;
\$auto$proc_rom.cc:150:do_switch$987 [1758] = 32'd2030204066;
\$auto$proc_rom.cc:150:do_switch$987 [1759] = 32'd1782737378;
\$auto$proc_rom.cc:150:do_switch$987 [1760] = 32'd1629579938;
\$auto$proc_rom.cc:150:do_switch$987 [1761] = 32'd2225766530;
\$auto$proc_rom.cc:150:do_switch$987 [1762] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1763] = 32'd2508522771;
\$auto$proc_rom.cc:150:do_switch$987 [1764] = 32'd4061130991;
\$auto$proc_rom.cc:150:do_switch$987 [1765] = 32'd353877993;
\$auto$proc_rom.cc:150:do_switch$987 [1766] = 32'd85131264;
\$auto$proc_rom.cc:150:do_switch$987 [1767] = 32'd4042238373;
\$auto$proc_rom.cc:150:do_switch$987 [1768] = 32'd3086086447;
\$auto$proc_rom.cc:150:do_switch$987 [1769] = 32'd33986323;
\$auto$proc_rom.cc:150:do_switch$987 [1770] = 32'd1132562323;
\$auto$proc_rom.cc:150:do_switch$987 [1771] = 32'd1901695745;
\$auto$proc_rom.cc:150:do_switch$987 [1772] = 32'd4037187514;
\$auto$proc_rom.cc:150:do_switch$987 [1773] = 32'd508931;
\$auto$proc_rom.cc:150:do_switch$987 [1774] = 32'd4102482122;
\$auto$proc_rom.cc:150:do_switch$987 [1775] = 32'd3410203;
\$auto$proc_rom.cc:150:do_switch$987 [1776] = 32'd3838766246;
\$auto$proc_rom.cc:150:do_switch$987 [1777] = 32'd4233552082;
\$auto$proc_rom.cc:150:do_switch$987 [1778] = 32'd4099864666;
\$auto$proc_rom.cc:150:do_switch$987 [1779] = 32'd3966169186;
\$auto$proc_rom.cc:150:do_switch$987 [1780] = 32'd2031347818;
\$auto$proc_rom.cc:150:do_switch$987 [1781] = 32'd1201741769;
\$auto$proc_rom.cc:150:do_switch$987 [1782] = 32'd321383011;
\$auto$proc_rom.cc:150:do_switch$987 [1783] = 32'd17143579;
\$auto$proc_rom.cc:150:do_switch$987 [1784] = 32'd17258267;
\$auto$proc_rom.cc:150:do_switch$987 [1785] = 32'd8755227;
\$auto$proc_rom.cc:150:do_switch$987 [1786] = 32'd8869659;
\$auto$proc_rom.cc:150:do_switch$987 [1787] = 32'd42324755;
\$auto$proc_rom.cc:150:do_switch$987 [1788] = 32'd33937555;
\$auto$proc_rom.cc:150:do_switch$987 [1789] = 32'd17160083;
\$auto$proc_rom.cc:150:do_switch$987 [1790] = 32'd15231027;
\$auto$proc_rom.cc:150:do_switch$987 [1791] = 32'd2368899638;
\$auto$proc_rom.cc:150:do_switch$987 [1792] = 32'd1182877445;
\$auto$proc_rom.cc:150:do_switch$987 [1793] = 32'd93554186;
\$auto$proc_rom.cc:150:do_switch$987 [1794] = 32'd2334786304;
\$auto$proc_rom.cc:150:do_switch$987 [1795] = 32'd6357027;
\$auto$proc_rom.cc:150:do_switch$987 [1796] = 32'd17891491;
\$auto$proc_rom.cc:150:do_switch$987 [1797] = 32'd65827;
\$auto$proc_rom.cc:150:do_switch$987 [1798] = 32'd15794595;
\$auto$proc_rom.cc:150:do_switch$987 [1799] = 32'd16847395;
\$auto$proc_rom.cc:150:do_switch$987 [1800] = 32'd3315593455;
\$auto$proc_rom.cc:150:do_switch$987 [1801] = 32'd3430542637;
\$auto$proc_rom.cc:150:do_switch$987 [1802] = 32'd3742739;
\$auto$proc_rom.cc:150:do_switch$987 [1803] = 32'd1267026305;
\$auto$proc_rom.cc:150:do_switch$987 [1804] = 32'd1250247809;
\$auto$proc_rom.cc:150:do_switch$987 [1805] = 32'd79694995;
\$auto$proc_rom.cc:150:do_switch$987 [1806] = 32'd3426049;
\$auto$proc_rom.cc:150:do_switch$987 [1807] = 32'd2246198785;
\$auto$proc_rom.cc:150:do_switch$987 [1808] = 32'd4042229082;
\$auto$proc_rom.cc:150:do_switch$987 [1809] = 32'd3978412927;
\$auto$proc_rom.cc:150:do_switch$987 [1810] = 32'd4262004963;
\$auto$proc_rom.cc:150:do_switch$987 [1811] = 32'd83331;
\$auto$proc_rom.cc:150:do_switch$987 [1812] = 32'd1199898680;
\$auto$proc_rom.cc:150:do_switch$987 [1813] = 32'd627811;
\$auto$proc_rom.cc:150:do_switch$987 [1814] = 32'd60130659;
\$auto$proc_rom.cc:150:do_switch$987 [1815] = 32'd134472841;
\$auto$proc_rom.cc:150:do_switch$987 [1816] = 32'd1264779271;
\$auto$proc_rom.cc:150:do_switch$987 [1817] = 32'd3358654472;
\$auto$proc_rom.cc:150:do_switch$987 [1818] = 32'd476803;
\$auto$proc_rom.cc:150:do_switch$987 [1819] = 32'd9242675;
\$auto$proc_rom.cc:150:do_switch$987 [1820] = 32'd262358149;
\$auto$proc_rom.cc:150:do_switch$987 [1821] = 32'd880672472;
\$auto$proc_rom.cc:150:do_switch$987 [1822] = 32'd19396707;
\$auto$proc_rom.cc:150:do_switch$987 [1823] = 32'd117778309;
\$auto$proc_rom.cc:150:do_switch$987 [1824] = 32'd1233502161;
\$auto$proc_rom.cc:150:do_switch$987 [1825] = 32'd4280806627;
\$auto$proc_rom.cc:150:do_switch$987 [1826] = 32'd1199962181;
\$auto$proc_rom.cc:150:do_switch$987 [1827] = 32'd83493987;
\$auto$proc_rom.cc:150:do_switch$987 [1828] = 32'd1182877449;
\$auto$proc_rom.cc:150:do_switch$987 [1829] = 32'd1166099969;
\$auto$proc_rom.cc:150:do_switch$987 [1830] = 32'd4042229082;
\$auto$proc_rom.cc:150:do_switch$987 [1831] = 32'd1889975807;
\$auto$proc_rom.cc:150:do_switch$987 [1832] = 32'd1692824582;
\$auto$proc_rom.cc:150:do_switch$987 [1833] = 32'd1772513606;
\$auto$proc_rom.cc:150:do_switch$987 [1834] = 32'd2061658630;
\$auto$proc_rom.cc:150:do_switch$987 [1835] = 32'd2074245954;
\$auto$proc_rom.cc:150:do_switch$987 [1836] = 32'd1826782210;
\$auto$proc_rom.cc:150:do_switch$987 [1837] = 32'd1634037058;
\$auto$proc_rom.cc:150:do_switch$987 [1838] = 32'd107184258;
\$auto$proc_rom.cc:150:do_switch$987 [1839] = 32'd4142072154;
\$auto$proc_rom.cc:150:do_switch$987 [1840] = 32'd1149631783;
\$auto$proc_rom.cc:150:do_switch$987 [1841] = 32'd2363735909;
\$auto$proc_rom.cc:150:do_switch$987 [1842] = 32'd1266941451;
\$auto$proc_rom.cc:150:do_switch$987 [1843] = 32'd3146973191;
\$auto$proc_rom.cc:150:do_switch$987 [1844] = 32'd3086286875;
\$auto$proc_rom.cc:150:do_switch$987 [1845] = 32'd4195061475;
\$auto$proc_rom.cc:150:do_switch$987 [1846] = 32'd2224252041;
\$auto$proc_rom.cc:150:do_switch$987 [1847] = 32'd6320388;
\$auto$proc_rom.cc:150:do_switch$987 [1848] = 32'd3426049;
\$auto$proc_rom.cc:150:do_switch$987 [1849] = 32'd93537793;
\$auto$proc_rom.cc:150:do_switch$987 [1850] = 32'd2237268480;
\$auto$proc_rom.cc:150:do_switch$987 [1851] = 32'd3101683951;
\$auto$proc_rom.cc:150:do_switch$987 [1852] = 32'd3338862652;
\$auto$proc_rom.cc:150:do_switch$987 [1853] = 32'd126156807;
\$auto$proc_rom.cc:150:do_switch$987 [1854] = 32'd484704065;
\$auto$proc_rom.cc:150:do_switch$987 [1855] = 32'd889061108;
\$auto$proc_rom.cc:150:do_switch$987 [1856] = 32'd3078222053;
\$auto$proc_rom.cc:150:do_switch$987 [1857] = 32'd367216517;
\$auto$proc_rom.cc:150:do_switch$987 [1858] = 32'd3086612730;
\$auto$proc_rom.cc:150:do_switch$987 [1859] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1860] = 32'd85165474;
\$auto$proc_rom.cc:150:do_switch$987 [1861] = 32'd4042235077;
\$auto$proc_rom.cc:150:do_switch$987 [1862] = 32'd1434311087;
\$auto$proc_rom.cc:150:do_switch$987 [1863] = 32'd1899607881;
\$auto$proc_rom.cc:150:do_switch$987 [1864] = 32'd1182877441;
\$auto$proc_rom.cc:150:do_switch$987 [1865] = 32'd93537793;
\$auto$proc_rom.cc:150:do_switch$987 [1866] = 32'd4162979072;
\$auto$proc_rom.cc:150:do_switch$987 [1867] = 32'd4228314150;
\$auto$proc_rom.cc:150:do_switch$987 [1868] = 32'd3964596298;
\$auto$proc_rom.cc:150:do_switch$987 [1869] = 32'd3825370282;
\$auto$proc_rom.cc:150:do_switch$987 [1870] = 32'd3021992175;
\$auto$proc_rom.cc:150:do_switch$987 [1871] = 32'd3372844074;
\$auto$proc_rom.cc:150:do_switch$987 [1872] = 32'd2233626850;
\$auto$proc_rom.cc:150:do_switch$987 [1873] = 32'd1956803650;
\$auto$proc_rom.cc:150:do_switch$987 [1874] = 32'd1776449794;
\$auto$proc_rom.cc:150:do_switch$987 [1875] = 32'd2156028193;
\$auto$proc_rom.cc:150:do_switch$987 [1876] = 32'd361974021;
\$auto$proc_rom.cc:150:do_switch$987 [1877] = 32'd1182860009;
\$auto$proc_rom.cc:150:do_switch$987 [1878] = 32'd2241003568;
\$auto$proc_rom.cc:150:do_switch$987 [1879] = 32'd2233862485;
\$auto$proc_rom.cc:150:do_switch$987 [1880] = 32'd3831492847;
\$auto$proc_rom.cc:150:do_switch$987 [1881] = 32'd4251550762;
\$auto$proc_rom.cc:150:do_switch$987 [1882] = 32'd353854882;
\$auto$proc_rom.cc:150:do_switch$987 [1883] = 32'd85131264;
\$auto$proc_rom.cc:150:do_switch$987 [1884] = 32'd4187200101;
\$auto$proc_rom.cc:150:do_switch$987 [1885] = 32'd2216366069;
\$auto$proc_rom.cc:150:do_switch$987 [1886] = 32'd4042194953;
\$auto$proc_rom.cc:150:do_switch$987 [1887] = 32'd2447627119;
\$auto$proc_rom.cc:150:do_switch$987 [1888] = 32'd395836713;
\$auto$proc_rom.cc:150:do_switch$987 [1889] = 32'd3045261312;
\$auto$proc_rom.cc:150:do_switch$987 [1890] = 32'd1184742887;
\$auto$proc_rom.cc:150:do_switch$987 [1891] = 32'd2233860144;
\$auto$proc_rom.cc:150:do_switch$987 [1892] = 32'd4042253314;
\$auto$proc_rom.cc:150:do_switch$987 [1893] = 32'd2217402687;
\$auto$proc_rom.cc:150:do_switch$987 [1894] = 32'd1680012613;
\$auto$proc_rom.cc:150:do_switch$987 [1895] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1896] = 32'd2571437331;
\$auto$proc_rom.cc:150:do_switch$987 [1897] = 32'd4042229154;
\$auto$proc_rom.cc:150:do_switch$987 [1898] = 32'd395563183;
\$auto$proc_rom.cc:150:do_switch$987 [1899] = 32'd427950468;
\$auto$proc_rom.cc:150:do_switch$987 [1900] = 32'd2308146145;
\$auto$proc_rom.cc:150:do_switch$987 [1901] = 32'd1947409065;
\$auto$proc_rom.cc:150:do_switch$987 [1902] = 32'd2481131508;
\$auto$proc_rom.cc:150:do_switch$987 [1903] = 32'd152303927;
\$auto$proc_rom.cc:150:do_switch$987 [1904] = 32'd421660528;
\$auto$proc_rom.cc:150:do_switch$987 [1905] = 32'd3163777;
\$auto$proc_rom.cc:150:do_switch$987 [1906] = 32'd106497427;
\$auto$proc_rom.cc:150:do_switch$987 [1907] = 32'd3825370406;
\$auto$proc_rom.cc:150:do_switch$987 [1908] = 32'd3714052335;
\$auto$proc_rom.cc:150:do_switch$987 [1909] = 32'd4113400874;
\$auto$proc_rom.cc:150:do_switch$987 [1910] = 32'd353854882;
\$auto$proc_rom.cc:150:do_switch$987 [1911] = 32'd85131264;
\$auto$proc_rom.cc:150:do_switch$987 [1912] = 32'd160667493;
\$auto$proc_rom.cc:150:do_switch$987 [1913] = 32'd4042201680;
\$auto$proc_rom.cc:150:do_switch$987 [1914] = 32'd429575343;
\$auto$proc_rom.cc:150:do_switch$987 [1915] = 32'd3163777;
\$auto$proc_rom.cc:150:do_switch$987 [1916] = 32'd125404563;
\$auto$proc_rom.cc:150:do_switch$987 [1917] = 32'd3825370406;
\$auto$proc_rom.cc:150:do_switch$987 [1918] = 32'd3672109295;
\$auto$proc_rom.cc:150:do_switch$987 [1919] = 32'd4046029866;
\$auto$proc_rom.cc:150:do_switch$987 [1920] = 32'd353854498;
\$auto$proc_rom.cc:150:do_switch$987 [1921] = 32'd85131264;
\$auto$proc_rom.cc:150:do_switch$987 [1922] = 32'd2242025189;
\$auto$proc_rom.cc:150:do_switch$987 [1923] = 32'd267678739;
\$auto$proc_rom.cc:150:do_switch$987 [1924] = 32'd3390042351;
\$auto$proc_rom.cc:150:do_switch$987 [1925] = 32'd152291385;
\$auto$proc_rom.cc:150:do_switch$987 [1926] = 32'd2308114009;
\$auto$proc_rom.cc:150:do_switch$987 [1927] = 32'd1182861177;
\$auto$proc_rom.cc:150:do_switch$987 [1928] = 32'd2244608048;
\$auto$proc_rom.cc:150:do_switch$987 [1929] = 32'd3825370406;
\$auto$proc_rom.cc:150:do_switch$987 [1930] = 32'd3621777647;
\$auto$proc_rom.cc:150:do_switch$987 [1931] = 32'd353862698;
\$auto$proc_rom.cc:150:do_switch$987 [1932] = 32'd85131264;
\$auto$proc_rom.cc:150:do_switch$987 [1933] = 32'd367235621;
\$auto$proc_rom.cc:150:do_switch$987 [1934] = 32'd1705177092;
\$auto$proc_rom.cc:150:do_switch$987 [1935] = 32'd3343905007;
\$auto$proc_rom.cc:150:do_switch$987 [1936] = 32'd3163777;
\$auto$proc_rom.cc:150:do_switch$987 [1937] = 32'd2233894350;
\$auto$proc_rom.cc:150:do_switch$987 [1938] = 32'd4042253314;
\$auto$proc_rom.cc:150:do_switch$987 [1939] = 32'd2217399743;
\$auto$proc_rom.cc:150:do_switch$987 [1940] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1941] = 32'd2449802515;
\$auto$proc_rom.cc:150:do_switch$987 [1942] = 32'd3993244899;
\$auto$proc_rom.cc:150:do_switch$987 [1943] = 32'd2242012194;
\$auto$proc_rom.cc:150:do_switch$987 [1944] = 32'd267678739;
\$auto$proc_rom.cc:150:do_switch$987 [1945] = 32'd3301961967;
\$auto$proc_rom.cc:150:do_switch$987 [1946] = 32'd93583453;
\$auto$proc_rom.cc:150:do_switch$987 [1947] = 32'd363201488;
\$auto$proc_rom.cc:150:do_switch$987 [1948] = 32'd3163789;
\$auto$proc_rom.cc:150:do_switch$987 [1949] = 32'd267748755;
\$auto$proc_rom.cc:150:do_switch$987 [1950] = 32'd3825370406;
\$auto$proc_rom.cc:150:do_switch$987 [1951] = 32'd3533697263;
\$auto$proc_rom.cc:150:do_switch$987 [1952] = 32'd535004202;
\$auto$proc_rom.cc:150:do_switch$987 [1953] = 32'd1705175557;
\$auto$proc_rom.cc:150:do_switch$987 [1954] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1955] = 32'd2424636691;
\$auto$proc_rom.cc:150:do_switch$987 [1956] = 32'd3255824623;
\$auto$proc_rom.cc:150:do_switch$987 [1957] = 32'd6039;
\$auto$proc_rom.cc:150:do_switch$987 [1958] = 32'd2907157891;
\$auto$proc_rom.cc:150:do_switch$987 [1959] = 32'd3163777;
\$auto$proc_rom.cc:150:do_switch$987 [1960] = 32'd3825370406;
\$auto$proc_rom.cc:150:do_switch$987 [1961] = 32'd3491754223;
\$auto$proc_rom.cc:150:do_switch$987 [1962] = 32'd467895338;
\$auto$proc_rom.cc:150:do_switch$987 [1963] = 32'd1688397829;
\$auto$proc_rom.cc:150:do_switch$987 [1964] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [1965] = 32'd2416248083;
\$auto$proc_rom.cc:150:do_switch$987 [1966] = 32'd4103308710;
\$auto$proc_rom.cc:150:do_switch$987 [1967] = 32'd4042199028;
\$auto$proc_rom.cc:150:do_switch$987 [1968] = 32'd2414067503;
\$auto$proc_rom.cc:150:do_switch$987 [1969] = 32'd2216420868;
\$auto$proc_rom.cc:150:do_switch$987 [1970] = 32'd3181182980;
\$auto$proc_rom.cc:150:do_switch$987 [1971] = 32'd4171395353;
\$auto$proc_rom.cc:150:do_switch$987 [1972] = 32'd4104584326;
\$auto$proc_rom.cc:150:do_switch$987 [1973] = 32'd3972985034;
\$auto$proc_rom.cc:150:do_switch$987 [1974] = 32'd3839289554;
\$auto$proc_rom.cc:150:do_switch$987 [1975] = 32'd4234076378;
\$auto$proc_rom.cc:150:do_switch$987 [1976] = 32'd4100388962;
\$auto$proc_rom.cc:150:do_switch$987 [1977] = 32'd3966693482;
\$auto$proc_rom.cc:150:do_switch$987 [1978] = 32'd2153989121;
\$auto$proc_rom.cc:150:do_switch$987 [1979] = 32'd2484802054;
\$auto$proc_rom.cc:150:do_switch$987 [1980] = 32'd335675525;
\$auto$proc_rom.cc:150:do_switch$987 [1981] = 32'd2335590149;
\$auto$proc_rom.cc:150:do_switch$987 [1982] = 32'd2226293034;
\$auto$proc_rom.cc:150:do_switch$987 [1983] = 32'd2254671873;
\$auto$proc_rom.cc:150:do_switch$987 [1984] = 32'd118690534;
\$auto$proc_rom.cc:150:do_switch$987 [1985] = 32'd353829520;
\$auto$proc_rom.cc:150:do_switch$987 [1986] = 32'd395509760;
\$auto$proc_rom.cc:150:do_switch$987 [1987] = 32'd2259813015;
\$auto$proc_rom.cc:150:do_switch$987 [1988] = 32'd2251163525;
\$auto$proc_rom.cc:150:do_switch$987 [1989] = 32'd2418345235;
\$auto$proc_rom.cc:150:do_switch$987 [1990] = 32'd2354939354;
\$auto$proc_rom.cc:150:do_switch$987 [1991] = 32'd3109023983;
\$auto$proc_rom.cc:150:do_switch$987 [1992] = 32'd17061779;
\$auto$proc_rom.cc:150:do_switch$987 [1993] = 32'd42227859;
\$auto$proc_rom.cc:150:do_switch$987 [1994] = 32'd25450515;
\$auto$proc_rom.cc:150:do_switch$987 [1995] = 32'd15794595;
\$auto$proc_rom.cc:150:do_switch$987 [1996] = 32'd1199931425;
\$auto$proc_rom.cc:150:do_switch$987 [1997] = 32'd1182877445;
\$auto$proc_rom.cc:150:do_switch$987 [1998] = 32'd93554186;
\$auto$proc_rom.cc:150:do_switch$987 [1999] = 32'd2236220160;
\$auto$proc_rom.cc:150:do_switch$987 [2000] = 32'd8454691;
\$auto$proc_rom.cc:150:do_switch$987 [2001] = 32'd17891363;
\$auto$proc_rom.cc:150:do_switch$987 [2002] = 32'd65699;
\$auto$proc_rom.cc:150:do_switch$987 [2003] = 32'd16843043;
\$auto$proc_rom.cc:150:do_switch$987 [2004] = 32'd15794851;
\$auto$proc_rom.cc:150:do_switch$987 [2005] = 32'd2455761135;
\$auto$proc_rom.cc:150:do_switch$987 [2006] = 32'd3913647146;
\$auto$proc_rom.cc:150:do_switch$987 [2007] = 32'd202591489;
\$auto$proc_rom.cc:150:do_switch$987 [2008] = 32'd1266753536;
\$auto$proc_rom.cc:150:do_switch$987 [2009] = 32'd1234258433;
\$auto$proc_rom.cc:150:do_switch$987 [2010] = 32'd177425797;
\$auto$proc_rom.cc:150:do_switch$987 [2011] = 32'd1284313056;
\$auto$proc_rom.cc:150:do_switch$987 [2012] = 32'd3426049;
\$auto$proc_rom.cc:150:do_switch$987 [2013] = 32'd93537793;
\$auto$proc_rom.cc:150:do_switch$987 [2014] = 32'd2236219904;
\$auto$proc_rom.cc:150:do_switch$987 [2015] = 32'd2413818095;
\$auto$proc_rom.cc:150:do_switch$987 [2016] = 32'd3846276138;
\$auto$proc_rom.cc:150:do_switch$987 [2017] = 32'd274923580;
\$auto$proc_rom.cc:150:do_switch$987 [2018] = 32'd3313697802;
\$auto$proc_rom.cc:150:do_switch$987 [2019] = 32'd604307463;
\$auto$proc_rom.cc:150:do_switch$987 [2020] = 32'd2535131013;
\$auto$proc_rom.cc:150:do_switch$987 [2021] = 32'd1461387653;
\$auto$proc_rom.cc:150:do_switch$987 [2022] = 32'd1583563143;
\$auto$proc_rom.cc:150:do_switch$987 [2023] = 32'd165871623;
\$auto$proc_rom.cc:150:do_switch$987 [2024] = 32'd3313761588;
\$auto$proc_rom.cc:150:do_switch$987 [2025] = 32'd604307463;
\$auto$proc_rom.cc:150:do_switch$987 [2026] = 32'd2535131013;
\$auto$proc_rom.cc:150:do_switch$987 [2027] = 32'd1461387653;
\$auto$proc_rom.cc:150:do_switch$987 [2028] = 32'd1189298567;
\$auto$proc_rom.cc:150:do_switch$987 [2029] = 32'd353893895;
\$auto$proc_rom.cc:150:do_switch$987 [2030] = 32'd85131264;
\$auto$proc_rom.cc:150:do_switch$987 [2031] = 32'd4042230181;
\$auto$proc_rom.cc:150:do_switch$987 [2032] = 32'd258191151;
\$auto$proc_rom.cc:150:do_switch$987 [2033] = 32'd3932468;
\$auto$proc_rom.cc:150:do_switch$987 [2034] = 32'd3313735586;
\$auto$proc_rom.cc:150:do_switch$987 [2035] = 32'd126156807;
\$auto$proc_rom.cc:150:do_switch$987 [2036] = 32'd252049171;
\$auto$proc_rom.cc:150:do_switch$987 [2037] = 32'd123045731;
\$auto$proc_rom.cc:150:do_switch$987 [2038] = 32'd604358417;
\$auto$proc_rom.cc:150:do_switch$987 [2039] = 32'd4281604067;
\$auto$proc_rom.cc:150:do_switch$987 [2040] = 32'd3078179333;
\$auto$proc_rom.cc:150:do_switch$987 [2041] = 32'd5399;
\$auto$proc_rom.cc:150:do_switch$987 [2042] = 32'd2311390483;
\$auto$proc_rom.cc:150:do_switch$987 [2043] = 32'd2890920175;
\$auto$proc_rom.cc:150:do_switch$987 [2044] = 32'd1182877449;
\$auto$proc_rom.cc:150:do_switch$987 [2045] = 32'd1166099969;
\$auto$proc_rom.cc:150:do_switch$987 [2046] = 32'd4042229066;
\$auto$proc_rom.cc:150:do_switch$987 [2047] = 32'd127109119;
\$auto$proc_rom.cc:150:do_switch$987 [2048] = 32'd2217935108;
\$auto$proc_rom.cc:150:do_switch$987 [2049] = 32'd1141047335;
\$auto$proc_rom.cc:150:do_switch$987 [2050] = 32'd1894186884;
\$auto$proc_rom.cc:150:do_switch$987 [2051] = 32'd1950778658;
\$auto$proc_rom.cc:150:do_switch$987 [2052] = 32'd2030466214;
\$auto$proc_rom.cc:150:do_switch$987 [2053] = 32'd1782999526;
\$auto$proc_rom.cc:150:do_switch$987 [2054] = 32'd1795582630;
\$auto$proc_rom.cc:150:do_switch$987 [2055] = 32'd2084731874;
\$auto$proc_rom.cc:150:do_switch$987 [2056] = 32'd2097314978;
\$auto$proc_rom.cc:150:do_switch$987 [2057] = 32'd1628007906;
\$auto$proc_rom.cc:150:do_switch$987 [2058] = 32'd127107202;
\$auto$proc_rom.cc:150:do_switch$987 [2059] = 32'd85394704;
\$auto$proc_rom.cc:150:do_switch$987 [2060] = 32'd396492800;
\$auto$proc_rom.cc:150:do_switch$987 [2061] = 32'd85133189;
\$auto$proc_rom.cc:150:do_switch$987 [2062] = 32'd2354936357;
\$auto$proc_rom.cc:150:do_switch$987 [2063] = 32'd2807034095;
\$auto$proc_rom.cc:150:do_switch$987 [2064] = 32'd730183109;
\$auto$proc_rom.cc:150:do_switch$987 [2065] = 32'd536872851;
\$auto$proc_rom.cc:150:do_switch$987 [2066] = 32'd224617861;
\$auto$proc_rom.cc:150:do_switch$987 [2067] = 32'd3933076;
\$auto$proc_rom.cc:150:do_switch$987 [2068] = 32'd3762029851;
\$auto$proc_rom.cc:150:do_switch$987 [2069] = 32'd8881843;
\$auto$proc_rom.cc:150:do_switch$987 [2070] = 32'd263579;
\$auto$proc_rom.cc:150:do_switch$987 [2071] = 32'd2280299777;
\$auto$proc_rom.cc:150:do_switch$987 [2072] = 32'd1492483;
\$auto$proc_rom.cc:150:do_switch$987 [2073] = 32'd34051859;
\$auto$proc_rom.cc:150:do_switch$987 [2074] = 32'd2535887617;
\$auto$proc_rom.cc:150:do_switch$987 [2075] = 32'd13041699;
\$auto$proc_rom.cc:150:do_switch$987 [2076] = 32'd109389701;
\$auto$proc_rom.cc:150:do_switch$987 [2077] = 32'd4277475043;
\$auto$proc_rom.cc:150:do_switch$987 [2078] = 32'd534087579;
\$auto$proc_rom.cc:150:do_switch$987 [2079] = 32'd3642779;
\$auto$proc_rom.cc:150:do_switch$987 [2080] = 32'd2474710914;
\$auto$proc_rom.cc:150:do_switch$987 [2081] = 32'd34346643;
\$auto$proc_rom.cc:150:do_switch$987 [2082] = 32'd2392691329;
\$auto$proc_rom.cc:150:do_switch$987 [2083] = 32'd2527479553;
\$auto$proc_rom.cc:150:do_switch$987 [2084] = 32'd2236237313;
\$auto$proc_rom.cc:150:do_switch$987 [2085] = 32'd4266651887;
\$auto$proc_rom.cc:150:do_switch$987 [2086] = 32'd4179985450;
\$auto$proc_rom.cc:150:do_switch$987 [2087] = 32'd3426049;
\$auto$proc_rom.cc:150:do_switch$987 [2088] = 32'd1170294273;
\$auto$proc_rom.cc:150:do_switch$987 [2089] = 32'd4042229066;
\$auto$proc_rom.cc:150:do_switch$987 [2090] = 32'd2217409839;
\$auto$proc_rom.cc:150:do_switch$987 [2091] = 32'd203160889;
\$auto$proc_rom.cc:150:do_switch$987 [2092] = 32'd219881484;
\$auto$proc_rom.cc:150:do_switch$987 [2093] = 32'd1241849869;
\$auto$proc_rom.cc:150:do_switch$987 [2094] = 32'd3950714083;
\$auto$proc_rom.cc:150:do_switch$987 [2095] = 32'd62588003;
\$auto$proc_rom.cc:150:do_switch$987 [2096] = 32'd363480525;
\$auto$proc_rom.cc:150:do_switch$987 [2097] = 32'd1183122821;
\$auto$proc_rom.cc:150:do_switch$987 [2098] = 32'd2236219440;
\$auto$proc_rom.cc:150:do_switch$987 [2099] = 32'd4042253314;
\$auto$proc_rom.cc:150:do_switch$987 [2100] = 32'd1705160063;
\$auto$proc_rom.cc:150:do_switch$987 [2101] = 32'd85427242;
\$auto$proc_rom.cc:150:do_switch$987 [2102] = 32'd85131264;
\$auto$proc_rom.cc:150:do_switch$987 [2103] = 32'd4042226981;
\$auto$proc_rom.cc:150:do_switch$987 [2104] = 32'd3072695599;
\$auto$proc_rom.cc:150:do_switch$987 [2105] = 32'd1182877449;
\$auto$proc_rom.cc:150:do_switch$987 [2106] = 32'd1166099969;
\$auto$proc_rom.cc:150:do_switch$987 [2107] = 32'd4042229066;
\$auto$proc_rom.cc:150:do_switch$987 [2108] = 32'd3206674607;
\$auto$proc_rom.cc:150:do_switch$987 [2109] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2110] = 32'd1769496923;
\$auto$proc_rom.cc:150:do_switch$987 [2111] = 32'd1668050015;
\$auto$proc_rom.cc:150:do_switch$987 [2112] = 32'd1480663133;
\$auto$proc_rom.cc:150:do_switch$987 [2113] = 32'd1280057417;
\$auto$proc_rom.cc:150:do_switch$987 [2114] = 32'd1700143171;
\$auto$proc_rom.cc:150:do_switch$987 [2115] = 32'd1869181810;
\$auto$proc_rom.cc:150:do_switch$987 [2116] = 32'd538976366;
\$auto$proc_rom.cc:150:do_switch$987 [2117] = 32'd538976314;
\$auto$proc_rom.cc:150:do_switch$987 [2118] = 32'd538976288;
\$auto$proc_rom.cc:150:do_switch$987 [2119] = 32'd1814394928;
\$auto$proc_rom.cc:150:do_switch$987 [2120] = 32'd658808;
\$auto$proc_rom.cc:150:do_switch$987 [2121] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2122] = 32'd1769496923;
\$auto$proc_rom.cc:150:do_switch$987 [2123] = 32'd1668050015;
\$auto$proc_rom.cc:150:do_switch$987 [2124] = 32'd1699946589;
\$auto$proc_rom.cc:150:do_switch$987 [2125] = 32'd1933647988;
\$auto$proc_rom.cc:150:do_switch$987 [2126] = 32'd1768124275;
\$auto$proc_rom.cc:150:do_switch$987 [2127] = 32'd1986622561;
\$auto$proc_rom.cc:150:do_switch$987 [2128] = 32'd544830569;
\$auto$proc_rom.cc:150:do_switch$987 [2129] = 32'd538976314;
\$auto$proc_rom.cc:150:do_switch$987 [2130] = 32'd538976288;
\$auto$proc_rom.cc:150:do_switch$987 [2131] = 32'd168649765;
\$auto$proc_rom.cc:150:do_switch$987 [2132] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2133] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2134] = 32'd1769496923;
\$auto$proc_rom.cc:150:do_switch$987 [2135] = 32'd1668050015;
\$auto$proc_rom.cc:150:do_switch$987 [2136] = 32'd1968054365;
\$auto$proc_rom.cc:150:do_switch$987 [2137] = 32'd1816273005;
\$auto$proc_rom.cc:150:do_switch$987 [2138] = 32'd1936417647;
\$auto$proc_rom.cc:150:do_switch$987 [2139] = 32'd538976288;
\$auto$proc_rom.cc:150:do_switch$987 [2140] = 32'd538976288;
\$auto$proc_rom.cc:150:do_switch$987 [2141] = 32'd538976314;
\$auto$proc_rom.cc:150:do_switch$987 [2142] = 32'd538976288;
\$auto$proc_rom.cc:150:do_switch$987 [2143] = 32'd168649765;
\$auto$proc_rom.cc:150:do_switch$987 [2144] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2145] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2146] = 32'd1769496923;
\$auto$proc_rom.cc:150:do_switch$987 [2147] = 32'd1668050015;
\$auto$proc_rom.cc:150:do_switch$987 [2148] = 32'd1968054365;
\$auto$proc_rom.cc:150:do_switch$987 [2149] = 32'd1766596717;
\$auto$proc_rom.cc:150:do_switch$987 [2150] = 32'd544433518;
\$auto$proc_rom.cc:150:do_switch$987 [2151] = 32'd538976288;
\$auto$proc_rom.cc:150:do_switch$987 [2152] = 32'd538976288;
\$auto$proc_rom.cc:150:do_switch$987 [2153] = 32'd538976314;
\$auto$proc_rom.cc:150:do_switch$987 [2154] = 32'd538976288;
\$auto$proc_rom.cc:150:do_switch$987 [2155] = 32'd168649765;
\$auto$proc_rom.cc:150:do_switch$987 [2156] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2157] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2158] = 32'd1769496923;
\$auto$proc_rom.cc:150:do_switch$987 [2159] = 32'd1668050015;
\$auto$proc_rom.cc:150:do_switch$987 [2160] = 32'd1229070429;
\$auto$proc_rom.cc:150:do_switch$987 [2161] = 32'd1327518803;
\$auto$proc_rom.cc:150:do_switch$987 [2162] = 32'd1868788853;
\$auto$proc_rom.cc:150:do_switch$987 [2163] = 32'd538994029;
\$auto$proc_rom.cc:150:do_switch$987 [2164] = 32'd538976288;
\$auto$proc_rom.cc:150:do_switch$987 [2165] = 32'd538976314;
\$auto$proc_rom.cc:150:do_switch$987 [2166] = 32'd538976288;
\$auto$proc_rom.cc:150:do_switch$987 [2167] = 32'd168649765;
\$auto$proc_rom.cc:150:do_switch$987 [2168] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2169] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2170] = 32'd1768976195;
\$auto$proc_rom.cc:150:do_switch$987 [2171] = 32'd1679844453;
\$auto$proc_rom.cc:150:do_switch$987 [2172] = 32'd1667855973;
\$auto$proc_rom.cc:150:do_switch$987 [2173] = 32'd1920213093;
\$auto$proc_rom.cc:150:do_switch$987 [2174] = 32'd1948280165;
\$auto$proc_rom.cc:150:do_switch$987 [2175] = 32'd2016419951;
\$auto$proc_rom.cc:150:do_switch$987 [2176] = 32'd225995813;
\$auto$proc_rom.cc:150:do_switch$987 [2177] = 32'd10;
\$auto$proc_rom.cc:150:do_switch$987 [2178] = 32'd1768976195;
\$auto$proc_rom.cc:150:do_switch$987 [2179] = 32'd1713398885;
\$auto$proc_rom.cc:150:do_switch$987 [2180] = 32'd2003661417;
\$auto$proc_rom.cc:150:do_switch$987 [2181] = 32'd543519329;
\$auto$proc_rom.cc:150:do_switch$987 [2182] = 32'd807432052;
\$auto$proc_rom.cc:150:do_switch$987 [2183] = 32'd2020353400;
\$auto$proc_rom.cc:150:do_switch$987 [2184] = 32'd2573;
\$auto$proc_rom.cc:150:do_switch$987 [2185] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2186] = 32'd1953460034;
\$auto$proc_rom.cc:150:do_switch$987 [2187] = 32'd1701080941;
\$auto$proc_rom.cc:150:do_switch$987 [2188] = 32'd540684320;
\$auto$proc_rom.cc:150:do_switch$987 [2189] = 32'd1953460034;
\$auto$proc_rom.cc:150:do_switch$987 [2190] = 32'd543649385;
\$auto$proc_rom.cc:150:do_switch$987 [2191] = 32'd1836020326;
\$auto$proc_rom.cc:150:do_switch$987 [2192] = 32'd541348640;
\$auto$proc_rom.cc:150:do_switch$987 [2193] = 32'd1685217603;
\$auto$proc_rom.cc:150:do_switch$987 [2194] = 32'd2573;
\$auto$proc_rom.cc:150:do_switch$987 [2195] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2196] = 32'd1953460034;
\$auto$proc_rom.cc:150:do_switch$987 [2197] = 32'd1701080941;
\$auto$proc_rom.cc:150:do_switch$987 [2198] = 32'd540684576;
\$auto$proc_rom.cc:150:do_switch$987 [2199] = 32'd1852403524;
\$auto$proc_rom.cc:150:do_switch$987 [2200] = 32'd1869488231;
\$auto$proc_rom.cc:150:do_switch$987 [2201] = 32'd1852401780;
\$auto$proc_rom.cc:150:do_switch$987 [2202] = 32'd691675239;
\$auto$proc_rom.cc:150:do_switch$987 [2203] = 32'd2573;
\$auto$proc_rom.cc:150:do_switch$987 [2204] = 32'd1953460034;
\$auto$proc_rom.cc:150:do_switch$987 [2205] = 32'd1701080941;
\$auto$proc_rom.cc:150:do_switch$987 [2206] = 32'd540684832;
\$auto$proc_rom.cc:150:do_switch$987 [2207] = 32'd1852403524;
\$auto$proc_rom.cc:150:do_switch$987 [2208] = 32'd1869488231;
\$auto$proc_rom.cc:150:do_switch$987 [2209] = 32'd1852401780;
\$auto$proc_rom.cc:150:do_switch$987 [2210] = 32'd691675239;
\$auto$proc_rom.cc:150:do_switch$987 [2211] = 32'd2573;
\$auto$proc_rom.cc:150:do_switch$987 [2212] = 32'd1953460034;
\$auto$proc_rom.cc:150:do_switch$987 [2213] = 32'd1701080941;
\$auto$proc_rom.cc:150:do_switch$987 [2214] = 32'd540685088;
\$auto$proc_rom.cc:150:do_switch$987 [2215] = 32'd1852403524;
\$auto$proc_rom.cc:150:do_switch$987 [2216] = 32'd1869488231;
\$auto$proc_rom.cc:150:do_switch$987 [2217] = 32'd1852401780;
\$auto$proc_rom.cc:150:do_switch$987 [2218] = 32'd691675239;
\$auto$proc_rom.cc:150:do_switch$987 [2219] = 32'd2573;
\$auto$proc_rom.cc:150:do_switch$987 [2220] = 32'd1953460034;
\$auto$proc_rom.cc:150:do_switch$987 [2221] = 32'd1701080941;
\$auto$proc_rom.cc:150:do_switch$987 [2222] = 32'd979641632;
\$auto$proc_rom.cc:150:do_switch$987 [2223] = 32'd1768899616;
\$auto$proc_rom.cc:150:do_switch$987 [2224] = 32'd1847617390;
\$auto$proc_rom.cc:150:do_switch$987 [2225] = 32'd1768453231;
\$auto$proc_rom.cc:150:do_switch$987 [2226] = 32'd975202158;
\$auto$proc_rom.cc:150:do_switch$987 [2227] = 32'd658729;
\$auto$proc_rom.cc:150:do_switch$987 [2228] = 32'd728329830;
\$auto$proc_rom.cc:150:do_switch$987 [2229] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2230] = 32'd6909542;
\$auto$proc_rom.cc:150:do_switch$987 [2231] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2232] = 32'd7233902;
\$auto$proc_rom.cc:150:do_switch$987 [2233] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2234] = 32'd761884262;
\$auto$proc_rom.cc:150:do_switch$987 [2235] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2236] = 32'd4294961728;
\$auto$proc_rom.cc:150:do_switch$987 [2237] = 32'd4294961576;
\$auto$proc_rom.cc:150:do_switch$987 [2238] = 32'd4294961576;
\$auto$proc_rom.cc:150:do_switch$987 [2239] = 32'd4294961720;
\$auto$proc_rom.cc:150:do_switch$987 [2240] = 32'd4294961576;
\$auto$proc_rom.cc:150:do_switch$987 [2241] = 32'd4294961576;
\$auto$proc_rom.cc:150:do_switch$987 [2242] = 32'd4294961576;
\$auto$proc_rom.cc:150:do_switch$987 [2243] = 32'd4294961576;
\$auto$proc_rom.cc:150:do_switch$987 [2244] = 32'd4294961576;
\$auto$proc_rom.cc:150:do_switch$987 [2245] = 32'd4294961576;
\$auto$proc_rom.cc:150:do_switch$987 [2246] = 32'd4294961576;
\$auto$proc_rom.cc:150:do_switch$987 [2247] = 32'd4294961712;
\$auto$proc_rom.cc:150:do_switch$987 [2248] = 32'd4294961576;
\$auto$proc_rom.cc:150:do_switch$987 [2249] = 32'd4294961704;
\$auto$proc_rom.cc:150:do_switch$987 [2250] = 32'd4294961576;
\$auto$proc_rom.cc:150:do_switch$987 [2251] = 32'd4294961576;
\$auto$proc_rom.cc:150:do_switch$987 [2252] = 32'd4294961696;
\$auto$proc_rom.cc:150:do_switch$987 [2253] = 32'd4294961956;
\$auto$proc_rom.cc:150:do_switch$987 [2254] = 32'd4294961580;
\$auto$proc_rom.cc:150:do_switch$987 [2255] = 32'd4294961570;
\$auto$proc_rom.cc:150:do_switch$987 [2256] = 32'd4294961580;
\$auto$proc_rom.cc:150:do_switch$987 [2257] = 32'd4294961930;
\$auto$proc_rom.cc:150:do_switch$987 [2258] = 32'd4294961580;
\$auto$proc_rom.cc:150:do_switch$987 [2259] = 32'd4294961580;
\$auto$proc_rom.cc:150:do_switch$987 [2260] = 32'd4294961580;
\$auto$proc_rom.cc:150:do_switch$987 [2261] = 32'd4294961580;
\$auto$proc_rom.cc:150:do_switch$987 [2262] = 32'd4294961580;
\$auto$proc_rom.cc:150:do_switch$987 [2263] = 32'd4294961580;
\$auto$proc_rom.cc:150:do_switch$987 [2264] = 32'd4294961580;
\$auto$proc_rom.cc:150:do_switch$987 [2265] = 32'd4294961570;
\$auto$proc_rom.cc:150:do_switch$987 [2266] = 32'd4294961580;
\$auto$proc_rom.cc:150:do_switch$987 [2267] = 32'd4294961580;
\$auto$proc_rom.cc:150:do_switch$987 [2268] = 32'd4294961580;
\$auto$proc_rom.cc:150:do_switch$987 [2269] = 32'd4294961580;
\$auto$proc_rom.cc:150:do_switch$987 [2270] = 32'd4294961580;
\$auto$proc_rom.cc:150:do_switch$987 [2271] = 32'd4294961570;
\$auto$proc_rom.cc:150:do_switch$987 [2272] = 32'd4294962006;
\$auto$proc_rom.cc:150:do_switch$987 [2273] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2274] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2275] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2276] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2277] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2278] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2279] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2280] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2281] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2282] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2283] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2284] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2285] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2286] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2287] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2288] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2289] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2290] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2291] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2292] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2293] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2294] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2295] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2296] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2297] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2298] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2299] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2300] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2301] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2302] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2303] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2304] = 32'd4294962242;
\$auto$proc_rom.cc:150:do_switch$987 [2305] = 32'd4294961900;
\$auto$proc_rom.cc:150:do_switch$987 [2306] = 32'd4294962242;
\$auto$proc_rom.cc:150:do_switch$987 [2307] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2308] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2309] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2310] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2311] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2312] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2313] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2314] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2315] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2316] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2317] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2318] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2319] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2320] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2321] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2322] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2323] = 32'd4294962288;
\$auto$proc_rom.cc:150:do_switch$987 [2324] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2325] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2326] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2327] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2328] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2329] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2330] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2331] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2332] = 32'd4294961370;
\$auto$proc_rom.cc:150:do_switch$987 [2333] = 32'd4294962288;
\$auto$proc_rom.cc:150:do_switch$987 [2334] = 32'd4294961934;
\$auto$proc_rom.cc:150:do_switch$987 [2335] = 32'd4294962288;
\$auto$proc_rom.cc:150:do_switch$987 [2336] = 32'd4294962242;
\$auto$proc_rom.cc:150:do_switch$987 [2337] = 32'd4294961900;
\$auto$proc_rom.cc:150:do_switch$987 [2338] = 32'd4294962242;
\$auto$proc_rom.cc:150:do_switch$987 [2339] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2340] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2341] = 32'd1072693248;
\$auto$proc_rom.cc:150:do_switch$987 [2342] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2343] = 32'd1076101120;
\$auto$proc_rom.cc:150:do_switch$987 [2344] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2345] = 32'd1079574528;
\$auto$proc_rom.cc:150:do_switch$987 [2346] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2347] = 32'd1083129856;
\$auto$proc_rom.cc:150:do_switch$987 [2348] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2349] = 32'd1086556160;
\$auto$proc_rom.cc:150:do_switch$987 [2350] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2351] = 32'd1090021888;
\$auto$proc_rom.cc:150:do_switch$987 [2352] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2353] = 32'd1093567616;
\$auto$proc_rom.cc:150:do_switch$987 [2354] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2355] = 32'd1097011920;
\$auto$proc_rom.cc:150:do_switch$987 [2356] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2357] = 32'd1100470148;
\$auto$proc_rom.cc:150:do_switch$987 [2358] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2359] = 32'd1104006501;
\$auto$proc_rom.cc:150:do_switch$987 [2360] = 32'd1663059027;
\$auto$proc_rom.cc:150:do_switch$987 [2361] = 32'd543453793;
\$auto$proc_rom.cc:150:do_switch$987 [2362] = 32'd2037411683;
\$auto$proc_rom.cc:150:do_switch$987 [2363] = 32'd543584032;
\$auto$proc_rom.cc:150:do_switch$987 [2364] = 32'd1684104552;
\$auto$proc_rom.cc:150:do_switch$987 [2365] = 32'd1713402469;
\$auto$proc_rom.cc:150:do_switch$987 [2366] = 32'd1701603681;
\$auto$proc_rom.cc:150:do_switch$987 [2367] = 32'd168632676;
\$auto$proc_rom.cc:150:do_switch$987 [2368] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2369] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2370] = 32'd542396487;
\$auto$proc_rom.cc:150:do_switch$987 [2371] = 32'd1953653104;
\$auto$proc_rom.cc:150:do_switch$987 [2372] = 32'd1869182057;
\$auto$proc_rom.cc:150:do_switch$987 [2373] = 32'd1635000430;
\$auto$proc_rom.cc:150:do_switch$987 [2374] = 32'd543517794;
\$auto$proc_rom.cc:150:do_switch$987 [2375] = 32'd1684104552;
\$auto$proc_rom.cc:150:do_switch$987 [2376] = 32'd221934181;
\$auto$proc_rom.cc:150:do_switch$987 [2377] = 32'd10;
\$auto$proc_rom.cc:150:do_switch$987 [2378] = 32'd1734963977;
\$auto$proc_rom.cc:150:do_switch$987 [2379] = 32'd1970561390;
\$auto$proc_rom.cc:150:do_switch$987 [2380] = 32'd154822002;
\$auto$proc_rom.cc:150:do_switch$987 [2381] = 32'd628633632;
\$auto$proc_rom.cc:150:do_switch$987 [2382] = 32'd168654956;
\$auto$proc_rom.cc:150:do_switch$987 [2383] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2384] = 32'd1986359817;
\$auto$proc_rom.cc:150:do_switch$987 [2385] = 32'd1869181801;
\$auto$proc_rom.cc:150:do_switch$987 [2386] = 32'd537475694;
\$auto$proc_rom.cc:150:do_switch$987 [2387] = 32'd2015721520;
\$auto$proc_rom.cc:150:do_switch$987 [2388] = 32'd2573;
\$auto$proc_rom.cc:150:do_switch$987 [2389] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2390] = 32'd1634035721;
\$auto$proc_rom.cc:150:do_switch$987 [2391] = 32'd544367972;
\$auto$proc_rom.cc:150:do_switch$987 [2392] = 32'd1702521203;
\$auto$proc_rom.cc:150:do_switch$987 [2393] = 32'd537463098;
\$auto$proc_rom.cc:150:do_switch$987 [2394] = 32'd2015721520;
\$auto$proc_rom.cc:150:do_switch$987 [2395] = 32'd2573;
\$auto$proc_rom.cc:150:do_switch$987 [2396] = 32'd1936028169;
\$auto$proc_rom.cc:150:do_switch$987 [2397] = 32'd1702261349;
\$auto$proc_rom.cc:150:do_switch$987 [2398] = 32'd537475684;
\$auto$proc_rom.cc:150:do_switch$987 [2399] = 32'd2015721520;
\$auto$proc_rom.cc:150:do_switch$987 [2400] = 32'd2573;
\$auto$proc_rom.cc:150:do_switch$987 [2401] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2402] = 32'd544828681;
\$auto$proc_rom.cc:150:do_switch$987 [2403] = 32'd979460716;
\$auto$proc_rom.cc:150:do_switch$987 [2404] = 32'd2016419849;
\$auto$proc_rom.cc:150:do_switch$987 [2405] = 32'd225995813;
\$auto$proc_rom.cc:150:do_switch$987 [2406] = 32'd10;
\$auto$proc_rom.cc:150:do_switch$987 [2407] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2408] = 32'd1953259785;
\$auto$proc_rom.cc:150:do_switch$987 [2409] = 32'd1634628197;
\$auto$proc_rom.cc:150:do_switch$987 [2410] = 32'd1814062452;
\$auto$proc_rom.cc:150:do_switch$987 [2411] = 32'd154820962;
\$auto$proc_rom.cc:150:do_switch$987 [2412] = 32'd628633632;
\$auto$proc_rom.cc:150:do_switch$987 [2413] = 32'd168654956;
\$auto$proc_rom.cc:150:do_switch$987 [2414] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2415] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2416] = 32'd1918988297;
\$auto$proc_rom.cc:150:do_switch$987 [2417] = 32'd1769236852;
\$auto$proc_rom.cc:150:do_switch$987 [2418] = 32'd1696624239;
\$auto$proc_rom.cc:150:do_switch$987 [2419] = 32'd2037544046;
\$auto$proc_rom.cc:150:do_switch$987 [2420] = 32'd1633840160;
\$auto$proc_rom.cc:150:do_switch$987 [2421] = 32'd807405882;
\$auto$proc_rom.cc:150:do_switch$987 [2422] = 32'd2020353400;
\$auto$proc_rom.cc:150:do_switch$987 [2423] = 32'd2573;
\$auto$proc_rom.cc:150:do_switch$987 [2424] = 32'd1836412425;
\$auto$proc_rom.cc:150:do_switch$987 [2425] = 32'd544367970;
\$auto$proc_rom.cc:150:do_switch$987 [2426] = 32'd1953653104;
\$auto$proc_rom.cc:150:do_switch$987 [2427] = 32'd1869182057;
\$auto$proc_rom.cc:150:do_switch$987 [2428] = 32'd1852121198;
\$auto$proc_rom.cc:150:do_switch$987 [2429] = 32'd1701409396;
\$auto$proc_rom.cc:150:do_switch$987 [2430] = 32'd537475699;
\$auto$proc_rom.cc:150:do_switch$987 [2431] = 32'd168649765;
\$auto$proc_rom.cc:150:do_switch$987 [2432] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2433] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2434] = 32'd2053731081;
\$auto$proc_rom.cc:150:do_switch$987 [2435] = 32'd1634738277;
\$auto$proc_rom.cc:150:do_switch$987 [2436] = 32'd1953068146;
\$auto$proc_rom.cc:150:do_switch$987 [2437] = 32'd544108393;
\$auto$proc_rom.cc:150:do_switch$987 [2438] = 32'd1920233061;
\$auto$proc_rom.cc:150:do_switch$987 [2439] = 32'd980641129;
\$auto$proc_rom.cc:150:do_switch$987 [2440] = 32'd537468960;
\$auto$proc_rom.cc:150:do_switch$987 [2441] = 32'd168649765;
\$auto$proc_rom.cc:150:do_switch$987 [2442] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2443] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2444] = 32'd1663059027;
\$auto$proc_rom.cc:150:do_switch$987 [2445] = 32'd543453793;
\$auto$proc_rom.cc:150:do_switch$987 [2446] = 32'd2037411683;
\$auto$proc_rom.cc:150:do_switch$987 [2447] = 32'd543584032;
\$auto$proc_rom.cc:150:do_switch$987 [2448] = 32'd1953653104;
\$auto$proc_rom.cc:150:do_switch$987 [2449] = 32'd1869182057;
\$auto$proc_rom.cc:150:do_switch$987 [2450] = 32'd1852121198;
\$auto$proc_rom.cc:150:do_switch$987 [2451] = 32'd1701409396;
\$auto$proc_rom.cc:150:do_switch$987 [2452] = 32'd1634082931;
\$auto$proc_rom.cc:150:do_switch$987 [2453] = 32'd1684368489;
\$auto$proc_rom.cc:150:do_switch$987 [2454] = 32'd658721;
\$auto$proc_rom.cc:150:do_switch$987 [2455] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2456] = 32'd542396487;
\$auto$proc_rom.cc:150:do_switch$987 [2457] = 32'd1953653104;
\$auto$proc_rom.cc:150:do_switch$987 [2458] = 32'd1869182057;
\$auto$proc_rom.cc:150:do_switch$987 [2459] = 32'd1852121198;
\$auto$proc_rom.cc:150:do_switch$987 [2460] = 32'd544830068;
\$auto$proc_rom.cc:150:do_switch$987 [2461] = 32'd168649765;
\$auto$proc_rom.cc:150:do_switch$987 [2462] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2463] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2464] = 32'd1919510025;
\$auto$proc_rom.cc:150:do_switch$987 [2465] = 32'd1814066291;
\$auto$proc_rom.cc:150:do_switch$987 [2466] = 32'd154820962;
\$auto$proc_rom.cc:150:do_switch$987 [2467] = 32'd628633632;
\$auto$proc_rom.cc:150:do_switch$987 [2468] = 32'd168654956;
\$auto$proc_rom.cc:150:do_switch$987 [2469] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2470] = 32'd1935764489;
\$auto$proc_rom.cc:150:do_switch$987 [2471] = 32'd1651253364;
\$auto$proc_rom.cc:150:do_switch$987 [2472] = 32'd537475681;
\$auto$proc_rom.cc:150:do_switch$987 [2473] = 32'd1814394928;
\$auto$proc_rom.cc:150:do_switch$987 [2474] = 32'd658808;
\$auto$proc_rom.cc:150:do_switch$987 [2475] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2476] = 32'd1953784073;
\$auto$proc_rom.cc:150:do_switch$987 [2477] = 32'd1969383794;
\$auto$proc_rom.cc:150:do_switch$987 [2478] = 32'd980641140;
\$auto$proc_rom.cc:150:do_switch$987 [2479] = 32'd2016419849;
\$auto$proc_rom.cc:150:do_switch$987 [2480] = 32'd225995813;
\$auto$proc_rom.cc:150:do_switch$987 [2481] = 32'd10;
\$auto$proc_rom.cc:150:do_switch$987 [2482] = 32'd1835101705;
\$auto$proc_rom.cc:150:do_switch$987 [2483] = 32'd604773;
\$auto$proc_rom.cc:150:do_switch$987 [2484] = 32'd25381;
\$auto$proc_rom.cc:150:do_switch$987 [2485] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2486] = 32'd1566864219;
\$auto$proc_rom.cc:150:do_switch$987 [2487] = 32'd1936028192;
\$auto$proc_rom.cc:150:do_switch$987 [2488] = 32'd1701601136;
\$auto$proc_rom.cc:150:do_switch$987 [2489] = 32'd2016419950;
\$auto$proc_rom.cc:150:do_switch$987 [2490] = 32'd1948284965;
\$auto$proc_rom.cc:150:do_switch$987 [2491] = 32'd1814065007;
\$auto$proc_rom.cc:150:do_switch$987 [2492] = 32'd1701278305;
\$auto$proc_rom.cc:150:do_switch$987 [2493] = 32'd1919903264;
\$auto$proc_rom.cc:150:do_switch$987 [2494] = 32'd1600418592;
\$auto$proc_rom.cc:150:do_switch$987 [2495] = 32'd543452515;
\$auto$proc_rom.cc:150:do_switch$987 [2496] = 32'd2019650856;
\$auto$proc_rom.cc:150:do_switch$987 [2497] = 32'd544434464;
\$auto$proc_rom.cc:150:do_switch$987 [2498] = 32'd168634680;
\$auto$proc_rom.cc:150:do_switch$987 [2499] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2500] = 32'd1566864219;
\$auto$proc_rom.cc:150:do_switch$987 [2501] = 32'd1145914144;
\$auto$proc_rom.cc:150:do_switch$987 [2502] = 32'd1701978160;
\$auto$proc_rom.cc:150:do_switch$987 [2503] = 32'd1852797043;
\$auto$proc_rom.cc:150:do_switch$987 [2504] = 32'd540697971;
\$auto$proc_rom.cc:150:do_switch$987 [2505] = 32'd2015721520;
\$auto$proc_rom.cc:150:do_switch$987 [2506] = 32'd2573;
\$auto$proc_rom.cc:150:do_switch$987 [2507] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2508] = 32'd1566864219;
\$auto$proc_rom.cc:150:do_switch$987 [2509] = 32'd1145914144;
\$auto$proc_rom.cc:150:do_switch$987 [2510] = 32'd1701978168;
\$auto$proc_rom.cc:150:do_switch$987 [2511] = 32'd1852797043;
\$auto$proc_rom.cc:150:do_switch$987 [2512] = 32'd540697971;
\$auto$proc_rom.cc:150:do_switch$987 [2513] = 32'd1814394928;
\$auto$proc_rom.cc:150:do_switch$987 [2514] = 32'd658808;
\$auto$proc_rom.cc:150:do_switch$987 [2515] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2516] = 32'd1566864219;
\$auto$proc_rom.cc:150:do_switch$987 [2517] = 32'd1145914144;
\$auto$proc_rom.cc:150:do_switch$987 [2518] = 32'd1914713397;
\$auto$proc_rom.cc:150:do_switch$987 [2519] = 32'd1869640549;
\$auto$proc_rom.cc:150:do_switch$987 [2520] = 32'd979727214;
\$auto$proc_rom.cc:150:do_switch$987 [2521] = 32'd628633632;
\$auto$proc_rom.cc:150:do_switch$987 [2522] = 32'd168654956;
\$auto$proc_rom.cc:150:do_switch$987 [2523] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2524] = 32'd1566864219;
\$auto$proc_rom.cc:150:do_switch$987 [2525] = 32'd1296253216;
\$auto$proc_rom.cc:150:do_switch$987 [2526] = 32'd540095556;
\$auto$proc_rom.cc:150:do_switch$987 [2527] = 32'd1886610802;
\$auto$proc_rom.cc:150:do_switch$987 [2528] = 32'd1702063727;
\$auto$proc_rom.cc:150:do_switch$987 [2529] = 32'd2016419898;
\$auto$proc_rom.cc:150:do_switch$987 [2530] = 32'd225995813;
\$auto$proc_rom.cc:150:do_switch$987 [2531] = 32'd10;
\$auto$proc_rom.cc:150:do_switch$987 [2532] = 32'd1566864219;
\$auto$proc_rom.cc:150:do_switch$987 [2533] = 32'd1145914144;
\$auto$proc_rom.cc:150:do_switch$987 [2534] = 32'd1914714165;
\$auto$proc_rom.cc:150:do_switch$987 [2535] = 32'd1869640549;
\$auto$proc_rom.cc:150:do_switch$987 [2536] = 32'd979727214;
\$auto$proc_rom.cc:150:do_switch$987 [2537] = 32'd628633632;
\$auto$proc_rom.cc:150:do_switch$987 [2538] = 32'd658808;
\$auto$proc_rom.cc:150:do_switch$987 [2539] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2540] = 32'd1566864219;
\$auto$proc_rom.cc:150:do_switch$987 [2541] = 32'd1145914144;
\$auto$proc_rom.cc:150:do_switch$987 [2542] = 32'd1914713649;
\$auto$proc_rom.cc:150:do_switch$987 [2543] = 32'd1869640549;
\$auto$proc_rom.cc:150:do_switch$987 [2544] = 32'd979727214;
\$auto$proc_rom.cc:150:do_switch$987 [2545] = 32'd628633632;
\$auto$proc_rom.cc:150:do_switch$987 [2546] = 32'd658808;
\$auto$proc_rom.cc:150:do_switch$987 [2547] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2548] = 32'd1566864219;
\$auto$proc_rom.cc:150:do_switch$987 [2549] = 32'd1852396320;
\$auto$proc_rom.cc:150:do_switch$987 [2550] = 32'd543517799;
\$auto$proc_rom.cc:150:do_switch$987 [2551] = 32'd1668246626;
\$auto$proc_rom.cc:150:do_switch$987 [2552] = 32'd1920213099;
\$auto$proc_rom.cc:150:do_switch$987 [2553] = 32'd1718840929;
\$auto$proc_rom.cc:150:do_switch$987 [2554] = 32'd1713402469;
\$auto$proc_rom.cc:150:do_switch$987 [2555] = 32'd544042866;
\$auto$proc_rom.cc:150:do_switch$987 [2556] = 32'd541147724;
\$auto$proc_rom.cc:150:do_switch$987 [2557] = 32'd1814394928;
\$auto$proc_rom.cc:150:do_switch$987 [2558] = 32'd1869881464;
\$auto$proc_rom.cc:150:do_switch$987 [2559] = 32'd628633632;
\$auto$proc_rom.cc:150:do_switch$987 [2560] = 32'd168654956;
\$auto$proc_rom.cc:150:do_switch$987 [2561] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2562] = 32'd1566864219;
\$auto$proc_rom.cc:150:do_switch$987 [2563] = 32'd1819626784;
\$auto$proc_rom.cc:150:do_switch$987 [2564] = 32'd1646291316;
\$auto$proc_rom.cc:150:do_switch$987 [2565] = 32'd1801678700;
\$auto$proc_rom.cc:150:do_switch$987 [2566] = 32'd1634890784;
\$auto$proc_rom.cc:150:do_switch$987 [2567] = 32'd1701213038;
\$auto$proc_rom.cc:150:do_switch$987 [2568] = 32'd1718558834;
\$auto$proc_rom.cc:150:do_switch$987 [2569] = 32'd543434016;
\$auto$proc_rom.cc:150:do_switch$987 [2570] = 32'd1668246626;
\$auto$proc_rom.cc:150:do_switch$987 [2571] = 32'd1713402731;
\$auto$proc_rom.cc:150:do_switch$987 [2572] = 32'd544042866;
\$auto$proc_rom.cc:150:do_switch$987 [2573] = 32'd541147724;
\$auto$proc_rom.cc:150:do_switch$987 [2574] = 32'd1814394928;
\$auto$proc_rom.cc:150:do_switch$987 [2575] = 32'd1869881464;
\$auto$proc_rom.cc:150:do_switch$987 [2576] = 32'd628633632;
\$auto$proc_rom.cc:150:do_switch$987 [2577] = 32'd168654956;
\$auto$proc_rom.cc:150:do_switch$987 [2578] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2579] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2580] = 32'd1566864219;
\$auto$proc_rom.cc:150:do_switch$987 [2581] = 32'd1953449760;
\$auto$proc_rom.cc:150:do_switch$987 [2582] = 32'd1869373984;
\$auto$proc_rom.cc:150:do_switch$987 [2583] = 32'd1914727267;
\$auto$proc_rom.cc:150:do_switch$987 [2584] = 32'd543449445;
\$auto$proc_rom.cc:150:do_switch$987 [2585] = 32'd1835888483;
\$auto$proc_rom.cc:150:do_switch$987 [2586] = 32'd543452769;
\$auto$proc_rom.cc:150:do_switch$987 [2587] = 32'd1886610802;
\$auto$proc_rom.cc:150:do_switch$987 [2588] = 32'd1702063727;
\$auto$proc_rom.cc:150:do_switch$987 [2589] = 32'd2016419898;
\$auto$proc_rom.cc:150:do_switch$987 [2590] = 32'd168654885;
\$auto$proc_rom.cc:150:do_switch$987 [2591] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2592] = 32'd1566864219;
\$auto$proc_rom.cc:150:do_switch$987 [2593] = 32'd1920091424;
\$auto$proc_rom.cc:150:do_switch$987 [2594] = 32'd1948283503;
\$auto$proc_rom.cc:150:do_switch$987 [2595] = 32'd1852140399;
\$auto$proc_rom.cc:150:do_switch$987 [2596] = 32'd1667592736;
\$auto$proc_rom.cc:150:do_switch$987 [2597] = 32'd1702259045;
\$auto$proc_rom.cc:150:do_switch$987 [2598] = 32'd807418468;
\$auto$proc_rom.cc:150:do_switch$987 [2599] = 32'd225977720;
\$auto$proc_rom.cc:150:do_switch$987 [2600] = 32'd10;
\$auto$proc_rom.cc:150:do_switch$987 [2601] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2602] = 32'd1566864219;
\$auto$proc_rom.cc:150:do_switch$987 [2603] = 32'd1145914144;
\$auto$proc_rom.cc:150:do_switch$987 [2604] = 32'd1914712625;
\$auto$proc_rom.cc:150:do_switch$987 [2605] = 32'd1869640549;
\$auto$proc_rom.cc:150:do_switch$987 [2606] = 32'd979727214;
\$auto$proc_rom.cc:150:do_switch$987 [2607] = 32'd628633632;
\$auto$proc_rom.cc:150:do_switch$987 [2608] = 32'd658808;
\$auto$proc_rom.cc:150:do_switch$987 [2609] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2610] = 32'd4294967295;
\$auto$proc_rom.cc:150:do_switch$987 [2611] = 32'd2146435071;
\$auto$proc_rom.cc:150:do_switch$987 [2612] = 32'd4294967295;
\$auto$proc_rom.cc:150:do_switch$987 [2613] = 32'd4293918719;
\$auto$proc_rom.cc:150:do_switch$987 [2614] = 32'd1352628731;
\$auto$proc_rom.cc:150:do_switch$987 [2615] = 32'd1070810131;
\$auto$proc_rom.cc:150:do_switch$987 [2616] = 32'd2338375859;
\$auto$proc_rom.cc:150:do_switch$987 [2617] = 32'd1069976104;
\$auto$proc_rom.cc:150:do_switch$987 [2618] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2619] = 32'd1073217536;
\$auto$proc_rom.cc:150:do_switch$987 [2620] = 32'd1668236129;
\$auto$proc_rom.cc:150:do_switch$987 [2621] = 32'd1070761895;
\$auto$proc_rom.cc:150:do_switch$987 [2622] = 32'd158966641;
\$auto$proc_rom.cc:150:do_switch$987 [2623] = 32'd1074434895;
\$auto$proc_rom.cc:150:do_switch$987 [2624] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2625] = 32'd1071644672;
\$auto$proc_rom.cc:150:do_switch$987 [2626] = 32'd4277811695;
\$auto$proc_rom.cc:150:do_switch$987 [2627] = 32'd1072049730;
\$auto$proc_rom.cc:150:do_switch$987 [2628] = 32'd3149223190;
\$auto$proc_rom.cc:150:do_switch$987 [2629] = 32'd1073900465;
\$auto$proc_rom.cc:150:do_switch$987 [2630] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2631] = 32'd1076625408;
\$auto$proc_rom.cc:150:do_switch$987 [2632] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2633] = 32'd1076101120;
\$auto$proc_rom.cc:150:do_switch$987 [2634] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2635] = 32'd1075314688;
\$auto$proc_rom.cc:150:do_switch$987 [2636] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2637] = 32'd1073741824;
\$auto$proc_rom.cc:150:do_switch$987 [2638] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2639] = 32'd1072693248;
\$auto$proc_rom.cc:150:do_switch$987 [2640] = 32'd3944497965;
\$auto$proc_rom.cc:150:do_switch$987 [2641] = 32'd1058682594;
\$auto$proc_rom.cc:150:do_switch$987 [2642] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2643] = 32'd1093567616;
\$auto$proc_rom.cc:150:do_switch$987 [2644] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2645] = 32'd1104006501;
\$auto$proc_rom.cc:150:do_switch$987 [2646] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2647] = 32'd3251490149;
\$auto$proc_rom.cc:150:do_switch$987 [2648] = 32'd109191;
\$auto$proc_rom.cc:150:do_switch$987 [2649] = 32'd18432;
\$auto$proc_rom.cc:150:do_switch$987 [2650] = 32'd131327;
\$auto$proc_rom.cc:150:do_switch$987 [2651] = 32'd20480;
\$auto$proc_rom.cc:150:do_switch$987 [2652] = 32'd84017409;
\$auto$proc_rom.cc:150:do_switch$987 [2653] = 32'd83886080;
\$auto$proc_rom.cc:150:do_switch$987 [2654] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2655] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2656] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2657] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2658] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2659] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2660] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2661] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2662] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2663] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2664] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2665] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2666] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2667] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2668] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2669] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2670] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2671] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2672] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2673] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2674] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2675] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2676] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2677] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2678] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2679] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2680] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2681] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2682] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2683] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2684] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2685] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2686] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2687] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2688] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2689] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2690] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2691] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2692] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2693] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2694] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2695] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2696] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2697] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2698] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2699] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2700] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2701] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2702] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2703] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2704] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2705] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2706] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2707] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2708] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2709] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2710] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2711] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2712] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2713] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2714] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2715] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2716] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2717] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2718] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2719] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2720] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2721] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2722] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2723] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2724] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2725] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2726] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2727] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2728] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2729] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2730] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2731] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2732] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2733] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2734] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2735] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2736] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2737] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2738] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2739] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2740] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2741] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2742] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2743] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2744] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2745] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2746] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2747] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2748] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2749] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2750] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2751] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2752] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2753] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2754] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2755] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2756] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2757] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2758] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2759] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2760] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2761] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2762] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2763] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2764] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2765] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2766] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2767] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2768] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2769] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2770] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2771] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2772] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2773] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2774] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2775] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2776] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2777] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2778] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2779] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2780] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2781] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2782] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2783] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2784] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2785] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2786] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2787] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2788] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2789] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2790] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2791] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2792] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2793] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2794] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2795] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2796] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2797] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2798] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2799] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2800] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2801] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2802] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2803] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2804] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2805] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2806] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2807] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2808] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2809] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2810] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2811] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2812] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2813] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2814] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2815] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2816] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2817] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2818] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2819] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2820] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2821] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2822] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2823] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2824] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2825] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2826] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2827] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2828] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2829] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2830] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2831] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2832] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2833] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2834] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2835] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2836] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2837] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2838] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2839] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2840] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2841] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2842] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2843] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2844] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2845] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2846] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2847] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2848] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2849] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2850] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2851] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2852] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2853] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2854] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2855] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2856] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2857] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2858] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2859] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2860] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2861] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2862] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2863] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2864] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2865] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2866] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2867] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2868] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2869] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2870] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2871] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2872] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2873] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2874] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2875] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2876] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2877] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2878] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2879] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2880] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2881] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2882] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2883] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2884] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2885] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2886] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2887] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2888] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2889] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2890] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2891] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2892] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2893] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2894] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2895] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2896] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2897] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2898] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2899] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2900] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2901] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2902] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2903] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2904] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2905] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2906] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2907] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2908] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2909] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2910] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2911] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2912] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2913] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2914] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2915] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2916] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2917] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2918] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2919] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2920] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2921] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2922] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2923] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2924] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2925] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2926] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2927] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2928] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2929] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2930] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2931] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2932] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2933] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2934] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2935] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2936] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2937] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2938] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2939] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2940] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2941] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2942] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2943] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2944] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2945] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2946] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2947] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2948] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2949] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2950] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2951] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2952] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2953] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2954] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2955] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2956] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2957] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2958] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2959] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2960] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2961] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2962] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2963] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2964] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2965] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2966] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2967] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2968] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2969] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2970] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2971] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2972] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2973] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2974] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2975] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2976] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2977] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2978] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2979] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2980] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2981] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2982] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2983] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2984] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2985] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2986] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2987] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2988] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2989] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2990] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2991] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2992] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2993] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2994] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2995] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2996] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2997] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2998] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [2999] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3000] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3001] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3002] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3003] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3004] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3005] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3006] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3007] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3008] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3009] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3010] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3011] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3012] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3013] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3014] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3015] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3016] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3017] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3018] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3019] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3020] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3021] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3022] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3023] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3024] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3025] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3026] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3027] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3028] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3029] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3030] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3031] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3032] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3033] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3034] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3035] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3036] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3037] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3038] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3039] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3040] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3041] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3042] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3043] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3044] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3045] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3046] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3047] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3048] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3049] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3050] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3051] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3052] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3053] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3054] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3055] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3056] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3057] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3058] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3059] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3060] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3061] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3062] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3063] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3064] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3065] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3066] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3067] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3068] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3069] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3070] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3071] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3072] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3073] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3074] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3075] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3076] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3077] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3078] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3079] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3080] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3081] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3082] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3083] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3084] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3085] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3086] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3087] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3088] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3089] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3090] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3091] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3092] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3093] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3094] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3095] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3096] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3097] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3098] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3099] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3100] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3101] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3102] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3103] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3104] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3105] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3106] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3107] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3108] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3109] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3110] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3111] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3112] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3113] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3114] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3115] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3116] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3117] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3118] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3119] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3120] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3121] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3122] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3123] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3124] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3125] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3126] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3127] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3128] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3129] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3130] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3131] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3132] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3133] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3134] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3135] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3136] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3137] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3138] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3139] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3140] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3141] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3142] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3143] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3144] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3145] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3146] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3147] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3148] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3149] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3150] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3151] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3152] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3153] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3154] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3155] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3156] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3157] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3158] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3159] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3160] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3161] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3162] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3163] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3164] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3165] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3166] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3167] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3168] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3169] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3170] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3171] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3172] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3173] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3174] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3175] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3176] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3177] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3178] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3179] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3180] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3181] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3182] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3183] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3184] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3185] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3186] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3187] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3188] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3189] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3190] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3191] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3192] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3193] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3194] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3195] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3196] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3197] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3198] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3199] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3200] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3201] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3202] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3203] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3204] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3205] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3206] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3207] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3208] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3209] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3210] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3211] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3212] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3213] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3214] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3215] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3216] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3217] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3218] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3219] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3220] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3221] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3222] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3223] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3224] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3225] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3226] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3227] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3228] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3229] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3230] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3231] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3232] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3233] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3234] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3235] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3236] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3237] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3238] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3239] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3240] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3241] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3242] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3243] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3244] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3245] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3246] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3247] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3248] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3249] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3250] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3251] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3252] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3253] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3254] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3255] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3256] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3257] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3258] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3259] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3260] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3261] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3262] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3263] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3264] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3265] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3266] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3267] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3268] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3269] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3270] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3271] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3272] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3273] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3274] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3275] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3276] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3277] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3278] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3279] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3280] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3281] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3282] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3283] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3284] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3285] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3286] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3287] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3288] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3289] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3290] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3291] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3292] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3293] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3294] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3295] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3296] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3297] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3298] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3299] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3300] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3301] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3302] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3303] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3304] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3305] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3306] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3307] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3308] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3309] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3310] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3311] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3312] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3313] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3314] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3315] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3316] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3317] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3318] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3319] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3320] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3321] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3322] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3323] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3324] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3325] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3326] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3327] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3328] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3329] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3330] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3331] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3332] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3333] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3334] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3335] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3336] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3337] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3338] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3339] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3340] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3341] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3342] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3343] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3344] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3345] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3346] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3347] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3348] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3349] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3350] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3351] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3352] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3353] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3354] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3355] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3356] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3357] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3358] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3359] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3360] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3361] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3362] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3363] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3364] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3365] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3366] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3367] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3368] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3369] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3370] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3371] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3372] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3373] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3374] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3375] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3376] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3377] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3378] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3379] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3380] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3381] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3382] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3383] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3384] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3385] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3386] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3387] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3388] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3389] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3390] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3391] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3392] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3393] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3394] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3395] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3396] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3397] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3398] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3399] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3400] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3401] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3402] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3403] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3404] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3405] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3406] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3407] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3408] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3409] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3410] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3411] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3412] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3413] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3414] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3415] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3416] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3417] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3418] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3419] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3420] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3421] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3422] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3423] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3424] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3425] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3426] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3427] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3428] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3429] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3430] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3431] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3432] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3433] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3434] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3435] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3436] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3437] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3438] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3439] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3440] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3441] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3442] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3443] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3444] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3445] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3446] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3447] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3448] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3449] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3450] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3451] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3452] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3453] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3454] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3455] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3456] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3457] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3458] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3459] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3460] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3461] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3462] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3463] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3464] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3465] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3466] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3467] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3468] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3469] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3470] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3471] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3472] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3473] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3474] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3475] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3476] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3477] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3478] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3479] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3480] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3481] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3482] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3483] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3484] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3485] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3486] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3487] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3488] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3489] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3490] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3491] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3492] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3493] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3494] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3495] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3496] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3497] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3498] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3499] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3500] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3501] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3502] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3503] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3504] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3505] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3506] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3507] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3508] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3509] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3510] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3511] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3512] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3513] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3514] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3515] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3516] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3517] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3518] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3519] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3520] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3521] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3522] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3523] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3524] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3525] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3526] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3527] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3528] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3529] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3530] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3531] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3532] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3533] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3534] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3535] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3536] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3537] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3538] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3539] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3540] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3541] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3542] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3543] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3544] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3545] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3546] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3547] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3548] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3549] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3550] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3551] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3552] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3553] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3554] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3555] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3556] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3557] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3558] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3559] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3560] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3561] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3562] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3563] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3564] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3565] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3566] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3567] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3568] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3569] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3570] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3571] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3572] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3573] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3574] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3575] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3576] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3577] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3578] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3579] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3580] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3581] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3582] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3583] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3584] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3585] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3586] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3587] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3588] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3589] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3590] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3591] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3592] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3593] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3594] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3595] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3596] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3597] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3598] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3599] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3600] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3601] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3602] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3603] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3604] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3605] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3606] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3607] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3608] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3609] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3610] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3611] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3612] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3613] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3614] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3615] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3616] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3617] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3618] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3619] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3620] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3621] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3622] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3623] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3624] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3625] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3626] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3627] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3628] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3629] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3630] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3631] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3632] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3633] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3634] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3635] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3636] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3637] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3638] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3639] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3640] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3641] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3642] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3643] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3644] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3645] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3646] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3647] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3648] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3649] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3650] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3651] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3652] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3653] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3654] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3655] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3656] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3657] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3658] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3659] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3660] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3661] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3662] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3663] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3664] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3665] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3666] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3667] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3668] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3669] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3670] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3671] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3672] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3673] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3674] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3675] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3676] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3677] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3678] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3679] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3680] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3681] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3682] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3683] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3684] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3685] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3686] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3687] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3688] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3689] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3690] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3691] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3692] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3693] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3694] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3695] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3696] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3697] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3698] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3699] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3700] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3701] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3702] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3703] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3704] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3705] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3706] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3707] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3708] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3709] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3710] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3711] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3712] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3713] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3714] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3715] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3716] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3717] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3718] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3719] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3720] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3721] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3722] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3723] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3724] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3725] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3726] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3727] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3728] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3729] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3730] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3731] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3732] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3733] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3734] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3735] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3736] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3737] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3738] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3739] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3740] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3741] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3742] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3743] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3744] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3745] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3746] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3747] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3748] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3749] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3750] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3751] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3752] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3753] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3754] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3755] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3756] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3757] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3758] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3759] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3760] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3761] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3762] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3763] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3764] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3765] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3766] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3767] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3768] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3769] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3770] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3771] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3772] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3773] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3774] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3775] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3776] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3777] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3778] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3779] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3780] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3781] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3782] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3783] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3784] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3785] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3786] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3787] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3788] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3789] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3790] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3791] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3792] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3793] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3794] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3795] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3796] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3797] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3798] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3799] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3800] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3801] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3802] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3803] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3804] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3805] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3806] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3807] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3808] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3809] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3810] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3811] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3812] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3813] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3814] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3815] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3816] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3817] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3818] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3819] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3820] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3821] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3822] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3823] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3824] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3825] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3826] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3827] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3828] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3829] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3830] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3831] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3832] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3833] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3834] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3835] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3836] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3837] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3838] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3839] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3840] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3841] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3842] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3843] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3844] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3845] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3846] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3847] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3848] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3849] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3850] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3851] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3852] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3853] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3854] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3855] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3856] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3857] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3858] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3859] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3860] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3861] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3862] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3863] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3864] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3865] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3866] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3867] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3868] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3869] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3870] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3871] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3872] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3873] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3874] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3875] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3876] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3877] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3878] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3879] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3880] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3881] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3882] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3883] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3884] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3885] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3886] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3887] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3888] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3889] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3890] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3891] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3892] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3893] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3894] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3895] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3896] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3897] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3898] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3899] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3900] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3901] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3902] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3903] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3904] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3905] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3906] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3907] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3908] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3909] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3910] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3911] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3912] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3913] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3914] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3915] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3916] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3917] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3918] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3919] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3920] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3921] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3922] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3923] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3924] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3925] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3926] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3927] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3928] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3929] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3930] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3931] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3932] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3933] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3934] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3935] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3936] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3937] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3938] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3939] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3940] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3941] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3942] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3943] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3944] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3945] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3946] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3947] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3948] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3949] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3950] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3951] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3952] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3953] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3954] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3955] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3956] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3957] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3958] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3959] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3960] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3961] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3962] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3963] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3964] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3965] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3966] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3967] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3968] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3969] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3970] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3971] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3972] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3973] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3974] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3975] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3976] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3977] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3978] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3979] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3980] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3981] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3982] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3983] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3984] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3985] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3986] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3987] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3988] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3989] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3990] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3991] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3992] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3993] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3994] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3995] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3996] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3997] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3998] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [3999] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4000] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4001] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4002] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4003] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4004] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4005] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4006] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4007] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4008] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4009] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4010] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4011] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4012] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4013] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4014] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4015] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4016] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4017] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4018] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4019] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4020] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4021] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4022] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4023] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4024] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4025] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4026] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4027] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4028] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4029] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4030] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4031] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4032] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4033] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4034] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4035] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4036] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4037] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4038] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4039] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4040] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4041] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4042] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4043] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4044] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4045] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4046] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4047] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4048] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4049] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4050] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4051] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4052] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4053] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4054] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4055] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4056] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4057] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4058] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4059] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4060] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4061] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4062] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4063] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4064] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4065] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4066] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4067] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4068] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4069] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4070] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4071] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4072] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4073] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4074] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4075] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4076] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4077] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4078] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4079] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4080] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4081] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4082] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4083] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4084] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4085] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4086] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4087] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4088] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4089] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4090] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4091] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4092] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4093] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4094] = 32'd0;
\$auto$proc_rom.cc:150:do_switch$987 [4095] = 32'd0;
end
assign data
View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment