From d13d0efa85620f9f0bb2184e11b6e94b4ca43aac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=8BLaraib=20Khan?= <​laraib.khan@lampromellon.com> Date: Wed, 13 Jan 2021 11:28:03 +0500 Subject: [PATCH] Bridges added --- ahb_to_axi4.fir | 4 +- axi4_to_ahb.anno.json | 114 ++ axi4_to_ahb.fir | 1271 +++++++++++++++++ axi4_to_ahb.v | 1036 ++++++++++++++ src/main/scala/lib/ahb_to_axi4.scala | 4 +- src/main/scala/lib/axi4_to_ahb.scala | 126 +- .../scala-2.12/classes/lib/ahb_to_axi4.class | Bin 145807 -> 145827 bytes .../scala-2.12/classes/lib/axi4_to_ahb$.class | Bin 496 -> 3996 bytes .../lib/axi4_to_ahb$delayedInit$body.class | Bin 0 -> 756 bytes .../scala-2.12/classes/lib/axi4_to_ahb.class | Bin 109810 -> 105964 bytes .../classes/lib/axi4_to_ahb_IO.class | Bin 2533 -> 3037 bytes 11 files changed, 2487 insertions(+), 68 deletions(-) create mode 100644 axi4_to_ahb.anno.json create mode 100644 axi4_to_ahb.fir create mode 100644 axi4_to_ahb.v create mode 100644 target/scala-2.12/classes/lib/axi4_to_ahb$delayedInit$body.class diff --git a/ahb_to_axi4.fir b/ahb_to_axi4.fir index 792a349c..59d78597 100644 --- a/ahb_to_axi4.fir +++ b/ahb_to_axi4.fir @@ -504,7 +504,7 @@ circuit ahb_to_axi4 : io.axi.aw.bits.prot <= _T_186 @[ahb_to_axi4.scala 158:33] node _T_187 = mux(UInt<1>("h00"), UInt<8>("h0ff"), UInt<8>("h00")) @[Bitwise.scala 72:12] io.axi.aw.bits.len <= _T_187 @[ahb_to_axi4.scala 159:33] - io.axi.aw.bits.burst <= UInt<1>("h01") @[ahb_to_axi4.scala 160:33] + io.axi.aw.bits.burst <= UInt<2>("h01") @[ahb_to_axi4.scala 160:33] node _T_188 = and(cmdbuf_vld, cmdbuf_write) @[ahb_to_axi4.scala 162:42] io.axi.w.valid <= _T_188 @[ahb_to_axi4.scala 162:28] io.axi.w.bits.data <= cmdbuf_wdata @[ahb_to_axi4.scala 163:33] @@ -523,6 +523,6 @@ circuit ahb_to_axi4 : io.axi.ar.bits.prot <= _T_193 @[ahb_to_axi4.scala 173:33] node _T_194 = mux(UInt<1>("h00"), UInt<8>("h0ff"), UInt<8>("h00")) @[Bitwise.scala 72:12] io.axi.ar.bits.len <= _T_194 @[ahb_to_axi4.scala 174:33] - io.axi.ar.bits.burst <= UInt<1>("h01") @[ahb_to_axi4.scala 175:33] + io.axi.ar.bits.burst <= UInt<2>("h01") @[ahb_to_axi4.scala 175:33] io.axi.r.ready <= UInt<1>("h01") @[ahb_to_axi4.scala 177:28] diff --git a/axi4_to_ahb.anno.json b/axi4_to_ahb.anno.json new file mode 100644 index 00000000..99ab884d --- /dev/null +++ b/axi4_to_ahb.anno.json @@ -0,0 +1,114 @@ +[ + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~axi4_to_ahb|axi4_to_ahb>io_ahb_out_haddr", + "sources":[ + "~axi4_to_ahb|axi4_to_ahb>io_ahb_out_htrans", + "~axi4_to_ahb|axi4_to_ahb>io_axi_ar_bits_addr", + "~axi4_to_ahb|axi4_to_ahb>io_axi_ar_valid", + "~axi4_to_ahb|axi4_to_ahb>io_axi_b_ready", + "~axi4_to_ahb|axi4_to_ahb>io_axi_r_ready" + ] + }, + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~axi4_to_ahb|axi4_to_ahb>io_axi_w_ready", + "sources":[ + "~axi4_to_ahb|axi4_to_ahb>io_axi_ar_valid", + "~axi4_to_ahb|axi4_to_ahb>io_axi_b_ready", + "~axi4_to_ahb|axi4_to_ahb>io_axi_r_ready" + ] + }, + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~axi4_to_ahb|axi4_to_ahb>io_ahb_out_hprot", + "sources":[ + "~axi4_to_ahb|axi4_to_ahb>io_axi_ar_bits_prot" + ] + }, + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~axi4_to_ahb|axi4_to_ahb>io_axi_aw_ready", + "sources":[ + "~axi4_to_ahb|axi4_to_ahb>io_axi_ar_valid", + "~axi4_to_ahb|axi4_to_ahb>io_axi_b_ready", + "~axi4_to_ahb|axi4_to_ahb>io_axi_r_ready" + ] + }, + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~axi4_to_ahb|axi4_to_ahb>io_axi_b_valid", + "sources":[ + "~axi4_to_ahb|axi4_to_ahb>io_axi_b_ready", + "~axi4_to_ahb|axi4_to_ahb>io_axi_r_ready", + "~axi4_to_ahb|axi4_to_ahb>io_axi_ar_valid" + ] + }, + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~axi4_to_ahb|axi4_to_ahb>io_ahb_out_hsize", + "sources":[ + "~axi4_to_ahb|axi4_to_ahb>io_axi_ar_valid", + "~axi4_to_ahb|axi4_to_ahb>io_axi_ar_bits_size", + "~axi4_to_ahb|axi4_to_ahb>io_axi_b_ready", + "~axi4_to_ahb|axi4_to_ahb>io_axi_r_ready" + ] + }, + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~axi4_to_ahb|axi4_to_ahb>io_ahb_out_hwrite", + "sources":[ + "~axi4_to_ahb|axi4_to_ahb>io_axi_ar_valid", + "~axi4_to_ahb|axi4_to_ahb>io_axi_b_ready", + "~axi4_to_ahb|axi4_to_ahb>io_axi_r_ready" + ] + }, + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~axi4_to_ahb|axi4_to_ahb>io_ahb_out_htrans", + "sources":[ + "~axi4_to_ahb|axi4_to_ahb>io_axi_ar_valid", + "~axi4_to_ahb|axi4_to_ahb>io_axi_b_ready", + "~axi4_to_ahb|axi4_to_ahb>io_axi_r_ready" + ] + }, + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~axi4_to_ahb|axi4_to_ahb>io_axi_r_valid", + "sources":[ + "~axi4_to_ahb|axi4_to_ahb>io_axi_b_ready", + "~axi4_to_ahb|axi4_to_ahb>io_axi_r_ready", + "~axi4_to_ahb|axi4_to_ahb>io_axi_ar_valid" + ] + }, + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~axi4_to_ahb|axi4_to_ahb>io_axi_ar_ready", + "sources":[ + "~axi4_to_ahb|axi4_to_ahb>io_axi_ar_valid", + "~axi4_to_ahb|axi4_to_ahb>io_axi_b_ready", + "~axi4_to_ahb|axi4_to_ahb>io_axi_r_ready" + ] + }, + { + "class":"firrtl.EmitCircuitAnnotation", + "emitter":"firrtl.VerilogEmitter" + }, + { + "class":"firrtl.transforms.BlackBoxResourceAnno", + "target":"axi4_to_ahb.gated_latch", + "resourceId":"/vsrc/gated_latch.sv" + }, + { + "class":"firrtl.options.TargetDirAnnotation", + "directory":"." + }, + { + "class":"firrtl.options.OutputAnnotationFileAnnotation", + "file":"axi4_to_ahb" + }, + { + "class":"firrtl.transforms.BlackBoxTargetDirAnno", + "targetDir":"." + } +] \ No newline at end of file diff --git a/axi4_to_ahb.fir b/axi4_to_ahb.fir new file mode 100644 index 00000000..1e88bd14 --- /dev/null +++ b/axi4_to_ahb.fir @@ -0,0 +1,1271 @@ +;buildInfoPackage: chisel3, version: 3.3.1, scalaVersion: 2.12.11, sbtVersion: 1.3.10 +circuit axi4_to_ahb : + extmodule gated_latch : + output Q : Clock + input CK : Clock + input EN : UInt<1> + input SE : UInt<1> + + defname = gated_latch + + + module rvclkhdr : + input clock : Clock + input reset : Reset + output io : {l1clk : Clock, flip clk : Clock, flip en : UInt<1>, flip scan_mode : UInt<1>} + + inst clkhdr of gated_latch @[lib.scala 334:26] + clkhdr.SE is invalid + clkhdr.EN is invalid + clkhdr.CK is invalid + clkhdr.Q is invalid + io.l1clk <= clkhdr.Q @[lib.scala 335:14] + clkhdr.CK <= io.clk @[lib.scala 336:18] + clkhdr.EN <= io.en @[lib.scala 337:18] + clkhdr.SE <= io.scan_mode @[lib.scala 338:18] + + extmodule gated_latch_1 : + output Q : Clock + input CK : Clock + input EN : UInt<1> + input SE : UInt<1> + + defname = gated_latch + + + module rvclkhdr_1 : + input clock : Clock + input reset : Reset + output io : {l1clk : Clock, flip clk : Clock, flip en : UInt<1>, flip scan_mode : UInt<1>} + + inst clkhdr of gated_latch_1 @[lib.scala 334:26] + clkhdr.SE is invalid + clkhdr.EN is invalid + clkhdr.CK is invalid + clkhdr.Q is invalid + io.l1clk <= clkhdr.Q @[lib.scala 335:14] + clkhdr.CK <= io.clk @[lib.scala 336:18] + clkhdr.EN <= io.en @[lib.scala 337:18] + clkhdr.SE <= io.scan_mode @[lib.scala 338:18] + + extmodule gated_latch_2 : + output Q : Clock + input CK : Clock + input EN : UInt<1> + input SE : UInt<1> + + defname = gated_latch + + + module rvclkhdr_2 : + input clock : Clock + input reset : Reset + output io : {l1clk : Clock, flip clk : Clock, flip en : UInt<1>, flip scan_mode : UInt<1>} + + inst clkhdr of gated_latch_2 @[lib.scala 334:26] + clkhdr.SE is invalid + clkhdr.EN is invalid + clkhdr.CK is invalid + clkhdr.Q is invalid + io.l1clk <= clkhdr.Q @[lib.scala 335:14] + clkhdr.CK <= io.clk @[lib.scala 336:18] + clkhdr.EN <= io.en @[lib.scala 337:18] + clkhdr.SE <= io.scan_mode @[lib.scala 338:18] + + extmodule gated_latch_3 : + output Q : Clock + input CK : Clock + input EN : UInt<1> + input SE : UInt<1> + + defname = gated_latch + + + module rvclkhdr_3 : + input clock : Clock + input reset : Reset + output io : {l1clk : Clock, flip clk : Clock, flip en : UInt<1>, flip scan_mode : UInt<1>} + + inst clkhdr of gated_latch_3 @[lib.scala 334:26] + clkhdr.SE is invalid + clkhdr.EN is invalid + clkhdr.CK is invalid + clkhdr.Q is invalid + io.l1clk <= clkhdr.Q @[lib.scala 335:14] + clkhdr.CK <= io.clk @[lib.scala 336:18] + clkhdr.EN <= io.en @[lib.scala 337:18] + clkhdr.SE <= io.scan_mode @[lib.scala 338:18] + + module axi4_to_ahb : + input clock : Clock + input reset : AsyncReset + output io : {flip free_clk : Clock, flip scan_mode : UInt<1>, flip bus_clk_en : UInt<1>, flip clk_override : UInt<1>, flip dec_tlu_force_halt : UInt<1>, flip axi : {aw : {flip ready : UInt<1>, valid : UInt<1>, bits : {id : UInt<1>, addr : UInt<32>, region : UInt<4>, len : UInt<8>, size : UInt<3>, burst : UInt<2>, lock : UInt<1>, cache : UInt<4>, prot : UInt<3>, qos : UInt<4>}}, w : {flip ready : UInt<1>, valid : UInt<1>, bits : {data : UInt<64>, strb : UInt<8>, last : UInt<1>}}, flip b : {flip ready : UInt<1>, valid : UInt<1>, bits : {resp : UInt<2>, id : UInt<1>}}, ar : {flip ready : UInt<1>, valid : UInt<1>, bits : {id : UInt<1>, addr : UInt<32>, region : UInt<4>, len : UInt<8>, size : UInt<3>, burst : UInt<2>, lock : UInt<1>, cache : UInt<4>, prot : UInt<3>, qos : UInt<4>}}, flip r : {flip ready : UInt<1>, valid : UInt<1>, bits : {id : UInt<1>, data : UInt<64>, resp : UInt<2>, last : UInt<1>}}}, ahb : {in : {flip hrdata : UInt<64>, flip hready : UInt<1>, flip hresp : UInt<1>}, out : {haddr : UInt<32>, hburst : UInt<3>, hmastlock : UInt<1>, hprot : UInt<4>, hsize : UInt<3>, htrans : UInt<2>, hwrite : UInt<1>, hwdata : UInt<64>}}} + + wire dec_tlu_force_halt_bus_q : UInt<1> + dec_tlu_force_halt_bus_q <= UInt<1>("h00") + node dec_tlu_force_halt_bus = or(io.dec_tlu_force_halt, dec_tlu_force_halt_bus_q) @[axi4_to_ahb.scala 24:54] + node _T = eq(io.bus_clk_en, UInt<1>("h00")) @[axi4_to_ahb.scala 25:35] + node dec_tlu_force_halt_bus_ns = and(_T, dec_tlu_force_halt_bus) @[axi4_to_ahb.scala 25:50] + reg _T_1 : UInt<1>, io.free_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 26:62] + _T_1 <= dec_tlu_force_halt_bus_ns @[axi4_to_ahb.scala 26:62] + dec_tlu_force_halt_bus_q <= _T_1 @[axi4_to_ahb.scala 26:28] + wire buf_rst : UInt<1> + buf_rst <= UInt<1>("h00") + buf_rst <= dec_tlu_force_halt_bus @[axi4_to_ahb.scala 28:11] + io.ahb.out.htrans <= UInt<1>("h00") @[axi4_to_ahb.scala 29:21] + wire buf_state_en : UInt<1> + buf_state_en <= UInt<1>("h00") + wire bus_clk : Clock @[axi4_to_ahb.scala 31:21] + wire ahbm_data_clk : Clock @[axi4_to_ahb.scala 32:27] + wire buf_state : UInt<3> + buf_state <= UInt<3>("h00") + wire buf_nxtstate : UInt<3> + buf_nxtstate <= UInt<3>("h00") + node _T_2 = bits(buf_state_en, 0, 0) @[axi4_to_ahb.scala 36:62] + wire _T_3 : UInt @[lib.scala 389:21] + node _T_4 = eq(buf_rst, UInt<1>("h00")) @[lib.scala 391:75] + node _T_5 = and(buf_nxtstate, _T_4) @[lib.scala 391:53] + node _T_6 = or(_T_2, buf_rst) @[lib.scala 391:95] + node _T_7 = and(_T_6, io.bus_clk_en) @[lib.scala 391:102] + node _T_8 = bits(_T_7, 0, 0) @[lib.scala 8:44] + reg _T_9 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_8 : @[Reg.scala 28:19] + _T_9 <= _T_5 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + _T_3 <= _T_9 @[lib.scala 391:14] + buf_state <= _T_3 @[axi4_to_ahb.scala 36:13] + wire slave_valid : UInt<1> + slave_valid <= UInt<1>("h00") + wire slave_ready : UInt<1> + slave_ready <= UInt<1>("h00") + wire slave_tag : UInt<1> + slave_tag <= UInt<1>("h00") + wire slave_rdata : UInt<64> + slave_rdata <= UInt<64>("h00") + wire slave_opc : UInt<4> + slave_opc <= UInt<4>("h00") + wire wrbuf_en : UInt<1> + wrbuf_en <= UInt<1>("h00") + wire wrbuf_data_en : UInt<1> + wrbuf_data_en <= UInt<1>("h00") + wire wrbuf_cmd_sent : UInt<1> + wrbuf_cmd_sent <= UInt<1>("h00") + wire wrbuf_rst : UInt<1> + wrbuf_rst <= UInt<1>("h00") + wire wrbuf_vld : UInt<1> + wrbuf_vld <= UInt<1>("h00") + wire wrbuf_data_vld : UInt<1> + wrbuf_data_vld <= UInt<1>("h00") + wire wrbuf_tag : UInt<1> + wrbuf_tag <= UInt<1>("h00") + wire wrbuf_size : UInt<3> + wrbuf_size <= UInt<3>("h00") + wire wrbuf_addr : UInt<32> + wrbuf_addr <= UInt<32>("h00") + wire wrbuf_data : UInt<64> + wrbuf_data <= UInt<64>("h00") + wire wrbuf_byteen : UInt<8> + wrbuf_byteen <= UInt<8>("h00") + wire master_valid : UInt<1> + master_valid <= UInt<1>("h00") + wire master_ready : UInt<1> + master_ready <= UInt<1>("h00") + wire master_tag : UInt<1> + master_tag <= UInt<1>("h00") + wire master_addr : UInt<32> + master_addr <= UInt<32>("h00") + wire master_wdata : UInt<64> + master_wdata <= UInt<64>("h00") + wire master_size : UInt<3> + master_size <= UInt<3>("h00") + wire master_opc : UInt<3> + master_opc <= UInt<3>("h00") + wire master_byteen : UInt<8> + master_byteen <= UInt<8>("h00") + wire buf_addr : UInt<32> + buf_addr <= UInt<32>("h00") + wire buf_size : UInt<2> + buf_size <= UInt<2>("h00") + wire buf_write : UInt<1> + buf_write <= UInt<1>("h00") + wire buf_byteen : UInt<8> + buf_byteen <= UInt<8>("h00") + wire buf_aligned : UInt<1> + buf_aligned <= UInt<1>("h00") + wire buf_data : UInt<64> + buf_data <= UInt<64>("h00") + wire buf_tag : UInt<1> + buf_tag <= UInt<1>("h00") + wire buf_tag_in : UInt<1> + buf_tag_in <= UInt<1>("h00") + wire buf_addr_in : UInt<32> + buf_addr_in <= UInt<32>("h00") + wire buf_byteen_in : UInt<8> + buf_byteen_in <= UInt<8>("h00") + wire buf_data_in : UInt<64> + buf_data_in <= UInt<64>("h00") + wire buf_write_in : UInt<1> + buf_write_in <= UInt<1>("h00") + wire buf_aligned_in : UInt<1> + buf_aligned_in <= UInt<1>("h00") + wire buf_size_in : UInt<3> + buf_size_in <= UInt<3>("h00") + wire buf_wr_en : UInt<1> + buf_wr_en <= UInt<1>("h00") + wire buf_data_wr_en : UInt<1> + buf_data_wr_en <= UInt<1>("h00") + wire slvbuf_error_en : UInt<1> + slvbuf_error_en <= UInt<1>("h00") + wire wr_cmd_vld : UInt<1> + wr_cmd_vld <= UInt<1>("h00") + wire cmd_done_rst : UInt<1> + cmd_done_rst <= UInt<1>("h00") + wire cmd_done : UInt<1> + cmd_done <= UInt<1>("h00") + wire cmd_doneQ : UInt<1> + cmd_doneQ <= UInt<1>("h00") + wire trxn_done : UInt<1> + trxn_done <= UInt<1>("h00") + wire buf_cmd_byte_ptr : UInt<3> + buf_cmd_byte_ptr <= UInt<3>("h00") + wire buf_cmd_byte_ptrQ : UInt<3> + buf_cmd_byte_ptrQ <= UInt<3>("h00") + wire buf_cmd_nxtbyte_ptr : UInt<3> + buf_cmd_nxtbyte_ptr <= UInt<3>("h00") + wire buf_cmd_byte_ptr_en : UInt<1> + buf_cmd_byte_ptr_en <= UInt<1>("h00") + wire found : UInt<1> + found <= UInt<1>("h00") + wire slave_valid_pre : UInt<1> + slave_valid_pre <= UInt<1>("h00") + wire ahb_hready_q : UInt<1> + ahb_hready_q <= UInt<1>("h00") + wire ahb_hresp_q : UInt<1> + ahb_hresp_q <= UInt<1>("h00") + wire ahb_htrans_q : UInt<2> + ahb_htrans_q <= UInt<2>("h00") + wire ahb_hwrite_q : UInt<1> + ahb_hwrite_q <= UInt<1>("h00") + wire ahb_hrdata_q : UInt<64> + ahb_hrdata_q <= UInt<64>("h00") + wire slvbuf_write : UInt<1> + slvbuf_write <= UInt<1>("h00") + wire slvbuf_error : UInt<1> + slvbuf_error <= UInt<1>("h00") + wire slvbuf_tag : UInt<1> + slvbuf_tag <= UInt<1>("h00") + wire slvbuf_error_in : UInt<1> + slvbuf_error_in <= UInt<1>("h00") + wire slvbuf_wr_en : UInt<1> + slvbuf_wr_en <= UInt<1>("h00") + wire bypass_en : UInt<1> + bypass_en <= UInt<1>("h00") + wire rd_bypass_idle : UInt<1> + rd_bypass_idle <= UInt<1>("h00") + wire last_addr_en : UInt<1> + last_addr_en <= UInt<1>("h00") + wire last_bus_addr : UInt<32> + last_bus_addr <= UInt<32>("h00") + wire buf_clken : UInt<1> + buf_clken <= UInt<1>("h00") + wire ahbm_data_clken : UInt<1> + ahbm_data_clken <= UInt<1>("h00") + wire buf_clk : Clock @[axi4_to_ahb.scala 118:21] + node _T_10 = and(wrbuf_vld, wrbuf_data_vld) @[axi4_to_ahb.scala 140:27] + wr_cmd_vld <= _T_10 @[axi4_to_ahb.scala 140:14] + node _T_11 = or(wr_cmd_vld, io.axi.ar.valid) @[axi4_to_ahb.scala 141:30] + master_valid <= _T_11 @[axi4_to_ahb.scala 141:16] + node _T_12 = bits(wr_cmd_vld, 0, 0) @[axi4_to_ahb.scala 142:38] + node _T_13 = bits(wrbuf_tag, 0, 0) @[axi4_to_ahb.scala 142:51] + node _T_14 = bits(io.axi.ar.bits.id, 0, 0) @[axi4_to_ahb.scala 142:82] + node _T_15 = mux(_T_12, _T_13, _T_14) @[axi4_to_ahb.scala 142:20] + master_tag <= _T_15 @[axi4_to_ahb.scala 142:14] + node _T_16 = bits(wr_cmd_vld, 0, 0) @[axi4_to_ahb.scala 143:38] + node _T_17 = mux(_T_16, UInt<2>("h03"), UInt<1>("h00")) @[axi4_to_ahb.scala 143:20] + master_opc <= _T_17 @[axi4_to_ahb.scala 143:14] + node _T_18 = bits(wr_cmd_vld, 0, 0) @[axi4_to_ahb.scala 144:39] + node _T_19 = bits(wrbuf_addr, 31, 0) @[axi4_to_ahb.scala 144:53] + node _T_20 = bits(io.axi.ar.bits.addr, 31, 0) @[axi4_to_ahb.scala 144:81] + node _T_21 = mux(_T_18, _T_19, _T_20) @[axi4_to_ahb.scala 144:21] + master_addr <= _T_21 @[axi4_to_ahb.scala 144:15] + node _T_22 = bits(wr_cmd_vld, 0, 0) @[axi4_to_ahb.scala 145:39] + node _T_23 = bits(wrbuf_size, 2, 0) @[axi4_to_ahb.scala 145:53] + node _T_24 = bits(io.axi.ar.bits.size, 2, 0) @[axi4_to_ahb.scala 145:80] + node _T_25 = mux(_T_22, _T_23, _T_24) @[axi4_to_ahb.scala 145:21] + master_size <= _T_25 @[axi4_to_ahb.scala 145:15] + node _T_26 = bits(wrbuf_byteen, 7, 0) @[axi4_to_ahb.scala 146:32] + master_byteen <= _T_26 @[axi4_to_ahb.scala 146:17] + node _T_27 = bits(wrbuf_data, 63, 0) @[axi4_to_ahb.scala 147:29] + master_wdata <= _T_27 @[axi4_to_ahb.scala 147:16] + node _T_28 = and(slave_valid, slave_ready) @[axi4_to_ahb.scala 150:33] + node _T_29 = bits(slave_opc, 3, 3) @[axi4_to_ahb.scala 150:58] + node _T_30 = and(_T_28, _T_29) @[axi4_to_ahb.scala 150:47] + io.axi.b.valid <= _T_30 @[axi4_to_ahb.scala 150:18] + node _T_31 = bits(slave_opc, 0, 0) @[axi4_to_ahb.scala 151:38] + node _T_32 = bits(slave_opc, 1, 1) @[axi4_to_ahb.scala 151:65] + node _T_33 = mux(_T_32, UInt<2>("h03"), UInt<1>("h00")) @[axi4_to_ahb.scala 151:55] + node _T_34 = mux(_T_31, UInt<2>("h02"), _T_33) @[axi4_to_ahb.scala 151:28] + io.axi.b.bits.resp <= _T_34 @[axi4_to_ahb.scala 151:22] + node _T_35 = bits(slave_tag, 0, 0) @[axi4_to_ahb.scala 152:32] + io.axi.b.bits.id <= _T_35 @[axi4_to_ahb.scala 152:20] + node _T_36 = and(slave_valid, slave_ready) @[axi4_to_ahb.scala 154:33] + node _T_37 = bits(slave_opc, 3, 2) @[axi4_to_ahb.scala 154:59] + node _T_38 = eq(_T_37, UInt<1>("h00")) @[axi4_to_ahb.scala 154:66] + node _T_39 = and(_T_36, _T_38) @[axi4_to_ahb.scala 154:47] + io.axi.r.valid <= _T_39 @[axi4_to_ahb.scala 154:18] + node _T_40 = bits(slave_opc, 0, 0) @[axi4_to_ahb.scala 155:38] + node _T_41 = bits(slave_opc, 1, 1) @[axi4_to_ahb.scala 155:65] + node _T_42 = mux(_T_41, UInt<2>("h03"), UInt<1>("h00")) @[axi4_to_ahb.scala 155:55] + node _T_43 = mux(_T_40, UInt<2>("h02"), _T_42) @[axi4_to_ahb.scala 155:28] + io.axi.r.bits.resp <= _T_43 @[axi4_to_ahb.scala 155:22] + node _T_44 = bits(slave_tag, 0, 0) @[axi4_to_ahb.scala 156:32] + io.axi.r.bits.id <= _T_44 @[axi4_to_ahb.scala 156:20] + node _T_45 = bits(slave_rdata, 63, 0) @[axi4_to_ahb.scala 157:36] + io.axi.r.bits.data <= _T_45 @[axi4_to_ahb.scala 157:22] + node _T_46 = and(io.axi.b.ready, io.axi.r.ready) @[axi4_to_ahb.scala 158:33] + slave_ready <= _T_46 @[axi4_to_ahb.scala 158:15] + node _T_47 = eq(UInt<3>("h00"), buf_state) @[Conditional.scala 37:30] + when _T_47 : @[Conditional.scala 40:58] + master_ready <= UInt<1>("h01") @[axi4_to_ahb.scala 162:20] + node _T_48 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 163:34] + node _T_49 = eq(_T_48, UInt<1>("h01")) @[axi4_to_ahb.scala 163:41] + buf_write_in <= _T_49 @[axi4_to_ahb.scala 163:20] + node _T_50 = bits(buf_write_in, 0, 0) @[axi4_to_ahb.scala 164:46] + node _T_51 = mux(_T_50, UInt<3>("h02"), UInt<3>("h01")) @[axi4_to_ahb.scala 164:26] + buf_nxtstate <= _T_51 @[axi4_to_ahb.scala 164:20] + node _T_52 = and(master_valid, UInt<1>("h01")) @[axi4_to_ahb.scala 165:36] + buf_state_en <= _T_52 @[axi4_to_ahb.scala 165:20] + buf_wr_en <= buf_state_en @[axi4_to_ahb.scala 166:17] + node _T_53 = eq(buf_nxtstate, UInt<3>("h02")) @[axi4_to_ahb.scala 167:54] + node _T_54 = and(buf_state_en, _T_53) @[axi4_to_ahb.scala 167:38] + buf_data_wr_en <= _T_54 @[axi4_to_ahb.scala 167:22] + buf_cmd_byte_ptr_en <= buf_state_en @[axi4_to_ahb.scala 168:27] + node _T_55 = bits(buf_write_in, 0, 0) @[axi4_to_ahb.scala 170:50] + node _T_56 = bits(buf_byteen_in, 7, 0) @[axi4_to_ahb.scala 170:94] + node _T_57 = add(UInt<3>("h00"), UInt<1>("h01")) @[axi4_to_ahb.scala 136:52] + node _T_58 = tail(_T_57, 1) @[axi4_to_ahb.scala 136:52] + node _T_59 = mux(UInt<1>("h00"), _T_58, UInt<3>("h00")) @[axi4_to_ahb.scala 136:24] + node _T_60 = bits(_T_56, 0, 0) @[axi4_to_ahb.scala 137:44] + node _T_61 = geq(UInt<1>("h00"), _T_59) @[axi4_to_ahb.scala 137:62] + node _T_62 = and(_T_60, _T_61) @[axi4_to_ahb.scala 137:48] + node _T_63 = bits(_T_56, 1, 1) @[axi4_to_ahb.scala 137:44] + node _T_64 = geq(UInt<1>("h01"), _T_59) @[axi4_to_ahb.scala 137:62] + node _T_65 = and(_T_63, _T_64) @[axi4_to_ahb.scala 137:48] + node _T_66 = bits(_T_56, 2, 2) @[axi4_to_ahb.scala 137:44] + node _T_67 = geq(UInt<2>("h02"), _T_59) @[axi4_to_ahb.scala 137:62] + node _T_68 = and(_T_66, _T_67) @[axi4_to_ahb.scala 137:48] + node _T_69 = bits(_T_56, 3, 3) @[axi4_to_ahb.scala 137:44] + node _T_70 = geq(UInt<2>("h03"), _T_59) @[axi4_to_ahb.scala 137:62] + node _T_71 = and(_T_69, _T_70) @[axi4_to_ahb.scala 137:48] + node _T_72 = bits(_T_56, 4, 4) @[axi4_to_ahb.scala 137:44] + node _T_73 = geq(UInt<3>("h04"), _T_59) @[axi4_to_ahb.scala 137:62] + node _T_74 = and(_T_72, _T_73) @[axi4_to_ahb.scala 137:48] + node _T_75 = bits(_T_56, 5, 5) @[axi4_to_ahb.scala 137:44] + node _T_76 = geq(UInt<3>("h05"), _T_59) @[axi4_to_ahb.scala 137:62] + node _T_77 = and(_T_75, _T_76) @[axi4_to_ahb.scala 137:48] + node _T_78 = bits(_T_56, 6, 6) @[axi4_to_ahb.scala 137:44] + node _T_79 = geq(UInt<3>("h06"), _T_59) @[axi4_to_ahb.scala 137:62] + node _T_80 = and(_T_78, _T_79) @[axi4_to_ahb.scala 137:48] + node _T_81 = bits(_T_56, 7, 7) @[axi4_to_ahb.scala 137:44] + node _T_82 = geq(UInt<3>("h07"), _T_59) @[axi4_to_ahb.scala 137:62] + node _T_83 = and(_T_81, _T_82) @[axi4_to_ahb.scala 137:48] + node _T_84 = mux(_T_83, UInt<3>("h07"), UInt<3>("h07")) @[Mux.scala 98:16] + node _T_85 = mux(_T_80, UInt<3>("h06"), _T_84) @[Mux.scala 98:16] + node _T_86 = mux(_T_77, UInt<3>("h05"), _T_85) @[Mux.scala 98:16] + node _T_87 = mux(_T_74, UInt<3>("h04"), _T_86) @[Mux.scala 98:16] + node _T_88 = mux(_T_71, UInt<2>("h03"), _T_87) @[Mux.scala 98:16] + node _T_89 = mux(_T_68, UInt<2>("h02"), _T_88) @[Mux.scala 98:16] + node _T_90 = mux(_T_65, UInt<1>("h01"), _T_89) @[Mux.scala 98:16] + node _T_91 = mux(_T_62, UInt<1>("h00"), _T_90) @[Mux.scala 98:16] + node _T_92 = bits(master_addr, 2, 0) @[axi4_to_ahb.scala 170:124] + node _T_93 = mux(_T_55, _T_91, _T_92) @[axi4_to_ahb.scala 170:30] + buf_cmd_byte_ptr <= _T_93 @[axi4_to_ahb.scala 170:24] + bypass_en <= buf_state_en @[axi4_to_ahb.scala 171:17] + node _T_94 = eq(buf_nxtstate, UInt<3>("h01")) @[axi4_to_ahb.scala 172:51] + node _T_95 = and(bypass_en, _T_94) @[axi4_to_ahb.scala 172:35] + rd_bypass_idle <= _T_95 @[axi4_to_ahb.scala 172:22] + node _T_96 = bits(bypass_en, 0, 0) @[Bitwise.scala 72:15] + node _T_97 = mux(_T_96, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_98 = and(_T_97, UInt<2>("h02")) @[axi4_to_ahb.scala 173:49] + io.ahb.out.htrans <= _T_98 @[axi4_to_ahb.scala 173:25] + skip @[Conditional.scala 40:58] + else : @[Conditional.scala 39:67] + node _T_99 = eq(UInt<3>("h01"), buf_state) @[Conditional.scala 37:30] + when _T_99 : @[Conditional.scala 39:67] + node _T_100 = bits(master_opc, 2, 0) @[axi4_to_ahb.scala 177:54] + node _T_101 = eq(_T_100, UInt<1>("h00")) @[axi4_to_ahb.scala 177:61] + node _T_102 = and(master_valid, _T_101) @[axi4_to_ahb.scala 177:41] + node _T_103 = bits(_T_102, 0, 0) @[axi4_to_ahb.scala 177:82] + node _T_104 = mux(_T_103, UInt<3>("h06"), UInt<3>("h03")) @[axi4_to_ahb.scala 177:26] + buf_nxtstate <= _T_104 @[axi4_to_ahb.scala 177:20] + node _T_105 = bits(ahb_htrans_q, 1, 0) @[axi4_to_ahb.scala 178:51] + node _T_106 = neq(_T_105, UInt<1>("h00")) @[axi4_to_ahb.scala 178:58] + node _T_107 = and(ahb_hready_q, _T_106) @[axi4_to_ahb.scala 178:36] + node _T_108 = eq(ahb_hwrite_q, UInt<1>("h00")) @[axi4_to_ahb.scala 178:72] + node _T_109 = and(_T_107, _T_108) @[axi4_to_ahb.scala 178:70] + buf_state_en <= _T_109 @[axi4_to_ahb.scala 178:20] + node _T_110 = eq(master_valid, UInt<1>("h00")) @[axi4_to_ahb.scala 179:34] + node _T_111 = and(buf_state_en, _T_110) @[axi4_to_ahb.scala 179:32] + cmd_done <= _T_111 @[axi4_to_ahb.scala 179:16] + slvbuf_wr_en <= buf_state_en @[axi4_to_ahb.scala 180:20] + node _T_112 = bits(ahb_htrans_q, 1, 0) @[axi4_to_ahb.scala 181:52] + node _T_113 = neq(_T_112, UInt<1>("h00")) @[axi4_to_ahb.scala 181:59] + node _T_114 = and(ahb_hready_q, _T_113) @[axi4_to_ahb.scala 181:37] + node _T_115 = eq(ahb_hwrite_q, UInt<1>("h00")) @[axi4_to_ahb.scala 181:73] + node _T_116 = and(_T_114, _T_115) @[axi4_to_ahb.scala 181:71] + node _T_117 = bits(master_opc, 2, 0) @[axi4_to_ahb.scala 181:122] + node _T_118 = eq(_T_117, UInt<1>("h00")) @[axi4_to_ahb.scala 181:129] + node _T_119 = and(master_valid, _T_118) @[axi4_to_ahb.scala 181:109] + node _T_120 = bits(_T_119, 0, 0) @[axi4_to_ahb.scala 181:150] + node _T_121 = mux(_T_120, UInt<3>("h06"), UInt<3>("h03")) @[axi4_to_ahb.scala 181:94] + node _T_122 = eq(_T_121, UInt<3>("h06")) @[axi4_to_ahb.scala 181:174] + node _T_123 = and(_T_116, _T_122) @[axi4_to_ahb.scala 181:88] + master_ready <= _T_123 @[axi4_to_ahb.scala 181:20] + buf_wr_en <= master_ready @[axi4_to_ahb.scala 182:17] + node _T_124 = and(master_ready, master_valid) @[axi4_to_ahb.scala 183:33] + bypass_en <= _T_124 @[axi4_to_ahb.scala 183:17] + node _T_125 = bits(bypass_en, 0, 0) @[axi4_to_ahb.scala 184:47] + node _T_126 = bits(master_addr, 2, 0) @[axi4_to_ahb.scala 184:62] + node _T_127 = bits(buf_addr, 2, 0) @[axi4_to_ahb.scala 184:78] + node _T_128 = mux(_T_125, _T_126, _T_127) @[axi4_to_ahb.scala 184:30] + buf_cmd_byte_ptr <= _T_128 @[axi4_to_ahb.scala 184:24] + node _T_129 = eq(buf_state_en, UInt<1>("h00")) @[axi4_to_ahb.scala 185:48] + node _T_130 = or(_T_129, bypass_en) @[axi4_to_ahb.scala 185:62] + node _T_131 = bits(_T_130, 0, 0) @[Bitwise.scala 72:15] + node _T_132 = mux(_T_131, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_133 = and(UInt<2>("h02"), _T_132) @[axi4_to_ahb.scala 185:36] + io.ahb.out.htrans <= _T_133 @[axi4_to_ahb.scala 185:25] + skip @[Conditional.scala 39:67] + else : @[Conditional.scala 39:67] + node _T_134 = eq(UInt<3>("h06"), buf_state) @[Conditional.scala 37:30] + when _T_134 : @[Conditional.scala 39:67] + node _T_135 = eq(ahb_hresp_q, UInt<1>("h00")) @[axi4_to_ahb.scala 189:39] + node _T_136 = and(ahb_hready_q, _T_135) @[axi4_to_ahb.scala 189:37] + node _T_137 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 189:82] + node _T_138 = eq(_T_137, UInt<1>("h01")) @[axi4_to_ahb.scala 189:89] + node _T_139 = and(master_valid, _T_138) @[axi4_to_ahb.scala 189:70] + node _T_140 = not(_T_139) @[axi4_to_ahb.scala 189:55] + node _T_141 = and(_T_136, _T_140) @[axi4_to_ahb.scala 189:53] + master_ready <= _T_141 @[axi4_to_ahb.scala 189:20] + node _T_142 = and(master_valid, master_ready) @[axi4_to_ahb.scala 190:34] + node _T_143 = bits(master_opc, 2, 0) @[axi4_to_ahb.scala 190:62] + node _T_144 = eq(_T_143, UInt<1>("h00")) @[axi4_to_ahb.scala 190:69] + node _T_145 = and(_T_142, _T_144) @[axi4_to_ahb.scala 190:49] + buf_wr_en <= _T_145 @[axi4_to_ahb.scala 190:17] + node _T_146 = bits(ahb_hresp_q, 0, 0) @[axi4_to_ahb.scala 191:45] + node _T_147 = and(master_valid, master_ready) @[axi4_to_ahb.scala 191:82] + node _T_148 = bits(master_opc, 2, 0) @[axi4_to_ahb.scala 191:110] + node _T_149 = eq(_T_148, UInt<1>("h00")) @[axi4_to_ahb.scala 191:117] + node _T_150 = and(_T_147, _T_149) @[axi4_to_ahb.scala 191:97] + node _T_151 = bits(_T_150, 0, 0) @[axi4_to_ahb.scala 191:138] + node _T_152 = mux(_T_151, UInt<3>("h06"), UInt<3>("h03")) @[axi4_to_ahb.scala 191:67] + node _T_153 = mux(_T_146, UInt<3>("h07"), _T_152) @[axi4_to_ahb.scala 191:26] + buf_nxtstate <= _T_153 @[axi4_to_ahb.scala 191:20] + node _T_154 = or(ahb_hready_q, ahb_hresp_q) @[axi4_to_ahb.scala 192:37] + buf_state_en <= _T_154 @[axi4_to_ahb.scala 192:20] + buf_data_wr_en <= buf_state_en @[axi4_to_ahb.scala 193:22] + slvbuf_error_in <= ahb_hresp_q @[axi4_to_ahb.scala 194:23] + slvbuf_error_en <= buf_state_en @[axi4_to_ahb.scala 195:23] + node _T_155 = eq(ahb_hresp_q, UInt<1>("h00")) @[axi4_to_ahb.scala 196:41] + node _T_156 = and(buf_state_en, _T_155) @[axi4_to_ahb.scala 196:39] + slave_valid_pre <= _T_156 @[axi4_to_ahb.scala 196:23] + node _T_157 = eq(master_valid, UInt<1>("h00")) @[axi4_to_ahb.scala 197:34] + node _T_158 = and(buf_state_en, _T_157) @[axi4_to_ahb.scala 197:32] + cmd_done <= _T_158 @[axi4_to_ahb.scala 197:16] + node _T_159 = and(master_ready, master_valid) @[axi4_to_ahb.scala 198:33] + node _T_160 = eq(buf_nxtstate, UInt<3>("h06")) @[axi4_to_ahb.scala 198:64] + node _T_161 = and(_T_159, _T_160) @[axi4_to_ahb.scala 198:48] + node _T_162 = and(_T_161, buf_state_en) @[axi4_to_ahb.scala 198:79] + bypass_en <= _T_162 @[axi4_to_ahb.scala 198:17] + node _T_163 = bits(bypass_en, 0, 0) @[axi4_to_ahb.scala 199:47] + node _T_164 = bits(master_addr, 2, 0) @[axi4_to_ahb.scala 199:62] + node _T_165 = bits(buf_addr, 2, 0) @[axi4_to_ahb.scala 199:78] + node _T_166 = mux(_T_163, _T_164, _T_165) @[axi4_to_ahb.scala 199:30] + buf_cmd_byte_ptr <= _T_166 @[axi4_to_ahb.scala 199:24] + node _T_167 = neq(buf_nxtstate, UInt<3>("h06")) @[axi4_to_ahb.scala 200:63] + node _T_168 = and(_T_167, buf_state_en) @[axi4_to_ahb.scala 200:78] + node _T_169 = eq(_T_168, UInt<1>("h00")) @[axi4_to_ahb.scala 200:47] + node _T_170 = bits(_T_169, 0, 0) @[Bitwise.scala 72:15] + node _T_171 = mux(_T_170, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_172 = and(UInt<2>("h02"), _T_171) @[axi4_to_ahb.scala 200:36] + io.ahb.out.htrans <= _T_172 @[axi4_to_ahb.scala 200:25] + slvbuf_wr_en <= buf_wr_en @[axi4_to_ahb.scala 201:20] + skip @[Conditional.scala 39:67] + else : @[Conditional.scala 39:67] + node _T_173 = eq(UInt<3>("h07"), buf_state) @[Conditional.scala 37:30] + when _T_173 : @[Conditional.scala 39:67] + buf_nxtstate <= UInt<3>("h03") @[axi4_to_ahb.scala 205:20] + node _T_174 = bits(ahb_htrans_q, 1, 0) @[axi4_to_ahb.scala 206:51] + node _T_175 = neq(_T_174, UInt<1>("h00")) @[axi4_to_ahb.scala 206:58] + node _T_176 = and(ahb_hready_q, _T_175) @[axi4_to_ahb.scala 206:36] + node _T_177 = eq(ahb_hwrite_q, UInt<1>("h00")) @[axi4_to_ahb.scala 206:72] + node _T_178 = and(_T_176, _T_177) @[axi4_to_ahb.scala 206:70] + buf_state_en <= _T_178 @[axi4_to_ahb.scala 206:20] + slave_valid_pre <= buf_state_en @[axi4_to_ahb.scala 207:23] + slvbuf_wr_en <= buf_state_en @[axi4_to_ahb.scala 208:20] + node _T_179 = bits(buf_addr, 2, 0) @[axi4_to_ahb.scala 209:35] + buf_cmd_byte_ptr <= _T_179 @[axi4_to_ahb.scala 209:24] + node _T_180 = eq(buf_state_en, UInt<1>("h00")) @[axi4_to_ahb.scala 210:51] + node _T_181 = bits(_T_180, 0, 0) @[Bitwise.scala 72:15] + node _T_182 = mux(_T_181, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_183 = and(UInt<2>("h02"), _T_182) @[axi4_to_ahb.scala 210:41] + io.ahb.out.htrans <= _T_183 @[axi4_to_ahb.scala 210:25] + skip @[Conditional.scala 39:67] + else : @[Conditional.scala 39:67] + node _T_184 = eq(UInt<3>("h03"), buf_state) @[Conditional.scala 37:30] + when _T_184 : @[Conditional.scala 39:67] + buf_nxtstate <= UInt<3>("h05") @[axi4_to_ahb.scala 214:20] + node _T_185 = or(ahb_hready_q, ahb_hresp_q) @[axi4_to_ahb.scala 215:37] + buf_state_en <= _T_185 @[axi4_to_ahb.scala 215:20] + buf_data_wr_en <= buf_state_en @[axi4_to_ahb.scala 216:22] + slvbuf_error_in <= ahb_hresp_q @[axi4_to_ahb.scala 217:23] + slvbuf_error_en <= buf_state_en @[axi4_to_ahb.scala 218:23] + slvbuf_wr_en <= buf_state_en @[axi4_to_ahb.scala 219:20] + skip @[Conditional.scala 39:67] + else : @[Conditional.scala 39:67] + node _T_186 = eq(UInt<3>("h02"), buf_state) @[Conditional.scala 37:30] + when _T_186 : @[Conditional.scala 39:67] + buf_nxtstate <= UInt<3>("h04") @[axi4_to_ahb.scala 223:20] + node _T_187 = and(ahb_hready_q, ahb_hwrite_q) @[axi4_to_ahb.scala 224:33] + node _T_188 = bits(ahb_htrans_q, 1, 0) @[axi4_to_ahb.scala 224:63] + node _T_189 = neq(_T_188, UInt<1>("h00")) @[axi4_to_ahb.scala 224:70] + node _T_190 = and(_T_187, _T_189) @[axi4_to_ahb.scala 224:48] + trxn_done <= _T_190 @[axi4_to_ahb.scala 224:17] + buf_state_en <= trxn_done @[axi4_to_ahb.scala 225:20] + buf_cmd_byte_ptr_en <= buf_state_en @[axi4_to_ahb.scala 226:27] + slvbuf_wr_en <= buf_state_en @[axi4_to_ahb.scala 227:20] + node _T_191 = bits(trxn_done, 0, 0) @[axi4_to_ahb.scala 228:47] + node _T_192 = bits(buf_cmd_byte_ptrQ, 2, 0) @[axi4_to_ahb.scala 228:85] + node _T_193 = bits(buf_byteen, 7, 0) @[axi4_to_ahb.scala 228:103] + node _T_194 = add(_T_192, UInt<1>("h01")) @[axi4_to_ahb.scala 136:52] + node _T_195 = tail(_T_194, 1) @[axi4_to_ahb.scala 136:52] + node _T_196 = mux(UInt<1>("h01"), _T_195, _T_192) @[axi4_to_ahb.scala 136:24] + node _T_197 = bits(_T_193, 0, 0) @[axi4_to_ahb.scala 137:44] + node _T_198 = geq(UInt<1>("h00"), _T_196) @[axi4_to_ahb.scala 137:62] + node _T_199 = and(_T_197, _T_198) @[axi4_to_ahb.scala 137:48] + node _T_200 = bits(_T_193, 1, 1) @[axi4_to_ahb.scala 137:44] + node _T_201 = geq(UInt<1>("h01"), _T_196) @[axi4_to_ahb.scala 137:62] + node _T_202 = and(_T_200, _T_201) @[axi4_to_ahb.scala 137:48] + node _T_203 = bits(_T_193, 2, 2) @[axi4_to_ahb.scala 137:44] + node _T_204 = geq(UInt<2>("h02"), _T_196) @[axi4_to_ahb.scala 137:62] + node _T_205 = and(_T_203, _T_204) @[axi4_to_ahb.scala 137:48] + node _T_206 = bits(_T_193, 3, 3) @[axi4_to_ahb.scala 137:44] + node _T_207 = geq(UInt<2>("h03"), _T_196) @[axi4_to_ahb.scala 137:62] + node _T_208 = and(_T_206, _T_207) @[axi4_to_ahb.scala 137:48] + node _T_209 = bits(_T_193, 4, 4) @[axi4_to_ahb.scala 137:44] + node _T_210 = geq(UInt<3>("h04"), _T_196) @[axi4_to_ahb.scala 137:62] + node _T_211 = and(_T_209, _T_210) @[axi4_to_ahb.scala 137:48] + node _T_212 = bits(_T_193, 5, 5) @[axi4_to_ahb.scala 137:44] + node _T_213 = geq(UInt<3>("h05"), _T_196) @[axi4_to_ahb.scala 137:62] + node _T_214 = and(_T_212, _T_213) @[axi4_to_ahb.scala 137:48] + node _T_215 = bits(_T_193, 6, 6) @[axi4_to_ahb.scala 137:44] + node _T_216 = geq(UInt<3>("h06"), _T_196) @[axi4_to_ahb.scala 137:62] + node _T_217 = and(_T_215, _T_216) @[axi4_to_ahb.scala 137:48] + node _T_218 = bits(_T_193, 7, 7) @[axi4_to_ahb.scala 137:44] + node _T_219 = geq(UInt<3>("h07"), _T_196) @[axi4_to_ahb.scala 137:62] + node _T_220 = and(_T_218, _T_219) @[axi4_to_ahb.scala 137:48] + node _T_221 = mux(_T_220, UInt<3>("h07"), UInt<3>("h07")) @[Mux.scala 98:16] + node _T_222 = mux(_T_217, UInt<3>("h06"), _T_221) @[Mux.scala 98:16] + node _T_223 = mux(_T_214, UInt<3>("h05"), _T_222) @[Mux.scala 98:16] + node _T_224 = mux(_T_211, UInt<3>("h04"), _T_223) @[Mux.scala 98:16] + node _T_225 = mux(_T_208, UInt<2>("h03"), _T_224) @[Mux.scala 98:16] + node _T_226 = mux(_T_205, UInt<2>("h02"), _T_225) @[Mux.scala 98:16] + node _T_227 = mux(_T_202, UInt<1>("h01"), _T_226) @[Mux.scala 98:16] + node _T_228 = mux(_T_199, UInt<1>("h00"), _T_227) @[Mux.scala 98:16] + node _T_229 = mux(_T_191, _T_228, buf_cmd_byte_ptrQ) @[axi4_to_ahb.scala 228:30] + buf_cmd_byte_ptr <= _T_229 @[axi4_to_ahb.scala 228:24] + node _T_230 = eq(buf_cmd_byte_ptrQ, UInt<3>("h07")) @[axi4_to_ahb.scala 229:65] + node _T_231 = or(buf_aligned, _T_230) @[axi4_to_ahb.scala 229:44] + node _T_232 = bits(buf_cmd_byte_ptrQ, 2, 0) @[axi4_to_ahb.scala 229:127] + node _T_233 = bits(buf_byteen, 7, 0) @[axi4_to_ahb.scala 229:145] + node _T_234 = add(_T_232, UInt<1>("h01")) @[axi4_to_ahb.scala 136:52] + node _T_235 = tail(_T_234, 1) @[axi4_to_ahb.scala 136:52] + node _T_236 = mux(UInt<1>("h01"), _T_235, _T_232) @[axi4_to_ahb.scala 136:24] + node _T_237 = bits(_T_233, 0, 0) @[axi4_to_ahb.scala 137:44] + node _T_238 = geq(UInt<1>("h00"), _T_236) @[axi4_to_ahb.scala 137:62] + node _T_239 = and(_T_237, _T_238) @[axi4_to_ahb.scala 137:48] + node _T_240 = bits(_T_233, 1, 1) @[axi4_to_ahb.scala 137:44] + node _T_241 = geq(UInt<1>("h01"), _T_236) @[axi4_to_ahb.scala 137:62] + node _T_242 = and(_T_240, _T_241) @[axi4_to_ahb.scala 137:48] + node _T_243 = bits(_T_233, 2, 2) @[axi4_to_ahb.scala 137:44] + node _T_244 = geq(UInt<2>("h02"), _T_236) @[axi4_to_ahb.scala 137:62] + node _T_245 = and(_T_243, _T_244) @[axi4_to_ahb.scala 137:48] + node _T_246 = bits(_T_233, 3, 3) @[axi4_to_ahb.scala 137:44] + node _T_247 = geq(UInt<2>("h03"), _T_236) @[axi4_to_ahb.scala 137:62] + node _T_248 = and(_T_246, _T_247) @[axi4_to_ahb.scala 137:48] + node _T_249 = bits(_T_233, 4, 4) @[axi4_to_ahb.scala 137:44] + node _T_250 = geq(UInt<3>("h04"), _T_236) @[axi4_to_ahb.scala 137:62] + node _T_251 = and(_T_249, _T_250) @[axi4_to_ahb.scala 137:48] + node _T_252 = bits(_T_233, 5, 5) @[axi4_to_ahb.scala 137:44] + node _T_253 = geq(UInt<3>("h05"), _T_236) @[axi4_to_ahb.scala 137:62] + node _T_254 = and(_T_252, _T_253) @[axi4_to_ahb.scala 137:48] + node _T_255 = bits(_T_233, 6, 6) @[axi4_to_ahb.scala 137:44] + node _T_256 = geq(UInt<3>("h06"), _T_236) @[axi4_to_ahb.scala 137:62] + node _T_257 = and(_T_255, _T_256) @[axi4_to_ahb.scala 137:48] + node _T_258 = bits(_T_233, 7, 7) @[axi4_to_ahb.scala 137:44] + node _T_259 = geq(UInt<3>("h07"), _T_236) @[axi4_to_ahb.scala 137:62] + node _T_260 = and(_T_258, _T_259) @[axi4_to_ahb.scala 137:48] + node _T_261 = mux(_T_260, UInt<3>("h07"), UInt<3>("h07")) @[Mux.scala 98:16] + node _T_262 = mux(_T_257, UInt<3>("h06"), _T_261) @[Mux.scala 98:16] + node _T_263 = mux(_T_254, UInt<3>("h05"), _T_262) @[Mux.scala 98:16] + node _T_264 = mux(_T_251, UInt<3>("h04"), _T_263) @[Mux.scala 98:16] + node _T_265 = mux(_T_248, UInt<2>("h03"), _T_264) @[Mux.scala 98:16] + node _T_266 = mux(_T_245, UInt<2>("h02"), _T_265) @[Mux.scala 98:16] + node _T_267 = mux(_T_242, UInt<1>("h01"), _T_266) @[Mux.scala 98:16] + node _T_268 = mux(_T_239, UInt<1>("h00"), _T_267) @[Mux.scala 98:16] + node _T_269 = dshr(buf_byteen, _T_268) @[axi4_to_ahb.scala 229:92] + node _T_270 = bits(_T_269, 0, 0) @[axi4_to_ahb.scala 229:92] + node _T_271 = eq(_T_270, UInt<1>("h00")) @[axi4_to_ahb.scala 229:163] + node _T_272 = or(_T_231, _T_271) @[axi4_to_ahb.scala 229:79] + node _T_273 = and(trxn_done, _T_272) @[axi4_to_ahb.scala 229:29] + cmd_done <= _T_273 @[axi4_to_ahb.scala 229:16] + node _T_274 = or(cmd_done, cmd_doneQ) @[axi4_to_ahb.scala 230:47] + node _T_275 = eq(_T_274, UInt<1>("h00")) @[axi4_to_ahb.scala 230:36] + node _T_276 = bits(_T_275, 0, 0) @[Bitwise.scala 72:15] + node _T_277 = mux(_T_276, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_278 = and(_T_277, UInt<2>("h02")) @[axi4_to_ahb.scala 230:61] + io.ahb.out.htrans <= _T_278 @[axi4_to_ahb.scala 230:25] + skip @[Conditional.scala 39:67] + else : @[Conditional.scala 39:67] + node _T_279 = eq(UInt<3>("h04"), buf_state) @[Conditional.scala 37:30] + when _T_279 : @[Conditional.scala 39:67] + node _T_280 = and(cmd_doneQ, ahb_hready_q) @[axi4_to_ahb.scala 234:34] + node _T_281 = or(_T_280, ahb_hresp_q) @[axi4_to_ahb.scala 234:50] + buf_state_en <= _T_281 @[axi4_to_ahb.scala 234:20] + node _T_282 = eq(ahb_hresp_q, UInt<1>("h00")) @[axi4_to_ahb.scala 235:38] + node _T_283 = and(buf_state_en, _T_282) @[axi4_to_ahb.scala 235:36] + node _T_284 = and(_T_283, slave_ready) @[axi4_to_ahb.scala 235:51] + master_ready <= _T_284 @[axi4_to_ahb.scala 235:20] + node _T_285 = eq(slave_ready, UInt<1>("h00")) @[axi4_to_ahb.scala 236:42] + node _T_286 = or(ahb_hresp_q, _T_285) @[axi4_to_ahb.scala 236:40] + node _T_287 = and(master_valid, master_valid) @[axi4_to_ahb.scala 236:81] + node _T_288 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 236:113] + node _T_289 = eq(_T_288, UInt<1>("h01")) @[axi4_to_ahb.scala 236:120] + node _T_290 = bits(_T_289, 0, 0) @[axi4_to_ahb.scala 236:135] + node _T_291 = mux(_T_290, UInt<3>("h02"), UInt<3>("h01")) @[axi4_to_ahb.scala 236:101] + node _T_292 = mux(_T_287, _T_291, UInt<3>("h00")) @[axi4_to_ahb.scala 236:66] + node _T_293 = mux(_T_286, UInt<3>("h05"), _T_292) @[axi4_to_ahb.scala 236:26] + buf_nxtstate <= _T_293 @[axi4_to_ahb.scala 236:20] + slvbuf_error_in <= ahb_hresp_q @[axi4_to_ahb.scala 237:23] + slvbuf_error_en <= buf_state_en @[axi4_to_ahb.scala 238:23] + node _T_294 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 239:33] + node _T_295 = eq(_T_294, UInt<1>("h01")) @[axi4_to_ahb.scala 239:40] + buf_write_in <= _T_295 @[axi4_to_ahb.scala 239:20] + node _T_296 = eq(buf_nxtstate, UInt<3>("h02")) @[axi4_to_ahb.scala 240:50] + node _T_297 = eq(buf_nxtstate, UInt<3>("h01")) @[axi4_to_ahb.scala 240:78] + node _T_298 = or(_T_296, _T_297) @[axi4_to_ahb.scala 240:62] + node _T_299 = and(buf_state_en, _T_298) @[axi4_to_ahb.scala 240:33] + buf_wr_en <= _T_299 @[axi4_to_ahb.scala 240:17] + buf_data_wr_en <= buf_wr_en @[axi4_to_ahb.scala 241:22] + node _T_300 = bits(ahb_htrans_q, 1, 0) @[axi4_to_ahb.scala 242:63] + node _T_301 = neq(_T_300, UInt<1>("h00")) @[axi4_to_ahb.scala 242:70] + node _T_302 = and(ahb_hready_q, _T_301) @[axi4_to_ahb.scala 242:48] + node _T_303 = eq(buf_cmd_byte_ptrQ, UInt<3>("h07")) @[axi4_to_ahb.scala 243:29] + node _T_304 = bits(buf_cmd_byte_ptrQ, 2, 0) @[axi4_to_ahb.scala 243:85] + node _T_305 = bits(buf_byteen, 7, 0) @[axi4_to_ahb.scala 243:103] + node _T_306 = add(_T_304, UInt<1>("h01")) @[axi4_to_ahb.scala 136:52] + node _T_307 = tail(_T_306, 1) @[axi4_to_ahb.scala 136:52] + node _T_308 = mux(UInt<1>("h01"), _T_307, _T_304) @[axi4_to_ahb.scala 136:24] + node _T_309 = bits(_T_305, 0, 0) @[axi4_to_ahb.scala 137:44] + node _T_310 = geq(UInt<1>("h00"), _T_308) @[axi4_to_ahb.scala 137:62] + node _T_311 = and(_T_309, _T_310) @[axi4_to_ahb.scala 137:48] + node _T_312 = bits(_T_305, 1, 1) @[axi4_to_ahb.scala 137:44] + node _T_313 = geq(UInt<1>("h01"), _T_308) @[axi4_to_ahb.scala 137:62] + node _T_314 = and(_T_312, _T_313) @[axi4_to_ahb.scala 137:48] + node _T_315 = bits(_T_305, 2, 2) @[axi4_to_ahb.scala 137:44] + node _T_316 = geq(UInt<2>("h02"), _T_308) @[axi4_to_ahb.scala 137:62] + node _T_317 = and(_T_315, _T_316) @[axi4_to_ahb.scala 137:48] + node _T_318 = bits(_T_305, 3, 3) @[axi4_to_ahb.scala 137:44] + node _T_319 = geq(UInt<2>("h03"), _T_308) @[axi4_to_ahb.scala 137:62] + node _T_320 = and(_T_318, _T_319) @[axi4_to_ahb.scala 137:48] + node _T_321 = bits(_T_305, 4, 4) @[axi4_to_ahb.scala 137:44] + node _T_322 = geq(UInt<3>("h04"), _T_308) @[axi4_to_ahb.scala 137:62] + node _T_323 = and(_T_321, _T_322) @[axi4_to_ahb.scala 137:48] + node _T_324 = bits(_T_305, 5, 5) @[axi4_to_ahb.scala 137:44] + node _T_325 = geq(UInt<3>("h05"), _T_308) @[axi4_to_ahb.scala 137:62] + node _T_326 = and(_T_324, _T_325) @[axi4_to_ahb.scala 137:48] + node _T_327 = bits(_T_305, 6, 6) @[axi4_to_ahb.scala 137:44] + node _T_328 = geq(UInt<3>("h06"), _T_308) @[axi4_to_ahb.scala 137:62] + node _T_329 = and(_T_327, _T_328) @[axi4_to_ahb.scala 137:48] + node _T_330 = bits(_T_305, 7, 7) @[axi4_to_ahb.scala 137:44] + node _T_331 = geq(UInt<3>("h07"), _T_308) @[axi4_to_ahb.scala 137:62] + node _T_332 = and(_T_330, _T_331) @[axi4_to_ahb.scala 137:48] + node _T_333 = mux(_T_332, UInt<3>("h07"), UInt<3>("h07")) @[Mux.scala 98:16] + node _T_334 = mux(_T_329, UInt<3>("h06"), _T_333) @[Mux.scala 98:16] + node _T_335 = mux(_T_326, UInt<3>("h05"), _T_334) @[Mux.scala 98:16] + node _T_336 = mux(_T_323, UInt<3>("h04"), _T_335) @[Mux.scala 98:16] + node _T_337 = mux(_T_320, UInt<2>("h03"), _T_336) @[Mux.scala 98:16] + node _T_338 = mux(_T_317, UInt<2>("h02"), _T_337) @[Mux.scala 98:16] + node _T_339 = mux(_T_314, UInt<1>("h01"), _T_338) @[Mux.scala 98:16] + node _T_340 = mux(_T_311, UInt<1>("h00"), _T_339) @[Mux.scala 98:16] + node _T_341 = dshr(buf_byteen, _T_340) @[axi4_to_ahb.scala 243:51] + node _T_342 = bits(_T_341, 0, 0) @[axi4_to_ahb.scala 243:51] + node _T_343 = eq(_T_342, UInt<1>("h00")) @[axi4_to_ahb.scala 243:120] + node _T_344 = or(_T_303, _T_343) @[axi4_to_ahb.scala 243:38] + node _T_345 = and(_T_302, _T_344) @[axi4_to_ahb.scala 242:79] + node _T_346 = or(ahb_hresp_q, _T_345) @[axi4_to_ahb.scala 242:32] + cmd_done <= _T_346 @[axi4_to_ahb.scala 242:16] + node _T_347 = and(buf_state_en, buf_write_in) @[axi4_to_ahb.scala 244:33] + node _T_348 = eq(buf_nxtstate, UInt<3>("h02")) @[axi4_to_ahb.scala 244:64] + node _T_349 = and(_T_347, _T_348) @[axi4_to_ahb.scala 244:48] + bypass_en <= _T_349 @[axi4_to_ahb.scala 244:17] + node _T_350 = or(cmd_done, cmd_doneQ) @[axi4_to_ahb.scala 245:48] + node _T_351 = eq(_T_350, UInt<1>("h00")) @[axi4_to_ahb.scala 245:37] + node _T_352 = or(_T_351, bypass_en) @[axi4_to_ahb.scala 245:61] + node _T_353 = bits(_T_352, 0, 0) @[Bitwise.scala 72:15] + node _T_354 = mux(_T_353, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_355 = and(_T_354, UInt<2>("h02")) @[axi4_to_ahb.scala 245:75] + io.ahb.out.htrans <= _T_355 @[axi4_to_ahb.scala 245:25] + node _T_356 = neq(buf_nxtstate, UInt<3>("h05")) @[axi4_to_ahb.scala 246:55] + node _T_357 = and(buf_state_en, _T_356) @[axi4_to_ahb.scala 246:39] + slave_valid_pre <= _T_357 @[axi4_to_ahb.scala 246:23] + node _T_358 = and(ahb_hready_q, ahb_hwrite_q) @[axi4_to_ahb.scala 247:33] + node _T_359 = bits(ahb_htrans_q, 1, 0) @[axi4_to_ahb.scala 247:63] + node _T_360 = neq(_T_359, UInt<1>("h00")) @[axi4_to_ahb.scala 247:70] + node _T_361 = and(_T_358, _T_360) @[axi4_to_ahb.scala 247:48] + trxn_done <= _T_361 @[axi4_to_ahb.scala 247:17] + node _T_362 = or(trxn_done, bypass_en) @[axi4_to_ahb.scala 248:40] + buf_cmd_byte_ptr_en <= _T_362 @[axi4_to_ahb.scala 248:27] + node _T_363 = bits(buf_byteen_in, 7, 0) @[axi4_to_ahb.scala 249:81] + node _T_364 = add(UInt<3>("h00"), UInt<1>("h01")) @[axi4_to_ahb.scala 136:52] + node _T_365 = tail(_T_364, 1) @[axi4_to_ahb.scala 136:52] + node _T_366 = mux(UInt<1>("h00"), _T_365, UInt<3>("h00")) @[axi4_to_ahb.scala 136:24] + node _T_367 = bits(_T_363, 0, 0) @[axi4_to_ahb.scala 137:44] + node _T_368 = geq(UInt<1>("h00"), _T_366) @[axi4_to_ahb.scala 137:62] + node _T_369 = and(_T_367, _T_368) @[axi4_to_ahb.scala 137:48] + node _T_370 = bits(_T_363, 1, 1) @[axi4_to_ahb.scala 137:44] + node _T_371 = geq(UInt<1>("h01"), _T_366) @[axi4_to_ahb.scala 137:62] + node _T_372 = and(_T_370, _T_371) @[axi4_to_ahb.scala 137:48] + node _T_373 = bits(_T_363, 2, 2) @[axi4_to_ahb.scala 137:44] + node _T_374 = geq(UInt<2>("h02"), _T_366) @[axi4_to_ahb.scala 137:62] + node _T_375 = and(_T_373, _T_374) @[axi4_to_ahb.scala 137:48] + node _T_376 = bits(_T_363, 3, 3) @[axi4_to_ahb.scala 137:44] + node _T_377 = geq(UInt<2>("h03"), _T_366) @[axi4_to_ahb.scala 137:62] + node _T_378 = and(_T_376, _T_377) @[axi4_to_ahb.scala 137:48] + node _T_379 = bits(_T_363, 4, 4) @[axi4_to_ahb.scala 137:44] + node _T_380 = geq(UInt<3>("h04"), _T_366) @[axi4_to_ahb.scala 137:62] + node _T_381 = and(_T_379, _T_380) @[axi4_to_ahb.scala 137:48] + node _T_382 = bits(_T_363, 5, 5) @[axi4_to_ahb.scala 137:44] + node _T_383 = geq(UInt<3>("h05"), _T_366) @[axi4_to_ahb.scala 137:62] + node _T_384 = and(_T_382, _T_383) @[axi4_to_ahb.scala 137:48] + node _T_385 = bits(_T_363, 6, 6) @[axi4_to_ahb.scala 137:44] + node _T_386 = geq(UInt<3>("h06"), _T_366) @[axi4_to_ahb.scala 137:62] + node _T_387 = and(_T_385, _T_386) @[axi4_to_ahb.scala 137:48] + node _T_388 = bits(_T_363, 7, 7) @[axi4_to_ahb.scala 137:44] + node _T_389 = geq(UInt<3>("h07"), _T_366) @[axi4_to_ahb.scala 137:62] + node _T_390 = and(_T_388, _T_389) @[axi4_to_ahb.scala 137:48] + node _T_391 = mux(_T_390, UInt<3>("h07"), UInt<3>("h07")) @[Mux.scala 98:16] + node _T_392 = mux(_T_387, UInt<3>("h06"), _T_391) @[Mux.scala 98:16] + node _T_393 = mux(_T_384, UInt<3>("h05"), _T_392) @[Mux.scala 98:16] + node _T_394 = mux(_T_381, UInt<3>("h04"), _T_393) @[Mux.scala 98:16] + node _T_395 = mux(_T_378, UInt<2>("h03"), _T_394) @[Mux.scala 98:16] + node _T_396 = mux(_T_375, UInt<2>("h02"), _T_395) @[Mux.scala 98:16] + node _T_397 = mux(_T_372, UInt<1>("h01"), _T_396) @[Mux.scala 98:16] + node _T_398 = mux(_T_369, UInt<1>("h00"), _T_397) @[Mux.scala 98:16] + node _T_399 = bits(buf_cmd_byte_ptrQ, 2, 0) @[axi4_to_ahb.scala 249:147] + node _T_400 = bits(buf_byteen, 7, 0) @[axi4_to_ahb.scala 249:165] + node _T_401 = add(_T_399, UInt<1>("h01")) @[axi4_to_ahb.scala 136:52] + node _T_402 = tail(_T_401, 1) @[axi4_to_ahb.scala 136:52] + node _T_403 = mux(UInt<1>("h01"), _T_402, _T_399) @[axi4_to_ahb.scala 136:24] + node _T_404 = bits(_T_400, 0, 0) @[axi4_to_ahb.scala 137:44] + node _T_405 = geq(UInt<1>("h00"), _T_403) @[axi4_to_ahb.scala 137:62] + node _T_406 = and(_T_404, _T_405) @[axi4_to_ahb.scala 137:48] + node _T_407 = bits(_T_400, 1, 1) @[axi4_to_ahb.scala 137:44] + node _T_408 = geq(UInt<1>("h01"), _T_403) @[axi4_to_ahb.scala 137:62] + node _T_409 = and(_T_407, _T_408) @[axi4_to_ahb.scala 137:48] + node _T_410 = bits(_T_400, 2, 2) @[axi4_to_ahb.scala 137:44] + node _T_411 = geq(UInt<2>("h02"), _T_403) @[axi4_to_ahb.scala 137:62] + node _T_412 = and(_T_410, _T_411) @[axi4_to_ahb.scala 137:48] + node _T_413 = bits(_T_400, 3, 3) @[axi4_to_ahb.scala 137:44] + node _T_414 = geq(UInt<2>("h03"), _T_403) @[axi4_to_ahb.scala 137:62] + node _T_415 = and(_T_413, _T_414) @[axi4_to_ahb.scala 137:48] + node _T_416 = bits(_T_400, 4, 4) @[axi4_to_ahb.scala 137:44] + node _T_417 = geq(UInt<3>("h04"), _T_403) @[axi4_to_ahb.scala 137:62] + node _T_418 = and(_T_416, _T_417) @[axi4_to_ahb.scala 137:48] + node _T_419 = bits(_T_400, 5, 5) @[axi4_to_ahb.scala 137:44] + node _T_420 = geq(UInt<3>("h05"), _T_403) @[axi4_to_ahb.scala 137:62] + node _T_421 = and(_T_419, _T_420) @[axi4_to_ahb.scala 137:48] + node _T_422 = bits(_T_400, 6, 6) @[axi4_to_ahb.scala 137:44] + node _T_423 = geq(UInt<3>("h06"), _T_403) @[axi4_to_ahb.scala 137:62] + node _T_424 = and(_T_422, _T_423) @[axi4_to_ahb.scala 137:48] + node _T_425 = bits(_T_400, 7, 7) @[axi4_to_ahb.scala 137:44] + node _T_426 = geq(UInt<3>("h07"), _T_403) @[axi4_to_ahb.scala 137:62] + node _T_427 = and(_T_425, _T_426) @[axi4_to_ahb.scala 137:48] + node _T_428 = mux(_T_427, UInt<3>("h07"), UInt<3>("h07")) @[Mux.scala 98:16] + node _T_429 = mux(_T_424, UInt<3>("h06"), _T_428) @[Mux.scala 98:16] + node _T_430 = mux(_T_421, UInt<3>("h05"), _T_429) @[Mux.scala 98:16] + node _T_431 = mux(_T_418, UInt<3>("h04"), _T_430) @[Mux.scala 98:16] + node _T_432 = mux(_T_415, UInt<2>("h03"), _T_431) @[Mux.scala 98:16] + node _T_433 = mux(_T_412, UInt<2>("h02"), _T_432) @[Mux.scala 98:16] + node _T_434 = mux(_T_409, UInt<1>("h01"), _T_433) @[Mux.scala 98:16] + node _T_435 = mux(_T_406, UInt<1>("h00"), _T_434) @[Mux.scala 98:16] + node _T_436 = mux(trxn_done, _T_435, buf_cmd_byte_ptrQ) @[axi4_to_ahb.scala 249:102] + node _T_437 = mux(bypass_en, _T_398, _T_436) @[axi4_to_ahb.scala 249:30] + buf_cmd_byte_ptr <= _T_437 @[axi4_to_ahb.scala 249:24] + skip @[Conditional.scala 39:67] + else : @[Conditional.scala 39:67] + node _T_438 = eq(UInt<3>("h05"), buf_state) @[Conditional.scala 37:30] + when _T_438 : @[Conditional.scala 39:67] + buf_nxtstate <= UInt<3>("h00") @[axi4_to_ahb.scala 252:20] + buf_state_en <= slave_ready @[axi4_to_ahb.scala 253:20] + slvbuf_error_en <= UInt<1>("h01") @[axi4_to_ahb.scala 254:23] + slave_valid_pre <= UInt<1>("h01") @[axi4_to_ahb.scala 255:23] + skip @[Conditional.scala 39:67] + cmd_done_rst <= slave_valid_pre @[axi4_to_ahb.scala 259:16] + node _T_439 = bits(master_addr, 31, 3) @[axi4_to_ahb.scala 260:33] + node _T_440 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 260:75] + node _T_441 = eq(_T_440, UInt<1>("h01")) @[axi4_to_ahb.scala 260:82] + node _T_442 = and(buf_aligned_in, _T_441) @[axi4_to_ahb.scala 260:62] + node _T_443 = bits(_T_442, 0, 0) @[axi4_to_ahb.scala 260:102] + node _T_444 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 260:134] + node _T_445 = bits(_T_444, 7, 0) @[axi4_to_ahb.scala 127:50] + node _T_446 = eq(_T_445, UInt<8>("h0ff")) @[axi4_to_ahb.scala 127:57] + node _T_447 = bits(_T_444, 7, 0) @[axi4_to_ahb.scala 127:81] + node _T_448 = eq(_T_447, UInt<8>("h0f")) @[axi4_to_ahb.scala 127:88] + node _T_449 = or(_T_446, _T_448) @[axi4_to_ahb.scala 127:70] + node _T_450 = bits(_T_444, 7, 0) @[axi4_to_ahb.scala 127:117] + node _T_451 = eq(_T_450, UInt<8>("h03")) @[axi4_to_ahb.scala 127:124] + node _T_452 = or(_T_449, _T_451) @[axi4_to_ahb.scala 127:106] + node _T_453 = bits(_T_452, 0, 0) @[Bitwise.scala 72:15] + node _T_454 = mux(_T_453, UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] + node _T_455 = and(UInt<3>("h00"), _T_454) @[axi4_to_ahb.scala 127:29] + node _T_456 = bits(_T_444, 7, 0) @[axi4_to_ahb.scala 128:35] + node _T_457 = eq(_T_456, UInt<8>("h0c")) @[axi4_to_ahb.scala 128:42] + node _T_458 = bits(_T_457, 0, 0) @[Bitwise.scala 72:15] + node _T_459 = mux(_T_458, UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] + node _T_460 = and(UInt<2>("h02"), _T_459) @[axi4_to_ahb.scala 128:15] + node _T_461 = or(_T_455, _T_460) @[axi4_to_ahb.scala 127:146] + node _T_462 = bits(_T_444, 7, 0) @[axi4_to_ahb.scala 129:36] + node _T_463 = eq(_T_462, UInt<8>("h0f0")) @[axi4_to_ahb.scala 129:43] + node _T_464 = bits(_T_444, 7, 0) @[axi4_to_ahb.scala 129:67] + node _T_465 = eq(_T_464, UInt<8>("h03")) @[axi4_to_ahb.scala 129:74] + node _T_466 = or(_T_463, _T_465) @[axi4_to_ahb.scala 129:56] + node _T_467 = bits(_T_466, 0, 0) @[Bitwise.scala 72:15] + node _T_468 = mux(_T_467, UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] + node _T_469 = and(UInt<3>("h04"), _T_468) @[axi4_to_ahb.scala 129:15] + node _T_470 = or(_T_461, _T_469) @[axi4_to_ahb.scala 128:63] + node _T_471 = bits(_T_444, 7, 0) @[axi4_to_ahb.scala 130:35] + node _T_472 = eq(_T_471, UInt<8>("h0c0")) @[axi4_to_ahb.scala 130:42] + node _T_473 = bits(_T_472, 0, 0) @[Bitwise.scala 72:15] + node _T_474 = mux(_T_473, UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] + node _T_475 = and(UInt<3>("h06"), _T_474) @[axi4_to_ahb.scala 130:15] + node _T_476 = or(_T_470, _T_475) @[axi4_to_ahb.scala 129:96] + node _T_477 = bits(_T_444, 7, 0) @[axi4_to_ahb.scala 131:33] + node _T_478 = eq(_T_477, UInt<8>("h0c0")) @[axi4_to_ahb.scala 131:40] + node _T_479 = bits(_T_478, 0, 0) @[Bitwise.scala 72:15] + node _T_480 = mux(_T_479, UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] + node _T_481 = and(UInt<3>("h06"), _T_480) @[axi4_to_ahb.scala 131:13] + node _T_482 = bits(master_addr, 2, 0) @[axi4_to_ahb.scala 260:154] + node _T_483 = mux(_T_443, _T_476, _T_482) @[axi4_to_ahb.scala 260:45] + node _T_484 = cat(_T_439, _T_483) @[Cat.scala 29:58] + buf_addr_in <= _T_484 @[axi4_to_ahb.scala 260:15] + node _T_485 = bits(master_tag, 0, 0) @[axi4_to_ahb.scala 261:27] + buf_tag_in <= _T_485 @[axi4_to_ahb.scala 261:14] + node _T_486 = bits(wrbuf_byteen, 7, 0) @[axi4_to_ahb.scala 262:32] + buf_byteen_in <= _T_486 @[axi4_to_ahb.scala 262:17] + node _T_487 = eq(buf_state, UInt<3>("h03")) @[axi4_to_ahb.scala 263:33] + node _T_488 = bits(ahb_hrdata_q, 63, 0) @[axi4_to_ahb.scala 263:59] + node _T_489 = bits(master_wdata, 63, 0) @[axi4_to_ahb.scala 263:80] + node _T_490 = mux(_T_487, _T_488, _T_489) @[axi4_to_ahb.scala 263:21] + buf_data_in <= _T_490 @[axi4_to_ahb.scala 263:15] + node _T_491 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 264:52] + node _T_492 = eq(_T_491, UInt<2>("h03")) @[axi4_to_ahb.scala 264:59] + node _T_493 = and(buf_aligned_in, _T_492) @[axi4_to_ahb.scala 264:38] + node _T_494 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 264:85] + node _T_495 = eq(_T_494, UInt<1>("h01")) @[axi4_to_ahb.scala 264:92] + node _T_496 = and(_T_493, _T_495) @[axi4_to_ahb.scala 264:72] + node _T_497 = bits(_T_496, 0, 0) @[axi4_to_ahb.scala 264:112] + node _T_498 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 264:144] + node _T_499 = bits(_T_498, 7, 0) @[axi4_to_ahb.scala 120:42] + node _T_500 = eq(_T_499, UInt<8>("h0ff")) @[axi4_to_ahb.scala 120:49] + node _T_501 = bits(_T_500, 0, 0) @[Bitwise.scala 72:15] + node _T_502 = mux(_T_501, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_503 = and(UInt<2>("h03"), _T_502) @[axi4_to_ahb.scala 120:25] + node _T_504 = bits(_T_498, 7, 0) @[axi4_to_ahb.scala 121:35] + node _T_505 = eq(_T_504, UInt<8>("h0f0")) @[axi4_to_ahb.scala 121:42] + node _T_506 = bits(_T_498, 7, 0) @[axi4_to_ahb.scala 121:64] + node _T_507 = eq(_T_506, UInt<8>("h0f")) @[axi4_to_ahb.scala 121:71] + node _T_508 = or(_T_505, _T_507) @[axi4_to_ahb.scala 121:55] + node _T_509 = bits(_T_508, 0, 0) @[Bitwise.scala 72:15] + node _T_510 = mux(_T_509, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_511 = and(UInt<2>("h02"), _T_510) @[axi4_to_ahb.scala 121:16] + node _T_512 = or(_T_503, _T_511) @[axi4_to_ahb.scala 120:64] + node _T_513 = bits(_T_498, 7, 0) @[axi4_to_ahb.scala 122:40] + node _T_514 = eq(_T_513, UInt<8>("h0c0")) @[axi4_to_ahb.scala 122:47] + node _T_515 = bits(_T_498, 7, 0) @[axi4_to_ahb.scala 122:69] + node _T_516 = eq(_T_515, UInt<6>("h030")) @[axi4_to_ahb.scala 122:76] + node _T_517 = or(_T_514, _T_516) @[axi4_to_ahb.scala 122:60] + node _T_518 = bits(_T_498, 7, 0) @[axi4_to_ahb.scala 122:98] + node _T_519 = eq(_T_518, UInt<8>("h0c")) @[axi4_to_ahb.scala 122:105] + node _T_520 = or(_T_517, _T_519) @[axi4_to_ahb.scala 122:89] + node _T_521 = bits(_T_498, 7, 0) @[axi4_to_ahb.scala 122:132] + node _T_522 = eq(_T_521, UInt<8>("h03")) @[axi4_to_ahb.scala 122:139] + node _T_523 = or(_T_520, _T_522) @[axi4_to_ahb.scala 122:123] + node _T_524 = bits(_T_523, 0, 0) @[Bitwise.scala 72:15] + node _T_525 = mux(_T_524, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_526 = and(UInt<2>("h01"), _T_525) @[axi4_to_ahb.scala 122:21] + node _T_527 = or(_T_512, _T_526) @[axi4_to_ahb.scala 121:93] + node _T_528 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 264:164] + node _T_529 = mux(_T_497, _T_527, _T_528) @[axi4_to_ahb.scala 264:21] + buf_size_in <= _T_529 @[axi4_to_ahb.scala 264:15] + node _T_530 = bits(master_opc, 2, 0) @[axi4_to_ahb.scala 265:32] + node _T_531 = eq(_T_530, UInt<1>("h00")) @[axi4_to_ahb.scala 265:39] + node _T_532 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 266:17] + node _T_533 = eq(_T_532, UInt<1>("h00")) @[axi4_to_ahb.scala 266:24] + node _T_534 = or(_T_531, _T_533) @[axi4_to_ahb.scala 265:48] + node _T_535 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 266:47] + node _T_536 = eq(_T_535, UInt<2>("h01")) @[axi4_to_ahb.scala 266:54] + node _T_537 = or(_T_534, _T_536) @[axi4_to_ahb.scala 266:33] + node _T_538 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 266:86] + node _T_539 = eq(_T_538, UInt<2>("h02")) @[axi4_to_ahb.scala 266:93] + node _T_540 = or(_T_537, _T_539) @[axi4_to_ahb.scala 266:72] + node _T_541 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 267:18] + node _T_542 = eq(_T_541, UInt<2>("h03")) @[axi4_to_ahb.scala 267:25] + node _T_543 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 267:55] + node _T_544 = eq(_T_543, UInt<2>("h03")) @[axi4_to_ahb.scala 267:62] + node _T_545 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 267:90] + node _T_546 = eq(_T_545, UInt<4>("h0c")) @[axi4_to_ahb.scala 267:97] + node _T_547 = or(_T_544, _T_546) @[axi4_to_ahb.scala 267:74] + node _T_548 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 267:125] + node _T_549 = eq(_T_548, UInt<6>("h030")) @[axi4_to_ahb.scala 267:132] + node _T_550 = or(_T_547, _T_549) @[axi4_to_ahb.scala 267:109] + node _T_551 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 267:161] + node _T_552 = eq(_T_551, UInt<8>("h0c0")) @[axi4_to_ahb.scala 267:168] + node _T_553 = or(_T_550, _T_552) @[axi4_to_ahb.scala 267:145] + node _T_554 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 268:21] + node _T_555 = eq(_T_554, UInt<4>("h0f")) @[axi4_to_ahb.scala 268:28] + node _T_556 = or(_T_553, _T_555) @[axi4_to_ahb.scala 267:181] + node _T_557 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 268:56] + node _T_558 = eq(_T_557, UInt<8>("h0f0")) @[axi4_to_ahb.scala 268:63] + node _T_559 = or(_T_556, _T_558) @[axi4_to_ahb.scala 268:40] + node _T_560 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 268:92] + node _T_561 = eq(_T_560, UInt<8>("h0ff")) @[axi4_to_ahb.scala 268:99] + node _T_562 = or(_T_559, _T_561) @[axi4_to_ahb.scala 268:76] + node _T_563 = and(_T_542, _T_562) @[axi4_to_ahb.scala 267:38] + node _T_564 = or(_T_540, _T_563) @[axi4_to_ahb.scala 266:106] + buf_aligned_in <= _T_564 @[axi4_to_ahb.scala 265:18] + node _T_565 = bits(bypass_en, 0, 0) @[axi4_to_ahb.scala 270:47] + node _T_566 = bits(master_addr, 31, 3) @[axi4_to_ahb.scala 270:62] + node _T_567 = bits(buf_addr, 31, 3) @[axi4_to_ahb.scala 270:79] + node _T_568 = mux(_T_565, _T_566, _T_567) @[axi4_to_ahb.scala 270:30] + node _T_569 = eq(io.ahb.out.htrans, UInt<2>("h02")) @[axi4_to_ahb.scala 270:115] + node _T_570 = bits(_T_569, 0, 0) @[Bitwise.scala 72:15] + node _T_571 = mux(_T_570, UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] + node _T_572 = and(_T_571, buf_cmd_byte_ptr) @[axi4_to_ahb.scala 270:124] + node _T_573 = cat(_T_568, _T_572) @[Cat.scala 29:58] + io.ahb.out.haddr <= _T_573 @[axi4_to_ahb.scala 270:20] + node _T_574 = bits(bypass_en, 0, 0) @[axi4_to_ahb.scala 271:43] + node _T_575 = bits(buf_aligned_in, 0, 0) @[Bitwise.scala 72:15] + node _T_576 = mux(_T_575, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_577 = bits(buf_size_in, 1, 0) @[axi4_to_ahb.scala 271:94] + node _T_578 = and(_T_576, _T_577) @[axi4_to_ahb.scala 271:81] + node _T_579 = cat(UInt<1>("h00"), _T_578) @[Cat.scala 29:58] + node _T_580 = bits(buf_aligned, 0, 0) @[Bitwise.scala 72:15] + node _T_581 = mux(_T_580, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_582 = bits(buf_size, 1, 0) @[axi4_to_ahb.scala 271:148] + node _T_583 = and(_T_581, _T_582) @[axi4_to_ahb.scala 271:138] + node _T_584 = cat(UInt<1>("h00"), _T_583) @[Cat.scala 29:58] + node _T_585 = mux(_T_574, _T_579, _T_584) @[axi4_to_ahb.scala 271:26] + io.ahb.out.hsize <= _T_585 @[axi4_to_ahb.scala 271:20] + io.ahb.out.hburst <= UInt<1>("h00") @[axi4_to_ahb.scala 273:21] + io.ahb.out.hmastlock <= UInt<1>("h00") @[axi4_to_ahb.scala 274:24] + node _T_586 = bits(io.axi.ar.bits.prot, 2, 2) @[axi4_to_ahb.scala 275:57] + node _T_587 = eq(_T_586, UInt<1>("h00")) @[axi4_to_ahb.scala 275:37] + node _T_588 = cat(UInt<1>("h01"), _T_587) @[Cat.scala 29:58] + io.ahb.out.hprot <= _T_588 @[axi4_to_ahb.scala 275:20] + node _T_589 = bits(bypass_en, 0, 0) @[axi4_to_ahb.scala 276:44] + node _T_590 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 276:59] + node _T_591 = eq(_T_590, UInt<1>("h01")) @[axi4_to_ahb.scala 276:66] + node _T_592 = mux(_T_589, _T_591, buf_write) @[axi4_to_ahb.scala 276:27] + io.ahb.out.hwrite <= _T_592 @[axi4_to_ahb.scala 276:21] + node _T_593 = bits(buf_data, 63, 0) @[axi4_to_ahb.scala 277:32] + io.ahb.out.hwdata <= _T_593 @[axi4_to_ahb.scala 277:21] + slave_valid <= slave_valid_pre @[axi4_to_ahb.scala 279:15] + node _T_594 = bits(slvbuf_write, 0, 0) @[axi4_to_ahb.scala 280:43] + node _T_595 = mux(_T_594, UInt<2>("h03"), UInt<1>("h00")) @[axi4_to_ahb.scala 280:23] + node _T_596 = bits(slvbuf_error, 0, 0) @[Bitwise.scala 72:15] + node _T_597 = mux(_T_596, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_598 = and(_T_597, UInt<2>("h02")) @[axi4_to_ahb.scala 280:88] + node _T_599 = cat(_T_595, _T_598) @[Cat.scala 29:58] + slave_opc <= _T_599 @[axi4_to_ahb.scala 280:13] + node _T_600 = bits(slvbuf_error, 0, 0) @[axi4_to_ahb.scala 281:41] + node _T_601 = bits(last_bus_addr, 31, 0) @[axi4_to_ahb.scala 281:66] + node _T_602 = cat(_T_601, _T_601) @[Cat.scala 29:58] + node _T_603 = eq(buf_state, UInt<3>("h05")) @[axi4_to_ahb.scala 281:91] + node _T_604 = bits(buf_data, 63, 0) @[axi4_to_ahb.scala 281:110] + node _T_605 = bits(ahb_hrdata_q, 63, 0) @[axi4_to_ahb.scala 281:131] + node _T_606 = mux(_T_603, _T_604, _T_605) @[axi4_to_ahb.scala 281:79] + node _T_607 = mux(_T_600, _T_602, _T_606) @[axi4_to_ahb.scala 281:21] + slave_rdata <= _T_607 @[axi4_to_ahb.scala 281:15] + node _T_608 = bits(slvbuf_tag, 0, 0) @[axi4_to_ahb.scala 282:26] + slave_tag <= _T_608 @[axi4_to_ahb.scala 282:13] + node _T_609 = bits(io.ahb.out.htrans, 1, 0) @[axi4_to_ahb.scala 284:37] + node _T_610 = neq(_T_609, UInt<1>("h00")) @[axi4_to_ahb.scala 284:44] + node _T_611 = and(_T_610, io.ahb.in.hready) @[axi4_to_ahb.scala 284:56] + node _T_612 = and(_T_611, io.ahb.out.hwrite) @[axi4_to_ahb.scala 284:75] + last_addr_en <= _T_612 @[axi4_to_ahb.scala 284:16] + node _T_613 = and(io.axi.aw.valid, io.axi.aw.ready) @[axi4_to_ahb.scala 286:31] + node _T_614 = and(_T_613, master_ready) @[axi4_to_ahb.scala 286:49] + wrbuf_en <= _T_614 @[axi4_to_ahb.scala 286:12] + node _T_615 = and(io.axi.w.valid, io.axi.w.ready) @[axi4_to_ahb.scala 287:35] + node _T_616 = and(_T_615, master_ready) @[axi4_to_ahb.scala 287:52] + wrbuf_data_en <= _T_616 @[axi4_to_ahb.scala 287:17] + node _T_617 = and(master_valid, master_ready) @[axi4_to_ahb.scala 288:34] + node _T_618 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 288:62] + node _T_619 = eq(_T_618, UInt<1>("h01")) @[axi4_to_ahb.scala 288:69] + node _T_620 = and(_T_617, _T_619) @[axi4_to_ahb.scala 288:49] + wrbuf_cmd_sent <= _T_620 @[axi4_to_ahb.scala 288:18] + node _T_621 = eq(wrbuf_en, UInt<1>("h00")) @[axi4_to_ahb.scala 289:34] + node _T_622 = and(wrbuf_cmd_sent, _T_621) @[axi4_to_ahb.scala 289:32] + node _T_623 = or(_T_622, dec_tlu_force_halt_bus) @[axi4_to_ahb.scala 289:45] + wrbuf_rst <= _T_623 @[axi4_to_ahb.scala 289:13] + node _T_624 = eq(wrbuf_cmd_sent, UInt<1>("h00")) @[axi4_to_ahb.scala 291:36] + node _T_625 = and(wrbuf_vld, _T_624) @[axi4_to_ahb.scala 291:34] + node _T_626 = eq(_T_625, UInt<1>("h00")) @[axi4_to_ahb.scala 291:22] + node _T_627 = and(_T_626, master_ready) @[axi4_to_ahb.scala 291:53] + io.axi.aw.ready <= _T_627 @[axi4_to_ahb.scala 291:19] + node _T_628 = eq(wrbuf_cmd_sent, UInt<1>("h00")) @[axi4_to_ahb.scala 292:40] + node _T_629 = and(wrbuf_data_vld, _T_628) @[axi4_to_ahb.scala 292:38] + node _T_630 = eq(_T_629, UInt<1>("h00")) @[axi4_to_ahb.scala 292:21] + node _T_631 = and(_T_630, master_ready) @[axi4_to_ahb.scala 292:57] + io.axi.w.ready <= _T_631 @[axi4_to_ahb.scala 292:18] + node _T_632 = and(wrbuf_vld, wrbuf_data_vld) @[axi4_to_ahb.scala 293:34] + node _T_633 = eq(_T_632, UInt<1>("h00")) @[axi4_to_ahb.scala 293:22] + node _T_634 = and(_T_633, master_ready) @[axi4_to_ahb.scala 293:52] + io.axi.ar.ready <= _T_634 @[axi4_to_ahb.scala 293:19] + io.axi.r.bits.last <= UInt<1>("h01") @[axi4_to_ahb.scala 294:22] + node _T_635 = bits(wrbuf_en, 0, 0) @[axi4_to_ahb.scala 296:49] + wire _T_636 : UInt @[lib.scala 389:21] + node _T_637 = eq(wrbuf_rst, UInt<1>("h00")) @[lib.scala 391:75] + node _T_638 = and(UInt<1>("h01"), _T_637) @[lib.scala 391:53] + node _T_639 = or(_T_635, wrbuf_rst) @[lib.scala 391:95] + node _T_640 = and(_T_639, io.bus_clk_en) @[lib.scala 391:102] + node _T_641 = bits(_T_640, 0, 0) @[lib.scala 8:44] + reg _T_642 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_641 : @[Reg.scala 28:19] + _T_642 <= _T_638 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + _T_636 <= _T_642 @[lib.scala 391:14] + wrbuf_vld <= _T_636 @[axi4_to_ahb.scala 296:13] + node _T_643 = bits(wrbuf_data_en, 0, 0) @[axi4_to_ahb.scala 297:59] + wire _T_644 : UInt @[lib.scala 389:21] + node _T_645 = eq(wrbuf_rst, UInt<1>("h00")) @[lib.scala 391:75] + node _T_646 = and(UInt<1>("h01"), _T_645) @[lib.scala 391:53] + node _T_647 = or(_T_643, wrbuf_rst) @[lib.scala 391:95] + node _T_648 = and(_T_647, io.bus_clk_en) @[lib.scala 391:102] + node _T_649 = bits(_T_648, 0, 0) @[lib.scala 8:44] + reg _T_650 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_649 : @[Reg.scala 28:19] + _T_650 <= _T_646 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + _T_644 <= _T_650 @[lib.scala 391:14] + wrbuf_data_vld <= _T_644 @[axi4_to_ahb.scala 297:18] + node _T_651 = bits(io.axi.aw.bits.id, 0, 0) @[axi4_to_ahb.scala 298:45] + node _T_652 = bits(wrbuf_en, 0, 0) @[axi4_to_ahb.scala 298:74] + node _T_653 = and(io.bus_clk_en, _T_652) @[lib.scala 383:57] + reg _T_654 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_653 : @[Reg.scala 28:19] + _T_654 <= _T_651 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + wrbuf_tag <= _T_654 @[axi4_to_ahb.scala 298:13] + node _T_655 = bits(io.axi.aw.bits.size, 2, 0) @[axi4_to_ahb.scala 299:48] + node _T_656 = bits(wrbuf_en, 0, 0) @[axi4_to_ahb.scala 299:71] + node _T_657 = and(io.bus_clk_en, _T_656) @[lib.scala 383:57] + reg _T_658 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_657 : @[Reg.scala 28:19] + _T_658 <= _T_655 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + wrbuf_size <= _T_658 @[axi4_to_ahb.scala 299:14] + node _T_659 = bits(wrbuf_en, 0, 0) @[axi4_to_ahb.scala 300:54] + node _T_660 = and(_T_659, io.bus_clk_en) @[axi4_to_ahb.scala 300:61] + inst rvclkhdr of rvclkhdr @[lib.scala 399:23] + rvclkhdr.clock <= clock + rvclkhdr.reset <= reset + rvclkhdr.io.clk <= clock @[lib.scala 401:18] + rvclkhdr.io.en <= _T_660 @[lib.scala 402:17] + rvclkhdr.io.scan_mode <= UInt<1>("h00") @[lib.scala 403:24] + reg _T_661 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_660 : @[Reg.scala 28:19] + _T_661 <= io.axi.aw.bits.addr @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + wrbuf_addr <= _T_661 @[axi4_to_ahb.scala 300:14] + node _T_662 = bits(wrbuf_data_en, 0, 0) @[axi4_to_ahb.scala 301:58] + node _T_663 = and(_T_662, io.bus_clk_en) @[axi4_to_ahb.scala 301:65] + inst rvclkhdr_1 of rvclkhdr_1 @[lib.scala 399:23] + rvclkhdr_1.clock <= clock + rvclkhdr_1.reset <= reset + rvclkhdr_1.io.clk <= clock @[lib.scala 401:18] + rvclkhdr_1.io.en <= _T_663 @[lib.scala 402:17] + rvclkhdr_1.io.scan_mode <= UInt<1>("h00") @[lib.scala 403:24] + reg _T_664 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_663 : @[Reg.scala 28:19] + _T_664 <= io.axi.w.bits.data @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + wrbuf_data <= _T_664 @[axi4_to_ahb.scala 301:14] + node _T_665 = bits(io.axi.w.bits.strb, 7, 0) @[axi4_to_ahb.scala 302:49] + node _T_666 = bits(wrbuf_data_en, 0, 0) @[axi4_to_ahb.scala 302:77] + node _T_667 = and(io.bus_clk_en, _T_666) @[lib.scala 383:57] + reg _T_668 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_667 : @[Reg.scala 28:19] + _T_668 <= _T_665 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + wrbuf_byteen <= _T_668 @[axi4_to_ahb.scala 302:16] + node _T_669 = bits(io.ahb.out.haddr, 31, 0) @[axi4_to_ahb.scala 303:48] + node _T_670 = bits(last_addr_en, 0, 0) @[axi4_to_ahb.scala 303:76] + node _T_671 = and(io.bus_clk_en, _T_670) @[lib.scala 383:57] + reg _T_672 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_671 : @[Reg.scala 28:19] + _T_672 <= _T_669 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + last_bus_addr <= _T_672 @[axi4_to_ahb.scala 303:17] + node _T_673 = bits(buf_wr_en, 0, 0) @[axi4_to_ahb.scala 304:58] + node _T_674 = and(buf_clken, _T_673) @[lib.scala 383:57] + reg _T_675 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_674 : @[Reg.scala 28:19] + _T_675 <= buf_write_in @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + buf_write <= _T_675 @[axi4_to_ahb.scala 304:13] + node _T_676 = bits(buf_tag_in, 0, 0) @[axi4_to_ahb.scala 305:36] + node _T_677 = bits(buf_wr_en, 0, 0) @[axi4_to_ahb.scala 305:66] + node _T_678 = and(buf_clken, _T_677) @[lib.scala 383:57] + reg _T_679 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_678 : @[Reg.scala 28:19] + _T_679 <= _T_676 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + buf_tag <= _T_679 @[axi4_to_ahb.scala 305:11] + node _T_680 = bits(buf_addr_in, 31, 0) @[axi4_to_ahb.scala 306:33] + node _T_681 = and(buf_wr_en, io.bus_clk_en) @[axi4_to_ahb.scala 306:53] + node _T_682 = bits(_T_681, 0, 0) @[axi4_to_ahb.scala 306:70] + inst rvclkhdr_2 of rvclkhdr_2 @[lib.scala 399:23] + rvclkhdr_2.clock <= clock + rvclkhdr_2.reset <= reset + rvclkhdr_2.io.clk <= clock @[lib.scala 401:18] + rvclkhdr_2.io.en <= _T_682 @[lib.scala 402:17] + rvclkhdr_2.io.scan_mode <= UInt<1>("h00") @[lib.scala 403:24] + reg _T_683 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_682 : @[Reg.scala 28:19] + _T_683 <= _T_680 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + buf_addr <= _T_683 @[axi4_to_ahb.scala 306:12] + node _T_684 = bits(buf_size_in, 1, 0) @[axi4_to_ahb.scala 307:38] + node _T_685 = bits(buf_wr_en, 0, 0) @[axi4_to_ahb.scala 307:62] + node _T_686 = and(buf_clken, _T_685) @[lib.scala 383:57] + reg _T_687 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_686 : @[Reg.scala 28:19] + _T_687 <= _T_684 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + buf_size <= _T_687 @[axi4_to_ahb.scala 307:12] + node _T_688 = bits(buf_wr_en, 0, 0) @[axi4_to_ahb.scala 308:62] + node _T_689 = and(buf_clken, _T_688) @[lib.scala 383:57] + reg _T_690 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_689 : @[Reg.scala 28:19] + _T_690 <= buf_aligned_in @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + buf_aligned <= _T_690 @[axi4_to_ahb.scala 308:15] + node _T_691 = bits(buf_byteen_in, 7, 0) @[axi4_to_ahb.scala 309:42] + node _T_692 = bits(buf_wr_en, 0, 0) @[axi4_to_ahb.scala 309:66] + node _T_693 = and(buf_clken, _T_692) @[lib.scala 383:57] + reg _T_694 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_693 : @[Reg.scala 28:19] + _T_694 <= _T_691 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + buf_byteen <= _T_694 @[axi4_to_ahb.scala 309:14] + node _T_695 = bits(buf_data_in, 63, 0) @[axi4_to_ahb.scala 310:33] + node _T_696 = and(buf_data_wr_en, io.bus_clk_en) @[axi4_to_ahb.scala 310:58] + node _T_697 = bits(_T_696, 0, 0) @[axi4_to_ahb.scala 310:81] + inst rvclkhdr_3 of rvclkhdr_3 @[lib.scala 399:23] + rvclkhdr_3.clock <= clock + rvclkhdr_3.reset <= reset + rvclkhdr_3.io.clk <= clock @[lib.scala 401:18] + rvclkhdr_3.io.en <= _T_697 @[lib.scala 402:17] + rvclkhdr_3.io.scan_mode <= UInt<1>("h00") @[lib.scala 403:24] + reg _T_698 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_697 : @[Reg.scala 28:19] + _T_698 <= _T_695 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + buf_data <= _T_698 @[axi4_to_ahb.scala 310:12] + node _T_699 = bits(slvbuf_wr_en, 0, 0) @[axi4_to_ahb.scala 311:61] + node _T_700 = and(buf_clken, _T_699) @[lib.scala 383:57] + reg _T_701 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_700 : @[Reg.scala 28:19] + _T_701 <= buf_write @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + slvbuf_write <= _T_701 @[axi4_to_ahb.scala 311:16] + node _T_702 = bits(buf_tag, 0, 0) @[axi4_to_ahb.scala 312:36] + node _T_703 = bits(slvbuf_wr_en, 0, 0) @[axi4_to_ahb.scala 312:69] + node _T_704 = and(buf_clken, _T_703) @[lib.scala 383:57] + reg _T_705 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_704 : @[Reg.scala 28:19] + _T_705 <= _T_702 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + slvbuf_tag <= _T_705 @[axi4_to_ahb.scala 312:14] + node _T_706 = bits(slvbuf_error_en, 0, 0) @[axi4_to_ahb.scala 313:70] + node _T_707 = and(buf_clken, _T_706) @[lib.scala 383:57] + reg _T_708 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_707 : @[Reg.scala 28:19] + _T_708 <= slvbuf_error_in @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + slvbuf_error <= _T_708 @[axi4_to_ahb.scala 313:16] + node _T_709 = bits(cmd_done, 0, 0) @[axi4_to_ahb.scala 314:49] + wire _T_710 : UInt @[lib.scala 389:21] + node _T_711 = eq(cmd_done_rst, UInt<1>("h00")) @[lib.scala 391:75] + node _T_712 = and(UInt<1>("h01"), _T_711) @[lib.scala 391:53] + node _T_713 = or(_T_709, cmd_done_rst) @[lib.scala 391:95] + node _T_714 = and(_T_713, io.bus_clk_en) @[lib.scala 391:102] + node _T_715 = bits(_T_714, 0, 0) @[lib.scala 8:44] + reg _T_716 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_715 : @[Reg.scala 28:19] + _T_716 <= _T_712 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + _T_710 <= _T_716 @[lib.scala 391:14] + cmd_doneQ <= _T_710 @[axi4_to_ahb.scala 314:13] + node _T_717 = bits(buf_cmd_byte_ptr, 2, 0) @[axi4_to_ahb.scala 315:52] + node _T_718 = bits(buf_cmd_byte_ptr_en, 0, 0) @[axi4_to_ahb.scala 315:86] + node _T_719 = and(io.bus_clk_en, _T_718) @[lib.scala 383:57] + reg _T_720 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_719 : @[Reg.scala 28:19] + _T_720 <= _T_717 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + buf_cmd_byte_ptrQ <= _T_720 @[axi4_to_ahb.scala 315:21] + reg _T_721 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when io.bus_clk_en : @[Reg.scala 28:19] + _T_721 <= io.ahb.in.hready @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + ahb_hready_q <= _T_721 @[axi4_to_ahb.scala 316:16] + node _T_722 = bits(io.ahb.out.htrans, 1, 0) @[axi4_to_ahb.scala 317:47] + reg _T_723 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when io.bus_clk_en : @[Reg.scala 28:19] + _T_723 <= _T_722 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + ahb_htrans_q <= _T_723 @[axi4_to_ahb.scala 317:16] + reg _T_724 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when io.bus_clk_en : @[Reg.scala 28:19] + _T_724 <= io.ahb.out.hwrite @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + ahb_hwrite_q <= _T_724 @[axi4_to_ahb.scala 318:16] + reg _T_725 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when io.bus_clk_en : @[Reg.scala 28:19] + _T_725 <= io.ahb.in.hresp @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + ahb_hresp_q <= _T_725 @[axi4_to_ahb.scala 319:15] + node _T_726 = bits(io.ahb.in.hrdata, 63, 0) @[axi4_to_ahb.scala 320:46] + reg _T_727 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when ahbm_data_clken : @[Reg.scala 28:19] + _T_727 <= _T_726 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + ahb_hrdata_q <= _T_727 @[axi4_to_ahb.scala 320:16] + node _T_728 = or(buf_wr_en, slvbuf_wr_en) @[axi4_to_ahb.scala 321:43] + node _T_729 = or(_T_728, io.clk_override) @[axi4_to_ahb.scala 321:58] + node _T_730 = and(io.bus_clk_en, _T_729) @[axi4_to_ahb.scala 321:30] + buf_clken <= _T_730 @[axi4_to_ahb.scala 321:13] + node _T_731 = neq(buf_state, UInt<3>("h00")) @[axi4_to_ahb.scala 322:50] + node _T_732 = or(_T_731, io.clk_override) @[axi4_to_ahb.scala 322:60] + node _T_733 = and(io.bus_clk_en, _T_732) @[axi4_to_ahb.scala 322:36] + ahbm_data_clken <= _T_733 @[axi4_to_ahb.scala 322:19] + node _T_734 = asClock(UInt<1>("h00")) @[axi4_to_ahb.scala 325:27] + bus_clk <= _T_734 @[axi4_to_ahb.scala 325:13] + node _T_735 = asClock(UInt<1>("h00")) @[axi4_to_ahb.scala 326:27] + buf_clk <= _T_735 @[axi4_to_ahb.scala 326:13] + node _T_736 = asClock(UInt<1>("h00")) @[axi4_to_ahb.scala 327:33] + ahbm_data_clk <= _T_736 @[axi4_to_ahb.scala 327:19] + diff --git a/axi4_to_ahb.v b/axi4_to_ahb.v new file mode 100644 index 00000000..429ec2e2 --- /dev/null +++ b/axi4_to_ahb.v @@ -0,0 +1,1036 @@ +module rvclkhdr( + input io_clk, + input io_en +); + wire clkhdr_Q; // @[lib.scala 334:26] + wire clkhdr_CK; // @[lib.scala 334:26] + wire clkhdr_EN; // @[lib.scala 334:26] + wire clkhdr_SE; // @[lib.scala 334:26] + gated_latch clkhdr ( // @[lib.scala 334:26] + .Q(clkhdr_Q), + .CK(clkhdr_CK), + .EN(clkhdr_EN), + .SE(clkhdr_SE) + ); + assign clkhdr_CK = io_clk; // @[lib.scala 336:18] + assign clkhdr_EN = io_en; // @[lib.scala 337:18] + assign clkhdr_SE = 1'h0; // @[lib.scala 338:18] +endmodule +module axi4_to_ahb( + input clock, + input reset, + input io_free_clk, + input io_scan_mode, + input io_bus_clk_en, + input io_clk_override, + input io_dec_tlu_force_halt, + output io_axi_aw_ready, + input io_axi_aw_valid, + input io_axi_aw_bits_id, + input [31:0] io_axi_aw_bits_addr, + input [3:0] io_axi_aw_bits_region, + input [7:0] io_axi_aw_bits_len, + input [2:0] io_axi_aw_bits_size, + input [1:0] io_axi_aw_bits_burst, + input io_axi_aw_bits_lock, + input [3:0] io_axi_aw_bits_cache, + input [2:0] io_axi_aw_bits_prot, + input [3:0] io_axi_aw_bits_qos, + output io_axi_w_ready, + input io_axi_w_valid, + input [63:0] io_axi_w_bits_data, + input [7:0] io_axi_w_bits_strb, + input io_axi_w_bits_last, + input io_axi_b_ready, + output io_axi_b_valid, + output [1:0] io_axi_b_bits_resp, + output io_axi_b_bits_id, + output io_axi_ar_ready, + input io_axi_ar_valid, + input io_axi_ar_bits_id, + input [31:0] io_axi_ar_bits_addr, + input [3:0] io_axi_ar_bits_region, + input [7:0] io_axi_ar_bits_len, + input [2:0] io_axi_ar_bits_size, + input [1:0] io_axi_ar_bits_burst, + input io_axi_ar_bits_lock, + input [3:0] io_axi_ar_bits_cache, + input [2:0] io_axi_ar_bits_prot, + input [3:0] io_axi_ar_bits_qos, + input io_axi_r_ready, + output io_axi_r_valid, + output io_axi_r_bits_id, + output [63:0] io_axi_r_bits_data, + output [1:0] io_axi_r_bits_resp, + output io_axi_r_bits_last, + input [63:0] io_ahb_in_hrdata, + input io_ahb_in_hready, + input io_ahb_in_hresp, + output [31:0] io_ahb_out_haddr, + output [2:0] io_ahb_out_hburst, + output io_ahb_out_hmastlock, + output [3:0] io_ahb_out_hprot, + output [2:0] io_ahb_out_hsize, + output [1:0] io_ahb_out_htrans, + output io_ahb_out_hwrite, + output [63:0] io_ahb_out_hwdata +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; + reg [31:0] _RAND_1; + reg [31:0] _RAND_2; + reg [31:0] _RAND_3; + reg [31:0] _RAND_4; + reg [31:0] _RAND_5; + reg [31:0] _RAND_6; + reg [31:0] _RAND_7; + reg [31:0] _RAND_8; + reg [31:0] _RAND_9; + reg [31:0] _RAND_10; + reg [31:0] _RAND_11; + reg [31:0] _RAND_12; + reg [63:0] _RAND_13; + reg [31:0] _RAND_14; + reg [31:0] _RAND_15; + reg [31:0] _RAND_16; + reg [31:0] _RAND_17; + reg [63:0] _RAND_18; + reg [63:0] _RAND_19; + reg [31:0] _RAND_20; + reg [31:0] _RAND_21; + reg [31:0] _RAND_22; + reg [31:0] _RAND_23; + reg [31:0] _RAND_24; + reg [31:0] _RAND_25; + reg [31:0] _RAND_26; +`endif // RANDOMIZE_REG_INIT + wire rvclkhdr_io_clk; // @[lib.scala 399:23] + wire rvclkhdr_io_en; // @[lib.scala 399:23] + wire rvclkhdr_1_io_clk; // @[lib.scala 399:23] + wire rvclkhdr_1_io_en; // @[lib.scala 399:23] + wire rvclkhdr_2_io_clk; // @[lib.scala 399:23] + wire rvclkhdr_2_io_en; // @[lib.scala 399:23] + wire rvclkhdr_3_io_clk; // @[lib.scala 399:23] + wire rvclkhdr_3_io_en; // @[lib.scala 399:23] + reg dec_tlu_force_halt_bus_q; // @[axi4_to_ahb.scala 26:62] + wire dec_tlu_force_halt_bus = io_dec_tlu_force_halt | dec_tlu_force_halt_bus_q; // @[axi4_to_ahb.scala 24:54] + wire _T = ~io_bus_clk_en; // @[axi4_to_ahb.scala 25:35] + reg [2:0] buf_state; // @[Reg.scala 27:20] + wire _T_47 = 3'h0 == buf_state; // @[Conditional.scala 37:30] + reg wrbuf_vld; // @[Reg.scala 27:20] + reg wrbuf_data_vld; // @[Reg.scala 27:20] + wire wr_cmd_vld = wrbuf_vld & wrbuf_data_vld; // @[axi4_to_ahb.scala 140:27] + wire master_valid = wr_cmd_vld | io_axi_ar_valid; // @[axi4_to_ahb.scala 141:30] + wire _T_99 = 3'h1 == buf_state; // @[Conditional.scala 37:30] + reg ahb_hready_q; // @[Reg.scala 27:20] + reg [1:0] ahb_htrans_q; // @[Reg.scala 27:20] + wire _T_106 = ahb_htrans_q != 2'h0; // @[axi4_to_ahb.scala 178:58] + wire _T_107 = ahb_hready_q & _T_106; // @[axi4_to_ahb.scala 178:36] + reg ahb_hwrite_q; // @[Reg.scala 27:20] + wire _T_108 = ~ahb_hwrite_q; // @[axi4_to_ahb.scala 178:72] + wire _T_109 = _T_107 & _T_108; // @[axi4_to_ahb.scala 178:70] + wire _T_134 = 3'h6 == buf_state; // @[Conditional.scala 37:30] + reg ahb_hresp_q; // @[Reg.scala 27:20] + wire _T_154 = ahb_hready_q | ahb_hresp_q; // @[axi4_to_ahb.scala 192:37] + wire _T_173 = 3'h7 == buf_state; // @[Conditional.scala 37:30] + wire _T_184 = 3'h3 == buf_state; // @[Conditional.scala 37:30] + wire _T_186 = 3'h2 == buf_state; // @[Conditional.scala 37:30] + wire _T_187 = ahb_hready_q & ahb_hwrite_q; // @[axi4_to_ahb.scala 224:33] + wire _T_190 = _T_187 & _T_106; // @[axi4_to_ahb.scala 224:48] + wire _T_279 = 3'h4 == buf_state; // @[Conditional.scala 37:30] + wire _GEN_16 = _T_279 & _T_190; // @[Conditional.scala 39:67] + wire _GEN_20 = _T_186 ? _T_190 : _GEN_16; // @[Conditional.scala 39:67] + wire _GEN_41 = _T_184 ? 1'h0 : _GEN_20; // @[Conditional.scala 39:67] + wire _GEN_60 = _T_173 ? 1'h0 : _GEN_41; // @[Conditional.scala 39:67] + wire _GEN_80 = _T_134 ? 1'h0 : _GEN_60; // @[Conditional.scala 39:67] + wire _GEN_96 = _T_99 ? 1'h0 : _GEN_80; // @[Conditional.scala 39:67] + wire trxn_done = _T_47 ? 1'h0 : _GEN_96; // @[Conditional.scala 40:58] + reg cmd_doneQ; // @[Reg.scala 27:20] + wire _T_280 = cmd_doneQ & ahb_hready_q; // @[axi4_to_ahb.scala 234:34] + wire _T_281 = _T_280 | ahb_hresp_q; // @[axi4_to_ahb.scala 234:50] + wire _T_438 = 3'h5 == buf_state; // @[Conditional.scala 37:30] + wire slave_ready = io_axi_b_ready & io_axi_r_ready; // @[axi4_to_ahb.scala 158:33] + wire _GEN_2 = _T_438 & slave_ready; // @[Conditional.scala 39:67] + wire _GEN_4 = _T_279 ? _T_281 : _GEN_2; // @[Conditional.scala 39:67] + wire _GEN_21 = _T_186 ? trxn_done : _GEN_4; // @[Conditional.scala 39:67] + wire _GEN_36 = _T_184 ? _T_154 : _GEN_21; // @[Conditional.scala 39:67] + wire _GEN_52 = _T_173 ? _T_109 : _GEN_36; // @[Conditional.scala 39:67] + wire _GEN_70 = _T_134 ? _T_154 : _GEN_52; // @[Conditional.scala 39:67] + wire _GEN_84 = _T_99 ? _T_109 : _GEN_70; // @[Conditional.scala 39:67] + wire buf_state_en = _T_47 ? master_valid : _GEN_84; // @[Conditional.scala 40:58] + wire _T_4 = ~dec_tlu_force_halt_bus; // @[lib.scala 391:75] + wire [1:0] _T_17 = wr_cmd_vld ? 2'h3 : 2'h0; // @[axi4_to_ahb.scala 143:20] + wire [2:0] master_opc = {{1'd0}, _T_17}; // @[axi4_to_ahb.scala 143:14] + wire _T_49 = master_opc[2:1] == 2'h1; // @[axi4_to_ahb.scala 163:41] + wire _GEN_9 = _T_279 & _T_49; // @[Conditional.scala 39:67] + wire _GEN_30 = _T_186 ? 1'h0 : _GEN_9; // @[Conditional.scala 39:67] + wire _GEN_47 = _T_184 ? 1'h0 : _GEN_30; // @[Conditional.scala 39:67] + wire _GEN_64 = _T_173 ? 1'h0 : _GEN_47; // @[Conditional.scala 39:67] + wire _GEN_82 = _T_134 ? 1'h0 : _GEN_64; // @[Conditional.scala 39:67] + wire _GEN_98 = _T_99 ? 1'h0 : _GEN_82; // @[Conditional.scala 39:67] + wire buf_write_in = _T_47 ? _T_49 : _GEN_98; // @[Conditional.scala 40:58] + wire [2:0] _T_51 = buf_write_in ? 3'h2 : 3'h1; // @[axi4_to_ahb.scala 164:26] + wire _T_101 = master_opc == 3'h0; // @[axi4_to_ahb.scala 177:61] + wire _T_102 = master_valid & _T_101; // @[axi4_to_ahb.scala 177:41] + wire [2:0] _T_104 = _T_102 ? 3'h6 : 3'h3; // @[axi4_to_ahb.scala 177:26] + wire _T_122 = _T_104 == 3'h6; // @[axi4_to_ahb.scala 181:174] + wire _T_123 = _T_109 & _T_122; // @[axi4_to_ahb.scala 181:88] + wire _T_135 = ~ahb_hresp_q; // @[axi4_to_ahb.scala 189:39] + wire _T_136 = ahb_hready_q & _T_135; // @[axi4_to_ahb.scala 189:37] + wire _T_139 = master_valid & _T_49; // @[axi4_to_ahb.scala 189:70] + wire _T_140 = ~_T_139; // @[axi4_to_ahb.scala 189:55] + wire _T_141 = _T_136 & _T_140; // @[axi4_to_ahb.scala 189:53] + wire _T_283 = buf_state_en & _T_135; // @[axi4_to_ahb.scala 235:36] + wire _T_284 = _T_283 & slave_ready; // @[axi4_to_ahb.scala 235:51] + wire _GEN_5 = _T_279 & _T_284; // @[Conditional.scala 39:67] + wire _GEN_27 = _T_186 ? 1'h0 : _GEN_5; // @[Conditional.scala 39:67] + wire _GEN_46 = _T_184 ? 1'h0 : _GEN_27; // @[Conditional.scala 39:67] + wire _GEN_63 = _T_173 ? 1'h0 : _GEN_46; // @[Conditional.scala 39:67] + wire _GEN_67 = _T_134 ? _T_141 : _GEN_63; // @[Conditional.scala 39:67] + wire _GEN_87 = _T_99 ? _T_123 : _GEN_67; // @[Conditional.scala 39:67] + wire master_ready = _T_47 | _GEN_87; // @[Conditional.scala 40:58] + wire _T_147 = master_valid & master_ready; // @[axi4_to_ahb.scala 191:82] + wire _T_150 = _T_147 & _T_101; // @[axi4_to_ahb.scala 191:97] + wire [2:0] _T_152 = _T_150 ? 3'h6 : 3'h3; // @[axi4_to_ahb.scala 191:67] + wire [2:0] _T_153 = ahb_hresp_q ? 3'h7 : _T_152; // @[axi4_to_ahb.scala 191:26] + wire _T_285 = ~slave_ready; // @[axi4_to_ahb.scala 236:42] + wire _T_286 = ahb_hresp_q | _T_285; // @[axi4_to_ahb.scala 236:40] + wire [2:0] _T_291 = _T_49 ? 3'h2 : 3'h1; // @[axi4_to_ahb.scala 236:101] + wire [2:0] _T_292 = master_valid ? _T_291 : 3'h0; // @[axi4_to_ahb.scala 236:66] + wire [2:0] _T_293 = _T_286 ? 3'h5 : _T_292; // @[axi4_to_ahb.scala 236:26] + wire [2:0] _GEN_6 = _T_279 ? _T_293 : 3'h0; // @[Conditional.scala 39:67] + wire [2:0] _GEN_19 = _T_186 ? 3'h4 : _GEN_6; // @[Conditional.scala 39:67] + wire [2:0] _GEN_35 = _T_184 ? 3'h5 : _GEN_19; // @[Conditional.scala 39:67] + wire [2:0] _GEN_51 = _T_173 ? 3'h3 : _GEN_35; // @[Conditional.scala 39:67] + wire [2:0] _GEN_69 = _T_134 ? _T_153 : _GEN_51; // @[Conditional.scala 39:67] + wire [2:0] _GEN_83 = _T_99 ? _T_104 : _GEN_69; // @[Conditional.scala 39:67] + wire [2:0] buf_nxtstate = _T_47 ? _T_51 : _GEN_83; // @[Conditional.scala 40:58] + wire [2:0] _GEN_141 = {{2'd0}, _T_4}; // @[lib.scala 391:53] + wire [2:0] _T_5 = buf_nxtstate & _GEN_141; // @[lib.scala 391:53] + wire _T_6 = buf_state_en | dec_tlu_force_halt_bus; // @[lib.scala 391:95] + wire _T_7 = _T_6 & io_bus_clk_en; // @[lib.scala 391:102] + reg wrbuf_tag; // @[Reg.scala 27:20] + reg [31:0] wrbuf_addr; // @[Reg.scala 27:20] + wire [31:0] master_addr = wr_cmd_vld ? wrbuf_addr : io_axi_ar_bits_addr; // @[axi4_to_ahb.scala 144:21] + reg [2:0] wrbuf_size; // @[Reg.scala 27:20] + wire [2:0] master_size = wr_cmd_vld ? wrbuf_size : io_axi_ar_bits_size; // @[axi4_to_ahb.scala 145:21] + reg [7:0] wrbuf_byteen; // @[Reg.scala 27:20] + reg [63:0] wrbuf_data; // @[Reg.scala 27:20] + wire _T_356 = buf_nxtstate != 3'h5; // @[axi4_to_ahb.scala 246:55] + wire _T_357 = buf_state_en & _T_356; // @[axi4_to_ahb.scala 246:39] + wire _GEN_15 = _T_279 ? _T_357 : _T_438; // @[Conditional.scala 39:67] + wire _GEN_34 = _T_186 ? 1'h0 : _GEN_15; // @[Conditional.scala 39:67] + wire _GEN_50 = _T_184 ? 1'h0 : _GEN_34; // @[Conditional.scala 39:67] + wire _GEN_53 = _T_173 ? buf_state_en : _GEN_50; // @[Conditional.scala 39:67] + wire _GEN_74 = _T_134 ? _T_283 : _GEN_53; // @[Conditional.scala 39:67] + wire _GEN_95 = _T_99 ? 1'h0 : _GEN_74; // @[Conditional.scala 39:67] + wire slave_valid_pre = _T_47 ? 1'h0 : _GEN_95; // @[Conditional.scala 40:58] + wire _T_28 = slave_valid_pre & slave_ready; // @[axi4_to_ahb.scala 150:33] + reg slvbuf_write; // @[Reg.scala 27:20] + wire [1:0] _T_595 = slvbuf_write ? 2'h3 : 2'h0; // @[axi4_to_ahb.scala 280:23] + reg slvbuf_error; // @[Reg.scala 27:20] + wire [1:0] _T_597 = slvbuf_error ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire [1:0] _T_598 = _T_597 & 2'h2; // @[axi4_to_ahb.scala 280:88] + wire [3:0] slave_opc = {_T_595,_T_598}; // @[Cat.scala 29:58] + wire [1:0] _T_33 = slave_opc[1] ? 2'h3 : 2'h0; // @[axi4_to_ahb.scala 151:55] + reg slvbuf_tag; // @[Reg.scala 27:20] + wire _T_38 = slave_opc[3:2] == 2'h0; // @[axi4_to_ahb.scala 154:66] + reg [31:0] last_bus_addr; // @[Reg.scala 27:20] + wire [63:0] _T_602 = {last_bus_addr,last_bus_addr}; // @[Cat.scala 29:58] + wire _T_603 = buf_state == 3'h5; // @[axi4_to_ahb.scala 281:91] + reg [63:0] buf_data; // @[Reg.scala 27:20] + reg [63:0] ahb_hrdata_q; // @[Reg.scala 27:20] + wire [63:0] _T_606 = _T_603 ? buf_data : ahb_hrdata_q; // @[axi4_to_ahb.scala 281:79] + wire _T_53 = buf_nxtstate == 3'h2; // @[axi4_to_ahb.scala 167:54] + wire _T_54 = buf_state_en & _T_53; // @[axi4_to_ahb.scala 167:38] + wire [2:0] _T_85 = wrbuf_byteen[6] ? 3'h6 : 3'h7; // @[Mux.scala 98:16] + wire [2:0] _T_86 = wrbuf_byteen[5] ? 3'h5 : _T_85; // @[Mux.scala 98:16] + wire [2:0] _T_87 = wrbuf_byteen[4] ? 3'h4 : _T_86; // @[Mux.scala 98:16] + wire [2:0] _T_88 = wrbuf_byteen[3] ? 3'h3 : _T_87; // @[Mux.scala 98:16] + wire [2:0] _T_89 = wrbuf_byteen[2] ? 3'h2 : _T_88; // @[Mux.scala 98:16] + wire [2:0] _T_90 = wrbuf_byteen[1] ? 3'h1 : _T_89; // @[Mux.scala 98:16] + wire [2:0] _T_91 = wrbuf_byteen[0] ? 3'h0 : _T_90; // @[Mux.scala 98:16] + wire [2:0] _T_93 = buf_write_in ? _T_91 : master_addr[2:0]; // @[axi4_to_ahb.scala 170:30] + wire _T_94 = buf_nxtstate == 3'h1; // @[axi4_to_ahb.scala 172:51] + wire _T_124 = master_ready & master_valid; // @[axi4_to_ahb.scala 183:33] + wire _T_160 = buf_nxtstate == 3'h6; // @[axi4_to_ahb.scala 198:64] + wire _T_161 = _T_124 & _T_160; // @[axi4_to_ahb.scala 198:48] + wire _T_162 = _T_161 & buf_state_en; // @[axi4_to_ahb.scala 198:79] + wire _T_347 = buf_state_en & buf_write_in; // @[axi4_to_ahb.scala 244:33] + wire _T_349 = _T_347 & _T_53; // @[axi4_to_ahb.scala 244:48] + wire _GEN_13 = _T_279 & _T_349; // @[Conditional.scala 39:67] + wire _GEN_33 = _T_186 ? 1'h0 : _GEN_13; // @[Conditional.scala 39:67] + wire _GEN_49 = _T_184 ? 1'h0 : _GEN_33; // @[Conditional.scala 39:67] + wire _GEN_66 = _T_173 ? 1'h0 : _GEN_49; // @[Conditional.scala 39:67] + wire _GEN_76 = _T_134 ? _T_162 : _GEN_66; // @[Conditional.scala 39:67] + wire _GEN_89 = _T_99 ? _T_124 : _GEN_76; // @[Conditional.scala 39:67] + wire bypass_en = _T_47 ? buf_state_en : _GEN_89; // @[Conditional.scala 40:58] + wire [1:0] _T_97 = bypass_en ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire [1:0] _T_98 = _T_97 & 2'h2; // @[axi4_to_ahb.scala 173:49] + wire _T_110 = ~master_valid; // @[axi4_to_ahb.scala 179:34] + wire _T_111 = buf_state_en & _T_110; // @[axi4_to_ahb.scala 179:32] + reg [31:0] buf_addr; // @[Reg.scala 27:20] + wire [2:0] _T_128 = bypass_en ? master_addr[2:0] : buf_addr[2:0]; // @[axi4_to_ahb.scala 184:30] + wire _T_129 = ~buf_state_en; // @[axi4_to_ahb.scala 185:48] + wire _T_130 = _T_129 | bypass_en; // @[axi4_to_ahb.scala 185:62] + wire [1:0] _T_132 = _T_130 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire [1:0] _T_133 = 2'h2 & _T_132; // @[axi4_to_ahb.scala 185:36] + wire _T_167 = buf_nxtstate != 3'h6; // @[axi4_to_ahb.scala 200:63] + wire _T_168 = _T_167 & buf_state_en; // @[axi4_to_ahb.scala 200:78] + wire _T_169 = ~_T_168; // @[axi4_to_ahb.scala 200:47] + wire [1:0] _T_171 = _T_169 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire [1:0] _T_172 = 2'h2 & _T_171; // @[axi4_to_ahb.scala 200:36] + wire [1:0] _T_182 = _T_129 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire [1:0] _T_183 = 2'h2 & _T_182; // @[axi4_to_ahb.scala 210:41] + reg [2:0] buf_cmd_byte_ptrQ; // @[Reg.scala 27:20] + reg [7:0] buf_byteen; // @[Reg.scala 27:20] + wire [2:0] _T_195 = buf_cmd_byte_ptrQ + 3'h1; // @[axi4_to_ahb.scala 136:52] + wire _T_198 = 3'h0 >= _T_195; // @[axi4_to_ahb.scala 137:62] + wire _T_199 = buf_byteen[0] & _T_198; // @[axi4_to_ahb.scala 137:48] + wire _T_201 = 3'h1 >= _T_195; // @[axi4_to_ahb.scala 137:62] + wire _T_202 = buf_byteen[1] & _T_201; // @[axi4_to_ahb.scala 137:48] + wire _T_204 = 3'h2 >= _T_195; // @[axi4_to_ahb.scala 137:62] + wire _T_205 = buf_byteen[2] & _T_204; // @[axi4_to_ahb.scala 137:48] + wire _T_207 = 3'h3 >= _T_195; // @[axi4_to_ahb.scala 137:62] + wire _T_208 = buf_byteen[3] & _T_207; // @[axi4_to_ahb.scala 137:48] + wire _T_210 = 3'h4 >= _T_195; // @[axi4_to_ahb.scala 137:62] + wire _T_211 = buf_byteen[4] & _T_210; // @[axi4_to_ahb.scala 137:48] + wire _T_213 = 3'h5 >= _T_195; // @[axi4_to_ahb.scala 137:62] + wire _T_214 = buf_byteen[5] & _T_213; // @[axi4_to_ahb.scala 137:48] + wire _T_216 = 3'h6 >= _T_195; // @[axi4_to_ahb.scala 137:62] + wire _T_217 = buf_byteen[6] & _T_216; // @[axi4_to_ahb.scala 137:48] + wire [2:0] _T_222 = _T_217 ? 3'h6 : 3'h7; // @[Mux.scala 98:16] + wire [2:0] _T_223 = _T_214 ? 3'h5 : _T_222; // @[Mux.scala 98:16] + wire [2:0] _T_224 = _T_211 ? 3'h4 : _T_223; // @[Mux.scala 98:16] + wire [2:0] _T_225 = _T_208 ? 3'h3 : _T_224; // @[Mux.scala 98:16] + wire [2:0] _T_226 = _T_205 ? 3'h2 : _T_225; // @[Mux.scala 98:16] + wire [2:0] _T_227 = _T_202 ? 3'h1 : _T_226; // @[Mux.scala 98:16] + wire [2:0] _T_228 = _T_199 ? 3'h0 : _T_227; // @[Mux.scala 98:16] + wire [2:0] _T_229 = trxn_done ? _T_228 : buf_cmd_byte_ptrQ; // @[axi4_to_ahb.scala 228:30] + wire _T_230 = buf_cmd_byte_ptrQ == 3'h7; // @[axi4_to_ahb.scala 229:65] + reg buf_aligned; // @[Reg.scala 27:20] + wire _T_231 = buf_aligned | _T_230; // @[axi4_to_ahb.scala 229:44] + wire [7:0] _T_269 = buf_byteen >> _T_228; // @[axi4_to_ahb.scala 229:92] + wire _T_271 = ~_T_269[0]; // @[axi4_to_ahb.scala 229:163] + wire _T_272 = _T_231 | _T_271; // @[axi4_to_ahb.scala 229:79] + wire _T_273 = trxn_done & _T_272; // @[axi4_to_ahb.scala 229:29] + wire _T_344 = _T_230 | _T_271; // @[axi4_to_ahb.scala 243:38] + wire _T_345 = _T_107 & _T_344; // @[axi4_to_ahb.scala 242:79] + wire _T_346 = ahb_hresp_q | _T_345; // @[axi4_to_ahb.scala 242:32] + wire _GEN_12 = _T_279 & _T_346; // @[Conditional.scala 39:67] + wire _GEN_25 = _T_186 ? _T_273 : _GEN_12; // @[Conditional.scala 39:67] + wire _GEN_44 = _T_184 ? 1'h0 : _GEN_25; // @[Conditional.scala 39:67] + wire _GEN_62 = _T_173 ? 1'h0 : _GEN_44; // @[Conditional.scala 39:67] + wire _GEN_75 = _T_134 ? _T_111 : _GEN_62; // @[Conditional.scala 39:67] + wire _GEN_85 = _T_99 ? _T_111 : _GEN_75; // @[Conditional.scala 39:67] + wire cmd_done = _T_47 ? 1'h0 : _GEN_85; // @[Conditional.scala 40:58] + wire _T_274 = cmd_done | cmd_doneQ; // @[axi4_to_ahb.scala 230:47] + wire _T_275 = ~_T_274; // @[axi4_to_ahb.scala 230:36] + wire [1:0] _T_277 = _T_275 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire [1:0] _T_278 = _T_277 & 2'h2; // @[axi4_to_ahb.scala 230:61] + wire _T_298 = _T_53 | _T_94; // @[axi4_to_ahb.scala 240:62] + wire _T_299 = buf_state_en & _T_298; // @[axi4_to_ahb.scala 240:33] + wire _T_352 = _T_275 | bypass_en; // @[axi4_to_ahb.scala 245:61] + wire [1:0] _T_354 = _T_352 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire [1:0] _T_355 = _T_354 & 2'h2; // @[axi4_to_ahb.scala 245:75] + wire _T_362 = trxn_done | bypass_en; // @[axi4_to_ahb.scala 248:40] + wire [2:0] _T_437 = bypass_en ? _T_91 : _T_229; // @[axi4_to_ahb.scala 249:30] + wire _GEN_7 = _T_279 & ahb_hresp_q; // @[Conditional.scala 39:67] + wire _GEN_8 = _T_279 ? buf_state_en : _T_438; // @[Conditional.scala 39:67] + wire _GEN_10 = _T_279 & _T_299; // @[Conditional.scala 39:67] + wire _GEN_31 = _T_186 ? 1'h0 : _GEN_10; // @[Conditional.scala 39:67] + wire _GEN_48 = _T_184 ? 1'h0 : _GEN_31; // @[Conditional.scala 39:67] + wire _GEN_65 = _T_173 ? 1'h0 : _GEN_48; // @[Conditional.scala 39:67] + wire _GEN_68 = _T_134 ? _T_150 : _GEN_65; // @[Conditional.scala 39:67] + wire _GEN_88 = _T_99 ? master_ready : _GEN_68; // @[Conditional.scala 39:67] + wire buf_wr_en = _T_47 ? buf_state_en : _GEN_88; // @[Conditional.scala 40:58] + wire _GEN_11 = _T_279 & buf_wr_en; // @[Conditional.scala 39:67] + wire [1:0] _GEN_14 = _T_279 ? _T_355 : 2'h0; // @[Conditional.scala 39:67] + wire _GEN_17 = _T_279 & _T_362; // @[Conditional.scala 39:67] + wire [2:0] _GEN_18 = _T_279 ? _T_437 : 3'h0; // @[Conditional.scala 39:67] + wire _GEN_22 = _T_186 ? buf_state_en : _GEN_17; // @[Conditional.scala 39:67] + wire _GEN_23 = _T_186 & buf_state_en; // @[Conditional.scala 39:67] + wire [2:0] _GEN_24 = _T_186 ? _T_229 : _GEN_18; // @[Conditional.scala 39:67] + wire [1:0] _GEN_26 = _T_186 ? _T_278 : _GEN_14; // @[Conditional.scala 39:67] + wire _GEN_29 = _T_186 ? 1'h0 : _GEN_8; // @[Conditional.scala 39:67] + wire _GEN_32 = _T_186 ? 1'h0 : _GEN_11; // @[Conditional.scala 39:67] + wire _GEN_37 = _T_184 ? buf_state_en : _GEN_32; // @[Conditional.scala 39:67] + wire _GEN_39 = _T_184 ? buf_state_en : _GEN_29; // @[Conditional.scala 39:67] + wire _GEN_40 = _T_184 ? buf_state_en : _GEN_23; // @[Conditional.scala 39:67] + wire _GEN_42 = _T_184 ? 1'h0 : _GEN_22; // @[Conditional.scala 39:67] + wire [2:0] _GEN_43 = _T_184 ? 3'h0 : _GEN_24; // @[Conditional.scala 39:67] + wire [1:0] _GEN_45 = _T_184 ? 2'h0 : _GEN_26; // @[Conditional.scala 39:67] + wire _GEN_54 = _T_173 ? buf_state_en : _GEN_40; // @[Conditional.scala 39:67] + wire [2:0] _GEN_55 = _T_173 ? buf_addr[2:0] : _GEN_43; // @[Conditional.scala 39:67] + wire [1:0] _GEN_56 = _T_173 ? _T_183 : _GEN_45; // @[Conditional.scala 39:67] + wire _GEN_57 = _T_173 ? 1'h0 : _GEN_37; // @[Conditional.scala 39:67] + wire _GEN_59 = _T_173 ? 1'h0 : _GEN_39; // @[Conditional.scala 39:67] + wire _GEN_61 = _T_173 ? 1'h0 : _GEN_42; // @[Conditional.scala 39:67] + wire _GEN_71 = _T_134 ? buf_state_en : _GEN_57; // @[Conditional.scala 39:67] + wire _GEN_73 = _T_134 ? buf_state_en : _GEN_59; // @[Conditional.scala 39:67] + wire [2:0] _GEN_77 = _T_134 ? _T_128 : _GEN_55; // @[Conditional.scala 39:67] + wire [1:0] _GEN_78 = _T_134 ? _T_172 : _GEN_56; // @[Conditional.scala 39:67] + wire _GEN_79 = _T_134 ? buf_wr_en : _GEN_54; // @[Conditional.scala 39:67] + wire _GEN_81 = _T_134 ? 1'h0 : _GEN_61; // @[Conditional.scala 39:67] + wire _GEN_86 = _T_99 ? buf_state_en : _GEN_79; // @[Conditional.scala 39:67] + wire [2:0] _GEN_90 = _T_99 ? _T_128 : _GEN_77; // @[Conditional.scala 39:67] + wire [1:0] _GEN_91 = _T_99 ? _T_133 : _GEN_78; // @[Conditional.scala 39:67] + wire _GEN_92 = _T_99 ? 1'h0 : _GEN_71; // @[Conditional.scala 39:67] + wire _GEN_94 = _T_99 ? 1'h0 : _GEN_73; // @[Conditional.scala 39:67] + wire _GEN_97 = _T_99 ? 1'h0 : _GEN_81; // @[Conditional.scala 39:67] + wire buf_data_wr_en = _T_47 ? _T_54 : _GEN_92; // @[Conditional.scala 40:58] + wire buf_cmd_byte_ptr_en = _T_47 ? buf_state_en : _GEN_97; // @[Conditional.scala 40:58] + wire [2:0] buf_cmd_byte_ptr = _T_47 ? _T_93 : _GEN_90; // @[Conditional.scala 40:58] + wire slvbuf_wr_en = _T_47 ? 1'h0 : _GEN_86; // @[Conditional.scala 40:58] + wire slvbuf_error_en = _T_47 ? 1'h0 : _GEN_94; // @[Conditional.scala 40:58] + wire _T_533 = master_size[1:0] == 2'h0; // @[axi4_to_ahb.scala 266:24] + wire _T_534 = _T_101 | _T_533; // @[axi4_to_ahb.scala 265:48] + wire _T_536 = master_size[1:0] == 2'h1; // @[axi4_to_ahb.scala 266:54] + wire _T_537 = _T_534 | _T_536; // @[axi4_to_ahb.scala 266:33] + wire _T_539 = master_size[1:0] == 2'h2; // @[axi4_to_ahb.scala 266:93] + wire _T_540 = _T_537 | _T_539; // @[axi4_to_ahb.scala 266:72] + wire _T_542 = master_size[1:0] == 2'h3; // @[axi4_to_ahb.scala 267:25] + wire _T_544 = wrbuf_byteen == 8'h3; // @[axi4_to_ahb.scala 267:62] + wire _T_546 = wrbuf_byteen == 8'hc; // @[axi4_to_ahb.scala 267:97] + wire _T_547 = _T_544 | _T_546; // @[axi4_to_ahb.scala 267:74] + wire _T_549 = wrbuf_byteen == 8'h30; // @[axi4_to_ahb.scala 267:132] + wire _T_550 = _T_547 | _T_549; // @[axi4_to_ahb.scala 267:109] + wire _T_552 = wrbuf_byteen == 8'hc0; // @[axi4_to_ahb.scala 267:168] + wire _T_553 = _T_550 | _T_552; // @[axi4_to_ahb.scala 267:145] + wire _T_555 = wrbuf_byteen == 8'hf; // @[axi4_to_ahb.scala 268:28] + wire _T_556 = _T_553 | _T_555; // @[axi4_to_ahb.scala 267:181] + wire _T_558 = wrbuf_byteen == 8'hf0; // @[axi4_to_ahb.scala 268:63] + wire _T_559 = _T_556 | _T_558; // @[axi4_to_ahb.scala 268:40] + wire _T_561 = wrbuf_byteen == 8'hff; // @[axi4_to_ahb.scala 268:99] + wire _T_562 = _T_559 | _T_561; // @[axi4_to_ahb.scala 268:76] + wire _T_563 = _T_542 & _T_562; // @[axi4_to_ahb.scala 267:38] + wire buf_aligned_in = _T_540 | _T_563; // @[axi4_to_ahb.scala 266:106] + wire _T_442 = buf_aligned_in & _T_49; // @[axi4_to_ahb.scala 260:62] + wire [2:0] _T_459 = _T_546 ? 3'h7 : 3'h0; // @[Bitwise.scala 72:12] + wire [2:0] _T_460 = 3'h2 & _T_459; // @[axi4_to_ahb.scala 128:15] + wire _T_466 = _T_558 | _T_544; // @[axi4_to_ahb.scala 129:56] + wire [2:0] _T_468 = _T_466 ? 3'h7 : 3'h0; // @[Bitwise.scala 72:12] + wire [2:0] _T_469 = 3'h4 & _T_468; // @[axi4_to_ahb.scala 129:15] + wire [2:0] _T_470 = _T_460 | _T_469; // @[axi4_to_ahb.scala 128:63] + wire [2:0] _T_474 = _T_552 ? 3'h7 : 3'h0; // @[Bitwise.scala 72:12] + wire [2:0] _T_475 = 3'h6 & _T_474; // @[axi4_to_ahb.scala 130:15] + wire [2:0] _T_476 = _T_470 | _T_475; // @[axi4_to_ahb.scala 129:96] + wire [2:0] _T_483 = _T_442 ? _T_476 : master_addr[2:0]; // @[axi4_to_ahb.scala 260:45] + wire [31:0] buf_addr_in = {master_addr[31:3],_T_483}; // @[Cat.scala 29:58] + wire _T_487 = buf_state == 3'h3; // @[axi4_to_ahb.scala 263:33] + wire _T_493 = buf_aligned_in & _T_542; // @[axi4_to_ahb.scala 264:38] + wire _T_496 = _T_493 & _T_49; // @[axi4_to_ahb.scala 264:72] + wire [1:0] _T_502 = _T_561 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire _T_508 = _T_558 | _T_555; // @[axi4_to_ahb.scala 121:55] + wire [1:0] _T_510 = _T_508 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire [1:0] _T_511 = 2'h2 & _T_510; // @[axi4_to_ahb.scala 121:16] + wire [1:0] _T_512 = _T_502 | _T_511; // @[axi4_to_ahb.scala 120:64] + wire _T_517 = _T_552 | _T_549; // @[axi4_to_ahb.scala 122:60] + wire _T_520 = _T_517 | _T_546; // @[axi4_to_ahb.scala 122:89] + wire _T_523 = _T_520 | _T_544; // @[axi4_to_ahb.scala 122:123] + wire [1:0] _T_525 = _T_523 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire [1:0] _T_526 = 2'h1 & _T_525; // @[axi4_to_ahb.scala 122:21] + wire [1:0] _T_527 = _T_512 | _T_526; // @[axi4_to_ahb.scala 121:93] + wire [1:0] _T_529 = _T_496 ? _T_527 : master_size[1:0]; // @[axi4_to_ahb.scala 264:21] + wire [28:0] _T_568 = bypass_en ? master_addr[31:3] : buf_addr[31:3]; // @[axi4_to_ahb.scala 270:30] + wire _T_569 = io_ahb_out_htrans == 2'h2; // @[axi4_to_ahb.scala 270:115] + wire [2:0] _T_571 = _T_569 ? 3'h7 : 3'h0; // @[Bitwise.scala 72:12] + wire [2:0] _T_572 = _T_571 & buf_cmd_byte_ptr; // @[axi4_to_ahb.scala 270:124] + wire [1:0] _T_576 = buf_aligned_in ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire [2:0] buf_size_in = {{1'd0}, _T_529}; // @[axi4_to_ahb.scala 264:15] + wire [1:0] _T_578 = _T_576 & buf_size_in[1:0]; // @[axi4_to_ahb.scala 271:81] + wire [2:0] _T_579 = {1'h0,_T_578}; // @[Cat.scala 29:58] + wire [1:0] _T_581 = buf_aligned ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + reg [1:0] buf_size; // @[Reg.scala 27:20] + wire [1:0] _T_583 = _T_581 & buf_size; // @[axi4_to_ahb.scala 271:138] + wire [2:0] _T_584 = {1'h0,_T_583}; // @[Cat.scala 29:58] + wire _T_587 = ~io_axi_ar_bits_prot[2]; // @[axi4_to_ahb.scala 275:37] + wire [1:0] _T_588 = {1'h1,_T_587}; // @[Cat.scala 29:58] + reg buf_write; // @[Reg.scala 27:20] + wire _T_610 = io_ahb_out_htrans != 2'h0; // @[axi4_to_ahb.scala 284:44] + wire _T_611 = _T_610 & io_ahb_in_hready; // @[axi4_to_ahb.scala 284:56] + wire last_addr_en = _T_611 & io_ahb_out_hwrite; // @[axi4_to_ahb.scala 284:75] + wire _T_613 = io_axi_aw_valid & io_axi_aw_ready; // @[axi4_to_ahb.scala 286:31] + wire wrbuf_en = _T_613 & master_ready; // @[axi4_to_ahb.scala 286:49] + wire _T_615 = io_axi_w_valid & io_axi_w_ready; // @[axi4_to_ahb.scala 287:35] + wire wrbuf_data_en = _T_615 & master_ready; // @[axi4_to_ahb.scala 287:52] + wire wrbuf_cmd_sent = _T_147 & _T_49; // @[axi4_to_ahb.scala 288:49] + wire _T_621 = ~wrbuf_en; // @[axi4_to_ahb.scala 289:34] + wire _T_622 = wrbuf_cmd_sent & _T_621; // @[axi4_to_ahb.scala 289:32] + wire wrbuf_rst = _T_622 | dec_tlu_force_halt_bus; // @[axi4_to_ahb.scala 289:45] + wire _T_624 = ~wrbuf_cmd_sent; // @[axi4_to_ahb.scala 291:36] + wire _T_625 = wrbuf_vld & _T_624; // @[axi4_to_ahb.scala 291:34] + wire _T_626 = ~_T_625; // @[axi4_to_ahb.scala 291:22] + wire _T_629 = wrbuf_data_vld & _T_624; // @[axi4_to_ahb.scala 292:38] + wire _T_630 = ~_T_629; // @[axi4_to_ahb.scala 292:21] + wire _T_633 = ~wr_cmd_vld; // @[axi4_to_ahb.scala 293:22] + wire _T_637 = ~wrbuf_rst; // @[lib.scala 391:75] + wire _T_639 = wrbuf_en | wrbuf_rst; // @[lib.scala 391:95] + wire _T_640 = _T_639 & io_bus_clk_en; // @[lib.scala 391:102] + wire _T_647 = wrbuf_data_en | wrbuf_rst; // @[lib.scala 391:95] + wire _T_648 = _T_647 & io_bus_clk_en; // @[lib.scala 391:102] + wire _T_653 = io_bus_clk_en & wrbuf_en; // @[lib.scala 383:57] + wire _T_660 = wrbuf_en & io_bus_clk_en; // @[axi4_to_ahb.scala 300:61] + wire _T_663 = wrbuf_data_en & io_bus_clk_en; // @[axi4_to_ahb.scala 301:65] + wire _T_667 = io_bus_clk_en & wrbuf_data_en; // @[lib.scala 383:57] + wire _T_671 = io_bus_clk_en & last_addr_en; // @[lib.scala 383:57] + wire _T_728 = buf_wr_en | slvbuf_wr_en; // @[axi4_to_ahb.scala 321:43] + wire _T_729 = _T_728 | io_clk_override; // @[axi4_to_ahb.scala 321:58] + wire buf_clken = io_bus_clk_en & _T_729; // @[axi4_to_ahb.scala 321:30] + wire _T_674 = buf_clken & buf_wr_en; // @[lib.scala 383:57] + reg buf_tag; // @[Reg.scala 27:20] + wire _T_681 = buf_wr_en & io_bus_clk_en; // @[axi4_to_ahb.scala 306:53] + wire _T_696 = buf_data_wr_en & io_bus_clk_en; // @[axi4_to_ahb.scala 310:58] + wire _T_700 = buf_clken & slvbuf_wr_en; // @[lib.scala 383:57] + wire _T_707 = buf_clken & slvbuf_error_en; // @[lib.scala 383:57] + wire _T_711 = ~slave_valid_pre; // @[lib.scala 391:75] + wire _T_713 = cmd_done | slave_valid_pre; // @[lib.scala 391:95] + wire _T_714 = _T_713 & io_bus_clk_en; // @[lib.scala 391:102] + wire _T_719 = io_bus_clk_en & buf_cmd_byte_ptr_en; // @[lib.scala 383:57] + wire _T_731 = buf_state != 3'h0; // @[axi4_to_ahb.scala 322:50] + wire _T_732 = _T_731 | io_clk_override; // @[axi4_to_ahb.scala 322:60] + wire ahbm_data_clken = io_bus_clk_en & _T_732; // @[axi4_to_ahb.scala 322:36] + rvclkhdr rvclkhdr ( // @[lib.scala 399:23] + .io_clk(rvclkhdr_io_clk), + .io_en(rvclkhdr_io_en) + ); + rvclkhdr rvclkhdr_1 ( // @[lib.scala 399:23] + .io_clk(rvclkhdr_1_io_clk), + .io_en(rvclkhdr_1_io_en) + ); + rvclkhdr rvclkhdr_2 ( // @[lib.scala 399:23] + .io_clk(rvclkhdr_2_io_clk), + .io_en(rvclkhdr_2_io_en) + ); + rvclkhdr rvclkhdr_3 ( // @[lib.scala 399:23] + .io_clk(rvclkhdr_3_io_clk), + .io_en(rvclkhdr_3_io_en) + ); + assign io_axi_aw_ready = _T_626 & master_ready; // @[axi4_to_ahb.scala 291:19] + assign io_axi_w_ready = _T_630 & master_ready; // @[axi4_to_ahb.scala 292:18] + assign io_axi_b_valid = _T_28 & slave_opc[3]; // @[axi4_to_ahb.scala 150:18] + assign io_axi_b_bits_resp = slave_opc[0] ? 2'h2 : _T_33; // @[axi4_to_ahb.scala 151:22] + assign io_axi_b_bits_id = slvbuf_tag; // @[axi4_to_ahb.scala 152:20] + assign io_axi_ar_ready = _T_633 & master_ready; // @[axi4_to_ahb.scala 293:19] + assign io_axi_r_valid = _T_28 & _T_38; // @[axi4_to_ahb.scala 154:18] + assign io_axi_r_bits_id = slvbuf_tag; // @[axi4_to_ahb.scala 156:20] + assign io_axi_r_bits_data = slvbuf_error ? _T_602 : _T_606; // @[axi4_to_ahb.scala 157:22] + assign io_axi_r_bits_resp = slave_opc[0] ? 2'h2 : _T_33; // @[axi4_to_ahb.scala 155:22] + assign io_axi_r_bits_last = 1'h1; // @[axi4_to_ahb.scala 294:22] + assign io_ahb_out_haddr = {_T_568,_T_572}; // @[axi4_to_ahb.scala 270:20] + assign io_ahb_out_hburst = 3'h0; // @[axi4_to_ahb.scala 273:21] + assign io_ahb_out_hmastlock = 1'h0; // @[axi4_to_ahb.scala 274:24] + assign io_ahb_out_hprot = {{2'd0}, _T_588}; // @[axi4_to_ahb.scala 275:20] + assign io_ahb_out_hsize = bypass_en ? _T_579 : _T_584; // @[axi4_to_ahb.scala 271:20] + assign io_ahb_out_htrans = _T_47 ? _T_98 : _GEN_91; // @[axi4_to_ahb.scala 29:21 axi4_to_ahb.scala 173:25 axi4_to_ahb.scala 185:25 axi4_to_ahb.scala 200:25 axi4_to_ahb.scala 210:25 axi4_to_ahb.scala 230:25 axi4_to_ahb.scala 245:25] + assign io_ahb_out_hwrite = bypass_en ? _T_49 : buf_write; // @[axi4_to_ahb.scala 276:21] + assign io_ahb_out_hwdata = buf_data; // @[axi4_to_ahb.scala 277:21] + assign rvclkhdr_io_clk = clock; // @[lib.scala 401:18] + assign rvclkhdr_io_en = wrbuf_en & io_bus_clk_en; // @[lib.scala 402:17] + assign rvclkhdr_1_io_clk = clock; // @[lib.scala 401:18] + assign rvclkhdr_1_io_en = wrbuf_data_en & io_bus_clk_en; // @[lib.scala 402:17] + assign rvclkhdr_2_io_clk = clock; // @[lib.scala 401:18] + assign rvclkhdr_2_io_en = buf_wr_en & io_bus_clk_en; // @[lib.scala 402:17] + assign rvclkhdr_3_io_clk = clock; // @[lib.scala 401:18] + assign rvclkhdr_3_io_en = buf_data_wr_en & io_bus_clk_en; // @[lib.scala 402:17] +`ifdef RANDOMIZE_GARBAGE_ASSIGN +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_INVALID_ASSIGN +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_REG_INIT +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_MEM_INIT +`define RANDOMIZE +`endif +`ifndef RANDOM +`define RANDOM $random +`endif +`ifdef RANDOMIZE_MEM_INIT + integer initvar; +`endif +`ifndef SYNTHESIS +`ifdef FIRRTL_BEFORE_INITIAL +`FIRRTL_BEFORE_INITIAL +`endif +initial begin + `ifdef RANDOMIZE + `ifdef INIT_RANDOM + `INIT_RANDOM + `endif + `ifndef VERILATOR + `ifdef RANDOMIZE_DELAY + #`RANDOMIZE_DELAY begin end + `else + #0.002 begin end + `endif + `endif +`ifdef RANDOMIZE_REG_INIT + _RAND_0 = {1{`RANDOM}}; + dec_tlu_force_halt_bus_q = _RAND_0[0:0]; + _RAND_1 = {1{`RANDOM}}; + buf_state = _RAND_1[2:0]; + _RAND_2 = {1{`RANDOM}}; + wrbuf_vld = _RAND_2[0:0]; + _RAND_3 = {1{`RANDOM}}; + wrbuf_data_vld = _RAND_3[0:0]; + _RAND_4 = {1{`RANDOM}}; + ahb_hready_q = _RAND_4[0:0]; + _RAND_5 = {1{`RANDOM}}; + ahb_htrans_q = _RAND_5[1:0]; + _RAND_6 = {1{`RANDOM}}; + ahb_hwrite_q = _RAND_6[0:0]; + _RAND_7 = {1{`RANDOM}}; + ahb_hresp_q = _RAND_7[0:0]; + _RAND_8 = {1{`RANDOM}}; + cmd_doneQ = _RAND_8[0:0]; + _RAND_9 = {1{`RANDOM}}; + wrbuf_tag = _RAND_9[0:0]; + _RAND_10 = {1{`RANDOM}}; + wrbuf_addr = _RAND_10[31:0]; + _RAND_11 = {1{`RANDOM}}; + wrbuf_size = _RAND_11[2:0]; + _RAND_12 = {1{`RANDOM}}; + wrbuf_byteen = _RAND_12[7:0]; + _RAND_13 = {2{`RANDOM}}; + wrbuf_data = _RAND_13[63:0]; + _RAND_14 = {1{`RANDOM}}; + slvbuf_write = _RAND_14[0:0]; + _RAND_15 = {1{`RANDOM}}; + slvbuf_error = _RAND_15[0:0]; + _RAND_16 = {1{`RANDOM}}; + slvbuf_tag = _RAND_16[0:0]; + _RAND_17 = {1{`RANDOM}}; + last_bus_addr = _RAND_17[31:0]; + _RAND_18 = {2{`RANDOM}}; + buf_data = _RAND_18[63:0]; + _RAND_19 = {2{`RANDOM}}; + ahb_hrdata_q = _RAND_19[63:0]; + _RAND_20 = {1{`RANDOM}}; + buf_addr = _RAND_20[31:0]; + _RAND_21 = {1{`RANDOM}}; + buf_cmd_byte_ptrQ = _RAND_21[2:0]; + _RAND_22 = {1{`RANDOM}}; + buf_byteen = _RAND_22[7:0]; + _RAND_23 = {1{`RANDOM}}; + buf_aligned = _RAND_23[0:0]; + _RAND_24 = {1{`RANDOM}}; + buf_size = _RAND_24[1:0]; + _RAND_25 = {1{`RANDOM}}; + buf_write = _RAND_25[0:0]; + _RAND_26 = {1{`RANDOM}}; + buf_tag = _RAND_26[0:0]; +`endif // RANDOMIZE_REG_INIT + if (reset) begin + dec_tlu_force_halt_bus_q = 1'h0; + end + if (reset) begin + buf_state = 3'h0; + end + if (reset) begin + wrbuf_vld = 1'h0; + end + if (reset) begin + wrbuf_data_vld = 1'h0; + end + if (reset) begin + ahb_hready_q = 1'h0; + end + if (reset) begin + ahb_htrans_q = 2'h0; + end + if (reset) begin + ahb_hwrite_q = 1'h0; + end + if (reset) begin + ahb_hresp_q = 1'h0; + end + if (reset) begin + cmd_doneQ = 1'h0; + end + if (reset) begin + wrbuf_tag = 1'h0; + end + if (reset) begin + wrbuf_addr = 32'h0; + end + if (reset) begin + wrbuf_size = 3'h0; + end + if (reset) begin + wrbuf_byteen = 8'h0; + end + if (reset) begin + wrbuf_data = 64'h0; + end + if (reset) begin + slvbuf_write = 1'h0; + end + if (reset) begin + slvbuf_error = 1'h0; + end + if (reset) begin + slvbuf_tag = 1'h0; + end + if (reset) begin + last_bus_addr = 32'h0; + end + if (reset) begin + buf_data = 64'h0; + end + if (reset) begin + ahb_hrdata_q = 64'h0; + end + if (reset) begin + buf_addr = 32'h0; + end + if (reset) begin + buf_cmd_byte_ptrQ = 3'h0; + end + if (reset) begin + buf_byteen = 8'h0; + end + if (reset) begin + buf_aligned = 1'h0; + end + if (reset) begin + buf_size = 2'h0; + end + if (reset) begin + buf_write = 1'h0; + end + if (reset) begin + buf_tag = 1'h0; + end + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS + always @(posedge io_free_clk or posedge reset) begin + if (reset) begin + dec_tlu_force_halt_bus_q <= 1'h0; + end else begin + dec_tlu_force_halt_bus_q <= _T & dec_tlu_force_halt_bus; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + buf_state <= 3'h0; + end else if (_T_7) begin + buf_state <= _T_5; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + wrbuf_vld <= 1'h0; + end else if (_T_640) begin + wrbuf_vld <= _T_637; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + wrbuf_data_vld <= 1'h0; + end else if (_T_648) begin + wrbuf_data_vld <= _T_637; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + ahb_hready_q <= 1'h0; + end else if (io_bus_clk_en) begin + ahb_hready_q <= io_ahb_in_hready; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + ahb_htrans_q <= 2'h0; + end else if (io_bus_clk_en) begin + ahb_htrans_q <= io_ahb_out_htrans; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + ahb_hwrite_q <= 1'h0; + end else if (io_bus_clk_en) begin + ahb_hwrite_q <= io_ahb_out_hwrite; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + ahb_hresp_q <= 1'h0; + end else if (io_bus_clk_en) begin + ahb_hresp_q <= io_ahb_in_hresp; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + cmd_doneQ <= 1'h0; + end else if (_T_714) begin + cmd_doneQ <= _T_711; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + wrbuf_tag <= 1'h0; + end else if (_T_653) begin + wrbuf_tag <= io_axi_aw_bits_id; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + wrbuf_addr <= 32'h0; + end else if (_T_660) begin + wrbuf_addr <= io_axi_aw_bits_addr; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + wrbuf_size <= 3'h0; + end else if (_T_653) begin + wrbuf_size <= io_axi_aw_bits_size; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + wrbuf_byteen <= 8'h0; + end else if (_T_667) begin + wrbuf_byteen <= io_axi_w_bits_strb; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + wrbuf_data <= 64'h0; + end else if (_T_663) begin + wrbuf_data <= io_axi_w_bits_data; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + slvbuf_write <= 1'h0; + end else if (_T_700) begin + slvbuf_write <= buf_write; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + slvbuf_error <= 1'h0; + end else if (_T_707) begin + if (_T_47) begin + slvbuf_error <= 1'h0; + end else if (_T_99) begin + slvbuf_error <= 1'h0; + end else if (_T_134) begin + slvbuf_error <= ahb_hresp_q; + end else if (_T_173) begin + slvbuf_error <= 1'h0; + end else if (_T_184) begin + slvbuf_error <= ahb_hresp_q; + end else if (_T_186) begin + slvbuf_error <= 1'h0; + end else begin + slvbuf_error <= _GEN_7; + end + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + slvbuf_tag <= 1'h0; + end else if (_T_700) begin + slvbuf_tag <= buf_tag; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + last_bus_addr <= 32'h0; + end else if (_T_671) begin + last_bus_addr <= io_ahb_out_haddr; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + buf_data <= 64'h0; + end else if (_T_696) begin + if (_T_487) begin + buf_data <= ahb_hrdata_q; + end else begin + buf_data <= wrbuf_data; + end + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + ahb_hrdata_q <= 64'h0; + end else if (ahbm_data_clken) begin + ahb_hrdata_q <= io_ahb_in_hrdata; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + buf_addr <= 32'h0; + end else if (_T_681) begin + buf_addr <= buf_addr_in; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + buf_cmd_byte_ptrQ <= 3'h0; + end else if (_T_719) begin + if (_T_47) begin + if (buf_write_in) begin + if (wrbuf_byteen[0]) begin + buf_cmd_byte_ptrQ <= 3'h0; + end else if (wrbuf_byteen[1]) begin + buf_cmd_byte_ptrQ <= 3'h1; + end else if (wrbuf_byteen[2]) begin + buf_cmd_byte_ptrQ <= 3'h2; + end else if (wrbuf_byteen[3]) begin + buf_cmd_byte_ptrQ <= 3'h3; + end else if (wrbuf_byteen[4]) begin + buf_cmd_byte_ptrQ <= 3'h4; + end else if (wrbuf_byteen[5]) begin + buf_cmd_byte_ptrQ <= 3'h5; + end else if (wrbuf_byteen[6]) begin + buf_cmd_byte_ptrQ <= 3'h6; + end else begin + buf_cmd_byte_ptrQ <= 3'h7; + end + end else begin + buf_cmd_byte_ptrQ <= master_addr[2:0]; + end + end else if (_T_99) begin + if (bypass_en) begin + buf_cmd_byte_ptrQ <= master_addr[2:0]; + end else begin + buf_cmd_byte_ptrQ <= buf_addr[2:0]; + end + end else if (_T_134) begin + if (bypass_en) begin + buf_cmd_byte_ptrQ <= master_addr[2:0]; + end else begin + buf_cmd_byte_ptrQ <= buf_addr[2:0]; + end + end else if (_T_173) begin + buf_cmd_byte_ptrQ <= buf_addr[2:0]; + end else if (_T_184) begin + buf_cmd_byte_ptrQ <= 3'h0; + end else if (_T_186) begin + if (trxn_done) begin + if (_T_199) begin + buf_cmd_byte_ptrQ <= 3'h0; + end else if (_T_202) begin + buf_cmd_byte_ptrQ <= 3'h1; + end else if (_T_205) begin + buf_cmd_byte_ptrQ <= 3'h2; + end else if (_T_208) begin + buf_cmd_byte_ptrQ <= 3'h3; + end else if (_T_211) begin + buf_cmd_byte_ptrQ <= 3'h4; + end else if (_T_214) begin + buf_cmd_byte_ptrQ <= 3'h5; + end else if (_T_217) begin + buf_cmd_byte_ptrQ <= 3'h6; + end else begin + buf_cmd_byte_ptrQ <= 3'h7; + end + end + end else if (_T_279) begin + if (bypass_en) begin + if (wrbuf_byteen[0]) begin + buf_cmd_byte_ptrQ <= 3'h0; + end else if (wrbuf_byteen[1]) begin + buf_cmd_byte_ptrQ <= 3'h1; + end else if (wrbuf_byteen[2]) begin + buf_cmd_byte_ptrQ <= 3'h2; + end else if (wrbuf_byteen[3]) begin + buf_cmd_byte_ptrQ <= 3'h3; + end else if (wrbuf_byteen[4]) begin + buf_cmd_byte_ptrQ <= 3'h4; + end else if (wrbuf_byteen[5]) begin + buf_cmd_byte_ptrQ <= 3'h5; + end else if (wrbuf_byteen[6]) begin + buf_cmd_byte_ptrQ <= 3'h6; + end else begin + buf_cmd_byte_ptrQ <= 3'h7; + end + end else if (trxn_done) begin + if (_T_199) begin + buf_cmd_byte_ptrQ <= 3'h0; + end else if (_T_202) begin + buf_cmd_byte_ptrQ <= 3'h1; + end else if (_T_205) begin + buf_cmd_byte_ptrQ <= 3'h2; + end else if (_T_208) begin + buf_cmd_byte_ptrQ <= 3'h3; + end else if (_T_211) begin + buf_cmd_byte_ptrQ <= 3'h4; + end else if (_T_214) begin + buf_cmd_byte_ptrQ <= 3'h5; + end else if (_T_217) begin + buf_cmd_byte_ptrQ <= 3'h6; + end else begin + buf_cmd_byte_ptrQ <= 3'h7; + end + end + end else begin + buf_cmd_byte_ptrQ <= 3'h0; + end + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + buf_byteen <= 8'h0; + end else if (_T_674) begin + buf_byteen <= wrbuf_byteen; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + buf_aligned <= 1'h0; + end else if (_T_674) begin + buf_aligned <= buf_aligned_in; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + buf_size <= 2'h0; + end else if (_T_674) begin + buf_size <= buf_size_in[1:0]; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + buf_write <= 1'h0; + end else if (_T_674) begin + if (_T_47) begin + buf_write <= _T_49; + end else if (_T_99) begin + buf_write <= 1'h0; + end else if (_T_134) begin + buf_write <= 1'h0; + end else if (_T_173) begin + buf_write <= 1'h0; + end else if (_T_184) begin + buf_write <= 1'h0; + end else if (_T_186) begin + buf_write <= 1'h0; + end else begin + buf_write <= _GEN_9; + end + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + buf_tag <= 1'h0; + end else if (_T_674) begin + if (wr_cmd_vld) begin + buf_tag <= wrbuf_tag; + end else begin + buf_tag <= io_axi_ar_bits_id; + end + end + end +endmodule diff --git a/src/main/scala/lib/ahb_to_axi4.scala b/src/main/scala/lib/ahb_to_axi4.scala index cae0db0e..3ca3c5fe 100644 --- a/src/main/scala/lib/ahb_to_axi4.scala +++ b/src/main/scala/lib/ahb_to_axi4.scala @@ -157,7 +157,7 @@ class ahb_to_axi4(TAG : Int) extends Module with lib with RequireAsyncReset { io.axi.aw.bits.size := Cat("b0".U, cmdbuf_size(1, 0)) io.axi.aw.bits.prot := Fill(3, 0.U) io.axi.aw.bits.len := Fill(8, 0.U) - io.axi.aw.bits.burst := "b01".U + io.axi.aw.bits.burst := "b01".U(2.W) // AXI Write Data Channel - This is tied to the command channel as we only write the command buffer once we have the data. io.axi.w.valid := cmdbuf_vld & cmdbuf_write io.axi.w.bits.data := cmdbuf_wdata @@ -172,7 +172,7 @@ class ahb_to_axi4(TAG : Int) extends Module with lib with RequireAsyncReset { io.axi.ar.bits.size := Cat("b0".U, cmdbuf_size(1, 0)) io.axi.ar.bits.prot := Fill(3, 0.U) io.axi.ar.bits.len := Fill(8, 0.U) - io.axi.ar.bits.burst := "b01".U + io.axi.ar.bits.burst := "b01".U(2.W) // AXI Read Response Channel - Always ready as AHB reads are blocking and the the buffer is available for the read coming back always. io.axi.r.ready := true.B } diff --git a/src/main/scala/lib/axi4_to_ahb.scala b/src/main/scala/lib/axi4_to_ahb.scala index 3460c11f..3c4ae99a 100644 --- a/src/main/scala/lib/axi4_to_ahb.scala +++ b/src/main/scala/lib/axi4_to_ahb.scala @@ -6,9 +6,11 @@ import include._ class axi4_to_ahb_IO(val TAG : Int) extends Bundle { + val free_clk = Input(Clock()) val scan_mode = Input(Bool()) val bus_clk_en = Input(Bool()) val clk_override = Input(Bool()) + val dec_tlu_force_halt = Input(Bool()) // AXI-4 signals val axi = Flipped(new axi_channels(TAG)) // AHB-Lite signals @@ -17,17 +19,21 @@ class axi4_to_ahb_IO(val TAG : Int) extends Bundle { class axi4_to_ahb(val TAG : Int = 3) extends Module with lib with RequireAsyncReset { val io = IO(new axi4_to_ahb_IO(TAG)) + // Create bus synchronized version of force halt + val dec_tlu_force_halt_bus_q = WireInit(Bool(), init = false.B) + val dec_tlu_force_halt_bus = io.dec_tlu_force_halt | dec_tlu_force_halt_bus_q + val dec_tlu_force_halt_bus_ns = !io.bus_clk_en & dec_tlu_force_halt_bus + dec_tlu_force_halt_bus_q := withClock(io.free_clk) {RegNext(dec_tlu_force_halt_bus_ns, 0.U)} val buf_rst = WireInit(0.U(1.W)) - buf_rst :=0.U + buf_rst := dec_tlu_force_halt_bus io.ahb.out.htrans := 0.U val buf_state_en = WireInit(Bool(), init = false.B) - val ahbm_clk = Wire(Clock()) - val ahbm_addr_clk = Wire(Clock()) + val bus_clk = Wire(Clock()) val ahbm_data_clk = Wire(Clock()) val idle :: cmd_rd :: cmd_wr :: data_rd :: data_wr :: done :: stream_rd :: stream_err_rd :: Nil = Enum(8) val buf_state = WireInit(0.U(3.W)) val buf_nxtstate = WireInit(0.U(3.W)) - buf_state := withClock(ahbm_clk) { RegNext((Mux(buf_state_en.asBool() ,buf_nxtstate,buf_state) & Fill(3, !buf_rst)), 0.U) } + buf_state := rvdffsc_fpga(buf_nxtstate, buf_state_en.asBool(), buf_rst, bus_clk, io.bus_clk_en, clock) //logic signals val slave_valid = WireInit(Bool(), init = false.B) val slave_ready = WireInit(Bool(), init = false.B) @@ -46,10 +52,6 @@ class axi4_to_ahb(val TAG : Int = 3) extends Module with lib with RequireAsyncRe val wrbuf_data = WireInit(0.U(64.W)) // [63:0] val wrbuf_byteen = WireInit(0.U(8.W)) // [7:0] - val bus_write_clk_en = WireInit(Bool(), init = false.B) - val bus_clk = Wire(Clock()) - val bus_write_clk = Wire(Clock()) - val master_valid = WireInit(Bool(), init = false.B) val master_ready = WireInit(0.U(1.W)) val master_tag = WireInit(0.U(TAG.W)) // [TAG-1:0] @@ -112,17 +114,15 @@ class axi4_to_ahb(val TAG : Int = 3) extends Module with lib with RequireAsyncRe val last_bus_addr = WireInit(0.U(32.W)) // [31:0] // Clocks val buf_clken = WireInit(Bool(), init = false.B) - val slvbuf_clken = WireInit(Bool(), init = false.B) - val ahbm_addr_clken = WireInit(Bool(), init = false.B) val ahbm_data_clken = WireInit(Bool(), init = false.B) val buf_clk = Wire(Clock()) - def get_write_size(byteen: UInt) = { val size = ("b11".U & Fill(2, (byteen(7, 0) === "hff".U))) | ("b10".U & (Fill(2, ((byteen(7, 0) === "hf0".U) | (byteen(7, 0) === "h0f".U(8.W)))))) | ("b01".U(2.W) & (Fill(2, ((byteen(7, 0) === "hc0".U) | (byteen(7, 0) === "h30".U) | (byteen(7, 0) === "h0c".U(8.W)) | (byteen(7, 0) === "h03".U(8.W)))))) size } + def get_write_addr(byteen_e: UInt) = { val addr = ("h0".U(3.W) & (Fill(3, ((byteen_e(7, 0) === "hff".U) | (byteen_e(7, 0) === "h0f".U(8.W)) | (byteen_e(7, 0) === "h03".U(8.W)))))) | ("h2".U & (Fill(3, (byteen_e(7, 0) === "h0c".U(8.W))))) | @@ -131,6 +131,7 @@ class axi4_to_ahb(val TAG : Int = 3) extends Module with lib with RequireAsyncRe ("h6".U & (Fill(3, (byteen_e(7, 0) === "hc0".U)))) addr } + def get_nxtbyte_ptr(current_byte_ptr: UInt, byteen: UInt, get_next: Bool): UInt = { val start_ptr = Mux(get_next, current_byte_ptr + 1.U, current_byte_ptr) val temp = (0 until 8).map(j => (byteen(j) & (j.asUInt() >= start_ptr)) -> j.U) @@ -156,12 +157,6 @@ class axi4_to_ahb(val TAG : Int = 3) extends Module with lib with RequireAsyncRe io.axi.r.bits.data := slave_rdata(63, 0) slave_ready := io.axi.b.ready & io.axi.r.ready - // Clock header logic - bus_write_clk_en := io.bus_clk_en & ((io.axi.aw.valid & io.axi.aw.ready) | (io.axi.w.valid & io.axi.w.ready)) - - bus_clk := rvclkhdr(clock, io.bus_clk_en, io.scan_mode) - bus_write_clk := rvclkhdr(clock, bus_write_clk_en.asBool(), io.scan_mode) - switch(buf_state) { is(idle) { master_ready := 1.U @@ -203,7 +198,7 @@ class axi4_to_ahb(val TAG : Int = 3) extends Module with lib with RequireAsyncRe bypass_en := master_ready & master_valid & (buf_nxtstate === stream_rd) & buf_state_en buf_cmd_byte_ptr := Mux(bypass_en.asBool(), master_addr(2, 0), buf_addr(2, 0)) io.ahb.out.htrans := "b10".U & Fill(2, (!((buf_nxtstate =/= stream_rd) & buf_state_en))) - slvbuf_wr_en := buf_wr_en// shifting the contents from the buf to slv_buf for streaming cases + slvbuf_wr_en := buf_wr_en // shifting the contents from the buf to slv_buf for streaming cases } is(stream_err_rd) { @@ -238,20 +233,20 @@ class axi4_to_ahb(val TAG : Int = 3) extends Module with lib with RequireAsyncRe is(data_wr) { buf_state_en := (cmd_doneQ & ahb_hready_q) | ahb_hresp_q master_ready := buf_state_en & !ahb_hresp_q & slave_ready - buf_nxtstate := Mux((ahb_hresp_q | !slave_ready),done ,Mux((master_valid & master_valid),Mux((master_opc(2,1) === 1.U).asBool(),cmd_wr,cmd_rd),idle)) + buf_nxtstate := Mux((ahb_hresp_q | !slave_ready), done, Mux((master_valid & master_valid), Mux((master_opc(2, 1) === 1.U).asBool(), cmd_wr, cmd_rd), idle)) slvbuf_error_in := ahb_hresp_q slvbuf_error_en := buf_state_en - buf_write_in := master_opc(2,1) === 1.U + buf_write_in := master_opc(2, 1) === 1.U buf_wr_en := buf_state_en & ((buf_nxtstate === cmd_wr) | (buf_nxtstate === cmd_rd)) buf_data_wr_en := buf_wr_en - cmd_done := (ahb_hresp_q | (ahb_hready_q & (ahb_htrans_q(1,0) =/= 0.U) & - ((buf_cmd_byte_ptrQ === 7.U) | (buf_byteen(get_nxtbyte_ptr(buf_cmd_byte_ptrQ(2,0),buf_byteen(7,0),true.B)) === 0.U)))) + cmd_done := (ahb_hresp_q | (ahb_hready_q & (ahb_htrans_q(1, 0) =/= 0.U) & + ((buf_cmd_byte_ptrQ === 7.U) | (buf_byteen(get_nxtbyte_ptr(buf_cmd_byte_ptrQ(2, 0), buf_byteen(7, 0), true.B)) === 0.U)))) bypass_en := buf_state_en & buf_write_in & (buf_nxtstate === cmd_wr) io.ahb.out.htrans := Fill(2, (!(cmd_done | cmd_doneQ) | bypass_en)) & 2.U slave_valid_pre := buf_state_en & (buf_nxtstate =/= done) - trxn_done := ahb_hready_q & ahb_hwrite_q & (ahb_htrans_q(1,0) =/= 0.U) + trxn_done := ahb_hready_q & ahb_hwrite_q & (ahb_htrans_q(1, 0) =/= 0.U) buf_cmd_byte_ptr_en := trxn_done | bypass_en - buf_cmd_byte_ptr := Mux(bypass_en,get_nxtbyte_ptr(0.U(3.W),buf_byteen_in(7,0),false.B),Mux(trxn_done,get_nxtbyte_ptr(buf_cmd_byte_ptrQ(2,0),buf_byteen(7,0),true.B),buf_cmd_byte_ptrQ)) + buf_cmd_byte_ptr := Mux(bypass_en, get_nxtbyte_ptr(0.U(3.W), buf_byteen_in(7, 0), false.B), Mux(trxn_done, get_nxtbyte_ptr(buf_cmd_byte_ptrQ(2, 0), buf_byteen(7, 0), true.B), buf_cmd_byte_ptrQ)) } is(done) { buf_nxtstate := idle @@ -262,17 +257,17 @@ class axi4_to_ahb(val TAG : Int = 3) extends Module with lib with RequireAsyncRe } // buf_rst := 0.U cmd_done_rst := slave_valid_pre - buf_addr_in := Cat(master_addr(31,3),Mux((buf_aligned_in & (master_opc(2, 1) === "b01".U)).asBool(), get_write_addr(master_byteen(7, 0)), master_addr(2, 0))) + buf_addr_in := Cat(master_addr(31, 3), Mux((buf_aligned_in & (master_opc(2, 1) === "b01".U)).asBool(), get_write_addr(master_byteen(7, 0)), master_addr(2, 0))) buf_tag_in := master_tag(TAG - 1, 0) - buf_byteen_in := wrbuf_byteen(7,0) + buf_byteen_in := wrbuf_byteen(7, 0) buf_data_in := Mux((buf_state === data_rd), ahb_hrdata_q(63, 0), master_wdata(63, 0)) - buf_size_in := Mux((buf_aligned_in & (master_size(1,0) === "b11".U) & (master_opc(2, 1) === "b01".U)).asBool(),get_write_size(master_byteen(7,0)), master_size(1,0)) + buf_size_in := Mux((buf_aligned_in & (master_size(1, 0) === "b11".U) & (master_opc(2, 1) === "b01".U)).asBool(), get_write_size(master_byteen(7, 0)), master_size(1, 0)) buf_aligned_in := (master_opc(2, 0) === 0.U) | // reads are always aligned since they are either DW or sideeffects (master_size(1, 0) === 0.U) | (master_size(1, 0) === "b01".U(2.W)) | (master_size(1, 0) === "b10".U) | // Always aligned for Byte/HW/Word since they can be only for non-idempotent. IFU/SB are always aligned ((master_size(1, 0) === "b11".U) & ((master_byteen(7, 0) === "h3".U) | (master_byteen(7, 0) === "hc".U) | (master_byteen(7, 0) === "h30".U) | (master_byteen(7, 0) === "hc0".U) | (master_byteen(7, 0) === "hf".U) | (master_byteen(7, 0) === "hf0".U) | (master_byteen(7, 0) === "hff".U))) // Generate the ahb signals - io.ahb.out.haddr := Mux(bypass_en.asBool(), Cat(master_addr(31, 3), buf_cmd_byte_ptr(2, 0)), Cat(buf_addr(31, 3), buf_cmd_byte_ptr(2, 0))) + io.ahb.out.haddr := Cat(Mux(bypass_en.asBool(), master_addr(31, 3), buf_addr(31, 3)), Fill(3, io.ahb.out.htrans === 2.U) & buf_cmd_byte_ptr) io.ahb.out.hsize := Mux(bypass_en.asBool(), Cat(0.U, (Fill(2, buf_aligned_in) & buf_size_in(1, 0))), Cat("b0".U, (Fill(2, buf_aligned) & buf_size(1, 0)))) io.ahb.out.hburst := "b0".U @@ -291,50 +286,53 @@ class axi4_to_ahb(val TAG : Int = 3) extends Module with lib with RequireAsyncRe wrbuf_en := io.axi.aw.valid & io.axi.aw.ready & master_ready wrbuf_data_en := io.axi.w.valid & io.axi.w.ready & master_ready wrbuf_cmd_sent := master_valid & master_ready & (master_opc(2, 1) === "b01".U) - wrbuf_rst := wrbuf_cmd_sent & !wrbuf_en + wrbuf_rst := (wrbuf_cmd_sent & !wrbuf_en) | dec_tlu_force_halt_bus io.axi.aw.ready := !(wrbuf_vld & !wrbuf_cmd_sent) & master_ready io.axi.w.ready := !(wrbuf_data_vld & !wrbuf_cmd_sent) & master_ready io.axi.ar.ready := !(wrbuf_vld & wrbuf_data_vld) & master_ready io.axi.r.bits.last := true.B - wrbuf_vld := withClock(bus_clk) {RegNext(Mux(wrbuf_en.asBool(),1.U,wrbuf_vld) & !wrbuf_rst, 0.U)} - wrbuf_data_vld := withClock(bus_clk) {RegNext(Mux(wrbuf_data_en.asBool(),1.U, wrbuf_data_vld) & !wrbuf_rst, 0.U)} - wrbuf_tag := withClock(bus_clk) {RegEnable(io.axi.aw.bits.id(TAG - 1, 0), 0.U, wrbuf_en.asBool())} - wrbuf_size := withClock(bus_clk) {RegEnable(io.axi.aw.bits.size(2, 0), 0.U, wrbuf_en.asBool())} - wrbuf_addr := rvdffe(io.axi.aw.bits.addr, wrbuf_en.asBool,bus_clk,io.scan_mode) - wrbuf_data := rvdffe(io.axi.w.bits.data, wrbuf_data_en.asBool,bus_clk,io.scan_mode) - wrbuf_byteen := withClock(bus_clk) {RegEnable(io.axi.w.bits.strb(7, 0), 0.U, wrbuf_data_en.asBool())} - last_bus_addr := withClock(ahbm_clk) {RegEnable(io.ahb.out.haddr(31, 0), 0.U, last_addr_en.asBool())} - buf_write := withClock(buf_clk) {RegEnable(buf_write_in, 0.U, buf_wr_en.asBool())} - buf_tag := withClock(buf_clk) {RegEnable(buf_tag_in(TAG - 1, 0), 0.U, buf_wr_en.asBool())} - buf_addr := rvdffe(buf_addr_in(31, 0),(buf_wr_en & io.bus_clk_en).asBool,clock,io.scan_mode) - buf_size := withClock(buf_clk) {RegEnable(buf_size_in(1, 0), 0.U, buf_wr_en.asBool())} - buf_aligned := withClock(buf_clk) {RegEnable(buf_aligned_in, 0.U, buf_wr_en.asBool())} - buf_byteen := withClock(buf_clk) {RegEnable(buf_byteen_in(7, 0), 0.U, buf_wr_en.asBool())} - buf_data := rvdffe(buf_data_in(63, 0),(buf_data_wr_en & io.bus_clk_en).asBool(),clock,io.scan_mode) - slvbuf_write := withClock(buf_clk) {RegEnable(buf_write, 0.U, slvbuf_wr_en.asBool())} - slvbuf_tag := withClock(buf_clk) {RegEnable(buf_tag(TAG - 1, 0), 0.U, slvbuf_wr_en.asBool())} - slvbuf_error := withClock(ahbm_clk) {RegEnable(slvbuf_error_in, 0.U, slvbuf_error_en.asBool())} - cmd_doneQ := withClock(ahbm_clk) {RegNext(Mux(cmd_done.asBool(),1.U,cmd_doneQ) & !cmd_done_rst, 0.U)} - buf_cmd_byte_ptrQ := withClock(ahbm_clk) {RegEnable(buf_cmd_byte_ptr(2, 0), 0.U, buf_cmd_byte_ptr_en.asBool())} - ahb_hready_q := withClock(ahbm_clk) {RegNext(io.ahb.in.hready, 0.U)} - ahb_htrans_q := withClock(ahbm_clk) {RegNext(io.ahb.out.htrans(1, 0), 0.U)} - ahb_hwrite_q := withClock(ahbm_addr_clk) {RegNext(io.ahb.out.hwrite, 0.U)} - ahb_hresp_q := withClock(ahbm_clk) {RegNext(io.ahb.in.hresp, 0.U)} - ahb_hrdata_q := withClock(ahbm_data_clk) {RegNext(io.ahb.in.hrdata(63, 0), 0.U)} - + wrbuf_vld := rvdffsc_fpga(1.U, wrbuf_en.asBool(), wrbuf_rst, bus_clk, io.bus_clk_en, clock) + wrbuf_data_vld := rvdffsc_fpga(1.U, wrbuf_data_en.asBool(), wrbuf_rst, bus_clk, io.bus_clk_en, clock) + wrbuf_tag := rvdffs_fpga(io.axi.aw.bits.id(TAG - 1, 0), wrbuf_en.asBool(), bus_clk, io.bus_clk_en, clock) + wrbuf_size := rvdffs_fpga(io.axi.aw.bits.size(2, 0), wrbuf_en.asBool(), bus_clk, io.bus_clk_en, clock) + wrbuf_addr := rvdffe(io.axi.aw.bits.addr, wrbuf_en.asBool & io.bus_clk_en, clock, io.scan_mode) + wrbuf_data := rvdffe(io.axi.w.bits.data, wrbuf_data_en.asBool & io.bus_clk_en, clock, io.scan_mode) + wrbuf_byteen := rvdffs_fpga(io.axi.w.bits.strb(7, 0), wrbuf_data_en.asBool(), bus_clk, io.bus_clk_en, clock) + last_bus_addr := rvdffs_fpga(io.ahb.out.haddr(31, 0), last_addr_en.asBool(), bus_clk, io.bus_clk_en, clock) + buf_write := rvdffs_fpga(buf_write_in, buf_wr_en.asBool(), buf_clk, buf_clken, clock) + buf_tag := rvdffs_fpga(buf_tag_in(TAG - 1, 0), buf_wr_en.asBool(), buf_clk, buf_clken, clock) + buf_addr := rvdffe(buf_addr_in(31, 0), (buf_wr_en & io.bus_clk_en).asBool, clock, io.scan_mode) + buf_size := rvdffs_fpga(buf_size_in(1, 0), buf_wr_en.asBool(), buf_clk, buf_clken, clock) + buf_aligned := rvdffs_fpga(buf_aligned_in, buf_wr_en.asBool(), buf_clk, buf_clken, clock) + buf_byteen := rvdffs_fpga(buf_byteen_in(7, 0), buf_wr_en.asBool(), buf_clk, buf_clken, clock) + buf_data := rvdffe(buf_data_in(63, 0), (buf_data_wr_en & io.bus_clk_en).asBool(), clock, io.scan_mode) + slvbuf_write := rvdffs_fpga(buf_write, slvbuf_wr_en.asBool(), buf_clk, buf_clken, clock) + slvbuf_tag := rvdffs_fpga(buf_tag(TAG - 1, 0), slvbuf_wr_en.asBool(), buf_clk, buf_clken, clock) + slvbuf_error := rvdffs_fpga(slvbuf_error_in, slvbuf_error_en.asBool(), buf_clk, buf_clken, clock) + cmd_doneQ := rvdffsc_fpga(1.U, cmd_done.asBool(), cmd_done_rst, bus_clk, io.bus_clk_en, clock) + buf_cmd_byte_ptrQ := rvdffs_fpga(buf_cmd_byte_ptr(2, 0), buf_cmd_byte_ptr_en.asBool(), bus_clk, io.bus_clk_en, clock) + ahb_hready_q := rvdff_fpga(io.ahb.in.hready, bus_clk, io.bus_clk_en, clock) + ahb_htrans_q := rvdff_fpga(io.ahb.out.htrans(1, 0), bus_clk,io.bus_clk_en, clock) + ahb_hwrite_q := rvdff_fpga(io.ahb.out.hwrite,bus_clk, io.bus_clk_en, clock) + ahb_hresp_q := rvdff_fpga(io.ahb.in.hresp,bus_clk, io.bus_clk_en, clock) + ahb_hrdata_q := rvdff_fpga(io.ahb.in.hrdata(63, 0), ahbm_data_clk, ahbm_data_clken, clock) buf_clken := io.bus_clk_en & (buf_wr_en | slvbuf_wr_en | io.clk_override) - ahbm_addr_clken := io.bus_clk_en & ((io.ahb.in.hready & io.ahb.out.htrans(1)) | io.clk_override) ahbm_data_clken := io.bus_clk_en & ((buf_state =/= idle) | io.clk_override) - //Clkhdr - buf_clk := rvclkhdr(clock, buf_clken, io.scan_mode) - ahbm_clk := rvclkhdr(clock, io.bus_clk_en, io.scan_mode) - ahbm_addr_clk := rvclkhdr(clock, ahbm_addr_clken, io.scan_mode) - ahbm_data_clk := rvclkhdr(clock, ahbm_data_clken, io.scan_mode) + if (RV_FPGA_OPTIMIZE) { + bus_clk := 0.B.asClock() + buf_clk := 0.B.asClock() + ahbm_data_clk := 0.B.asClock() + } + else { + buf_clk := rvclkhdr(clock, buf_clken, io.scan_mode) + bus_clk := rvclkhdr(clock, io.bus_clk_en, io.scan_mode) + ahbm_data_clk := rvclkhdr(clock, ahbm_data_clken, io.scan_mode) + } } -//object axi4_to_ahb extends App { -// println((new chisel3.stage.ChiselStage).emitVerilog(new axi4_to_ahb(3))) -//} +object axi4_to_ahb extends App { + println((new chisel3.stage.ChiselStage).emitVerilog(new axi4_to_ahb(1))) +} \ No newline at end of file diff --git a/target/scala-2.12/classes/lib/ahb_to_axi4.class b/target/scala-2.12/classes/lib/ahb_to_axi4.class index c9cfc531e25103a2efda0451d93229c418f3e9a7..9d19a27a9223b1abe19da4d5ef1f5a7fe2b94f2a 100644 GIT binary patch delta 590 zcmZ9~%}Z2K7{~GF9zFNoW{|YNVuWx)3Cire_G(#Ks}>cdG0C_PBp5MpQM(wWKOmxo z3pdf#rt3J)_%d_VX-KdFH-UdbyH>$X_w}1?XY+;6b2yvxygBfL1Ak`2nVLNEi`wZk zk)4fRPC6;kw&uR(HFvA#Hfrup^lsky()ynbzjs2Gzbi&WhR32Ieu#Y@%QksRrqQf? zE~n9|{4V!+tUPs6b)li!Rt+9&SD(-+bVNVXIrPwQB|(Sm$Ji?U1wsTGB*C{eYJBZz`F4v|>Uk+a#^p(P-ujEAo7X z{KQ!|OMw`obmAP{!CU*VKG>qD!_LDNWE$2FE66150_>xlh6z|GM`057N$$ZEtSHxE z8n&dmUhy%icSG9xuq{)9-GXh}Uf69|-5!M<9|CSS7lnOg-(8ql%G5_!vh3SOI zO?V6Q)*~4>3@&*a>sI-}|JmFpDWFvN>d(hQuAbJ5ke6>21>w5%S>`AutF*-vl;$*T^9^Ox8tte*l+~lOt1l>L zqO@l=DQ|A5=#F_SPej&E#wb+xG#JP39%`v;qhXv?fjxtzWf9g6+u{hU1Gdc;tP}Qy zXJHbS;Yk?7zH%9+U|G(=n#2Bd~rLo)R_yJ2EL)6!zV%U1kt=Y-*Qj W8Up^P{kAw0=Y)ZOf72nR>hA$f)0FrC diff --git a/target/scala-2.12/classes/lib/axi4_to_ahb$.class b/target/scala-2.12/classes/lib/axi4_to_ahb$.class index 1f02f9ded2688ab0acdc4141ab8a35ff241a4b13..b69d30dec48eaf67e3105194183bc9fdd5fbee66 100644 GIT binary patch literal 3996 zcmbtX`F9gl7`-n|8yW&FEn5XeV3ZKRu!<5yp#>?1%|I1V>r3()2BtG%GJzHqH^hC# zefM`g$A!fM=lBQsM|r$&X3|XCh&jjRWG3^?x8C=C_r3o0_su^6Y{icPy_Q+b$_aDp zsOOBzQ$-^ILFs9EPG&7>SF(qTr&Y;IphKX$R+5&??ygo7=oDBGF}u%yC2&vE(6rAv zXH@o}@=iJB{n9R5s%GRJ=S-dEa|G_Xy=nqUfv!MbAaU^U(DD3UL!d7|Gvl1Vd^Mp; zbJDLYGiyQ;KByy%oC1yT|3OmIcRk4|tVP>htq zy;!63OS9=_y{Ff4Y1#sd(=A}oQ9Jc}##tGS(^5Bu4Y*H7%KES$NTCP4-9&qH3JcJu ze{Cfkk$&+TYt&F@X)s}I5?GU78>aYQjdQ#`%?74Z*f#{NTPKBnEYykaU<)@B9jz(P zQ!X=|HYq{o@$>KM_Q)DzoBd|#~z`T8#+V4nPs*SSRtW!H)W{^{AIxnN*D#`kc zvKo_h%hM~txfvGdF{JI-V|ClG)p=vnMvgmipTQvE(r&@@*WvD*lF($A` zjho&G(XgD#RG)CLPhq)++58ucEdopFdCYWO&&uw$ZO4=TPNUA!{TW!=c$}0OaW8PF z(euq*qGdKZ+R9OZ&7qX8pyFDng*((3$1ss8@L@Gs$I&7rSw>zOfBgnepT zG4x)Lz-xXPGxdDdUy9e0xP;3otio#D7o{Pvo{!KdgrUd?l5Rp3gCP_525|7QrMjYx2GnwI_SiFh9$B=H_T zKp^sS(4|^k$ z+`;Eim>g17SCvS#Wgf4Bs*gxljw@0xPYtPI+g9$NC2KXs$7I2&yCt>H)DC<1G%yV8 z_`av0&y&M84?1et9&5bTb<~~QA&wSY;zU{_h zETQCcO8R-%e~DX&-M}5c`VX7}EDsg3yla)t%pbV>7ygLh3tqdlP#nRR{GAFEu+ooD z-o$F=qrLB-c1&w$*8PFC+WBnj#eqg>tv%m^3_S+<8u*GuVTy33_CmJnFTLsf!0-QYY(maTNQH++uAK=d$gGC zelh)cAjGG+dRLKaC!YZI2Z_K=JTwJz2lQ6im058OTiVY{FIBj1IuyMt&sfT3|Q!gzLAScfEeGuAina9;cw$t+AlrdI$8uAhcZRR|$0A!oCyn8yMDr ziAcL2Weo?WM&}|r`2o_u;qWaSJ#hn%=Wn6{99(xDrw{RB?})EkzhNML9qx6UYgVZ# z8saF{gafpdev-HY=P|)}y-ajFM<510tdm^c4!%p`0-onsF!FDT*q6@;Ik)pAjBexxA9KsQ1gODF_F26PXUbt2N2)zn&gXa z%;ne*;9EY&kid7mFXyik=HM8fz>_$Er|>ktPvT?hKY{P5u~+cWrvdlZi^l~l@u@~= hRDIqc*MXZb2b|=Lusgf6vvYfBy;SjhU+(}MH1?ur72S>ROje7D>rH#%%njWAxg8x@GcCXc6l9`@ z)+uW%&kqGOWK8HVI1P#s7kx2ate3O-&=2O(PPDfG1D6W=L8U59!BC>EL@1wegA&6$ zCk;auxu2j*C?$%1k{M;ndcs(!P;Gvv$S39s=ssek^?*=ra(fh`U|(QK_kRxj=b)mR Us8XmA<`|<5x`s((hB|Th0M6GU8UO$Q diff --git a/target/scala-2.12/classes/lib/axi4_to_ahb$delayedInit$body.class b/target/scala-2.12/classes/lib/axi4_to_ahb$delayedInit$body.class new file mode 100644 index 0000000000000000000000000000000000000000..f7510626ff02c12917bb6b16fb56afc0b3d8e301 GIT binary patch literal 756 zcmZ`%+iuf95Iy5uOwzQu&9EeD`Ng5k9l79y?!i_}y-hJzz%D{ALD8sJ6LY2^%O}0@ZY)rMjiNldrv2i%cxgx^Z zAr#u1$2BaVUd22bgq43gd8N-}c*MQhXc3A>``tsrs`sBD*0hMF3T|SVgUvvV2@kF{ zHakIXwESFgjTeNa_OOE?yZ%KRxf z-!~%o&=aGn-{?s*(BXkd#8C3!SzxuV(ElR?1>Jr&iC477;a&eJ>t&pFjYp; zV{5T(Y+s;6=Udy~nC%DdeP*nHjr^oCW(k)slct26p6lbmb3%zn%Rm7S*|AW9!*+o` Otd-TJOh4ffWB3byk*0b8 literal 0 HcmV?d00001 diff --git a/target/scala-2.12/classes/lib/axi4_to_ahb.class b/target/scala-2.12/classes/lib/axi4_to_ahb.class index 4a02dfab23efb04505aae514e4591c0742cfcd48..a600ba770ce0065e47bd10413f88416516b57df0 100644 GIT binary patch literal 105964 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 literal 109810 zcmce92VfIN_V=u$-Ie9BE!lvPO*5EKjcrV`X^{(HunpLzm}X>K#s(K~0Za&_CzngP zOLDp7F6AzbTzW__g!JBX>ACdYd+*8jrmVEP8ZDbB|L<~UX5YNun>TOXyqTRH?LPF& z!P^i*Q`|R6D5b5nAvd_abxM6tXMM1xK}C{;hBmgec8A&ua$7rkLR}rfw%m%)hG1h~ zWoJ`wTS!Gt38@4Je=3qCYg#vS1bceBLNg^KH}v&{x}`ziDpJzG=3sFk;8dMHU#gtw>~v-= z%@4>9IiwVq1e&A-IbmRy(=lsgq0g5g0X;_@SrTZK64Y{EAh6Mwl~9)~EtNd-GD7d< z^vysoOrdny4fI}4-wJfUm(r&a`VpMI6X<=69&(R#7E2Mj&o5DaN_Xn$g&N)ADwd^y zoRFUddL-mXfKT9jpoh=z(DZN?C+g^hI(m|hUZ>tl4<-Z~w>A4lY`*6|lII^|!ht=;(bqx)vWvyZkIZQav|uenKzQ(c5)$cs!;3tHo1lA07V|og6=lvs8Y! zj?UvRrR(CauTICmO~>D-qxb3Pk$CMa*5WnQKOD!M#YgJ+>vZ(poKF0f$9HH~NjSa( z-OuAYrEBq>(0P2PbU7m5U&rD;w5z08)zSNObS?gao_-$xDZdu~37yA(O4s5)q4W4p z>ALvukHr6yVlDnt`7CZzeqH?cN8*1;u@?WSd>y|Q{|TMPe=0{8|NW8pUs9~af5Ok> zKjqiOe}5$Ym+0faKN9~-inaJp^$*AGl433XQ~5f&F8=!?@xP>47ytczI(}XJ_ebJ? zNwF^e`y=tcq*xdK{gL=zQmn;)h@XBQ|3mJE;^KVCC+FuU$!@jA5%2|yr}>8Z6WmgX zq;4q6Y6y;SxD+`dHBcN#8kdkTE|}$Ti~@e2oZw8ub?%Xp3y)lyzqC3qXOwevLNJ)^ zOqWXsCs*b5*6&JGtNe=7nV6U_t(n@WO8zb>5SZs&oY0vU5UW;W)`PJ2YqK{KZRTr?Vh&OVB@cXO*wLOmOQ?>ae2j<+*MgU-9ASsbW$s%=?W z!MsFSmeaF}i<(L%<8;u!(YZSki;l72Eb9q`(_F&05d28jav>7SG zd=7uY#FqAzMZG1}6Sqywm;w4vb%XwO&iV?l%WTI8PgYjzni=iRsZ?%HtCGF4ePuys zKo0nz-j2D+P17eS4#y5=r(J2#j=bPlXJS(0wvM`Kjx@P+OwO9Trn*V4w5-zn*0O1! zZ$?2k#YyglrJlBJ6a59D(5}q+9hp8yCgTs4RO4-J{^@N_XlGU3^!4RR_TcuFliOD~ zJo(b_w8>dZ6Iv^>T#g1s9_(8i*y1d~3AtH?j)udsvbGcl*315^>8Nq*XII7b)Wc?L%fX2juenlwn29CDV2u zmad7iC>J1ITD>_ydbcc4OEy$7FJ*^8Trh|Q&LkodF!{ngv8_dcXHf8+*XSDXqq9uuH?x=?(3Jb~fkwr*AA*g83JDmCc1(W={5F&HU(ceV zZ1?DZ%yC8FmrHp$^J}fX_Q~1l0j@{Iu<2ljEu3#udeXZ5^`ty#(5GNQGU*3if2%Sp zjK}NpTLQ9HPv+pN`T|Ef=i6{t?aHKbDY0|m05bj>%2Njn4r=Wu{_XH&H4H0i+?26% z9} zy#eCJn9jko8tM+qPR}x4tD_~gqogW(W#!tu?nO#=dS1YI?S=NQR)#Fd%_v$=>=rE1 z=~MCalywki=D21+za(pVY4#nem3t}{(FOXKk32QNZJG zetXTZo)t;pcRn)y={Uf?Vx51aP&(LAVfui5p+6MrPq}qd*4Gr_e98~ww|(VQh|jEE z(wWM2V*W_(nOZ)-GC)X3?xzd8P9c-L{{6JWrI^c)6 zN3Yin7@WMWfYiU#cnx-Nk@1>1f70qHor_X;4ysxsd1*X=__Vla;(WcH#J=R3>)BJY z5#}SJ=V+?;_7IH|w7uZ()X#%DeOP(G9UfnE*Fifo06*KmplTS=W5SrlYiD%N9n_O9 zl@+zOlXyeo@Ep!Ju5fJUN-__?_+KUA&V@Utk@*4Q1Mzz@FU%wHeeOc=?||_-1@8Jt zoWgV-D5vvE`5fraa>)~>&r8f|sGA;|o4Rwuq*ddfU0GvOhR;|}_#oc)h8lVp-r2c|$RjNBDb!yAs_RK6zMC z!`i9{Ub_Z-62-5c)m=l@Icue4!!^wJepq+351tD1Jy~ZI(shXLI*ZJg%#UE5kU6v2 zIn{U#@hd-N$Sl$y%PWT#Z4N1|#%mJ)hfd!{{GZGt&KwOtYH&M@`{9*M8|Zv6Xu#Oc zAw^_7NsXL;Vn$JSJ;cc>m>2yTAM%HwrqPQ;pXFxivuI_FT`z8J#QhL*)x` z&_Uw*uCx_U51IGKyiENP<{gNCOKDu0KY7gxGOvgAC+kKs&uRLzYZ$L=y~pZ@d5(@( z)4Gw4Yty%cqlX$;t z0<0$pf4Ax#79PI?eX=}b>Ehzq>b7F3AvnyjT~d9%wUTfC@&RLWGiHE2$vl*|rFCH` zlxMK=p>l$Hgs0FA_W>PBU`tNM%=K#rl|uYc8nzsk-GkT7SPy=z!g_s~b6ZAnR&cmW zfpz%OmBpoLK7aYRV4gEc?oMB_tYE{q1b@P~K=SCiK|^NbX3p5ynp!j_7uH{k7G{^^ zWK3z;G&y_0=*mQ=I;y55E12sVFex>EXb*ruX%2@MdHNN9ve zKzT=x4h#nI60n}CYpbSlm}Nz4Q%{SEhDs>eNR!YgQEfFnU9BA(bQO*OD-oorKtiK8 z2Db)t+kzb%;Q7eb&P}1*%1}>BXVZdUM^jsP|HG6|m8 z@C)b!gOqMfOumFL<>3_Y2P0#n#yLeoNsN<|B$OIq?F?%_T|%C&t=hGrh2#lQcQ-H2fDgCw*|VpI~##>Ht44>Rnc5%xQ<0a&f36y2}$J=asBj_p0PNnow+w&2!K z{nlVxD@f&6AgHO2h@@pb!3~iTqCmK$b8{mYU|SavPmGhqvQ$ZGEOt$r(H-gl>n1P) zwKUIfZG(D~bwEnsg|uo9E9`FF0nOwW#H8U1rW0mtvkXFe zifRq5BODrgB4uxb$Dtvx7e%ltsp~R35f;eRw?gw7KXE*Al@t*bDW%;+N~w!8Q<2ML zT~!foq948DDzec)SgD+CU6hd0-L{p`!1Fp81v;#rH~{TdOmf6u*Pm*5#%b}8h0 zy0&*vHrkEN6i*CMzqto`-A5`Q>>3FmX&MbYTO;eJ8j0#CH+S}SfDu90up`=tE{gmuPQUetSJz)R_cS;lvx##d2VsTMtGh-^Y>BakPur7PQ9X& zguRrmt$bo=rza1fk7-1Qs18#bF9Hbgf!buo6!GyQ;PXZ%BaM+w5lo;qQ30oqPH$|! z(^v=U>JCq~z?-U{G&SZyMrJ;x0(Y8W;?&sFP3(ML1%5WshQclL8977Qz>`?Kpte3x zT3TJd0H(gkRmEbk4K1s#4%F3`mMy7W0G&xF^A`Yfpk_gRKDdfTs3~6so$V%{fhEZGP)Rr_5r6b z0c9m68cQMtv919ZqgV6v2quG#5mqOYQMHUI0!lC$)n)U`7guR2)dWhb!+AQCnINhM zS3aqxq+pbL3n zMnYv4)8tXR^2j%UgDH)fS6{Wh3p|_^x-HT`t;g>w)RG>`Nvr!20jfYxg5swt@|g{O=)U~G+n1vE{Qn%Y1uL@L&F4Mid`Z@FeR zLW(q8>o`IshR`|%R9O-zSwsm&--jk?1kysNUb~D)O<+ViK0sSw(Co&pSPN<6p^V|U zms4(?morh!77QHrc*@E>p5>{>d&=i61OMj!tX*(_)-I_(`^u}ppG|SxOe1l}Oe1l} zOe+x3NZc{=k+@@~k+@@~kvOiWMdElgmBjIADv9IKRM1mE1x*E1633$@kT@PqC2?F& zC9#vlaWlN&V!Kx{?aGNFo=-0nnB#?OA=qo_%7)FJ zU~gLw*&lI^9S4!cYudTVRwY2Hm5WQ4Rg`5z)3-SUT@V35y+d{NM#HgmjC3ri>^SHp=qXooTkB>CWzecx zI~v=1n?ht`vA(e-*wGPc>xK$t!UK{=86^w3vGgbDWFr61Fv$`XBf7yT9UH9>OqWJB zsAx!}qG$k?PM7{dYWOP|HgG3j5~zS-1!I8iq0;R~ax1^eMEYZI=6TJatv{lzNe3*Q zE&ZLSdJYVSh92lI*a2t>cDGnLI(H=p*_2GugPqH8dxu5tb2H~HneD*6HVjy5aUH5#vpq|P7uNC)r3KF zr$#Jm6lA=Lj1k`WtEFp55U0}5kv`p!2ZiZitzyJ>uf%jG>{5CLS z*H+k(+YsU!ju=}W6*F|+JsG@v&LLQ4g>6J5r}2tzN09|ATW7jymQHIfw&4bwGZB5D zC&op3;t-l)=|1UxV*LlG1=_l~1)N>oFb6{OIR%>k2y6bM5GlI0!oKn*c+S)w>}iDI zQDo^y#>SYsA7UDj1qs;#1k;l%x-V#~1X@)RX;oMxb)gtn)RLy^u=KR_3~BGP5Xl-l zJDOWJ^mYXs+8~B+lhCF}JJ`dNuw>mt9i|C-%Bswy35+7T#|f4OM@tQD?}2%>yQ{Ij zE3~Da>?s1VJ=D5kTVqdGTm9zFHaaH2_z@zTPuz^q27c=`wFr#XBQV0kHI$ z^f~FOFJM6E&0jxl3X7uQUIGgA$=9q;z6rB4I0E7@$>D%jI-Ib= zF-z6%YT#}*BW4-YjU#oBE5{DSp%RI1IuG=0>+EiXgCDSd?b@ncWMfAnbq5E==n`~k z0&+N#G1`MlNX`qlG}_}4c!&?{J90n5o^faoO)$C~{f96Q01k~gyKP4wsjIgq#P7tG zW5*yzx(E0MQ=#lxidm@kgaxB3(3M2!5Gs_D^+K^@7!x;~PJ8@`3%fUqC>eebgV9y! zY9eqHutXl-7$uHo5)Y&1(jLr6DBaL*jSjbo=o)k_kvSfCbdPzALMJkzIn?X`W)E=S ze1ci3_GAa6>(KQ?EKJ{n^-qM1a^V;>u_g?0e%69L=^@KweK(OBwP!#W?L{{b$up>n z>57b^iZn4+iVALt9|wJl1$iF>bkpRvT%5;5`MAJ~T=#?U^Cdh}^R-$EcqThjNVev)m$# z4zOG$MmMqCVvG*5+)|8gX1N-SZeh7)7~RTpD=@l^%{0GmfM2S!z|a0(IYI^ zi_xPjw+*AmSgsGF|FYZ>7(LE%M`H8@%k9SKNtQbrqo-KzSd5-#x#KZ$?B=p~l>8%8g)+}|;Jh2_r0=v9{cCq}Qa z-1!*2&T2T_?qZDIV!2B(dYk3;VDt{l{Rg9WS?)@V-eb9|F?yfnuEppB zmb)IK4_WR8j6PzyeHeYra{Dp*gyn9+=u?)v8Kciw?pBOGXSv%k`hw-|#OOnNdmU|eZ?^y0pjJ{{N|6=q5%RPb7k1Y2TMnAFKGZ_8Ma?fG( z3(Gx^(XTA`B9;)#y^JMTr;}0rDwZ59_d1rGEcYgsTrBrCmSmQD7fTAuy^kf8;nQUc3;iX{)reU7C>mirP*nB~64QWDF3i=||i`yNXvEcYXpye#)KmV7MtE0$7e z&M9FjjpdwJ8o+WgmIkt%ilsp;mw=^omP^FaV3te5lAq;Lu#~}aJ}hOjTpE^!u-rf_ z4Q07>EDd8hKbD5GTqc%Au-s5AWwG3FERAHjEG&&;xlvfkX1UQ=8qIQJuyh#9jl2`_mye|hELVV~i7Yo2OF1kz9ZQo~t`JMPEC*Yfc`P>@OZhA} z7fX{_E`X&1mMg*16qYN)(o~k4kELlWSB|CWEVl?tGgz(?ONA`A7)wPgw-ie=S*`|4 zvsi8!mS(fu3M|cGxjHP(Wx3T@I-KR!Vky9K^>BEY<$_o$VYx;um9kt2OJyv#0Za2( zt`$r3S#A@S7O-49mdaVK6H5zOZVQ$cv0OKnDp;-;OO-6Q4NFxl*N3IWEO!K!mayEB z@WX1B+s$V+*wP5LN9HwpN`jrBU~>qa`eHFvEM`oHk%>se6gd{b7)Qroj2y#Ye4{M* z$d*3i8Xkiy!Xeb2oYy#H6E!BwCK4ud6X`m^Yztrv9|&Q(Te3wOFhSHrkY+wUVl9+D zTqLJTY_Vxgj-?`%M$VwvkVcNC*kB_kR&23p(u7?Pc8OR{=xT;zFRa2Wk%bu_oQ7dM zW2|`U*&!J#PUG1b#yM6XlddZDk7Dh!=G$kTY@fBjJ}Wnson}q7FLj!I*6ECO{2}aG z#*PC07G`c+dy=_z?J;xv+GFMxw#UqEY>$~+*&Z{u^PxJLJZ{dj*L#H3rvDOFoBm5! zZTc@^wducv)u#UvR-67ySh-zAaf_X<(vDs+qmB^yIoX*f584@vXj(QM)H(!XLAgnsPs0Aq@2Ve%N{P%Pm^O3Y4( z97kiaMAI!hdB#tvF*ebBr5#W!FJ(NU<&(xk4lpn-VJAh7x-q6n0ym3s0*(Ph&ESW* z*ugl)ChC077CtY>I7L3E=hRjXhvL(g4x+%Nm&f{rZs{CCNqQEKDJcq_no!*ly+gNM zJGsX=Ep(+rlOAhhtfG}7*MPFJp<=@b<}ojFI4+osdTJ<(PG|EiV;d)MCN4^MhLG`! z#tr9XP0{*YktRWWC|jjE58#S=Cxt zPr)Xx2o2O`IZeL;W()j|@+2ZCYTC&B>Q#7;1%~Le9 z#m$qRncNRp+&r0CZTc^fYSVuSt4;qUtTz3Zu-f!r!fMlh39E%&qs}|CxG+qx7JwZ)nRJ2>#eKp=!ah4<&GBO|;jiodLHN6h0bmt&@H_j8$1= zs*9y{Ld+|8v1>E65>V?d%slnS;?h zG@lg0F$#SlJxGVq0#r^4;Q)nChh&G4TmYk0OurJ0R}+J21w#%MQTbT*^ijM3j&?pBP>VWqcYbS|Ua ziP1k;?rx0!$#VB%bRNsykJ0%o_aH_WFzmw^UC3yUV)QST`!7cSX1OOYx`^eT!sue= zCC|X=(hZ>={sIg3ZU}|E#eken^lC$SGk+UtiIsD?+lMuvyQ%Uv%fxL$C*1jjlX z^7GxUS0q$8R`*MM_9`3Q?^raf;5|1pF&gQ5%>&|Iho3+!!>%`7BRwd~^%m5vY1G@( z+Lk-7wGG}8C(M@V&j=0*u{>S-4FNzoi~@+-Q{<>W+=>r2;H z9@potui>azYdd?XQd=KXqzCX97>v`&;3Vw&*7cnSbo<_xZsnk+>iQ9W5Tmst#*3U( z*Uu8l3U_D>E^3-z6I{Q@2--@zvJuWNPt!&07(l_Ro@QeBN`lh^vRp8uXzCdmRat>U zYFZhYM^qV(B)Xg6I}w{V6SGz8&(_E8BVvb{;no=|(fJ~qsbr6w=#dlP90+o@G&j5D zWKaUCgjtaNUqb6*9R-bB1vVebUfD-fNQIyD(3WC(fVAD?dRHDueiQ+^1j%vC|2s9f zCDP@=L=8V3&3SG)lbQrFunKUtK3-GemFya)ppXCV8KWpE@#0=mPf)! zhF{`k>3k+^v*y;WuAa7Bj*zqE(H=BRhBZNM#N1-$Nc~K4*PHTKh!pZTo%;~Ws`3PG zzlI>3nb+CRc%VOAOVnt$=}EjBbL2@Ld7_+)7IGO2e$jf)ja30s$(g>EEN-_nI zf!~LMNgLgAAD+$=QL!vRZ23xE$N>14MI2PPdYQ`~YXNvFBx zc@W-6SU0?-#@pE2)djCd3ct?=h7@IjA0p@sR@u8fTa_2V#1QUXLLxyxu1t_CAYXR<|~`ly~%iCEz!BgZWfpE~GYDlOV5_*OIv2(X*lp zhAsIy5jh81j^%oJJw$C8e&pgMa@(@O)S-@Uc!^#fiTyA&aLJ9GZRBG#P>|c&-rn0o zexH(CO@43$0kctV@<1ISuj@NFLX;isfFH5+c4V76I6FT(*c9B{Lw-asCt_1NGQvH{ zuA<(Vqp3lEnl~A$Y>`{xu&}%_MUml$IwOU%l;QVIUb)=~U-nVSKX4#0l@->6x>|#6 ztvg6_R2fd}j*L{z-(Xh}Y;R}^!h7t3&B4Z=&aOUHh99yf2itmdGzp!cSHa@tcly`= z@I{AiIyC@m;kTJHSL;dz^DhUK1l!tb;1yqBnO=FTNA8igfn~NELX^PJnpx-dcF?}f z2mAneM=C<{5zzn4M#8Qy?`R5b4>i@m+@s1z!f#cr{6xo0J#u$~yh}cc4C!D;ac^r| z(>!>YAo+=yrjM>l_)Q%2QDbh2juo^#Mn2X9LXMNr2n#K#gR1fg5V_ieFfmnVYDO9y zt+%j7(V9m-N&b^ZK2bgy;*Et8k=Cp7DRBBOwL5MAN4JXCtLwDgC4kAfA64?sqwE(kgt)igY5tpO#KddFIbVR^}5M?AfY9Z zE{Qwr^9lM!c^{de`{7=n+*>&0191P(atC3{g5_=j6M!1M9l@@?`s@Y>##p|M02Acf zCDazt$~ZL{uj1A?>|l3#z({w&?|H)A5;Xz949gY>q_+~oj!3Sgjez8S82yS%+6xaP zpgHn`-3H(VmU)@YMIb{DKDz@uGPE zOeVkgH*bK=B)|6PVE*zdxNSCs*3J&NU!XtS(?Zc7;}XlU{JQ)GG2@%CJHm#_+ptr^ zYJZnFG!#^`%MV~%jO9LpjUdMS31RWW-U++>9QICF?n~I=V7aehCxpSiC7m-4wr1Gn z4`lw({nlT<;3s{of8Q=dCBOU=S@``7j#rH3Uy1O+3c~UN>2VltiUYQvs9ePbTN|`$ zMS-mimVA0G7|DLRA?AzS}}y%ZQc1puCc5c#9BBKHi#H48&>QMzz?@ONn~{l6Mj?cR!FcimW~1i`rs^v znn3yw_J>Ylmy=+Bh~@HNZ;purCpBs`1vaG^6Wnp6M8X*?Mw>!dnN9u-D4Om6?mC!-gy?S^(Q`OyEM;bYrv%*hXZz zD%eJ3rAvrS^I=m-sV3`na)YeY5=*4QP99@{J4>Si(4N(-XccS}Gl^@=OmM@M5{{*G ziUT{=GuV3Ap=G%S*tKOjSXZ0)^I?~lmBDUn6U((maY3J?YmtC1JYeoC>mZYGwyMDV z<_||(Qz?ncN=JgyuE1+ioG=>Lj{w7-secIwR<s>;!zM{5&Sj)i_vj!}+-XAJPp9Eb|Aj@12}*cdd8S9Dg1w1U+u4^U3> zfU*7*)dK}sp3N$Q1)`}Br$C6>hLzJ&JAUU=DY16Ix=g3eU_79|Kq zf!sn`h?R2)Pr3pd(dRR#_-7RNv?vOUjGcf3J6sr52L5~uE4wJFtPnQHSuK~E%O>YV zQNU%lG4B6Fl}(0idREI-QDqR>jE0*Gk>x}t>AI*gu!V^m+Up=cbSGUPgbJ zqAKtf4JDhtdJ3A!7810CEFqNtDvu{Bk10<;PQDO+f~`Ddcms{#jZhQ>@3n9%&q9rk z1!V014~$&C*np%%!#q-y7nB!?qrrB)dj)(ow;Xn_S!~fpJfW8IH)BBuy`sDd)4B2* z#1;{Us=Q&?Ril-Lqgvc+NGcBQoRzmc%A3mD`WrcI8A1XA-J(+7O+abNd%#V6Gfnvb zAY|2?q}Lnb?#Iy6VGT)Z8T!)%*T=Ljod+2w06VV zMIN9^9_44%0r#60%zS}Lm#M1ig0R*CgNrO}MYrIpqN*NMR$)b!*wdCBY;1(rr;*!< zQNV6d3sVW8i3E+|L4*Z!RVzHjQDMoJWhIhu5wob?1T{tVL3fxJ_o|u(LkzwH9c+Vn zX`p_?NZZ+2h1G%TAdfmgO^5qsrW1P`zN*4v?o0tD`i|lMCxt#bQZqejhB^eA%rvef zuiz;oZ$4MmVKG`t!jL+`qYhWIFsed};X%3z&)^;P`B)uIIyFOuC8wi)GFHd3%W>qg z0IL(&4rc&hT!HGvURA~N74ntjqAW#G=XqTt$&S@ zZ9(PHp;4ZSBz2)-dxvT@-8MN1N~*dTo;8y|<4~7En}c0gt)UAE zwHD?U`mqD7E+=!#PIU!5e5bRkS_hB%S#C9K`Dim9ndIm@yi|3qM_s2JN0wN5ur$f@hpCU{uSXw7h3faO{U>=bxn&o1F-pqG|0$=1EnBRUy1<4`xi2tQ6E8>Q4BFEaBEL9IW{yFv8JH@-gP- zHBqA-=TVO*z~ccZJxSyoubu?QDVPY@?t?e`18igpo(}r}{NoDn9wDrf z+bJbcJp;}^Fh4m9J2D)Zq(9CEF^%N&7+5`rm7PmA=U_{;9$tMO!YaA#1nhYdnx&h~ z=?68!fu622jaQMmlsOOyycfV$ntGu}`H|d!x3StTg8de45}~W?8u0MOmXc0*qP)FF zRWBhsH00CsxmEC;0tkSY!K}f(ky7X|xI97KqrytfSwr4Uc8I78JP;z)E7hyup@RzB zZB|j2FstgdU?te2?16qAX&usmA7o#z?)9kGsW(WdIAXN2wop4fSJK83`$~{@rQ2(c zOj$%23vK&6>ZNMG*O89pm*rPT$K3>@`yhFY;DpgepMqw$H!jca-c0WfOb3u)1Ckk0 zdo)8Pg&DaE!=s;LLG@eJ+fqUN?J!Qst1=Idsec%&+ue-rL6CT-dKc0DZmeW7)$aw> z?@L8a^>(aGVWbCv^iV2t5mE^wJqo19QjttZrHu3hke*CM3L(vBq-TKiY${R-sg9AJ z2ht0v$W2J=80lpoy^@L&NVC$7mMHFo2MEhxWv8mI!>CHU1kHIk6$My+#oKBPSxV^7+eC>nJCLj98X{8xquUko>>0yi{n;M09; zGKjzNfbQSI2_)9|@8P@-%l(L5&$0Hvc9x^1z^%ff%+b>5c1t8}cDun-N@uzB9(p&2D{m2l-m!-tyqu%t(1a%1=d! zgtUo~rT}SbD#C>HXGWR)&fq*fqpOhxI0bS)#b1F0hw4JM?$jI;$vU8%@VNH;K2FOasT zq6|X1m67^@1Wz0@frKhpYmdarZLDxN6dsj|h7kU{80lCb9hZuR68=iYejhsBW0K zGonLTcXe+^Ej*c5-RHm}ptqx;b9-$kJV=PK{w>Guf4KkYai8lx56kyRzY?#z02VdT zi+6}o@Dk{5{-ip@o=0a(XuAGpfIkP;o@a-e7#qwG=DQGB?DA<>o01r7X`~9(eKACU zhR#m-I2Hs!(|w2G8MX1tZt*q{A8cxVn^|m*Jx@yU0Coz5}EO?f~TP?{oCwkc@ z?3R$1qJ-eE9ZbzhH9c_Purj!rv*2=g(Q#J^`OIJliaqQA-aPmqAxvoC7UaOj^49KF z5E|&{=!9>mk*^fO?GgkEW@1(ckWy;MlB>L<4Rj-CdSC;DQb2u_g&fEQe+nXjJ(Zk% zhE+%^Io?cDILS;?IJ8VtIG#*XIGjvVIGT)*HOj9@~P2uH*G=;Yf(iGkeNK<&J zAEc?|rFS&l&(i}uy@{s>d3rNXZ{g{!JiU#lxAXK4p5DpRyLfsxPw(OBy*#~-r}y*p z0iHg{(}#HaFi#)h>7zV-jHmzQ>Ek?of~WBEI@-RccnUABqu21-I+{Mq)8}~lKb}6% z(-(O9B2Qo9>B~HQg{QCb^fjKo&eJz|`X*1`;_2HweTS#-^7K8PzR%MSc={nvKjP`f zJpF{HpYrrGo_@|#c=;S{=a)Q%7thgac@Koigo2Lmp_3$*2r_ z<0-s2j$XrS<7hgFr|CQ$%u_#4GkBWG(;++^%F|&y9nRAcJk8?iNS==3X*N$s^Yk#D zj^XK8o{r<`c%Dw+=|rC9@N^PSb9tJ_(|n%7%im}_3wR1Iexuj$+Bcd`AIz|(S`F68MVo>uU*lBZQX zUCh%ZJY7ms={-2;58w8HhXA(6=WW|3Q@t|*b9QGD^#B(snMg3_0OHFzfit zi3g-3#cGaVEa8@`tmOnI^}!tIpf*Tw5E}r2*kPBnJGzD;2c+Ze)^HTDEv?~b>4ZoP zM?noo(;7~cP7>B|${$w4snTh@27`N?A+8|W@I>*jdoZQXl+NNJ_3nDESfasQ*|I_U z8`$58Z>p8#%qomghH z+g?dpPMzv1z1v<1PIVQv!}T$0=(k(L-f#^!=xf*uHQYdJ*e^EAL2(7qokuIsVh)G} zf4Dh@(zlCcMw^8?1U1VodZocNq+4hWcSv_4Ck>QK;D*fwtnTrdLvjvC4~nZ8&v?QC z!!6y-hqGI{2XZ9Tx}|%eGAH-zyJ(Y=oWSS>7B3W%racs+X^)BPjc(e*;r=i*?cs3K z{wqDseJawl2@|1d&xxyuZrT&P3b*tmu^w&OQ?T-PYE60qDti+Co}x|qpY%Mhum`E| zA419Fp+djQFZCpT&l=E$ zXyajRJ|KN57CVJ;h1=_qKIUfjNTdQ{W{>m<VRb_jf-TlLQLu%f1_jI{ji+c@9>i>QO4=sOa4Vt zV$^DlY31c^E|Ev60)a!Bz!4yD=x-F5)6 z%yr}m1WslGr-H!Azfs^c$8>?fLMCt)2rT@K0^t#gK;Yp_U7z_$y*YwUsV z5Q5j)1K%kGueS%jO9*bT2fkYfZn6iyM+k1V2fkMbZm|cxPY8~&>0y{QVTQY32yU}i z^8-R~hduCvLhxpL;D?0ZE_>jIh2S20;75eut@gl=3c=g$fgclsci02}R|wu|5B#_g zyvrW=2_g6>d*CO9;A8B8pAv$Pvj=`!2tL6c_!%MiBzxdzh2WFzfu9qCPq7F7pAdYS zJ@E5F@L%kKUl4-Num^ro2tLam_$49uYuc5B$9l{J1^v z4?^&h_P{?1!B5)*|0D!IYY+Uh5d1%T;9rE`7wmz56@p)~1%{nR?J0R=WA;YJEB3&W z5d4}wutNxb!yecv1ixhu>=J_Cu?H6IWZ&p`&mLG2*8G7zuqp(9WDo2XfF76e0L0dtk2+{EI!XPXu-%d*De|iaqc^A=qsXJV*%k*aN2v!Pp*nun?SV59}9$z4pKvLU5`*aHbGE zz#e#r5Io2pc&HFO*dBP85S(ETJX{DKVh=n*2p(n+oFxR0um>I~1dp@_9wh{4+XH6{ z!H3xcj~0T*+5;aZ1dq1|9wP)#v9?79(&*lA$Y4jaHSBu-5$6~2;N~2yjTd{X%DaHhsZyRMXrlO*El4s#s)093oE> zi)@NR^MYTE*5!C93uZC7Wt1jL|!2ld0reMuM~^CAP$jNiADY^ z4v|-jMP3w#$ZNzRFNs6swPKN%#Ub)KvB=Bg5P7{=wKH{uZam{{anaftk{SmZl#hQ z4v|lZMSc>8$fw03KZ`@;Gh&fn#3AxovBgB3~4X{3Q;NF9}6DQ5+&)7K?PmA@UWmNLL&pUlof~;t=_oSfo1+k*|wIdg2iI zhFBzyL*$!ck;!q0d`m3S8;8iZ#UfMV5c!T+7|#PKiV0w_=gg;t=_rSmca2 zM1C(8SrmuJAH*VO#Ub)XvB)`bi2O+`^6)rB{wx+*9EZqX#3D=M5c#WEypL5Gjd8E{sE@LoBi)4v|i=$f`I*y2K)v#351^i>!`Aq#_ns8;3|$EOL1qBHdz< zE8`HEAQrhQ4v`+Q$Te|@OcaY;7l%kJ7P&qSkx62a4RMG}7K?0(Lu86rWOE!My<(9q zaftMZMQ)5kWU5$XTO1*oWJ{6_i7ne7J1>Z z{!PVcqVKDqc`ohc(|Ry{D#mQ))s@Sh2SanYOWE2r`ZG73c)k%ftLxv zMfSkUh2UBCz$=8{IrhLSg<$#`aeY?}5%zPP5L|4od8iN!-yIjYXQ>%HLI_?h1kW>r zvxH#yUb&#=1!nL_AsD_?E&wkygGUL$@P%~&xWWw17J}=AZLTtdM+?F0h2SM-@L@tQ zd>~k$cC{HiMhI>Yf@{s-u|ja85WL(B9w!7h3BfDP;PFCmNZ3`Y%-{(^aI+A+#tfb) z1aA<6*O|dNLU4-^yxt6+Bm}n#!3}0`t`NLYXzeC5I9~|fB%G_7&EUyGaGMa^Vg?ro z!RKG_UjAO!Cc zf}_6US1tta7J^SR*St^&K1$eCe=&m>3BgAT!DpDk6+-YaLbcB_gDZvLV}&)JZ3Zt9 zf{zn|&oP6S3c<$;J*mL*O|ffLhxUO;Js$>dLj4>A^1i!I4A_4DYSOK8QdTQpCzpMfEnB<1piG~ z^FcGXNeDh$So1AraI+BncOm#TGkAj#e2!48-?J12*LN5!JCBO ze+t3(nZa#B@OeV;17>i$5PZH6{E!*kDFk02wDu!r@Mav}oO^=iNC zjeghLdtD#M6TGT(uj|vBU7y#bxxVoBdB^W}ebevy;SSeNK;A1${jy9hWwl>UB49a1 z1M5Kfu|aA5@*qP6{@A=3w1Od81yS1V@Q#WNX4(zYz+vrnST!ll)czgb!w*%%2&e({ z^t$`yQT_6metEpEc{{xGW8>2djMHN?<{53a!|RRB3pNWkwa-fX$<(-0nD(+x`6x3V z;T;>hK4#`=QD#2En;RQsHuDkQve?Y5h8cnyDq@55wmrf-D>h@EsmG7-HpFITsuWrE z_z~XL*m$E>b+H+vwDO_jVskUKW?8D`Lw}Afz^K;|u^COCc!YOgY+k)5?(nXS%{aMo zVkCZLAO#)(^`Q&U4*0ThpY$U-!nFqNaGij5(wGL{VRjvl9P(`Td0E#<+IM_iC%OJd zK0Zs&kjoNWz(*_PIaKBn{a!J-!fx;6*h({-M+d*%-on@*v)}Lb zE{)C1YOoA1yS*!8#ZuRBfZpvxXT;`Y5xOjPtB&?&$40Y`ikkm? z=xFbR*eH{S67G`N+=q4sB4A-`0XlCWoHJr`8r^{~+p{t0jk&SKG8@m2ZR2AO?Kx4C zpAQ}LTioRs+f6yzyWXNHl{B(hwB=ZDR%|%yOF>(XwVM9Tu79jIDRvbZD|CVWFq8m+ zez){AI?8br+U>Xk9qoJz9py?!$GEOVN5c~JSa~NpE*$iqhmUfTuZzRy+2vhY(3f|~ zb9F%v4j^r~64t@7 zS?lhQ6N+4W<#m8?_R9@qMc6#i?>Y$0Kzrq*`{m>Nt&z`-+7s@V{~6Ilq0&;LZzsF~R4Sh* z07vbc3BV}TG02h5!69f4QFO%kx{ABtlh^Q#^OW&7qnUN%_sjp@=NLHQ?mbAEaQE%k zgDNhRj)nj)`|f!Xa{h$URpcmD<%{)CxAj$y;MPfX42xMMdKdj2p zF{{jGRn8z)Ub@eb{fAXKF=mzUC3VuuiKNQQ_Bkf}VO18ytP;MpPO6+ts@${BG5HUx zvM6Si@HKW)+Yih)!QagWfW^|51TxqQPylnQ0n-*c_}yW=MIB~!7e!WU z5FknD)AkvLd2>KE-(HaKHUvW!f`;ir(EIXLQX@iqr7vIQ^@6SLk$&aB6nYJ81)Ce_ zqP_A%p#S(Gkw*B?N#2RETk$ApHiT;SxFPPJUZ=i{Kq>fwlLz>AHv_qMnpzz1o7*z2LCZ=Kx}XW{Cyg+mR{@?RtxRV z!ZNQg$Rw@$g2)Y*U+MLMcAA%y@~=oa{E_kbp}xkeywhSg#IS0<%6nLB&S%1PU*#QS zs{0#Kcewm&Z>FjIJ3)_JYjsP!A9lXzz=kAzWBonU@}pr>(TA?}u8XZQaV>}rzw|3o zzv3L z*suj6XM!g|Fhyt&It*P7|NTcAkFJn*p(~{e&{d8MbhV=hUF)2Vu5+$H*E^p=dm~ZW zRV0YgN~RX1)HNuH1SvHYEXW7{r;vTm*xUV9Mox?Ur--lbH`oCJq>@XXO5)O)}?BBq9Nq}~H` zM_u!NQg1$~H#|CSGV3M320ViPIcRk+8MA*5dS}Me(%3%-y`y7t%2EAu&|4mp+i0hQ zR?jJ(VH1I1bRP8Xh*<%9JR};O2VwUnHp~zs4|>~Ua~g&x2t7MCt8jcCw3>#<`~ZDC zT<>>K$2GC*Fez@aGaGTdg9gVU1D~uIUJESsnWVe0Rl zeCRfB>?OOB1Ns}RbDLFb&6||BS%uR`zuXpU@@0Eu{ZcC050mWy#~J7*$6j<$PDD4$ z6VNSkAG%ekLAOOFT{TrS=}yrmUH3UCg-p8cIn0Y_2%Dxi`CZ;IF+0Z?GVVG=D3V#c zFx*qzWi^M=@F)xJDem%GJSj7by1T6IgAL*0E^qATtxBQMB2!~pL^p-pB^=4b25<)! zap}7)rY`w2;5My)?zVC_HlYaCKX+R_Pc>NVZhOnayQ3lpTe2wz=edX8#m6`;KqAM? z$V_6e$~{(oA+X9l-j3LP64NU8SUuM=SmhpXFt&W%b4?$*$A?ai$*RnPHb*TB@3DHK z!uDPw{&J7k?i%u*CJ{VQ6aE1Ah#V|G2`;fgA=0i~{ zOyNZSu;oM!7J~at*1)tAX-v9@*9^F zk61=MFo9`F@rdmu#Ur+t6p#G2B}G)nJZkaSQ5kPG_oG%VFw9(!TG&#_F>J&7(4+Pi zAdeasAYfo}|MNw7G(TpH29e!?X>b#d&|T7cbhl#;y2trCy4RJ9?sF|h_q#gL1FqB2 zgR+Vql6Rwrl@;g_H6K0d9*Q1|ELhxgL<^P@ZNcI=mF;^w7IWXv3hVTwK_`oQ=BIww zJ@Zqx@0p*nvT@Ws*;BUfnV+&;%!KXml)(<<-jznuaQV|w5zlyU`-~Yce-}N#p0(Pm zN($HYter6fn>NPdX6CW*oJEI4dH8b{GlVWqJ!karhzGOtMo*#<=qYI|dRkh5o{?J6 zv(k;|xrmoK7K^;JRP$0P2cBiavKo=)9ti~V!WMbaU|qeJ8s@o|?9IwA8Kgze$}b;c zR(>VQ7mTy=t5M}fUwO?~zuAf}f)!sv9q46vX#EPh2EB?NL$5`wh&~lralU3nSz`6wVX*ca{ixADXF9f@3Z(EE@<8IB{Rx@s7 z6X5NrIh3q}7KK~?j-mCW*Nt2E@0z#nO}kg`MdA4zy+}Xdzi%esGQxc{P)cvh-@KJcUelBKzEF5qPIvt@CIV* zW>`jjVD$hok2G6gs}H=pV~ZEr>H{D8s|CVfEWM#V@UDpoQI^ zbzz>7)8fQl#QQ%muZ#^_H}v@i>A{tH(H~m*szHelEhc9^m*{tgA~#+iT0KIDtbad@ zHLr|BZkQ0>f{6Gw`USls4MXorbI^OzI`qC{5&8fQu6!7YjINtSk+DvTjES!xADLeg zd&pEti~)b6^alCV;(mqh3mayePpzKfMeYGVjfxv&<1y+U?K6u9kj8tZ&n!BFYPnk9 zrq3*v0lGW7&kS0U8CKhx03#U$er|Cn$@;s^d~SO~<8yPz znzk6eh+3=|7c*a)%SERgzOq^}#IXKXR$C2e;c5FTgZ^aNrl$djgA%jrE%>$7fK20v zkBtb6O?1P2^|jT#v>{f0ZDor{!2UXFxk64cL~a(piCTn`_&tq;Eci1m!M?Tf9b$ie zP)OhQZ!I2H85dyRTG^E>2rHom?HH!MitnsWn?r{PC;9Jw>w@SzZz%RiizOZt7j^PV+KE3MbJp3`OzG~#kYMw9l{^XG3Td4-S!E_ z&rcRlRE#m_C#!CbwC$%T4}zOI+CIbM#-A-$BH_8_XY(y!_{px_Gg-e_?f3FPti>X7 z{uES&e@wT8zxdFpv7JhEp96^VEf8$^6XT}v7ptc<=5@y}wl{u%G2TH&HaX_ODjfEB z&`$K3G!lL8_z`{K%tT*0XQHp1H>0mzXQFRhH=u9jO7xv_H2PNg7=5q)9sS@w8vW@0 z8U2*-Jo?!)2K^FQ_9ym;mi_CrWk0$bsdQWER2I{ewOW5ml3{J3Z7Zz~mpcsQWK;0) zh$+Kd&ZzNKEZ}k(xgz#Rh2!{0lF$grfex3Ps9ADF+J;UQwXI&(4m78;ja~GycA!}a z>SBqMV=>3e`TKpK+Xs?Y%+;6nkByY1#drk5-#pIMl_L_7^d+FbDCbZWk z&0gp__~j4Tl09LsvKfXCOwT?2%8q{Js5_Kn`jz9sZ%%YI>Ce_lxmGTxTZ#hI;HtS+ zzxdtXubdoxnqAVraqR?A$NxFpkSlpZjutlLRKuQ}lxK0`i|%Ohsm z8?iIo2zCnhAKu{xKbm6SkIvH%#VOvF*yANeA578p!A_C-=ZDqb%+;UA)Q1(dc5em4 z;|skaQ>_AB3`O*>)0-z!8}!rXK}JMOMdREc(32>Nl}5wAR1Nuv=ul%fnim%y)&}d`iB4 z*v$GJ!$$vVL!tSu3@c(9HdhOV&1|bXL4yg6n$P|n!)CTF@(72`HDS$7CY)n1A*@To zo9@z_-=T>91&=}#UaKi0MXxz?^|jBnns;sXI|bG$p|3Kr@+JMdLWS13%erFdmU{&immadk z`uB_qE50vW@u|F98ui@*6+h^mYgo3GS-q!17d*rLQg%r5leERszeXe2SnbG$vkBmQ{JPChK!{2k`$KR|Z)@ANjp6^#)zC%ge=gK0xJN?S* z+=h_A!=h32EmYrgJ-q|;8+gh)a5J*cl??*}e%h-o05#Tu-b9EtT8EQe1^uq3nR^g@ z`A>wKtD?N$ufXOj;U@bwn(TDC|H8SIkM58s?sJV9zgPKuukua5@}0&uSpV=q`Th>& z$9=Bx(QJPGeivt(7|oU;V4F04uZrN^463s#=T22VSDKM?hbkAj{H}gA0jyIblU!1f z;#X+#AiqM&Rlmy1-6WS(l;BSw<>*U)0x9?SJ-j@T{mzLK5?I#J%0R+|F5<4 z0IZ_e`uLff+}%w`xgkgm7Xk?+0YZrcLP8(`OoAXyKq;c2fPjji$g?*TrGs=(5W7D0 zp+*D?R_y(WioHF{vwr%X-S7N&@7=qzWp4cZ(EN61@0^`>W_EVUS-qf9?`rB-ub8XE zboGh3dYG=mW3FDNt32i^GhO{-u5!~gAm*wtT~#qxmFcSXXntbHX?{RnWy5ffAn!eOH8=%60gi~v1thM}oE4Tc4*M3VI8)!Y8H+Jc3@;8{iY*8BLI@^hx0&k6gkOr>#I$Qd?nV>0+;- zSJ$hhhRG5<+aqYNXSM?zC5?X8Czd`Qdi@XEf>ZG0|Kj+iogo& z;2A({E^k+$3{XM?B9hxtp3GH`!dDBFo(pmkZFNDUytphqon>nd+Q*j`i?vPa-qT zN007IB6GZtPV7!1bAnWttn}O+m$A#r`(T(Zg=OV=V_YsE?`B9cR#cLG1g4W%=8BANKY)rS{BJlyb6V}RQGG^ zj@G&XeSD+t9Py{+W|jopHnE;@xqCgMKFM4+u8(!bafNEZC9lxdr?it-D$okm%6ML7 zWyhLVJLtzX>eIY8P}nl!u}*tNhJ%8sxPX*mZX-4T!VABoJjCGPr#^{YsZ1;nVC3p2 z#CPYgZ6}|-Dl3~Dqm}L$X>53vm#)d#ze=?h5!pXOp5Lcc5rshrpWHvmBd<34oyh!E zD)Z`6=C3kM2*;ktVa|MgmQPYwCrj$d(hLu+{*x)4;}%zJhLE&ub(0gi+LO?EoY+(4 z6(qFAY=;B1HnClGjkE?6xyDO{^ab+70IfBj^hs~FR;ui=!Sgd3b^f2X>*$NPX_9uM ztT&sxfZOugbbYbrtcdFs`;o)X$v%4qSJ_0Hw?5L`)#jONq&U84HO_9-&$BdWv2&J$ zHmK?^N5iq1%B*UOCHpTMR7)gG>BP54{A>RP#TsLCeV;QYHkjRufGn2k&j#nT1L{w# z3AHohd@hg+-OcF6rm5LRX)$Kv=9dI$#^&Uj5q2hXv%-8>@HW=Xk=kH2k#>-5R_(S+ zDAeWvg}TI4s3nd1Wqt~^d*?Q>d+h3Wci6 zIei7+e3`2m+osxlmuM5Wxg)MkcGL!arR`wtUFp=q?Mkh+y9wK+2AsQE`fBr*`nvd? zd6gzwOsfXMAqBHT^?eO)He+IIocCad>mCaGqmr?W9jaxu(w>bSiai^S-HJP;qC@i6 z^WR4P+v3ayeS4$6!_Kp7o%6E#PWHSjA*8Q%mclMoTY&9;S2xP{-sOA->O1%8*B{Hi zc&h6bzHOs^d!v5$y*dkOQ+e8JKc>AN z$LsN58rbnx+;Idu-ZLE&ck7=_CiV-TIg8B^>GCd`OBkl@6lE zk@`S5?bsBv9nx;#bjW)#Sw7fcqScc6*e7EtML);clCsaL;5OH(cA3y+w~hJ_je2}8KZg^M?dW3ggAa>6 z^+~SBs7P16q}eSKdvm^|;W7FP-_6za6U~~`gt9lMDQ3Qz{9rClGF7WrUGY(TlufFInX0|nzO^tjhgK>g z->Co23gFKF9NMXnan{1jCM!UuM**z%PEyq@Wo6-#k8KxlMj=b}5{dfYN?o>D(-hj} z6GpbV1uH;CD$6X@Zadzo?~RS(<;c`^Q@1$j_RuX4TP3tUTV;=0idnX*-SCas1f>!< z-mIkfObwQD#V6QUbJ!<75wklVPzHgm0)L1=5g#rO_hT!f>VKQT7!)56N)$sxwW%FS z=nY1(kk$$&4y2U35!LEJRXZJa?{6-XFo35@ zoawUj#l0%q91t<7)-H~U@cw`u8!RuJ`ZCxj8E%GWy1!0jXc+jWLsr--o9&F^Pw8QE8cxEIguD{ z$&+3kFx;{jih#^DqRxc0S66@O#gVlLpR$!d7bV)8D?Ea;g1Zz3& z7V6+GL~Wa+4Ri0l%2%{EfpaAyU(t$~ww$dd)7oX0sOb5sje)VTYO6cL+pnBr3d=n9 zd<#b^A~z1&3GsGWIfO1cn+rz*N(#|(+U959iVsMAV;5@YNQNsmv+dZZ2IED6%CxX2 zHU+A&szhuGq~Seo!i*x04Ud4zX)9FOrTT__yPgh(NqUR^PlrNH8LDOO_AdMQ!TwaQ{_<7v}#-8Uk-YF*3{_6J+PRSU|TD@Ni&wL zmD-Hm=0>gcC3}sYm{xLZ)PhwWSD%V=!1i9|@m}iou1`sL@8|K}Q}T{y+sO&2C^EPi!p42HTYnUT)BIz_WEb+%*rbLQ&(57pTevx=6g)DpIj2_oK0gtRq;s;UO&~BA&~R2iDRjt z`?+Ipq$Lu2j3=@E-QKk^3GY)p-YX>U$jVU(@5g(*50JcbRvLM+to+&a0#lhRD`9EW zot2fUuC|nwl}Za80a;n;iG4JY*b_a8t&+TR-WXjH-e-Hf50tzkZ#tRYvCGt$=kZ=G zc}LD4lkh&@<9(3F`^bd%Gd$i0OWvXLofF;{d%V|3-VvF?g!gkj-fJcAxO;cgyKz1z z^>fg5sgW2ZOTgG;im{t0R8P(R2(6|(okD_iW23Hz^>Er>KOw<)X`B~<)@ZXr_`C$IrSPUNIgh}{6Wkv;X%|jypW2*H&Su<5S3`z)J?0S?%D;^ zL)$~8+PBnGFQMN0anwg&LS_1G)K`Cx%8l04kGqTgjVq|ac!UNRKT~B|AF4{5OVw%D z(V(=qXmEOjYSJ61HvK#rlHN!|)4!s+W?iVh*)(cswuy!}dx?(B2-Ap+3L2SlI*rb_ zp2lRnL1QyBXPqGgf_PMfHt>%ing?Sjke~M(YCx*v_0=@+R^?ix;EOGc116s>!Ta!hUhN3CweD6 z9DRUZiat$mMi0`5(U0h>=(mERf6(QL{_(UBDebr(V{de zT9%Fytx7Kxt$X$qZF=R2w!IdJyk2WX``+h>XrJ#yhqA#U|L_XY`S1gxpznB5SY9T& zl;0|f`duoD`%e`m6&a#iMUCiDF<+EcTqAl`JTH1x{3d!2m?!!SI3&s{)5YPH6{2tD zY*AjhQS_@CFZx$qDk`e(5(BC}5S0UWh^m1vh=But7uD50#GvXaVsP~`QB%EF)K-5c zh74*gh7PI|!v-x9b%VQz`kGwPQ1hr5QS*ZsSz98Gs+}T6)vl!GrY)eElpZ>P`p`tG zqqZT|44S}atwQ;1aO75%1H3G>*@*#KZJHjpeguVy8%@F??o-i$qr% z&1Yd44HDDE46aXnMzu7Agn@ROzo%47ydEPwJA5*QjNAEAJ*Dt}MCm2ny6-Wz?=h~q zlU*THNzzQKSxe1mcC>tjALjt@FFpJOpTVkDdia2`gC!6^W(s?V@K2HO0S+kL*lAqL zVI!bi_6+YjcfM{THpYs7nsFENZ2rnq7Dd>WavFO(j4OQ_wdP|RKDOgy9v`E8?7+u- zK6c_`0e^nJEBh$sSeEdOyYsOJAA9n#7a#lZv5b#>`B=`!{(P+9V~6`mJ9HGEoles}@@or-JvP`ysCk6+`n zzmcZz(f9G+{iZ+5eZb{@#^rv&<$lHGKIn2Ea=G7ixH(QnsVh#n*2m{sxzDu$KG%l% zTx;;THp=JPIG<}1eXdRRxi-z`+6pF;}Ed!jFkR1nRK}-x9u6XlzDXXlxr=Xl(FUXlyK4Xl!j) zXl$)kXl(OUXl!p)Xl%MvXlx2pgx?OoBQ&~mJz|+7pz_Y+}!1KThz>C03 zz{|iZz^lMNf!Bb8!0W&pz?;A!;4R>7;2q#y;631d-~-@8;3MEVaTU?WIQs72jl_m zfhf=c=m_Kkoq*0j0Z<5Z0lET3Krv7PbOX8rJ%Cc6C(sM%4fFxZfWv{lKsnG4=nqr? z1At1P3K$4f1A~CUz&b8kQG>HuUA8 z;Ot!B5;)HSE(GQxjCsHuIJW{zfh&N^fiVyp%Mh=NH;Bf;c{DH{*De=JiB_?{aJ_hu z!quFt)PqRdX#9GjIEiRzcpD?N1JQQe?`r-bG&D4fLUsINnsO0vF>ncRDX;{%47eOv z3S0qP2`mGa11o@)z$#!hum)HQtOKqB)&m=Wjld>gGq45N3Ty+m16Kpr06T!4z_q|G z;5y)X;0EAE;3nW^;1=Lk;5Ojz!0o^tz@5N9fZf1dz}>(-KqGK3um`vg*bD3f?q{Ut z0qx*?0C*612-pui3_JoH03HP%10DyS0G1&j1Aj152@pUCNC8rTFrWcCU;t@A zI?xQr05X9rARCAPIY4tD7ia+-2DAlQ0DdWL$5P#Mn3L;XZ( z0H2A^#TO)g6hD#p7|qi6z(3GR-HWrQarOdN>`;EFlL!?;Vn4sqh~EVd`{2nGY97iJ zp_aI5I;#C~i0M>dGNL;LXOnQY8rT7B1eO4sflctT1!o(8iEvH;u4Jc}D|jINGW;+L k*G>jbfO9s^j>p-Fz%*bwFcUwV1k7Nkv4>w5Qo=<43)YpBxc~qF diff --git a/target/scala-2.12/classes/lib/axi4_to_ahb_IO.class b/target/scala-2.12/classes/lib/axi4_to_ahb_IO.class index 2bd2c9b42661f66b60bd9195df9aada5ba4dd5e2..305d0ab0ce436e838ea53e0adb38bd991e496aae 100644 GIT binary patch literal 3037 zcmaJ@ZFkyM5}uI|vc!um}oUI?tP zNc+igw*`JJ5;@ZEzMTq0l1HJtdlK%Tr?@z=j*7@)iFTU}23f5jDOnuJ&gIwRGwU}( zf;zs1p3Lc;`RwW;dSc$q{cFmY#No`|oFe&HK`f}HWToiM%XnX6`Gs~ij_f{rnGGq- zmFK0!`I8YZ6WdoL$*b_pbvah3p^Eo7Mcpl>>i2@R_0=6*l?A1;$TDjwA(jxHZPcDn zx;=X^hvIS2e{BA+-poxckE;QJO%(3S^1}ct2!DGOe1^Wyc27uQlP{0oMY878wR*{0 zlvjSdbCgX!d$l~XA+w3Fqi;5*CZh33s?Og0a;|VvdgU;Aq$ihO=MOj9*{QeQ)$n?U z-Ibp-iff(X!P|Oc_D=1=yUcW8c2i~pbgoZ*%-8!!*?Sk^SHm0DgXHWbOw*hZ6LR=w^=nSyGAQ2<35Cg=;;j_Kx3>aM6IN-eHcfu| zHp3t!d-c2hx@qWD-OgBzrfz7DnznA4?fEaK8AENic@U_c|38igA3|sd7-6!9Y^v2$ z^;nxvTb41;Ll9wfz{JBC5yQ13u#c&D0CNZ<^_HfUtHvoI@;yk#u&SrTBY}8kmK#=0 zBXahwP7E@Nl}_6MmNgT>?+DgQt<};U=kc0WE!#$?T(??Pt$d;yHZ4k2MwrU$X4UA_ zG^YcUt0$^yYDSylvD67Dqt9k)44=%7H5$wLAp{cwFd!p%Z0Z#V6Zt>)67rU!vHo_u z$@pOsrX1`d!q_>hn~Wc(;gVyF`61kuzV^dRS6cByq$|Y{E)jI-{{1iuUpXO?2-D}C z&Sl|;%W%cArcYd^m|k0AHcyTE_b51a6f z0C(UowAh~A(yMd@x6WmL0dPp2QLKCLtw^yHgh;f%^p~!iu>(J>Lq-G-Y@KW7IkVZZ zsU~;m;QP?7(%s}=1;_$bV!!*l7e;^w=K)=%3)mGP4-cuB)n?OpAE*>KUdiUTi$OB!?bl>|6mbrWRL4Z*xIsu|0NlzUn^d2#y z2@fSoqNmw0^k!45QEFwPNIz;%?FLi@I0E9q#IP#kq2?U%h6ozeMRKGKhx(46D~$&t z8ZpMbkW&$!gF%Isad|vS^{YMXG%8x_v05=4vgR#%Ko8WG?#w?a$96UQ#HxL#w$z4Z zYc1lMKSxw;xowLcR}lBC4v~9@8XQ9S`;KYr4eda0>l8#WP0Lo@u19^veV=otK?~>1 zx5jxlcO*8tBN5IWiBvQSKxYA0>1)y~ zP9xIDE&UtjekOqdi@si0$wQN5f7b!7!92~V^S}aq2f^3>IRF-hf~O%m1iUl|7Kehv zL&3{~VBb*i%uw*^AlN??92p8;8w3Z2f@dKyB2Vs#;3ir47OhvT+Ur#^^*^G#MvHk%9y$=qLpkr?E|X zhU_+tK01Df4t$%)*C9oM_#!yn1zaA{TXh5IQA+?liBX`}kUmbmxJ01`lcbjfV>y67 E0EdKbn*aa+ literal 2533 zcmaJ?-BR0D5Z;w63&}D@5PlpJQYkjUB!K`SKM+b~8>m|YArMoi5J$EJXpm)N%So7~ zo%Vft(Pm0A)68^o-I=~fAEMKhh#hcEZ*=zT?zd;p>f1ek{`31E0B{HP5PB`MFsZ*X z@8q3IUOy=0)9XASLU-}NtQ*$MWTIi0EQ1FYK|bR*Q7`J2jxdt(gvpw*XBkCja?@3B zn)|lyG-}2?0#`V8j5^}qe#99~OLbvP(PSScl1v|`_*hOwffM=_c3AG0SyVA9UwOc4 zQyRx82^}R=n7%YyNDLz9iwPLu_+7++oah%q3ycz0lDMHvA&(m<#u7(L5WToO>zhOL zr}ZG$)j&BYtN2h3ANw$_amT`u9L&$oE7+fTiW@3Fpa)sA+vo=yDW1Xb6ctw39vcwNQvAp<+9|@G7k;~-L22_6;;|_+o5~= z6?d<&L4jY(1(;(^)~-L|*zce8PN{DFx>JLz!}s@cu3uzYA@)o+*|YSjYMDjTNmj~L z(=yhpj#;tm(evA+rPu2`2*jrU$MFzA=<5JR=x-vcdht--H=>D3#ftLKjSy-x@z6uG z^y~=imbQX`X#|0YZ0F0Bl0odxG%>Clu~;lL>iME|m^W+$$rUOuj9SffompxNgn^7{ z7p+FgaJwmAJkV|1u<8V5sjDczPiAVek7n087Eepi2bTn3Uj6S!tabEx*ZFu>f=QSc!3Ph|47{{mZ8*dnx@%7hdaCr2{6c_5(5PxH z<2lNCK1l&WkRq1p)v9$Y!7`{KX^3feKc$n>9eutPq&>No!EamNn{H8Vi?9VxL~^9_`dW^kxWU6W z9(TPGJ{2Jc-x4*FUh{;AamHGsTrg@|dcmR&>CIH=S;*=&)7^hm_N*GtL8bIaujysO zF>1tmDNRjN^Tq)^86a*}8nvRaOoIa<{J3E|X4%M^b(4Z_Z<ur zy;ni#YQ96D5PyC2+WDc^Z8MU3-JbDQ>KJdOe(_dn32!CZ(@O6kA+FGOmv)o1BCXu` zZ*cWz5*THwe7p+Is!sPt_IM}KJp3mw6O9l@jRV6h{3s3Ul+9USNg z4nw>{+Be$4!H(bv-0T3JXa|Qnf{A!kR<~e(0Y?(RPvemjxH|p@?!JY&cd$TG;tedl zg)dK4Z{h0?uzCW~iwvU|8OF%)_&sdpBJUvE47U9Nwoc&2_