From a91a14fd347ec0f4aa625f1a2df0668741f84fbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=8BLaraib=20Khan?= <​laraib.khan@lampromellon.com> Date: Tue, 1 Dec 2020 16:20:25 +0500 Subject: [PATCH] axi to ahb update --- ahb_to_axi4.anno.json | 34 + ahb_to_axi4.fir | 486 ++++++++++ ahb_to_axi4.v | 530 +++++++++++ axi4_to_ahb.fir | 891 +++++++++--------- axi4_to_ahb.v | 184 ++-- src/main/scala/lib/ahb_to_axi4.scala | 311 ++++-- src/main/scala/lib/axi4_to_ahb.scala | 14 +- target/scala-2.12/classes/lib/AHB_main$.class | Bin 3902 -> 3903 bytes .../lib/AHB_main$delayedInit$body.class | Bin 738 -> 738 bytes .../classes/lib/ahb_to_axi4$$anon$1.class | Bin 7665 -> 7665 bytes .../scala-2.12/classes/lib/ahb_to_axi4.class | Bin 57784 -> 109234 bytes .../scala-2.12/classes/lib/axi4_to_ahb.class | Bin 106904 -> 106893 bytes 12 files changed, 1827 insertions(+), 623 deletions(-) create mode 100644 ahb_to_axi4.anno.json create mode 100644 ahb_to_axi4.fir create mode 100644 ahb_to_axi4.v diff --git a/ahb_to_axi4.anno.json b/ahb_to_axi4.anno.json new file mode 100644 index 00000000..7c3075b3 --- /dev/null +++ b/ahb_to_axi4.anno.json @@ -0,0 +1,34 @@ +[ + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~ahb_to_axi4|ahb_to_axi4>io_ahb_hreadyout", + "sources":[ + "~ahb_to_axi4|ahb_to_axi4>io_ahb_hresp", + "~ahb_to_axi4|ahb_to_axi4>io_axi_awvalid", + "~ahb_to_axi4|ahb_to_axi4>io_axi_awready", + "~ahb_to_axi4|ahb_to_axi4>io_axi_arvalid", + "~ahb_to_axi4|ahb_to_axi4>io_axi_arready" + ] + }, + { + "class":"firrtl.EmitCircuitAnnotation", + "emitter":"firrtl.VerilogEmitter" + }, + { + "class":"firrtl.transforms.BlackBoxResourceAnno", + "target":"ahb_to_axi4.gated_latch", + "resourceId":"/vsrc/gated_latch.v" + }, + { + "class":"firrtl.options.TargetDirAnnotation", + "directory":"." + }, + { + "class":"firrtl.options.OutputAnnotationFileAnnotation", + "file":"ahb_to_axi4" + }, + { + "class":"firrtl.transforms.BlackBoxTargetDirAnno", + "targetDir":"." + } +] \ No newline at end of file diff --git a/ahb_to_axi4.fir b/ahb_to_axi4.fir new file mode 100644 index 00000000..8d579d8f --- /dev/null +++ b/ahb_to_axi4.fir @@ -0,0 +1,486 @@ +;buildInfoPackage: chisel3, version: 3.3.1, scalaVersion: 2.12.11, sbtVersion: 1.3.10 +circuit ahb_to_axi4 : + 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 @[el2_lib.scala 474:26] + clkhdr.SE is invalid + clkhdr.EN is invalid + clkhdr.CK is invalid + clkhdr.Q is invalid + io.l1clk <= clkhdr.Q @[el2_lib.scala 475:14] + clkhdr.CK <= io.clk @[el2_lib.scala 476:18] + clkhdr.EN <= io.en @[el2_lib.scala 477:18] + clkhdr.SE <= io.scan_mode @[el2_lib.scala 478: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 @[el2_lib.scala 474:26] + clkhdr.SE is invalid + clkhdr.EN is invalid + clkhdr.CK is invalid + clkhdr.Q is invalid + io.l1clk <= clkhdr.Q @[el2_lib.scala 475:14] + clkhdr.CK <= io.clk @[el2_lib.scala 476:18] + clkhdr.EN <= io.en @[el2_lib.scala 477:18] + clkhdr.SE <= io.scan_mode @[el2_lib.scala 478: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 @[el2_lib.scala 474:26] + clkhdr.SE is invalid + clkhdr.EN is invalid + clkhdr.CK is invalid + clkhdr.Q is invalid + io.l1clk <= clkhdr.Q @[el2_lib.scala 475:14] + clkhdr.CK <= io.clk @[el2_lib.scala 476:18] + clkhdr.EN <= io.en @[el2_lib.scala 477:18] + clkhdr.SE <= io.scan_mode @[el2_lib.scala 478: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 @[el2_lib.scala 474:26] + clkhdr.SE is invalid + clkhdr.EN is invalid + clkhdr.CK is invalid + clkhdr.Q is invalid + io.l1clk <= clkhdr.Q @[el2_lib.scala 475:14] + clkhdr.CK <= io.clk @[el2_lib.scala 476:18] + clkhdr.EN <= io.en @[el2_lib.scala 477:18] + clkhdr.SE <= io.scan_mode @[el2_lib.scala 478:18] + + module ahb_to_axi4 : + input clock : Clock + input reset : AsyncReset + output io : {flip scan_mode : UInt<1>, flip bus_clk_en : UInt<1>, flip clk_override : UInt<1>, flip axi_awready : UInt<1>, flip axi_wready : UInt<1>, flip axi_bvalid : UInt<1>, flip axi_bresp : UInt<2>, flip axi_bid : UInt<0>, flip axi_arready : UInt<1>, flip axi_rvalid : UInt<1>, flip axi_rid : UInt<0>, flip axi_rdata : UInt<64>, flip axi_rresp : UInt<2>, flip ahb_haddr : UInt<32>, flip ahb_hburst : UInt<3>, flip ahb_hmastlock : UInt<1>, flip ahb_hprot : UInt<4>, flip ahb_hsize : UInt<3>, flip ahb_htrans : UInt<2>, flip ahb_hwrite : UInt<1>, flip ahb_hwdata : UInt<64>, flip ahb_hsel : UInt<1>, flip ahb_hreadyin : UInt<1>, axi_awvalid : UInt<1>, axi_awid : UInt<0>, axi_awaddr : UInt<32>, axi_awsize : UInt<3>, axi_awprot : UInt<3>, axi_awlen : UInt<8>, axi_awburst : UInt<2>, axi_wvalid : UInt<1>, axi_wdata : UInt<64>, axi_wstrb : UInt<8>, axi_wlast : UInt<1>, axi_bready : UInt<1>, axi_arvalid : UInt<1>, axi_arid : UInt<0>, axi_araddr : UInt<32>, axi_arsize : UInt<3>, axi_arprot : UInt<3>, axi_arlen : UInt<8>, axi_arburst : UInt<2>, axi_rready : UInt<1>, ahb_hrdata : UInt<64>, ahb_hreadyout : UInt<1>, ahb_hresp : UInt<1>} + + wire master_wstrb : UInt<8> + master_wstrb <= UInt<8>("h00") + wire buf_state_en : UInt<1> + buf_state_en <= UInt<1>("h00") + wire buf_read_error_in : UInt<1> + buf_read_error_in <= UInt<1>("h00") + wire buf_read_error : UInt<1> + buf_read_error <= UInt<1>("h00") + wire buf_rdata : UInt<64> + buf_rdata <= UInt<64>("h00") + wire ahb_hready : UInt<1> + ahb_hready <= UInt<1>("h00") + wire ahb_hready_q : UInt<1> + ahb_hready_q <= UInt<1>("h00") + wire ahb_htrans_in : UInt<2> + ahb_htrans_in <= UInt<2>("h00") + wire ahb_htrans_q : UInt<2> + ahb_htrans_q <= UInt<2>("h00") + wire ahb_hsize_q : UInt<3> + ahb_hsize_q <= UInt<3>("h00") + wire ahb_hwrite_q : UInt<1> + ahb_hwrite_q <= UInt<1>("h00") + wire ahb_haddr_q : UInt<32> + ahb_haddr_q <= UInt<32>("h00") + wire ahb_hwdata_q : UInt<64> + ahb_hwdata_q <= UInt<64>("h00") + wire ahb_hresp_q : UInt<1> + ahb_hresp_q <= UInt<1>("h00") + wire ahb_addr_in_iccm : UInt<1> + ahb_addr_in_iccm <= UInt<1>("h00") + wire ahb_addr_in_iccm_region_nc : UInt<1> + ahb_addr_in_iccm_region_nc <= UInt<1>("h00") + wire buf_rdata_en : UInt<1> + buf_rdata_en <= UInt<1>("h00") + wire ahb_bus_addr_clk_en : UInt<1> + ahb_bus_addr_clk_en <= UInt<1>("h00") + wire buf_rdata_clk_en : UInt<1> + buf_rdata_clk_en <= UInt<1>("h00") + wire ahb_clk : Clock @[ahb_to_axi4.scala 84:35] + wire ahb_addr_clk : Clock @[ahb_to_axi4.scala 85:35] + wire buf_rdata_clk : Clock @[ahb_to_axi4.scala 86:35] + wire cmdbuf_wr_en : UInt<1> + cmdbuf_wr_en <= UInt<1>("h00") + wire cmdbuf_rst : UInt<1> + cmdbuf_rst <= UInt<1>("h00") + wire cmdbuf_full : UInt<1> + cmdbuf_full <= UInt<1>("h00") + wire cmdbuf_vld : UInt<1> + cmdbuf_vld <= UInt<1>("h00") + wire cmdbuf_write : UInt<1> + cmdbuf_write <= UInt<1>("h00") + wire cmdbuf_size : UInt<2> + cmdbuf_size <= UInt<2>("h00") + wire cmdbuf_wstrb : UInt<8> + cmdbuf_wstrb <= UInt<8>("h00") + wire cmdbuf_addr : UInt<32> + cmdbuf_addr <= UInt<32>("h00") + wire cmdbuf_wdata : UInt<64> + cmdbuf_wdata <= UInt<64>("h00") + wire bus_clk : Clock @[ahb_to_axi4.scala 98:35] + node _T = bits(ahb_haddr_q, 31, 28) @[el2_lib.scala 496:27] + node ahb_addr_in_dccm_region_nc = eq(_T, UInt<4>("h0f")) @[el2_lib.scala 496:49] + wire ahb_addr_in_dccm : UInt<1> @[el2_lib.scala 497:26] + node _T_1 = bits(ahb_haddr_q, 31, 16) @[el2_lib.scala 501:24] + node _T_2 = eq(_T_1, UInt<16>("h0f004")) @[el2_lib.scala 501:39] + ahb_addr_in_dccm <= _T_2 @[el2_lib.scala 501:16] + ahb_addr_in_iccm <= UInt<1>("h00") @[ahb_to_axi4.scala 109:24] + ahb_addr_in_iccm_region_nc <= UInt<1>("h00") @[ahb_to_axi4.scala 110:34] + node _T_3 = bits(ahb_haddr_q, 31, 28) @[el2_lib.scala 496:27] + node ahb_addr_in_pic_region_nc = eq(_T_3, UInt<4>("h0f")) @[el2_lib.scala 496:49] + wire ahb_addr_in_pic : UInt<1> @[el2_lib.scala 497:26] + node _T_4 = bits(ahb_haddr_q, 31, 15) @[el2_lib.scala 501:24] + node _T_5 = eq(_T_4, UInt<17>("h01e018")) @[el2_lib.scala 501:39] + ahb_addr_in_pic <= _T_5 @[el2_lib.scala 501:16] + wire buf_state : UInt<2> + buf_state <= UInt<2>("h00") + wire buf_nxtstate : UInt<2> + buf_nxtstate <= UInt<2>("h00") + buf_nxtstate <= UInt<2>("h00") @[ahb_to_axi4.scala 119:33] + buf_state_en <= UInt<1>("h00") @[ahb_to_axi4.scala 120:33] + buf_rdata_en <= UInt<1>("h00") @[ahb_to_axi4.scala 121:33] + buf_read_error_in <= UInt<1>("h00") @[ahb_to_axi4.scala 122:33] + cmdbuf_wr_en <= UInt<1>("h00") @[ahb_to_axi4.scala 123:33] + node _T_6 = eq(UInt<2>("h00"), buf_state) @[Conditional.scala 37:30] + when _T_6 : @[Conditional.scala 40:58] + node _T_7 = mux(io.ahb_hwrite, UInt<2>("h01"), UInt<2>("h02")) @[ahb_to_axi4.scala 127:28] + buf_nxtstate <= _T_7 @[ahb_to_axi4.scala 127:22] + node _T_8 = bits(io.ahb_htrans, 1, 1) @[ahb_to_axi4.scala 128:51] + node _T_9 = and(ahb_hready, _T_8) @[ahb_to_axi4.scala 128:36] + node _T_10 = and(_T_9, io.ahb_hsel) @[ahb_to_axi4.scala 128:55] + buf_state_en <= _T_10 @[ahb_to_axi4.scala 128:22] + skip @[Conditional.scala 40:58] + else : @[Conditional.scala 39:67] + node _T_11 = eq(UInt<2>("h01"), buf_state) @[Conditional.scala 37:30] + when _T_11 : @[Conditional.scala 39:67] + node _T_12 = bits(io.ahb_htrans, 1, 0) @[ahb_to_axi4.scala 131:59] + node _T_13 = eq(_T_12, UInt<1>("h00")) @[ahb_to_axi4.scala 131:66] + node _T_14 = or(io.ahb_hresp, _T_13) @[ahb_to_axi4.scala 131:43] + node _T_15 = eq(io.ahb_hsel, UInt<1>("h00")) @[ahb_to_axi4.scala 131:80] + node _T_16 = or(_T_14, _T_15) @[ahb_to_axi4.scala 131:78] + node _T_17 = bits(_T_16, 0, 0) @[ahb_to_axi4.scala 131:94] + node _T_18 = mux(io.ahb_hwrite, UInt<2>("h01"), UInt<2>("h02")) @[ahb_to_axi4.scala 131:111] + node _T_19 = mux(_T_17, UInt<2>("h00"), _T_18) @[ahb_to_axi4.scala 131:28] + buf_nxtstate <= _T_19 @[ahb_to_axi4.scala 131:22] + node _T_20 = eq(cmdbuf_full, UInt<1>("h00")) @[ahb_to_axi4.scala 132:26] + node _T_21 = or(_T_20, io.ahb_hresp) @[ahb_to_axi4.scala 132:39] + buf_state_en <= _T_21 @[ahb_to_axi4.scala 132:22] + node _T_22 = eq(cmdbuf_full, UInt<1>("h00")) @[ahb_to_axi4.scala 133:25] + node _T_23 = bits(io.ahb_htrans, 1, 0) @[ahb_to_axi4.scala 133:72] + node _T_24 = eq(_T_23, UInt<1>("h01")) @[ahb_to_axi4.scala 133:79] + node _T_25 = and(_T_24, io.ahb_hsel) @[ahb_to_axi4.scala 133:92] + node _T_26 = or(io.ahb_hresp, _T_25) @[ahb_to_axi4.scala 133:55] + node _T_27 = eq(_T_26, UInt<1>("h00")) @[ahb_to_axi4.scala 133:40] + node _T_28 = and(_T_22, _T_27) @[ahb_to_axi4.scala 133:38] + cmdbuf_wr_en <= _T_28 @[ahb_to_axi4.scala 133:22] + skip @[Conditional.scala 39:67] + else : @[Conditional.scala 39:67] + node _T_29 = eq(UInt<2>("h02"), buf_state) @[Conditional.scala 37:30] + when _T_29 : @[Conditional.scala 39:67] + node _T_30 = mux(io.ahb_hresp, UInt<2>("h00"), UInt<2>("h03")) @[ahb_to_axi4.scala 136:28] + buf_nxtstate <= _T_30 @[ahb_to_axi4.scala 136:22] + node _T_31 = eq(cmdbuf_full, UInt<1>("h00")) @[ahb_to_axi4.scala 137:26] + node _T_32 = or(_T_31, io.ahb_hresp) @[ahb_to_axi4.scala 137:39] + buf_state_en <= _T_32 @[ahb_to_axi4.scala 137:22] + node _T_33 = eq(io.ahb_hresp, UInt<1>("h00")) @[ahb_to_axi4.scala 138:25] + node _T_34 = eq(cmdbuf_full, UInt<1>("h00")) @[ahb_to_axi4.scala 138:41] + node _T_35 = and(_T_33, _T_34) @[ahb_to_axi4.scala 138:39] + cmdbuf_wr_en <= _T_35 @[ahb_to_axi4.scala 138:22] + skip @[Conditional.scala 39:67] + else : @[Conditional.scala 39:67] + node _T_36 = eq(UInt<2>("h03"), buf_state) @[Conditional.scala 37:30] + when _T_36 : @[Conditional.scala 39:67] + buf_nxtstate <= UInt<2>("h00") @[ahb_to_axi4.scala 141:22] + node _T_37 = eq(cmdbuf_write, UInt<1>("h00")) @[ahb_to_axi4.scala 142:41] + node _T_38 = and(io.axi_rvalid, _T_37) @[ahb_to_axi4.scala 142:39] + buf_state_en <= _T_38 @[ahb_to_axi4.scala 142:22] + buf_rdata_en <= buf_state_en @[ahb_to_axi4.scala 143:22] + node _T_39 = bits(io.axi_rresp, 1, 0) @[ahb_to_axi4.scala 144:57] + node _T_40 = orr(_T_39) @[ahb_to_axi4.scala 144:64] + node _T_41 = and(buf_state_en, _T_40) @[ahb_to_axi4.scala 144:43] + buf_read_error_in <= _T_41 @[ahb_to_axi4.scala 144:27] + skip @[Conditional.scala 39:67] + node _T_42 = bits(buf_state_en, 0, 0) @[ahb_to_axi4.scala 147:101] + reg _T_43 : UInt, ahb_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_42 : @[Reg.scala 28:19] + _T_43 <= buf_nxtstate @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + buf_state <= _T_43 @[ahb_to_axi4.scala 147:33] + node _T_44 = bits(ahb_hsize_q, 2, 0) @[ahb_to_axi4.scala 149:56] + node _T_45 = eq(_T_44, UInt<1>("h00")) @[ahb_to_axi4.scala 149:62] + node _T_46 = bits(_T_45, 0, 0) @[Bitwise.scala 72:15] + node _T_47 = mux(_T_46, UInt<8>("h0ff"), UInt<8>("h00")) @[Bitwise.scala 72:12] + node _T_48 = bits(ahb_haddr_q, 2, 0) @[ahb_to_axi4.scala 149:94] + node _T_49 = dshl(UInt<1>("h01"), _T_48) @[ahb_to_axi4.scala 149:80] + node _T_50 = and(_T_47, _T_49) @[ahb_to_axi4.scala 149:72] + node _T_51 = bits(ahb_hsize_q, 2, 0) @[ahb_to_axi4.scala 150:56] + node _T_52 = eq(_T_51, UInt<1>("h01")) @[ahb_to_axi4.scala 150:62] + node _T_53 = bits(_T_52, 0, 0) @[Bitwise.scala 72:15] + node _T_54 = mux(_T_53, UInt<8>("h0ff"), UInt<8>("h00")) @[Bitwise.scala 72:12] + node _T_55 = bits(ahb_haddr_q, 2, 0) @[ahb_to_axi4.scala 150:94] + node _T_56 = dshl(UInt<2>("h03"), _T_55) @[ahb_to_axi4.scala 150:80] + node _T_57 = and(_T_54, _T_56) @[ahb_to_axi4.scala 150:72] + node _T_58 = or(_T_50, _T_57) @[ahb_to_axi4.scala 149:111] + node _T_59 = bits(ahb_hsize_q, 2, 0) @[ahb_to_axi4.scala 151:56] + node _T_60 = eq(_T_59, UInt<2>("h02")) @[ahb_to_axi4.scala 151:62] + node _T_61 = bits(_T_60, 0, 0) @[Bitwise.scala 72:15] + node _T_62 = mux(_T_61, UInt<8>("h0ff"), UInt<8>("h00")) @[Bitwise.scala 72:12] + node _T_63 = bits(ahb_haddr_q, 2, 0) @[ahb_to_axi4.scala 151:94] + node _T_64 = dshl(UInt<4>("h0f"), _T_63) @[ahb_to_axi4.scala 151:80] + node _T_65 = and(_T_62, _T_64) @[ahb_to_axi4.scala 151:72] + node _T_66 = or(_T_58, _T_65) @[ahb_to_axi4.scala 150:111] + node _T_67 = bits(ahb_hsize_q, 2, 0) @[ahb_to_axi4.scala 152:56] + node _T_68 = eq(_T_67, UInt<2>("h03")) @[ahb_to_axi4.scala 152:62] + node _T_69 = bits(_T_68, 0, 0) @[Bitwise.scala 72:15] + node _T_70 = mux(_T_69, UInt<8>("h0ff"), UInt<8>("h00")) @[Bitwise.scala 72:12] + node _T_71 = and(_T_70, UInt<8>("h0ff")) @[ahb_to_axi4.scala 152:72] + node _T_72 = or(_T_66, _T_71) @[ahb_to_axi4.scala 151:111] + master_wstrb <= _T_72 @[ahb_to_axi4.scala 149:33] + node _T_73 = eq(ahb_hready_q, UInt<1>("h00")) @[ahb_to_axi4.scala 155:68] + node _T_74 = and(ahb_hresp_q, _T_73) @[ahb_to_axi4.scala 155:66] + node _T_75 = eq(cmdbuf_full, UInt<1>("h00")) @[ahb_to_axi4.scala 155:86] + node _T_76 = eq(buf_state, UInt<2>("h00")) @[ahb_to_axi4.scala 155:112] + node _T_77 = or(_T_75, _T_76) @[ahb_to_axi4.scala 155:99] + node _T_78 = eq(buf_state, UInt<2>("h02")) @[ahb_to_axi4.scala 155:137] + node _T_79 = eq(buf_state, UInt<2>("h03")) @[ahb_to_axi4.scala 155:156] + node _T_80 = or(_T_78, _T_79) @[ahb_to_axi4.scala 155:144] + node _T_81 = eq(_T_80, UInt<1>("h00")) @[ahb_to_axi4.scala 155:125] + node _T_82 = and(_T_77, _T_81) @[ahb_to_axi4.scala 155:123] + node _T_83 = eq(buf_read_error, UInt<1>("h00")) @[ahb_to_axi4.scala 155:169] + node _T_84 = and(_T_82, _T_83) @[ahb_to_axi4.scala 155:167] + node _T_85 = mux(io.ahb_hresp, _T_74, _T_84) @[ahb_to_axi4.scala 155:39] + io.ahb_hreadyout <= _T_85 @[ahb_to_axi4.scala 155:33] + node _T_86 = and(io.ahb_hreadyout, io.ahb_hreadyin) @[ahb_to_axi4.scala 156:53] + ahb_hready <= _T_86 @[ahb_to_axi4.scala 156:33] + node _T_87 = bits(io.ahb_hsel, 0, 0) @[Bitwise.scala 72:15] + node _T_88 = mux(_T_87, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_89 = bits(io.ahb_htrans, 1, 0) @[ahb_to_axi4.scala 157:71] + node _T_90 = and(_T_88, _T_89) @[ahb_to_axi4.scala 157:56] + ahb_htrans_in <= _T_90 @[ahb_to_axi4.scala 157:33] + node _T_91 = bits(buf_rdata, 63, 0) @[ahb_to_axi4.scala 158:45] + io.ahb_hrdata <= _T_91 @[ahb_to_axi4.scala 158:33] + node _T_92 = bits(ahb_htrans_q, 1, 0) @[ahb_to_axi4.scala 159:50] + node _T_93 = neq(_T_92, UInt<1>("h00")) @[ahb_to_axi4.scala 159:56] + node _T_94 = neq(buf_state, UInt<2>("h00")) @[ahb_to_axi4.scala 159:78] + node _T_95 = and(_T_93, _T_94) @[ahb_to_axi4.scala 159:65] + node _T_96 = or(ahb_addr_in_dccm, ahb_addr_in_iccm) @[ahb_to_axi4.scala 160:57] + node _T_97 = eq(_T_96, UInt<1>("h00")) @[ahb_to_axi4.scala 160:38] + node _T_98 = and(ahb_addr_in_dccm, ahb_hwrite_q) @[ahb_to_axi4.scala 161:75] + node _T_99 = or(ahb_addr_in_iccm, _T_98) @[ahb_to_axi4.scala 161:55] + node _T_100 = bits(ahb_hsize_q, 1, 0) @[ahb_to_axi4.scala 161:109] + node _T_101 = eq(_T_100, UInt<2>("h02")) @[ahb_to_axi4.scala 161:115] + node _T_102 = bits(ahb_hsize_q, 1, 0) @[ahb_to_axi4.scala 161:138] + node _T_103 = eq(_T_102, UInt<2>("h03")) @[ahb_to_axi4.scala 161:144] + node _T_104 = or(_T_101, _T_103) @[ahb_to_axi4.scala 161:124] + node _T_105 = eq(_T_104, UInt<1>("h00")) @[ahb_to_axi4.scala 161:95] + node _T_106 = and(_T_99, _T_105) @[ahb_to_axi4.scala 161:93] + node _T_107 = or(_T_97, _T_106) @[ahb_to_axi4.scala 160:78] + node _T_108 = bits(ahb_hsize_q, 2, 0) @[ahb_to_axi4.scala 162:49] + node _T_109 = eq(_T_108, UInt<1>("h01")) @[ahb_to_axi4.scala 162:55] + node _T_110 = bits(ahb_haddr_q, 0, 0) @[ahb_to_axi4.scala 162:77] + node _T_111 = and(_T_109, _T_110) @[ahb_to_axi4.scala 162:64] + node _T_112 = or(_T_107, _T_111) @[ahb_to_axi4.scala 161:155] + node _T_113 = bits(ahb_hsize_q, 2, 0) @[ahb_to_axi4.scala 163:49] + node _T_114 = eq(_T_113, UInt<2>("h02")) @[ahb_to_axi4.scala 163:55] + node _T_115 = bits(ahb_haddr_q, 1, 0) @[ahb_to_axi4.scala 163:78] + node _T_116 = orr(_T_115) @[ahb_to_axi4.scala 163:85] + node _T_117 = and(_T_114, _T_116) @[ahb_to_axi4.scala 163:64] + node _T_118 = or(_T_112, _T_117) @[ahb_to_axi4.scala 162:84] + node _T_119 = bits(ahb_hsize_q, 2, 0) @[ahb_to_axi4.scala 164:49] + node _T_120 = eq(_T_119, UInt<2>("h03")) @[ahb_to_axi4.scala 164:55] + node _T_121 = bits(ahb_haddr_q, 2, 0) @[ahb_to_axi4.scala 164:78] + node _T_122 = orr(_T_121) @[ahb_to_axi4.scala 164:85] + node _T_123 = and(_T_120, _T_122) @[ahb_to_axi4.scala 164:64] + node _T_124 = or(_T_118, _T_123) @[ahb_to_axi4.scala 163:90] + node _T_125 = and(_T_95, _T_124) @[ahb_to_axi4.scala 159:89] + node _T_126 = or(_T_125, buf_read_error) @[ahb_to_axi4.scala 164:92] + node _T_127 = eq(ahb_hready_q, UInt<1>("h00")) @[ahb_to_axi4.scala 166:51] + node _T_128 = and(ahb_hresp_q, _T_127) @[ahb_to_axi4.scala 166:49] + node _T_129 = or(_T_126, _T_128) @[ahb_to_axi4.scala 165:51] + io.ahb_hresp <= _T_129 @[ahb_to_axi4.scala 159:33] + reg _T_130 : UInt, buf_rdata_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 169:68] + _T_130 <= io.axi_rdata @[ahb_to_axi4.scala 169:68] + buf_rdata <= _T_130 @[ahb_to_axi4.scala 169:33] + reg _T_131 : UInt<1>, ahb_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 170:62] + _T_131 <= buf_read_error_in @[ahb_to_axi4.scala 170:62] + buf_read_error <= _T_131 @[ahb_to_axi4.scala 170:33] + reg _T_132 : UInt<1>, ahb_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 173:62] + _T_132 <= io.ahb_hresp @[ahb_to_axi4.scala 173:62] + ahb_hresp_q <= _T_132 @[ahb_to_axi4.scala 173:33] + reg _T_133 : UInt<1>, ahb_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 174:62] + _T_133 <= ahb_hready @[ahb_to_axi4.scala 174:62] + ahb_hready_q <= _T_133 @[ahb_to_axi4.scala 174:33] + reg _T_134 : UInt, ahb_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 175:62] + _T_134 <= ahb_htrans_in @[ahb_to_axi4.scala 175:62] + ahb_htrans_q <= _T_134 @[ahb_to_axi4.scala 175:33] + reg _T_135 : UInt, ahb_addr_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 176:67] + _T_135 <= io.ahb_hsize @[ahb_to_axi4.scala 176:67] + ahb_hsize_q <= _T_135 @[ahb_to_axi4.scala 176:33] + reg _T_136 : UInt<1>, ahb_addr_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 177:67] + _T_136 <= io.ahb_hwrite @[ahb_to_axi4.scala 177:67] + ahb_hwrite_q <= _T_136 @[ahb_to_axi4.scala 177:33] + reg _T_137 : UInt, ahb_addr_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 178:67] + _T_137 <= io.ahb_haddr @[ahb_to_axi4.scala 178:67] + ahb_haddr_q <= _T_137 @[ahb_to_axi4.scala 178:33] + node _T_138 = bits(io.ahb_htrans, 1, 1) @[ahb_to_axi4.scala 181:79] + node _T_139 = and(ahb_hready, _T_138) @[ahb_to_axi4.scala 181:64] + node _T_140 = and(io.bus_clk_en, _T_139) @[ahb_to_axi4.scala 181:50] + ahb_bus_addr_clk_en <= _T_140 @[ahb_to_axi4.scala 181:33] + node _T_141 = and(io.bus_clk_en, buf_rdata_en) @[ahb_to_axi4.scala 182:50] + buf_rdata_clk_en <= _T_141 @[ahb_to_axi4.scala 182:33] + inst rvclkhdr of rvclkhdr @[el2_lib.scala 483:22] + rvclkhdr.clock <= clock + rvclkhdr.reset <= reset + rvclkhdr.io.clk <= clock @[el2_lib.scala 484:17] + rvclkhdr.io.en <= io.bus_clk_en @[el2_lib.scala 485:16] + rvclkhdr.io.scan_mode <= io.scan_mode @[el2_lib.scala 486:23] + ahb_clk <= rvclkhdr.io.l1clk @[ahb_to_axi4.scala 184:33] + inst rvclkhdr_1 of rvclkhdr_1 @[el2_lib.scala 483:22] + rvclkhdr_1.clock <= clock + rvclkhdr_1.reset <= reset + rvclkhdr_1.io.clk <= clock @[el2_lib.scala 484:17] + rvclkhdr_1.io.en <= ahb_bus_addr_clk_en @[el2_lib.scala 485:16] + rvclkhdr_1.io.scan_mode <= io.scan_mode @[el2_lib.scala 486:23] + ahb_addr_clk <= rvclkhdr_1.io.l1clk @[ahb_to_axi4.scala 185:33] + inst rvclkhdr_2 of rvclkhdr_2 @[el2_lib.scala 483:22] + rvclkhdr_2.clock <= clock + rvclkhdr_2.reset <= reset + rvclkhdr_2.io.clk <= clock @[el2_lib.scala 484:17] + rvclkhdr_2.io.en <= buf_rdata_clk_en @[el2_lib.scala 485:16] + rvclkhdr_2.io.scan_mode <= io.scan_mode @[el2_lib.scala 486:23] + buf_rdata_clk <= rvclkhdr_2.io.l1clk @[ahb_to_axi4.scala 186:33] + node _T_142 = and(io.axi_awvalid, io.axi_awready) @[ahb_to_axi4.scala 188:54] + node _T_143 = and(io.axi_arvalid, io.axi_arready) @[ahb_to_axi4.scala 188:90] + node _T_144 = or(_T_142, _T_143) @[ahb_to_axi4.scala 188:72] + node _T_145 = eq(cmdbuf_wr_en, UInt<1>("h00")) @[ahb_to_axi4.scala 188:111] + node _T_146 = and(_T_144, _T_145) @[ahb_to_axi4.scala 188:109] + node _T_147 = eq(cmdbuf_write, UInt<1>("h00")) @[ahb_to_axi4.scala 188:144] + node _T_148 = and(io.ahb_hresp, _T_147) @[ahb_to_axi4.scala 188:142] + node _T_149 = or(_T_146, _T_148) @[ahb_to_axi4.scala 188:126] + cmdbuf_rst <= _T_149 @[ahb_to_axi4.scala 188:33] + node _T_150 = and(io.axi_awvalid, io.axi_awready) @[ahb_to_axi4.scala 189:68] + node _T_151 = and(io.axi_arvalid, io.axi_arready) @[ahb_to_axi4.scala 189:104] + node _T_152 = or(_T_150, _T_151) @[ahb_to_axi4.scala 189:86] + node _T_153 = eq(_T_152, UInt<1>("h00")) @[ahb_to_axi4.scala 189:50] + node _T_154 = and(cmdbuf_vld, _T_153) @[ahb_to_axi4.scala 189:48] + cmdbuf_full <= _T_154 @[ahb_to_axi4.scala 189:33] + node _T_155 = and(UInt<1>("h01"), cmdbuf_rst) @[ahb_to_axi4.scala 193:26] + node _T_156 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 193:87] + reg _T_157 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_156 : @[Reg.scala 28:19] + _T_157 <= _T_155 @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + cmdbuf_vld <= _T_157 @[ahb_to_axi4.scala 192:33] + node _T_158 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 197:57] + reg _T_159 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_158 : @[Reg.scala 28:19] + _T_159 <= ahb_hwrite_q @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + cmdbuf_write <= _T_159 @[ahb_to_axi4.scala 196:33] + node _T_160 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 200:56] + reg _T_161 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_160 : @[Reg.scala 28:19] + _T_161 <= ahb_hsize_q @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + cmdbuf_size <= _T_161 @[ahb_to_axi4.scala 199:33] + node _T_162 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 203:57] + reg _T_163 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_162 : @[Reg.scala 28:19] + _T_163 <= master_wstrb @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + cmdbuf_wstrb <= _T_163 @[ahb_to_axi4.scala 202:33] + node _T_164 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 206:67] + reg _T_165 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_164 : @[Reg.scala 28:19] + _T_165 <= ahb_haddr_q @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + cmdbuf_addr <= _T_165 @[ahb_to_axi4.scala 206:17] + node _T_166 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 207:70] + reg _T_167 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_166 : @[Reg.scala 28:19] + _T_167 <= io.ahb_hwdata @[Reg.scala 28:23] + skip @[Reg.scala 28:19] + cmdbuf_wdata <= _T_167 @[ahb_to_axi4.scala 207:18] + node _T_168 = and(cmdbuf_vld, cmdbuf_write) @[ahb_to_axi4.scala 210:43] + io.axi_awvalid <= _T_168 @[ahb_to_axi4.scala 210:29] + io.axi_awid <= UInt<1>("h00") @[ahb_to_axi4.scala 211:29] + io.axi_awaddr <= cmdbuf_addr @[ahb_to_axi4.scala 212:29] + node _T_169 = bits(cmdbuf_size, 1, 0) @[ahb_to_axi4.scala 213:55] + node _T_170 = cat(UInt<1>("h00"), _T_169) @[Cat.scala 29:58] + io.axi_awsize <= _T_170 @[ahb_to_axi4.scala 213:29] + node _T_171 = mux(UInt<1>("h00"), UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] + io.axi_awprot <= _T_171 @[ahb_to_axi4.scala 214:29] + node _T_172 = mux(UInt<1>("h00"), UInt<8>("h0ff"), UInt<8>("h00")) @[Bitwise.scala 72:12] + io.axi_awlen <= _T_172 @[ahb_to_axi4.scala 215:29] + io.axi_awburst <= UInt<1>("h01") @[ahb_to_axi4.scala 216:29] + node _T_173 = and(cmdbuf_vld, cmdbuf_write) @[ahb_to_axi4.scala 218:43] + io.axi_wvalid <= _T_173 @[ahb_to_axi4.scala 218:29] + io.axi_wdata <= cmdbuf_wdata @[ahb_to_axi4.scala 219:29] + io.axi_wstrb <= cmdbuf_wstrb @[ahb_to_axi4.scala 220:29] + io.axi_wlast <= UInt<1>("h01") @[ahb_to_axi4.scala 221:29] + io.axi_bready <= UInt<1>("h01") @[ahb_to_axi4.scala 223:29] + node _T_174 = eq(cmdbuf_write, UInt<1>("h00")) @[ahb_to_axi4.scala 225:45] + node _T_175 = and(cmdbuf_vld, _T_174) @[ahb_to_axi4.scala 225:43] + io.axi_arvalid <= _T_175 @[ahb_to_axi4.scala 225:29] + io.axi_arid <= UInt<1>("h00") @[ahb_to_axi4.scala 226:29] + io.axi_araddr <= cmdbuf_addr @[ahb_to_axi4.scala 227:29] + node _T_176 = bits(cmdbuf_size, 1, 0) @[ahb_to_axi4.scala 228:55] + node _T_177 = cat(UInt<1>("h00"), _T_176) @[Cat.scala 29:58] + io.axi_arsize <= _T_177 @[ahb_to_axi4.scala 228:29] + node _T_178 = mux(UInt<1>("h00"), UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] + io.axi_arprot <= _T_178 @[ahb_to_axi4.scala 229:29] + node _T_179 = mux(UInt<1>("h00"), UInt<8>("h0ff"), UInt<8>("h00")) @[Bitwise.scala 72:12] + io.axi_arlen <= _T_179 @[ahb_to_axi4.scala 230:29] + io.axi_arburst <= UInt<1>("h01") @[ahb_to_axi4.scala 231:29] + io.axi_rready <= UInt<1>("h01") @[ahb_to_axi4.scala 233:29] + inst rvclkhdr_3 of rvclkhdr_3 @[el2_lib.scala 483:22] + rvclkhdr_3.clock <= clock + rvclkhdr_3.reset <= reset + rvclkhdr_3.io.clk <= clock @[el2_lib.scala 484:17] + rvclkhdr_3.io.en <= io.bus_clk_en @[el2_lib.scala 485:16] + rvclkhdr_3.io.scan_mode <= io.scan_mode @[el2_lib.scala 486:23] + bus_clk <= rvclkhdr_3.io.l1clk @[ahb_to_axi4.scala 236:29] + diff --git a/ahb_to_axi4.v b/ahb_to_axi4.v new file mode 100644 index 00000000..caf2d99f --- /dev/null +++ b/ahb_to_axi4.v @@ -0,0 +1,530 @@ +module rvclkhdr( + output io_l1clk, + input io_clk, + input io_en, + input io_scan_mode +); + wire clkhdr_Q; // @[el2_lib.scala 474:26] + wire clkhdr_CK; // @[el2_lib.scala 474:26] + wire clkhdr_EN; // @[el2_lib.scala 474:26] + wire clkhdr_SE; // @[el2_lib.scala 474:26] + gated_latch clkhdr ( // @[el2_lib.scala 474:26] + .Q(clkhdr_Q), + .CK(clkhdr_CK), + .EN(clkhdr_EN), + .SE(clkhdr_SE) + ); + assign io_l1clk = clkhdr_Q; // @[el2_lib.scala 475:14] + assign clkhdr_CK = io_clk; // @[el2_lib.scala 476:18] + assign clkhdr_EN = io_en; // @[el2_lib.scala 477:18] + assign clkhdr_SE = io_scan_mode; // @[el2_lib.scala 478:18] +endmodule +module ahb_to_axi4( + input clock, + input reset, + input io_scan_mode, + input io_bus_clk_en, + input io_clk_override, + input io_axi_awready, + input io_axi_wready, + input io_axi_bvalid, + input [1:0] io_axi_bresp, + input io_axi_arready, + input io_axi_rvalid, + input [63:0] io_axi_rdata, + input [1:0] io_axi_rresp, + input [31:0] io_ahb_haddr, + input [2:0] io_ahb_hburst, + input io_ahb_hmastlock, + input [3:0] io_ahb_hprot, + input [2:0] io_ahb_hsize, + input [1:0] io_ahb_htrans, + input io_ahb_hwrite, + input [63:0] io_ahb_hwdata, + input io_ahb_hsel, + input io_ahb_hreadyin, + output io_axi_awvalid, + output [31:0] io_axi_awaddr, + output [2:0] io_axi_awsize, + output [2:0] io_axi_awprot, + output [7:0] io_axi_awlen, + output [1:0] io_axi_awburst, + output io_axi_wvalid, + output [63:0] io_axi_wdata, + output [7:0] io_axi_wstrb, + output io_axi_wlast, + output io_axi_bready, + output io_axi_arvalid, + output [31:0] io_axi_araddr, + output [2:0] io_axi_arsize, + output [2:0] io_axi_arprot, + output [7:0] io_axi_arlen, + output [1:0] io_axi_arburst, + output io_axi_rready, + output [63:0] io_ahb_hrdata, + output io_ahb_hreadyout, + output io_ahb_hresp +); +`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 [63:0] _RAND_8; + reg [31:0] _RAND_9; + reg [31:0] _RAND_10; + reg [31:0] _RAND_11; + reg [31:0] _RAND_12; + reg [31:0] _RAND_13; + reg [63:0] _RAND_14; +`endif // RANDOMIZE_REG_INIT + wire rvclkhdr_io_l1clk; // @[el2_lib.scala 483:22] + wire rvclkhdr_io_clk; // @[el2_lib.scala 483:22] + wire rvclkhdr_io_en; // @[el2_lib.scala 483:22] + wire rvclkhdr_io_scan_mode; // @[el2_lib.scala 483:22] + wire rvclkhdr_1_io_l1clk; // @[el2_lib.scala 483:22] + wire rvclkhdr_1_io_clk; // @[el2_lib.scala 483:22] + wire rvclkhdr_1_io_en; // @[el2_lib.scala 483:22] + wire rvclkhdr_1_io_scan_mode; // @[el2_lib.scala 483:22] + wire rvclkhdr_2_io_l1clk; // @[el2_lib.scala 483:22] + wire rvclkhdr_2_io_clk; // @[el2_lib.scala 483:22] + wire rvclkhdr_2_io_en; // @[el2_lib.scala 483:22] + wire rvclkhdr_2_io_scan_mode; // @[el2_lib.scala 483:22] + wire rvclkhdr_3_io_l1clk; // @[el2_lib.scala 483:22] + wire rvclkhdr_3_io_clk; // @[el2_lib.scala 483:22] + wire rvclkhdr_3_io_en; // @[el2_lib.scala 483:22] + wire rvclkhdr_3_io_scan_mode; // @[el2_lib.scala 483:22] + wire ahb_addr_clk = rvclkhdr_1_io_l1clk; // @[ahb_to_axi4.scala 85:35 ahb_to_axi4.scala 185:33] + reg [31:0] ahb_haddr_q; // @[ahb_to_axi4.scala 178:67] + wire ahb_addr_in_dccm = ahb_haddr_q[31:16] == 16'hf004; // @[el2_lib.scala 501:39] + wire ahb_clk = rvclkhdr_io_l1clk; // @[ahb_to_axi4.scala 84:35 ahb_to_axi4.scala 184:33] + reg [1:0] buf_state; // @[Reg.scala 27:20] + wire _T_6 = 2'h0 == buf_state; // @[Conditional.scala 37:30] + wire ahb_hready = io_ahb_hreadyout & io_ahb_hreadyin; // @[ahb_to_axi4.scala 156:53] + wire _T_9 = ahb_hready & io_ahb_htrans[1]; // @[ahb_to_axi4.scala 128:36] + wire _T_10 = _T_9 & io_ahb_hsel; // @[ahb_to_axi4.scala 128:55] + wire _T_11 = 2'h1 == buf_state; // @[Conditional.scala 37:30] + wire _T_13 = io_ahb_htrans == 2'h0; // @[ahb_to_axi4.scala 131:66] + wire _T_14 = io_ahb_hresp | _T_13; // @[ahb_to_axi4.scala 131:43] + wire _T_15 = ~io_ahb_hsel; // @[ahb_to_axi4.scala 131:80] + wire _T_16 = _T_14 | _T_15; // @[ahb_to_axi4.scala 131:78] + wire bus_clk = rvclkhdr_3_io_l1clk; // @[ahb_to_axi4.scala 98:35 ahb_to_axi4.scala 236:29] + reg cmdbuf_vld; // @[Reg.scala 27:20] + wire _T_150 = io_axi_awvalid & io_axi_awready; // @[ahb_to_axi4.scala 189:68] + wire _T_151 = io_axi_arvalid & io_axi_arready; // @[ahb_to_axi4.scala 189:104] + wire _T_152 = _T_150 | _T_151; // @[ahb_to_axi4.scala 189:86] + wire _T_153 = ~_T_152; // @[ahb_to_axi4.scala 189:50] + wire cmdbuf_full = cmdbuf_vld & _T_153; // @[ahb_to_axi4.scala 189:48] + wire _T_20 = ~cmdbuf_full; // @[ahb_to_axi4.scala 132:26] + wire _T_21 = _T_20 | io_ahb_hresp; // @[ahb_to_axi4.scala 132:39] + wire _T_24 = io_ahb_htrans == 2'h1; // @[ahb_to_axi4.scala 133:79] + wire _T_25 = _T_24 & io_ahb_hsel; // @[ahb_to_axi4.scala 133:92] + wire _T_26 = io_ahb_hresp | _T_25; // @[ahb_to_axi4.scala 133:55] + wire _T_27 = ~_T_26; // @[ahb_to_axi4.scala 133:40] + wire _T_28 = _T_20 & _T_27; // @[ahb_to_axi4.scala 133:38] + wire _T_29 = 2'h2 == buf_state; // @[Conditional.scala 37:30] + wire _T_33 = ~io_ahb_hresp; // @[ahb_to_axi4.scala 138:25] + wire _T_35 = _T_33 & _T_20; // @[ahb_to_axi4.scala 138:39] + wire _T_36 = 2'h3 == buf_state; // @[Conditional.scala 37:30] + reg cmdbuf_write; // @[Reg.scala 27:20] + wire _T_37 = ~cmdbuf_write; // @[ahb_to_axi4.scala 142:41] + wire _T_38 = io_axi_rvalid & _T_37; // @[ahb_to_axi4.scala 142:39] + wire _T_40 = |io_axi_rresp; // @[ahb_to_axi4.scala 144:64] + wire _GEN_1 = _T_36 & _T_38; // @[Conditional.scala 39:67] + wire _GEN_5 = _T_29 ? _T_21 : _GEN_1; // @[Conditional.scala 39:67] + wire _GEN_10 = _T_11 ? _T_21 : _GEN_5; // @[Conditional.scala 39:67] + wire buf_state_en = _T_6 ? _T_10 : _GEN_10; // @[Conditional.scala 40:58] + wire _T_41 = buf_state_en & _T_40; // @[ahb_to_axi4.scala 144:43] + wire _GEN_2 = _T_36 & buf_state_en; // @[Conditional.scala 39:67] + wire _GEN_3 = _T_36 & _T_41; // @[Conditional.scala 39:67] + wire _GEN_6 = _T_29 & _T_35; // @[Conditional.scala 39:67] + wire _GEN_7 = _T_29 ? 1'h0 : _GEN_2; // @[Conditional.scala 39:67] + wire _GEN_11 = _T_11 ? _T_28 : _GEN_6; // @[Conditional.scala 39:67] + wire _GEN_12 = _T_11 ? 1'h0 : _GEN_7; // @[Conditional.scala 39:67] + wire cmdbuf_wr_en = _T_6 ? 1'h0 : _GEN_11; // @[Conditional.scala 40:58] + wire buf_rdata_en = _T_6 ? 1'h0 : _GEN_12; // @[Conditional.scala 40:58] + reg [2:0] ahb_hsize_q; // @[ahb_to_axi4.scala 176:67] + wire _T_45 = ahb_hsize_q == 3'h0; // @[ahb_to_axi4.scala 149:62] + wire [7:0] _T_47 = _T_45 ? 8'hff : 8'h0; // @[Bitwise.scala 72:12] + wire [7:0] _T_49 = 8'h1 << ahb_haddr_q[2:0]; // @[ahb_to_axi4.scala 149:80] + wire [7:0] _T_50 = _T_47 & _T_49; // @[ahb_to_axi4.scala 149:72] + wire _T_52 = ahb_hsize_q == 3'h1; // @[ahb_to_axi4.scala 150:62] + wire [7:0] _T_54 = _T_52 ? 8'hff : 8'h0; // @[Bitwise.scala 72:12] + wire [8:0] _T_56 = 9'h3 << ahb_haddr_q[2:0]; // @[ahb_to_axi4.scala 150:80] + wire [8:0] _GEN_26 = {{1'd0}, _T_54}; // @[ahb_to_axi4.scala 150:72] + wire [8:0] _T_57 = _GEN_26 & _T_56; // @[ahb_to_axi4.scala 150:72] + wire [8:0] _GEN_27 = {{1'd0}, _T_50}; // @[ahb_to_axi4.scala 149:111] + wire [8:0] _T_58 = _GEN_27 | _T_57; // @[ahb_to_axi4.scala 149:111] + wire _T_60 = ahb_hsize_q == 3'h2; // @[ahb_to_axi4.scala 151:62] + wire [7:0] _T_62 = _T_60 ? 8'hff : 8'h0; // @[Bitwise.scala 72:12] + wire [10:0] _T_64 = 11'hf << ahb_haddr_q[2:0]; // @[ahb_to_axi4.scala 151:80] + wire [10:0] _GEN_28 = {{3'd0}, _T_62}; // @[ahb_to_axi4.scala 151:72] + wire [10:0] _T_65 = _GEN_28 & _T_64; // @[ahb_to_axi4.scala 151:72] + wire [10:0] _GEN_29 = {{2'd0}, _T_58}; // @[ahb_to_axi4.scala 150:111] + wire [10:0] _T_66 = _GEN_29 | _T_65; // @[ahb_to_axi4.scala 150:111] + wire _T_68 = ahb_hsize_q == 3'h3; // @[ahb_to_axi4.scala 152:62] + wire [7:0] _T_70 = _T_68 ? 8'hff : 8'h0; // @[Bitwise.scala 72:12] + wire [10:0] _GEN_30 = {{3'd0}, _T_70}; // @[ahb_to_axi4.scala 151:111] + wire [10:0] _T_72 = _T_66 | _GEN_30; // @[ahb_to_axi4.scala 151:111] + reg ahb_hready_q; // @[ahb_to_axi4.scala 174:62] + wire _T_73 = ~ahb_hready_q; // @[ahb_to_axi4.scala 155:68] + reg ahb_hresp_q; // @[ahb_to_axi4.scala 173:62] + wire _T_74 = ahb_hresp_q & _T_73; // @[ahb_to_axi4.scala 155:66] + wire _T_76 = buf_state == 2'h0; // @[ahb_to_axi4.scala 155:112] + wire _T_77 = _T_20 | _T_76; // @[ahb_to_axi4.scala 155:99] + wire _T_78 = buf_state == 2'h2; // @[ahb_to_axi4.scala 155:137] + wire _T_79 = buf_state == 2'h3; // @[ahb_to_axi4.scala 155:156] + wire _T_80 = _T_78 | _T_79; // @[ahb_to_axi4.scala 155:144] + wire _T_81 = ~_T_80; // @[ahb_to_axi4.scala 155:125] + wire _T_82 = _T_77 & _T_81; // @[ahb_to_axi4.scala 155:123] + reg buf_read_error; // @[ahb_to_axi4.scala 170:62] + wire _T_83 = ~buf_read_error; // @[ahb_to_axi4.scala 155:169] + wire _T_84 = _T_82 & _T_83; // @[ahb_to_axi4.scala 155:167] + wire [1:0] _T_88 = io_ahb_hsel ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire buf_rdata_clk = rvclkhdr_2_io_l1clk; // @[ahb_to_axi4.scala 86:35 ahb_to_axi4.scala 186:33] + reg [63:0] buf_rdata; // @[ahb_to_axi4.scala 169:68] + reg [1:0] ahb_htrans_q; // @[ahb_to_axi4.scala 175:62] + wire _T_93 = ahb_htrans_q != 2'h0; // @[ahb_to_axi4.scala 159:56] + wire _T_94 = buf_state != 2'h0; // @[ahb_to_axi4.scala 159:78] + wire _T_95 = _T_93 & _T_94; // @[ahb_to_axi4.scala 159:65] + wire _T_97 = ~ahb_addr_in_dccm; // @[ahb_to_axi4.scala 160:38] + reg ahb_hwrite_q; // @[ahb_to_axi4.scala 177:67] + wire _T_98 = ahb_addr_in_dccm & ahb_hwrite_q; // @[ahb_to_axi4.scala 161:75] + wire _T_101 = ahb_hsize_q[1:0] == 2'h2; // @[ahb_to_axi4.scala 161:115] + wire _T_103 = ahb_hsize_q[1:0] == 2'h3; // @[ahb_to_axi4.scala 161:144] + wire _T_104 = _T_101 | _T_103; // @[ahb_to_axi4.scala 161:124] + wire _T_105 = ~_T_104; // @[ahb_to_axi4.scala 161:95] + wire _T_106 = _T_98 & _T_105; // @[ahb_to_axi4.scala 161:93] + wire _T_107 = _T_97 | _T_106; // @[ahb_to_axi4.scala 160:78] + wire _T_111 = _T_52 & ahb_haddr_q[0]; // @[ahb_to_axi4.scala 162:64] + wire _T_112 = _T_107 | _T_111; // @[ahb_to_axi4.scala 161:155] + wire _T_116 = |ahb_haddr_q[1:0]; // @[ahb_to_axi4.scala 163:85] + wire _T_117 = _T_60 & _T_116; // @[ahb_to_axi4.scala 163:64] + wire _T_118 = _T_112 | _T_117; // @[ahb_to_axi4.scala 162:84] + wire _T_122 = |ahb_haddr_q[2:0]; // @[ahb_to_axi4.scala 164:85] + wire _T_123 = _T_68 & _T_122; // @[ahb_to_axi4.scala 164:64] + wire _T_124 = _T_118 | _T_123; // @[ahb_to_axi4.scala 163:90] + wire _T_125 = _T_95 & _T_124; // @[ahb_to_axi4.scala 159:89] + wire _T_126 = _T_125 | buf_read_error; // @[ahb_to_axi4.scala 164:92] + wire _T_145 = ~cmdbuf_wr_en; // @[ahb_to_axi4.scala 188:111] + wire _T_146 = _T_152 & _T_145; // @[ahb_to_axi4.scala 188:109] + wire _T_148 = io_ahb_hresp & _T_37; // @[ahb_to_axi4.scala 188:142] + wire cmdbuf_rst = _T_146 | _T_148; // @[ahb_to_axi4.scala 188:126] + reg [2:0] _T_161; // @[Reg.scala 27:20] + reg [7:0] cmdbuf_wstrb; // @[Reg.scala 27:20] + wire [7:0] master_wstrb = _T_72[7:0]; // @[ahb_to_axi4.scala 149:33] + reg [31:0] cmdbuf_addr; // @[Reg.scala 27:20] + reg [63:0] cmdbuf_wdata; // @[Reg.scala 27:20] + wire [1:0] cmdbuf_size = _T_161[1:0]; // @[ahb_to_axi4.scala 199:33] + rvclkhdr rvclkhdr ( // @[el2_lib.scala 483:22] + .io_l1clk(rvclkhdr_io_l1clk), + .io_clk(rvclkhdr_io_clk), + .io_en(rvclkhdr_io_en), + .io_scan_mode(rvclkhdr_io_scan_mode) + ); + rvclkhdr rvclkhdr_1 ( // @[el2_lib.scala 483:22] + .io_l1clk(rvclkhdr_1_io_l1clk), + .io_clk(rvclkhdr_1_io_clk), + .io_en(rvclkhdr_1_io_en), + .io_scan_mode(rvclkhdr_1_io_scan_mode) + ); + rvclkhdr rvclkhdr_2 ( // @[el2_lib.scala 483:22] + .io_l1clk(rvclkhdr_2_io_l1clk), + .io_clk(rvclkhdr_2_io_clk), + .io_en(rvclkhdr_2_io_en), + .io_scan_mode(rvclkhdr_2_io_scan_mode) + ); + rvclkhdr rvclkhdr_3 ( // @[el2_lib.scala 483:22] + .io_l1clk(rvclkhdr_3_io_l1clk), + .io_clk(rvclkhdr_3_io_clk), + .io_en(rvclkhdr_3_io_en), + .io_scan_mode(rvclkhdr_3_io_scan_mode) + ); + assign io_axi_awvalid = cmdbuf_vld & cmdbuf_write; // @[ahb_to_axi4.scala 210:29] + assign io_axi_awaddr = cmdbuf_addr; // @[ahb_to_axi4.scala 212:29] + assign io_axi_awsize = {1'h0,cmdbuf_size}; // @[ahb_to_axi4.scala 213:29] + assign io_axi_awprot = 3'h0; // @[ahb_to_axi4.scala 214:29] + assign io_axi_awlen = 8'h0; // @[ahb_to_axi4.scala 215:29] + assign io_axi_awburst = 2'h1; // @[ahb_to_axi4.scala 216:29] + assign io_axi_wvalid = cmdbuf_vld & cmdbuf_write; // @[ahb_to_axi4.scala 218:29] + assign io_axi_wdata = cmdbuf_wdata; // @[ahb_to_axi4.scala 219:29] + assign io_axi_wstrb = cmdbuf_wstrb; // @[ahb_to_axi4.scala 220:29] + assign io_axi_wlast = 1'h1; // @[ahb_to_axi4.scala 221:29] + assign io_axi_bready = 1'h1; // @[ahb_to_axi4.scala 223:29] + assign io_axi_arvalid = cmdbuf_vld & _T_37; // @[ahb_to_axi4.scala 225:29] + assign io_axi_araddr = cmdbuf_addr; // @[ahb_to_axi4.scala 227:29] + assign io_axi_arsize = {1'h0,cmdbuf_size}; // @[ahb_to_axi4.scala 228:29] + assign io_axi_arprot = 3'h0; // @[ahb_to_axi4.scala 229:29] + assign io_axi_arlen = 8'h0; // @[ahb_to_axi4.scala 230:29] + assign io_axi_arburst = 2'h1; // @[ahb_to_axi4.scala 231:29] + assign io_axi_rready = 1'h1; // @[ahb_to_axi4.scala 233:29] + assign io_ahb_hrdata = buf_rdata; // @[ahb_to_axi4.scala 158:33] + assign io_ahb_hreadyout = io_ahb_hresp ? _T_74 : _T_84; // @[ahb_to_axi4.scala 155:33] + assign io_ahb_hresp = _T_126 | _T_74; // @[ahb_to_axi4.scala 159:33] + assign rvclkhdr_io_clk = clock; // @[el2_lib.scala 484:17] + assign rvclkhdr_io_en = io_bus_clk_en; // @[el2_lib.scala 485:16] + assign rvclkhdr_io_scan_mode = io_scan_mode; // @[el2_lib.scala 486:23] + assign rvclkhdr_1_io_clk = clock; // @[el2_lib.scala 484:17] + assign rvclkhdr_1_io_en = io_bus_clk_en & _T_9; // @[el2_lib.scala 485:16] + assign rvclkhdr_1_io_scan_mode = io_scan_mode; // @[el2_lib.scala 486:23] + assign rvclkhdr_2_io_clk = clock; // @[el2_lib.scala 484:17] + assign rvclkhdr_2_io_en = io_bus_clk_en & buf_rdata_en; // @[el2_lib.scala 485:16] + assign rvclkhdr_2_io_scan_mode = io_scan_mode; // @[el2_lib.scala 486:23] + assign rvclkhdr_3_io_clk = clock; // @[el2_lib.scala 484:17] + assign rvclkhdr_3_io_en = io_bus_clk_en; // @[el2_lib.scala 485:16] + assign rvclkhdr_3_io_scan_mode = io_scan_mode; // @[el2_lib.scala 486:23] +`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}}; + ahb_haddr_q = _RAND_0[31:0]; + _RAND_1 = {1{`RANDOM}}; + buf_state = _RAND_1[1:0]; + _RAND_2 = {1{`RANDOM}}; + cmdbuf_vld = _RAND_2[0:0]; + _RAND_3 = {1{`RANDOM}}; + cmdbuf_write = _RAND_3[0:0]; + _RAND_4 = {1{`RANDOM}}; + ahb_hsize_q = _RAND_4[2:0]; + _RAND_5 = {1{`RANDOM}}; + ahb_hready_q = _RAND_5[0:0]; + _RAND_6 = {1{`RANDOM}}; + ahb_hresp_q = _RAND_6[0:0]; + _RAND_7 = {1{`RANDOM}}; + buf_read_error = _RAND_7[0:0]; + _RAND_8 = {2{`RANDOM}}; + buf_rdata = _RAND_8[63:0]; + _RAND_9 = {1{`RANDOM}}; + ahb_htrans_q = _RAND_9[1:0]; + _RAND_10 = {1{`RANDOM}}; + ahb_hwrite_q = _RAND_10[0:0]; + _RAND_11 = {1{`RANDOM}}; + _T_161 = _RAND_11[2:0]; + _RAND_12 = {1{`RANDOM}}; + cmdbuf_wstrb = _RAND_12[7:0]; + _RAND_13 = {1{`RANDOM}}; + cmdbuf_addr = _RAND_13[31:0]; + _RAND_14 = {2{`RANDOM}}; + cmdbuf_wdata = _RAND_14[63:0]; +`endif // RANDOMIZE_REG_INIT + if (reset) begin + ahb_haddr_q = 32'h0; + end + if (reset) begin + buf_state = 2'h0; + end + if (reset) begin + cmdbuf_vld = 1'h0; + end + if (reset) begin + cmdbuf_write = 1'h0; + end + if (reset) begin + ahb_hsize_q = 3'h0; + end + if (reset) begin + ahb_hready_q = 1'h0; + end + if (reset) begin + ahb_hresp_q = 1'h0; + end + if (reset) begin + buf_read_error = 1'h0; + end + if (reset) begin + buf_rdata = 64'h0; + end + if (reset) begin + ahb_htrans_q = 2'h0; + end + if (reset) begin + ahb_hwrite_q = 1'h0; + end + if (reset) begin + _T_161 = 3'h0; + end + if (reset) begin + cmdbuf_wstrb = 8'h0; + end + if (reset) begin + cmdbuf_addr = 32'h0; + end + if (reset) begin + cmdbuf_wdata = 64'h0; + end + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS + always @(posedge ahb_addr_clk or posedge reset) begin + if (reset) begin + ahb_haddr_q <= 32'h0; + end else begin + ahb_haddr_q <= io_ahb_haddr; + end + end + always @(posedge ahb_clk or posedge reset) begin + if (reset) begin + buf_state <= 2'h0; + end else if (buf_state_en) begin + if (_T_6) begin + if (io_ahb_hwrite) begin + buf_state <= 2'h1; + end else begin + buf_state <= 2'h2; + end + end else if (_T_11) begin + if (_T_16) begin + buf_state <= 2'h0; + end else if (io_ahb_hwrite) begin + buf_state <= 2'h1; + end else begin + buf_state <= 2'h2; + end + end else if (_T_29) begin + if (io_ahb_hresp) begin + buf_state <= 2'h0; + end else begin + buf_state <= 2'h3; + end + end else begin + buf_state <= 2'h0; + end + end + end + always @(posedge bus_clk or posedge reset) begin + if (reset) begin + cmdbuf_vld <= 1'h0; + end else if (cmdbuf_wr_en) begin + cmdbuf_vld <= cmdbuf_rst; + end + end + always @(posedge bus_clk or posedge reset) begin + if (reset) begin + cmdbuf_write <= 1'h0; + end else if (cmdbuf_wr_en) begin + cmdbuf_write <= ahb_hwrite_q; + end + end + always @(posedge ahb_addr_clk or posedge reset) begin + if (reset) begin + ahb_hsize_q <= 3'h0; + end else begin + ahb_hsize_q <= io_ahb_hsize; + end + end + always @(posedge ahb_clk or posedge reset) begin + if (reset) begin + ahb_hready_q <= 1'h0; + end else begin + ahb_hready_q <= io_ahb_hreadyout & io_ahb_hreadyin; + end + end + always @(posedge ahb_clk or posedge reset) begin + if (reset) begin + ahb_hresp_q <= 1'h0; + end else begin + ahb_hresp_q <= io_ahb_hresp; + end + end + always @(posedge ahb_clk or posedge reset) begin + if (reset) begin + buf_read_error <= 1'h0; + end else if (_T_6) begin + buf_read_error <= 1'h0; + end else if (_T_11) begin + buf_read_error <= 1'h0; + end else if (_T_29) begin + buf_read_error <= 1'h0; + end else begin + buf_read_error <= _GEN_3; + end + end + always @(posedge buf_rdata_clk or posedge reset) begin + if (reset) begin + buf_rdata <= 64'h0; + end else begin + buf_rdata <= io_axi_rdata; + end + end + always @(posedge ahb_clk or posedge reset) begin + if (reset) begin + ahb_htrans_q <= 2'h0; + end else begin + ahb_htrans_q <= _T_88 & io_ahb_htrans; + end + end + always @(posedge ahb_addr_clk or posedge reset) begin + if (reset) begin + ahb_hwrite_q <= 1'h0; + end else begin + ahb_hwrite_q <= io_ahb_hwrite; + end + end + always @(posedge bus_clk or posedge reset) begin + if (reset) begin + _T_161 <= 3'h0; + end else if (cmdbuf_wr_en) begin + _T_161 <= ahb_hsize_q; + end + end + always @(posedge bus_clk or posedge reset) begin + if (reset) begin + cmdbuf_wstrb <= 8'h0; + end else if (cmdbuf_wr_en) begin + cmdbuf_wstrb <= master_wstrb; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + cmdbuf_addr <= 32'h0; + end else if (cmdbuf_wr_en) begin + cmdbuf_addr <= ahb_haddr_q; + end + end + always @(posedge clock or posedge reset) begin + if (reset) begin + cmdbuf_wdata <= 64'h0; + end else if (cmdbuf_wr_en) begin + cmdbuf_wdata <= io_ahb_hwdata; + end + end +endmodule diff --git a/axi4_to_ahb.fir b/axi4_to_ahb.fir index 101fc57b..a9120f2e 100644 --- a/axi4_to_ahb.fir +++ b/axi4_to_ahb.fir @@ -482,7 +482,7 @@ circuit axi4_to_ahb : rvclkhdr_1.io.scan_mode <= io.scan_mode @[el2_lib.scala 486:23] bus_write_clk <= rvclkhdr_1.io.l1clk @[axi4_to_ahb.scala 222:17] io.ahb_htrans <= UInt<1>("h00") @[axi4_to_ahb.scala 225:17] - master_ready <= UInt<1>("h01") @[axi4_to_ahb.scala 226:16] + master_ready <= UInt<1>("h00") @[axi4_to_ahb.scala 226:16] buf_state_en <= UInt<1>("h00") @[axi4_to_ahb.scala 227:16] buf_nxtstate <= UInt<3>("h00") @[axi4_to_ahb.scala 228:18] buf_data_wr_en <= UInt<1>("h00") @[axi4_to_ahb.scala 230:18] @@ -514,7 +514,7 @@ circuit axi4_to_ahb : buf_data_wr_en <= _T_54 @[axi4_to_ahb.scala 250:22] buf_cmd_byte_ptr_en <= buf_state_en @[axi4_to_ahb.scala 251:27] node _T_55 = bits(buf_write_in, 0, 0) @[axi4_to_ahb.scala 253:50] - node _T_56 = bits(buf_byteen_in, 7, 0) @[axi4_to_ahb.scala 253:92] + node _T_56 = bits(buf_byteen_in, 7, 0) @[axi4_to_ahb.scala 253:89] node _T_57 = add(UInt<1>("h00"), UInt<1>("h01")) @[axi4_to_ahb.scala 182:52] node _T_58 = tail(_T_57, 1) @[axi4_to_ahb.scala 182:52] node _T_59 = mux(UInt<1>("h00"), _T_58, UInt<1>("h00")) @[axi4_to_ahb.scala 182:24] @@ -550,7 +550,7 @@ circuit axi4_to_ahb : 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 253:141] + node _T_92 = bits(master_addr, 2, 0) @[axi4_to_ahb.scala 253:138] node _T_93 = mux(_T_55, _T_91, _T_92) @[axi4_to_ahb.scala 253:30] buf_cmd_byte_ptr <= _T_93 @[axi4_to_ahb.scala 253:24] bypass_en <= buf_state_en @[axi4_to_ahb.scala 254:17] @@ -902,87 +902,86 @@ circuit axi4_to_ahb : trxn_done <= _T_364 @[axi4_to_ahb.scala 329:17] node _T_365 = or(trxn_done, bypass_en) @[axi4_to_ahb.scala 330:40] buf_cmd_byte_ptr_en <= _T_365 @[axi4_to_ahb.scala 330:27] - node _T_366 = mux(UInt<1>("h00"), UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] - node _T_367 = bits(buf_byteen_in, 7, 0) @[axi4_to_ahb.scala 333:85] - node _T_368 = add(_T_366, UInt<1>("h01")) @[axi4_to_ahb.scala 182:52] - node _T_369 = tail(_T_368, 1) @[axi4_to_ahb.scala 182:52] - node _T_370 = mux(UInt<1>("h00"), _T_369, _T_366) @[axi4_to_ahb.scala 182:24] - node _T_371 = bits(_T_367, 0, 0) @[axi4_to_ahb.scala 183:44] - node _T_372 = geq(UInt<1>("h00"), _T_370) @[axi4_to_ahb.scala 183:62] - node _T_373 = and(_T_371, _T_372) @[axi4_to_ahb.scala 183:48] - node _T_374 = bits(_T_367, 1, 1) @[axi4_to_ahb.scala 183:44] - node _T_375 = geq(UInt<1>("h01"), _T_370) @[axi4_to_ahb.scala 183:62] - node _T_376 = and(_T_374, _T_375) @[axi4_to_ahb.scala 183:48] - node _T_377 = bits(_T_367, 2, 2) @[axi4_to_ahb.scala 183:44] - node _T_378 = geq(UInt<2>("h02"), _T_370) @[axi4_to_ahb.scala 183:62] - node _T_379 = and(_T_377, _T_378) @[axi4_to_ahb.scala 183:48] - node _T_380 = bits(_T_367, 3, 3) @[axi4_to_ahb.scala 183:44] - node _T_381 = geq(UInt<2>("h03"), _T_370) @[axi4_to_ahb.scala 183:62] - node _T_382 = and(_T_380, _T_381) @[axi4_to_ahb.scala 183:48] - node _T_383 = bits(_T_367, 4, 4) @[axi4_to_ahb.scala 183:44] - node _T_384 = geq(UInt<3>("h04"), _T_370) @[axi4_to_ahb.scala 183:62] - node _T_385 = and(_T_383, _T_384) @[axi4_to_ahb.scala 183:48] - node _T_386 = bits(_T_367, 5, 5) @[axi4_to_ahb.scala 183:44] - node _T_387 = geq(UInt<3>("h05"), _T_370) @[axi4_to_ahb.scala 183:62] - node _T_388 = and(_T_386, _T_387) @[axi4_to_ahb.scala 183:48] - node _T_389 = bits(_T_367, 6, 6) @[axi4_to_ahb.scala 183:44] - node _T_390 = geq(UInt<3>("h06"), _T_370) @[axi4_to_ahb.scala 183:62] - node _T_391 = and(_T_389, _T_390) @[axi4_to_ahb.scala 183:48] - node _T_392 = bits(_T_367, 7, 7) @[axi4_to_ahb.scala 183:44] - node _T_393 = geq(UInt<3>("h07"), _T_370) @[axi4_to_ahb.scala 183:62] - node _T_394 = and(_T_392, _T_393) @[axi4_to_ahb.scala 183:48] - node _T_395 = mux(_T_394, UInt<3>("h07"), UInt<1>("h00")) @[Mux.scala 98:16] - node _T_396 = mux(_T_391, UInt<3>("h06"), _T_395) @[Mux.scala 98:16] - node _T_397 = mux(_T_388, UInt<3>("h05"), _T_396) @[Mux.scala 98:16] - node _T_398 = mux(_T_385, UInt<3>("h04"), _T_397) @[Mux.scala 98:16] - node _T_399 = mux(_T_382, UInt<2>("h03"), _T_398) @[Mux.scala 98:16] - node _T_400 = mux(_T_379, UInt<2>("h02"), _T_399) @[Mux.scala 98:16] - node _T_401 = mux(_T_376, UInt<1>("h01"), _T_400) @[Mux.scala 98:16] - node _T_402 = mux(_T_373, UInt<1>("h00"), _T_401) @[Mux.scala 98:16] - node _T_403 = bits(buf_cmd_byte_ptrQ, 2, 0) @[axi4_to_ahb.scala 333:151] - node _T_404 = bits(buf_byteen, 7, 0) @[axi4_to_ahb.scala 333:169] - node _T_405 = add(_T_403, UInt<1>("h01")) @[axi4_to_ahb.scala 182:52] - node _T_406 = tail(_T_405, 1) @[axi4_to_ahb.scala 182:52] - node _T_407 = mux(UInt<1>("h01"), _T_406, _T_403) @[axi4_to_ahb.scala 182:24] - node _T_408 = bits(_T_404, 0, 0) @[axi4_to_ahb.scala 183:44] - node _T_409 = geq(UInt<1>("h00"), _T_407) @[axi4_to_ahb.scala 183:62] - node _T_410 = and(_T_408, _T_409) @[axi4_to_ahb.scala 183:48] - node _T_411 = bits(_T_404, 1, 1) @[axi4_to_ahb.scala 183:44] - node _T_412 = geq(UInt<1>("h01"), _T_407) @[axi4_to_ahb.scala 183:62] - node _T_413 = and(_T_411, _T_412) @[axi4_to_ahb.scala 183:48] - node _T_414 = bits(_T_404, 2, 2) @[axi4_to_ahb.scala 183:44] - node _T_415 = geq(UInt<2>("h02"), _T_407) @[axi4_to_ahb.scala 183:62] - node _T_416 = and(_T_414, _T_415) @[axi4_to_ahb.scala 183:48] - node _T_417 = bits(_T_404, 3, 3) @[axi4_to_ahb.scala 183:44] - node _T_418 = geq(UInt<2>("h03"), _T_407) @[axi4_to_ahb.scala 183:62] - node _T_419 = and(_T_417, _T_418) @[axi4_to_ahb.scala 183:48] - node _T_420 = bits(_T_404, 4, 4) @[axi4_to_ahb.scala 183:44] - node _T_421 = geq(UInt<3>("h04"), _T_407) @[axi4_to_ahb.scala 183:62] - node _T_422 = and(_T_420, _T_421) @[axi4_to_ahb.scala 183:48] - node _T_423 = bits(_T_404, 5, 5) @[axi4_to_ahb.scala 183:44] - node _T_424 = geq(UInt<3>("h05"), _T_407) @[axi4_to_ahb.scala 183:62] - node _T_425 = and(_T_423, _T_424) @[axi4_to_ahb.scala 183:48] - node _T_426 = bits(_T_404, 6, 6) @[axi4_to_ahb.scala 183:44] - node _T_427 = geq(UInt<3>("h06"), _T_407) @[axi4_to_ahb.scala 183:62] - node _T_428 = and(_T_426, _T_427) @[axi4_to_ahb.scala 183:48] - node _T_429 = bits(_T_404, 7, 7) @[axi4_to_ahb.scala 183:44] - node _T_430 = geq(UInt<3>("h07"), _T_407) @[axi4_to_ahb.scala 183:62] - node _T_431 = and(_T_429, _T_430) @[axi4_to_ahb.scala 183:48] - node _T_432 = mux(_T_431, UInt<3>("h07"), UInt<1>("h00")) @[Mux.scala 98:16] - node _T_433 = mux(_T_428, UInt<3>("h06"), _T_432) @[Mux.scala 98:16] - node _T_434 = mux(_T_425, UInt<3>("h05"), _T_433) @[Mux.scala 98:16] - node _T_435 = mux(_T_422, UInt<3>("h04"), _T_434) @[Mux.scala 98:16] - node _T_436 = mux(_T_419, UInt<2>("h03"), _T_435) @[Mux.scala 98:16] - node _T_437 = mux(_T_416, UInt<2>("h02"), _T_436) @[Mux.scala 98:16] - node _T_438 = mux(_T_413, UInt<1>("h01"), _T_437) @[Mux.scala 98:16] - node _T_439 = mux(_T_410, UInt<1>("h00"), _T_438) @[Mux.scala 98:16] - node _T_440 = mux(trxn_done, _T_439, buf_cmd_byte_ptrQ) @[axi4_to_ahb.scala 333:106] - node _T_441 = mux(bypass_en, _T_402, _T_440) @[axi4_to_ahb.scala 333:30] - buf_cmd_byte_ptr <= _T_441 @[axi4_to_ahb.scala 333:24] + node _T_366 = bits(buf_byteen_in, 7, 0) @[axi4_to_ahb.scala 333:76] + node _T_367 = add(UInt<1>("h00"), UInt<1>("h01")) @[axi4_to_ahb.scala 182:52] + node _T_368 = tail(_T_367, 1) @[axi4_to_ahb.scala 182:52] + node _T_369 = mux(UInt<1>("h00"), _T_368, UInt<1>("h00")) @[axi4_to_ahb.scala 182:24] + node _T_370 = bits(_T_366, 0, 0) @[axi4_to_ahb.scala 183:44] + node _T_371 = geq(UInt<1>("h00"), _T_369) @[axi4_to_ahb.scala 183:62] + node _T_372 = and(_T_370, _T_371) @[axi4_to_ahb.scala 183:48] + node _T_373 = bits(_T_366, 1, 1) @[axi4_to_ahb.scala 183:44] + node _T_374 = geq(UInt<1>("h01"), _T_369) @[axi4_to_ahb.scala 183:62] + node _T_375 = and(_T_373, _T_374) @[axi4_to_ahb.scala 183:48] + node _T_376 = bits(_T_366, 2, 2) @[axi4_to_ahb.scala 183:44] + node _T_377 = geq(UInt<2>("h02"), _T_369) @[axi4_to_ahb.scala 183:62] + node _T_378 = and(_T_376, _T_377) @[axi4_to_ahb.scala 183:48] + node _T_379 = bits(_T_366, 3, 3) @[axi4_to_ahb.scala 183:44] + node _T_380 = geq(UInt<2>("h03"), _T_369) @[axi4_to_ahb.scala 183:62] + node _T_381 = and(_T_379, _T_380) @[axi4_to_ahb.scala 183:48] + node _T_382 = bits(_T_366, 4, 4) @[axi4_to_ahb.scala 183:44] + node _T_383 = geq(UInt<3>("h04"), _T_369) @[axi4_to_ahb.scala 183:62] + node _T_384 = and(_T_382, _T_383) @[axi4_to_ahb.scala 183:48] + node _T_385 = bits(_T_366, 5, 5) @[axi4_to_ahb.scala 183:44] + node _T_386 = geq(UInt<3>("h05"), _T_369) @[axi4_to_ahb.scala 183:62] + node _T_387 = and(_T_385, _T_386) @[axi4_to_ahb.scala 183:48] + node _T_388 = bits(_T_366, 6, 6) @[axi4_to_ahb.scala 183:44] + node _T_389 = geq(UInt<3>("h06"), _T_369) @[axi4_to_ahb.scala 183:62] + node _T_390 = and(_T_388, _T_389) @[axi4_to_ahb.scala 183:48] + node _T_391 = bits(_T_366, 7, 7) @[axi4_to_ahb.scala 183:44] + node _T_392 = geq(UInt<3>("h07"), _T_369) @[axi4_to_ahb.scala 183:62] + node _T_393 = and(_T_391, _T_392) @[axi4_to_ahb.scala 183:48] + node _T_394 = mux(_T_393, UInt<3>("h07"), UInt<1>("h00")) @[Mux.scala 98:16] + node _T_395 = mux(_T_390, UInt<3>("h06"), _T_394) @[Mux.scala 98:16] + node _T_396 = mux(_T_387, UInt<3>("h05"), _T_395) @[Mux.scala 98:16] + node _T_397 = mux(_T_384, UInt<3>("h04"), _T_396) @[Mux.scala 98:16] + node _T_398 = mux(_T_381, UInt<2>("h03"), _T_397) @[Mux.scala 98:16] + node _T_399 = mux(_T_378, UInt<2>("h02"), _T_398) @[Mux.scala 98:16] + node _T_400 = mux(_T_375, UInt<1>("h01"), _T_399) @[Mux.scala 98:16] + node _T_401 = mux(_T_372, UInt<1>("h00"), _T_400) @[Mux.scala 98:16] + node _T_402 = bits(buf_cmd_byte_ptrQ, 2, 0) @[axi4_to_ahb.scala 333:142] + node _T_403 = bits(buf_byteen, 7, 0) @[axi4_to_ahb.scala 333:160] + node _T_404 = add(_T_402, UInt<1>("h01")) @[axi4_to_ahb.scala 182:52] + node _T_405 = tail(_T_404, 1) @[axi4_to_ahb.scala 182:52] + node _T_406 = mux(UInt<1>("h01"), _T_405, _T_402) @[axi4_to_ahb.scala 182:24] + node _T_407 = bits(_T_403, 0, 0) @[axi4_to_ahb.scala 183:44] + node _T_408 = geq(UInt<1>("h00"), _T_406) @[axi4_to_ahb.scala 183:62] + node _T_409 = and(_T_407, _T_408) @[axi4_to_ahb.scala 183:48] + node _T_410 = bits(_T_403, 1, 1) @[axi4_to_ahb.scala 183:44] + node _T_411 = geq(UInt<1>("h01"), _T_406) @[axi4_to_ahb.scala 183:62] + node _T_412 = and(_T_410, _T_411) @[axi4_to_ahb.scala 183:48] + node _T_413 = bits(_T_403, 2, 2) @[axi4_to_ahb.scala 183:44] + node _T_414 = geq(UInt<2>("h02"), _T_406) @[axi4_to_ahb.scala 183:62] + node _T_415 = and(_T_413, _T_414) @[axi4_to_ahb.scala 183:48] + node _T_416 = bits(_T_403, 3, 3) @[axi4_to_ahb.scala 183:44] + node _T_417 = geq(UInt<2>("h03"), _T_406) @[axi4_to_ahb.scala 183:62] + node _T_418 = and(_T_416, _T_417) @[axi4_to_ahb.scala 183:48] + node _T_419 = bits(_T_403, 4, 4) @[axi4_to_ahb.scala 183:44] + node _T_420 = geq(UInt<3>("h04"), _T_406) @[axi4_to_ahb.scala 183:62] + node _T_421 = and(_T_419, _T_420) @[axi4_to_ahb.scala 183:48] + node _T_422 = bits(_T_403, 5, 5) @[axi4_to_ahb.scala 183:44] + node _T_423 = geq(UInt<3>("h05"), _T_406) @[axi4_to_ahb.scala 183:62] + node _T_424 = and(_T_422, _T_423) @[axi4_to_ahb.scala 183:48] + node _T_425 = bits(_T_403, 6, 6) @[axi4_to_ahb.scala 183:44] + node _T_426 = geq(UInt<3>("h06"), _T_406) @[axi4_to_ahb.scala 183:62] + node _T_427 = and(_T_425, _T_426) @[axi4_to_ahb.scala 183:48] + node _T_428 = bits(_T_403, 7, 7) @[axi4_to_ahb.scala 183:44] + node _T_429 = geq(UInt<3>("h07"), _T_406) @[axi4_to_ahb.scala 183:62] + node _T_430 = and(_T_428, _T_429) @[axi4_to_ahb.scala 183:48] + node _T_431 = mux(_T_430, UInt<3>("h07"), UInt<1>("h00")) @[Mux.scala 98:16] + node _T_432 = mux(_T_427, UInt<3>("h06"), _T_431) @[Mux.scala 98:16] + node _T_433 = mux(_T_424, UInt<3>("h05"), _T_432) @[Mux.scala 98:16] + node _T_434 = mux(_T_421, UInt<3>("h04"), _T_433) @[Mux.scala 98:16] + node _T_435 = mux(_T_418, UInt<2>("h03"), _T_434) @[Mux.scala 98:16] + node _T_436 = mux(_T_415, UInt<2>("h02"), _T_435) @[Mux.scala 98:16] + node _T_437 = mux(_T_412, UInt<1>("h01"), _T_436) @[Mux.scala 98:16] + node _T_438 = mux(_T_409, UInt<1>("h00"), _T_437) @[Mux.scala 98:16] + node _T_439 = mux(trxn_done, _T_438, buf_cmd_byte_ptrQ) @[axi4_to_ahb.scala 333:97] + node _T_440 = mux(bypass_en, _T_401, _T_439) @[axi4_to_ahb.scala 333:30] + buf_cmd_byte_ptr <= _T_440 @[axi4_to_ahb.scala 333:24] skip @[Conditional.scala 39:67] else : @[Conditional.scala 39:67] - node _T_442 = eq(UInt<3>("h05"), buf_state) @[Conditional.scala 37:30] - when _T_442 : @[Conditional.scala 39:67] + node _T_441 = eq(UInt<3>("h05"), buf_state) @[Conditional.scala 37:30] + when _T_441 : @[Conditional.scala 39:67] buf_nxtstate <= UInt<3>("h00") @[axi4_to_ahb.scala 336:20] buf_state_en <= slave_ready @[axi4_to_ahb.scala 337:20] slvbuf_error_en <= UInt<1>("h01") @[axi4_to_ahb.scala 338:23] @@ -990,407 +989,407 @@ circuit axi4_to_ahb : skip @[Conditional.scala 39:67] buf_rst <= UInt<1>("h00") @[axi4_to_ahb.scala 343:11] cmd_done_rst <= slave_valid_pre @[axi4_to_ahb.scala 344:16] - node _T_443 = bits(master_addr, 31, 3) @[axi4_to_ahb.scala 345:33] - node _T_444 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 345:73] - node _T_445 = eq(_T_444, UInt<1>("h01")) @[axi4_to_ahb.scala 345:80] - node _T_446 = and(buf_aligned_in, _T_445) @[axi4_to_ahb.scala 345:60] - node _T_447 = bits(_T_446, 0, 0) @[axi4_to_ahb.scala 345:100] - node _T_448 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 345:132] - wire _T_449 : UInt<8> - _T_449 <= UInt<8>("h00") - node _T_450 = bits(_T_449, 7, 0) @[axi4_to_ahb.scala 174:44] - node _T_451 = eq(_T_450, UInt<8>("h0ff")) @[axi4_to_ahb.scala 174:51] - node _T_452 = bits(_T_449, 7, 0) @[axi4_to_ahb.scala 174:75] - node _T_453 = eq(_T_452, UInt<4>("h0f")) @[axi4_to_ahb.scala 174:82] - node _T_454 = or(_T_451, _T_453) @[axi4_to_ahb.scala 174:64] - node _T_455 = bits(_T_449, 7, 0) @[axi4_to_ahb.scala 174:106] - node _T_456 = eq(_T_455, UInt<2>("h03")) @[axi4_to_ahb.scala 174:113] - node _T_457 = or(_T_454, _T_456) @[axi4_to_ahb.scala 174:95] - 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<1>("h00"), _T_459) @[axi4_to_ahb.scala 174:24] - node _T_461 = bits(_T_449, 7, 0) @[axi4_to_ahb.scala 175:35] - node _T_462 = eq(_T_461, UInt<4>("h0c")) @[axi4_to_ahb.scala 175:42] - node _T_463 = bits(_T_462, 0, 0) @[Bitwise.scala 72:15] - node _T_464 = mux(_T_463, UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] - node _T_465 = and(UInt<2>("h02"), _T_464) @[axi4_to_ahb.scala 175:15] - node _T_466 = or(_T_460, _T_465) @[axi4_to_ahb.scala 174:128] - node _T_467 = bits(_T_449, 7, 0) @[axi4_to_ahb.scala 176:36] - node _T_468 = eq(_T_467, UInt<8>("h0f0")) @[axi4_to_ahb.scala 176:43] - node _T_469 = bits(_T_449, 7, 0) @[axi4_to_ahb.scala 176:67] - node _T_470 = eq(_T_469, UInt<2>("h03")) @[axi4_to_ahb.scala 176:74] - node _T_471 = or(_T_468, _T_470) @[axi4_to_ahb.scala 176:56] - node _T_472 = bits(_T_471, 0, 0) @[Bitwise.scala 72:15] - node _T_473 = mux(_T_472, UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] - node _T_474 = and(UInt<3>("h04"), _T_473) @[axi4_to_ahb.scala 176:15] - node _T_475 = bits(_T_449, 7, 0) @[axi4_to_ahb.scala 177:37] - node _T_476 = eq(_T_475, UInt<8>("h0c0")) @[axi4_to_ahb.scala 177:44] - node _T_477 = bits(_T_476, 0, 0) @[Bitwise.scala 72:15] - node _T_478 = mux(_T_477, UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] - node _T_479 = and(UInt<3>("h06"), _T_478) @[axi4_to_ahb.scala 177:17] - node _T_480 = or(_T_474, _T_479) @[axi4_to_ahb.scala 176:90] - node _T_481 = or(_T_466, _T_480) @[axi4_to_ahb.scala 175:58] - node _T_482 = bits(master_addr, 2, 0) @[axi4_to_ahb.scala 345:152] - node _T_483 = mux(_T_447, _T_481, _T_482) @[axi4_to_ahb.scala 345:43] - node _T_484 = cat(_T_443, _T_483) @[Cat.scala 29:58] - buf_addr_in <= _T_484 @[axi4_to_ahb.scala 345:15] - node _T_485 = bits(master_tag, 0, 0) @[axi4_to_ahb.scala 346:27] - buf_tag_in <= _T_485 @[axi4_to_ahb.scala 346:14] - node _T_486 = bits(wrbuf_byteen, 7, 0) @[axi4_to_ahb.scala 347:32] - buf_byteen_in <= _T_486 @[axi4_to_ahb.scala 347:17] - node _T_487 = eq(buf_state, UInt<3>("h03")) @[axi4_to_ahb.scala 348:33] - node _T_488 = bits(ahb_hrdata_q, 63, 0) @[axi4_to_ahb.scala 348:59] - node _T_489 = bits(master_wdata, 63, 0) @[axi4_to_ahb.scala 348:80] - node _T_490 = mux(_T_487, _T_488, _T_489) @[axi4_to_ahb.scala 348:21] - buf_data_in <= _T_490 @[axi4_to_ahb.scala 348:15] - node _T_491 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 349:52] - node _T_492 = eq(_T_491, UInt<2>("h03")) @[axi4_to_ahb.scala 349:59] - node _T_493 = and(buf_aligned_in, _T_492) @[axi4_to_ahb.scala 349:38] - node _T_494 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 349:85] - node _T_495 = eq(_T_494, UInt<1>("h01")) @[axi4_to_ahb.scala 349:92] - node _T_496 = and(_T_493, _T_495) @[axi4_to_ahb.scala 349:72] - node _T_497 = bits(_T_496, 0, 0) @[axi4_to_ahb.scala 349:112] - node _T_498 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 349:144] - wire _T_499 : UInt<8> - _T_499 <= UInt<8>("h00") - node _T_500 = bits(_T_499, 7, 0) @[axi4_to_ahb.scala 166:43] - node _T_501 = eq(_T_500, UInt<8>("h0ff")) @[axi4_to_ahb.scala 166:50] - node _T_502 = bits(_T_501, 0, 0) @[Bitwise.scala 72:15] - node _T_503 = mux(_T_502, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node _T_504 = and(UInt<2>("h03"), _T_503) @[axi4_to_ahb.scala 166:25] - node _T_505 = bits(_T_499, 7, 0) @[axi4_to_ahb.scala 167:34] - node _T_506 = eq(_T_505, UInt<8>("h0f0")) @[axi4_to_ahb.scala 167:41] - node _T_507 = bits(_T_499, 7, 0) @[axi4_to_ahb.scala 167:63] - node _T_508 = eq(_T_507, UInt<4>("h0f")) @[axi4_to_ahb.scala 167:70] - node _T_509 = or(_T_506, _T_508) @[axi4_to_ahb.scala 167:54] - node _T_510 = bits(_T_509, 0, 0) @[Bitwise.scala 72:15] - node _T_511 = mux(_T_510, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node _T_512 = and(UInt<2>("h02"), _T_511) @[axi4_to_ahb.scala 167:16] - node _T_513 = or(_T_504, _T_512) @[axi4_to_ahb.scala 166:65] - node _T_514 = bits(_T_499, 7, 0) @[axi4_to_ahb.scala 168:34] - node _T_515 = eq(_T_514, UInt<8>("h0c0")) @[axi4_to_ahb.scala 168:41] - node _T_516 = bits(_T_499, 7, 0) @[axi4_to_ahb.scala 168:63] - node _T_517 = eq(_T_516, UInt<6>("h030")) @[axi4_to_ahb.scala 168:70] - node _T_518 = or(_T_515, _T_517) @[axi4_to_ahb.scala 168:54] - node _T_519 = bits(_T_499, 7, 0) @[axi4_to_ahb.scala 168:92] - node _T_520 = eq(_T_519, UInt<4>("h0c")) @[axi4_to_ahb.scala 168:99] - node _T_521 = or(_T_518, _T_520) @[axi4_to_ahb.scala 168:83] - node _T_522 = bits(_T_499, 7, 0) @[axi4_to_ahb.scala 168:121] - node _T_523 = eq(_T_522, UInt<2>("h03")) @[axi4_to_ahb.scala 168:128] - node _T_524 = or(_T_521, _T_523) @[axi4_to_ahb.scala 168:112] - node _T_525 = bits(_T_524, 0, 0) @[Bitwise.scala 72:15] - node _T_526 = mux(_T_525, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node _T_527 = and(UInt<1>("h01"), _T_526) @[axi4_to_ahb.scala 168:16] - node _T_528 = or(_T_513, _T_527) @[axi4_to_ahb.scala 167:86] - node _T_529 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 349:164] - node _T_530 = mux(_T_497, _T_528, _T_529) @[axi4_to_ahb.scala 349:21] - buf_size_in <= _T_530 @[axi4_to_ahb.scala 349:15] - node _T_531 = bits(master_opc, 2, 0) @[axi4_to_ahb.scala 350:32] - node _T_532 = eq(_T_531, UInt<1>("h00")) @[axi4_to_ahb.scala 350:39] - node _T_533 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 351:17] - node _T_534 = eq(_T_533, UInt<1>("h00")) @[axi4_to_ahb.scala 351:24] - node _T_535 = or(_T_532, _T_534) @[axi4_to_ahb.scala 350:51] - node _T_536 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 351:50] - node _T_537 = eq(_T_536, UInt<1>("h01")) @[axi4_to_ahb.scala 351:57] - node _T_538 = or(_T_535, _T_537) @[axi4_to_ahb.scala 351:36] - node _T_539 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 351:84] - node _T_540 = eq(_T_539, UInt<2>("h02")) @[axi4_to_ahb.scala 351:91] - node _T_541 = or(_T_538, _T_540) @[axi4_to_ahb.scala 351:70] - node _T_542 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 352:18] - node _T_543 = eq(_T_542, UInt<2>("h03")) @[axi4_to_ahb.scala 352:25] - node _T_544 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 352:55] - node _T_545 = eq(_T_544, UInt<2>("h03")) @[axi4_to_ahb.scala 352:62] - node _T_546 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 352:90] - node _T_547 = eq(_T_546, UInt<4>("h0c")) @[axi4_to_ahb.scala 352:97] - node _T_548 = or(_T_545, _T_547) @[axi4_to_ahb.scala 352:74] - node _T_549 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 352:125] - node _T_550 = eq(_T_549, UInt<6>("h030")) @[axi4_to_ahb.scala 352:132] - node _T_551 = or(_T_548, _T_550) @[axi4_to_ahb.scala 352:109] - node _T_552 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 352:161] - node _T_553 = eq(_T_552, UInt<8>("h0c0")) @[axi4_to_ahb.scala 352:168] - node _T_554 = or(_T_551, _T_553) @[axi4_to_ahb.scala 352:145] - node _T_555 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 353:21] - node _T_556 = eq(_T_555, UInt<4>("h0f")) @[axi4_to_ahb.scala 353:28] - node _T_557 = or(_T_554, _T_556) @[axi4_to_ahb.scala 352:181] - node _T_558 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 353:56] - node _T_559 = eq(_T_558, UInt<8>("h0f0")) @[axi4_to_ahb.scala 353:63] - node _T_560 = or(_T_557, _T_559) @[axi4_to_ahb.scala 353:40] - node _T_561 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 353:92] - node _T_562 = eq(_T_561, UInt<8>("h0ff")) @[axi4_to_ahb.scala 353:99] - node _T_563 = or(_T_560, _T_562) @[axi4_to_ahb.scala 353:76] - node _T_564 = and(_T_543, _T_563) @[axi4_to_ahb.scala 352:38] - node _T_565 = or(_T_541, _T_564) @[axi4_to_ahb.scala 351:104] - buf_aligned_in <= _T_565 @[axi4_to_ahb.scala 350:18] - node _T_566 = bits(bypass_en, 0, 0) @[axi4_to_ahb.scala 355:39] - node _T_567 = bits(master_addr, 31, 3) @[axi4_to_ahb.scala 355:58] - node _T_568 = bits(buf_cmd_byte_ptr, 2, 0) @[axi4_to_ahb.scala 355:83] - node _T_569 = cat(_T_567, _T_568) @[Cat.scala 29:58] - node _T_570 = bits(buf_addr, 31, 3) @[axi4_to_ahb.scala 355:104] - node _T_571 = bits(buf_cmd_byte_ptr, 2, 0) @[axi4_to_ahb.scala 355:129] - node _T_572 = cat(_T_570, _T_571) @[Cat.scala 29:58] - node _T_573 = mux(_T_566, _T_569, _T_572) @[axi4_to_ahb.scala 355:22] - io.ahb_haddr <= _T_573 @[axi4_to_ahb.scala 355:16] - node _T_574 = bits(bypass_en, 0, 0) @[axi4_to_ahb.scala 356:39] - 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 356:93] - node _T_578 = and(_T_576, _T_577) @[axi4_to_ahb.scala 356:80] - 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 356:148] - node _T_583 = and(_T_581, _T_582) @[axi4_to_ahb.scala 356: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 356:22] - io.ahb_hsize <= _T_585 @[axi4_to_ahb.scala 356:16] + node _T_442 = bits(master_addr, 31, 3) @[axi4_to_ahb.scala 345:33] + node _T_443 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 345:73] + node _T_444 = eq(_T_443, UInt<1>("h01")) @[axi4_to_ahb.scala 345:80] + node _T_445 = and(buf_aligned_in, _T_444) @[axi4_to_ahb.scala 345:60] + node _T_446 = bits(_T_445, 0, 0) @[axi4_to_ahb.scala 345:100] + node _T_447 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 345:132] + wire _T_448 : UInt<8> + _T_448 <= UInt<8>("h00") + node _T_449 = bits(_T_448, 7, 0) @[axi4_to_ahb.scala 174:44] + node _T_450 = eq(_T_449, UInt<8>("h0ff")) @[axi4_to_ahb.scala 174:51] + node _T_451 = bits(_T_448, 7, 0) @[axi4_to_ahb.scala 174:75] + node _T_452 = eq(_T_451, UInt<4>("h0f")) @[axi4_to_ahb.scala 174:82] + node _T_453 = or(_T_450, _T_452) @[axi4_to_ahb.scala 174:64] + node _T_454 = bits(_T_448, 7, 0) @[axi4_to_ahb.scala 174:106] + node _T_455 = eq(_T_454, UInt<2>("h03")) @[axi4_to_ahb.scala 174:113] + node _T_456 = or(_T_453, _T_455) @[axi4_to_ahb.scala 174:95] + node _T_457 = bits(_T_456, 0, 0) @[Bitwise.scala 72:15] + node _T_458 = mux(_T_457, UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] + node _T_459 = and(UInt<1>("h00"), _T_458) @[axi4_to_ahb.scala 174:24] + node _T_460 = bits(_T_448, 7, 0) @[axi4_to_ahb.scala 175:35] + node _T_461 = eq(_T_460, UInt<4>("h0c")) @[axi4_to_ahb.scala 175:42] + node _T_462 = bits(_T_461, 0, 0) @[Bitwise.scala 72:15] + node _T_463 = mux(_T_462, UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] + node _T_464 = and(UInt<2>("h02"), _T_463) @[axi4_to_ahb.scala 175:15] + node _T_465 = or(_T_459, _T_464) @[axi4_to_ahb.scala 174:128] + node _T_466 = bits(_T_448, 7, 0) @[axi4_to_ahb.scala 176:36] + node _T_467 = eq(_T_466, UInt<8>("h0f0")) @[axi4_to_ahb.scala 176:43] + node _T_468 = bits(_T_448, 7, 0) @[axi4_to_ahb.scala 176:67] + node _T_469 = eq(_T_468, UInt<2>("h03")) @[axi4_to_ahb.scala 176:74] + node _T_470 = or(_T_467, _T_469) @[axi4_to_ahb.scala 176:56] + node _T_471 = bits(_T_470, 0, 0) @[Bitwise.scala 72:15] + node _T_472 = mux(_T_471, UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] + node _T_473 = and(UInt<3>("h04"), _T_472) @[axi4_to_ahb.scala 176:15] + node _T_474 = bits(_T_448, 7, 0) @[axi4_to_ahb.scala 177:37] + node _T_475 = eq(_T_474, UInt<8>("h0c0")) @[axi4_to_ahb.scala 177:44] + node _T_476 = bits(_T_475, 0, 0) @[Bitwise.scala 72:15] + node _T_477 = mux(_T_476, UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] + node _T_478 = and(UInt<3>("h06"), _T_477) @[axi4_to_ahb.scala 177:17] + node _T_479 = or(_T_473, _T_478) @[axi4_to_ahb.scala 176:90] + node _T_480 = or(_T_465, _T_479) @[axi4_to_ahb.scala 175:58] + node _T_481 = bits(master_addr, 2, 0) @[axi4_to_ahb.scala 345:152] + node _T_482 = mux(_T_446, _T_480, _T_481) @[axi4_to_ahb.scala 345:43] + node _T_483 = cat(_T_442, _T_482) @[Cat.scala 29:58] + buf_addr_in <= _T_483 @[axi4_to_ahb.scala 345:15] + node _T_484 = bits(master_tag, 0, 0) @[axi4_to_ahb.scala 346:27] + buf_tag_in <= _T_484 @[axi4_to_ahb.scala 346:14] + node _T_485 = bits(wrbuf_byteen, 7, 0) @[axi4_to_ahb.scala 347:32] + buf_byteen_in <= _T_485 @[axi4_to_ahb.scala 347:17] + node _T_486 = eq(buf_state, UInt<3>("h03")) @[axi4_to_ahb.scala 348:33] + node _T_487 = bits(ahb_hrdata_q, 63, 0) @[axi4_to_ahb.scala 348:59] + node _T_488 = bits(master_wdata, 63, 0) @[axi4_to_ahb.scala 348:80] + node _T_489 = mux(_T_486, _T_487, _T_488) @[axi4_to_ahb.scala 348:21] + buf_data_in <= _T_489 @[axi4_to_ahb.scala 348:15] + node _T_490 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 349:52] + node _T_491 = eq(_T_490, UInt<2>("h03")) @[axi4_to_ahb.scala 349:59] + node _T_492 = and(buf_aligned_in, _T_491) @[axi4_to_ahb.scala 349:38] + node _T_493 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 349:85] + node _T_494 = eq(_T_493, UInt<1>("h01")) @[axi4_to_ahb.scala 349:92] + node _T_495 = and(_T_492, _T_494) @[axi4_to_ahb.scala 349:72] + node _T_496 = bits(_T_495, 0, 0) @[axi4_to_ahb.scala 349:112] + node _T_497 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 349:144] + wire _T_498 : UInt<8> + _T_498 <= UInt<8>("h00") + node _T_499 = bits(_T_498, 7, 0) @[axi4_to_ahb.scala 166:42] + node _T_500 = eq(_T_499, UInt<8>("h0ff")) @[axi4_to_ahb.scala 166: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 166:25] + node _T_504 = bits(_T_498, 7, 0) @[axi4_to_ahb.scala 167:35] + node _T_505 = eq(_T_504, UInt<8>("h0f0")) @[axi4_to_ahb.scala 167:42] + node _T_506 = bits(_T_498, 7, 0) @[axi4_to_ahb.scala 167:64] + node _T_507 = eq(_T_506, UInt<4>("h0f")) @[axi4_to_ahb.scala 167:71] + node _T_508 = or(_T_505, _T_507) @[axi4_to_ahb.scala 167: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 167:16] + node _T_512 = or(_T_503, _T_511) @[axi4_to_ahb.scala 166:64] + node _T_513 = bits(_T_498, 7, 0) @[axi4_to_ahb.scala 168:35] + node _T_514 = eq(_T_513, UInt<8>("h0c0")) @[axi4_to_ahb.scala 168:42] + node _T_515 = bits(_T_498, 7, 0) @[axi4_to_ahb.scala 168:64] + node _T_516 = eq(_T_515, UInt<6>("h030")) @[axi4_to_ahb.scala 168:71] + node _T_517 = or(_T_514, _T_516) @[axi4_to_ahb.scala 168:55] + node _T_518 = bits(_T_498, 7, 0) @[axi4_to_ahb.scala 168:93] + node _T_519 = eq(_T_518, UInt<4>("h0c")) @[axi4_to_ahb.scala 168:100] + node _T_520 = or(_T_517, _T_519) @[axi4_to_ahb.scala 168:84] + node _T_521 = bits(_T_498, 7, 0) @[axi4_to_ahb.scala 168:122] + node _T_522 = eq(_T_521, UInt<2>("h03")) @[axi4_to_ahb.scala 168:129] + node _T_523 = or(_T_520, _T_522) @[axi4_to_ahb.scala 168:113] + 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<1>("h01"), _T_525) @[axi4_to_ahb.scala 168:16] + node _T_527 = or(_T_512, _T_526) @[axi4_to_ahb.scala 167:88] + node _T_528 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 349:164] + node _T_529 = mux(_T_496, _T_527, _T_528) @[axi4_to_ahb.scala 349:21] + buf_size_in <= _T_529 @[axi4_to_ahb.scala 349:15] + node _T_530 = bits(master_opc, 2, 0) @[axi4_to_ahb.scala 350:32] + node _T_531 = eq(_T_530, UInt<1>("h00")) @[axi4_to_ahb.scala 350:39] + node _T_532 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 351:17] + node _T_533 = eq(_T_532, UInt<1>("h00")) @[axi4_to_ahb.scala 351:24] + node _T_534 = or(_T_531, _T_533) @[axi4_to_ahb.scala 350:51] + node _T_535 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 351:50] + node _T_536 = eq(_T_535, UInt<1>("h01")) @[axi4_to_ahb.scala 351:57] + node _T_537 = or(_T_534, _T_536) @[axi4_to_ahb.scala 351:36] + node _T_538 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 351:84] + node _T_539 = eq(_T_538, UInt<2>("h02")) @[axi4_to_ahb.scala 351:91] + node _T_540 = or(_T_537, _T_539) @[axi4_to_ahb.scala 351:70] + node _T_541 = bits(master_size, 1, 0) @[axi4_to_ahb.scala 352:18] + node _T_542 = eq(_T_541, UInt<2>("h03")) @[axi4_to_ahb.scala 352:25] + node _T_543 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 352:55] + node _T_544 = eq(_T_543, UInt<2>("h03")) @[axi4_to_ahb.scala 352:62] + node _T_545 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 352:90] + node _T_546 = eq(_T_545, UInt<4>("h0c")) @[axi4_to_ahb.scala 352:97] + node _T_547 = or(_T_544, _T_546) @[axi4_to_ahb.scala 352:74] + node _T_548 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 352:125] + node _T_549 = eq(_T_548, UInt<6>("h030")) @[axi4_to_ahb.scala 352:132] + node _T_550 = or(_T_547, _T_549) @[axi4_to_ahb.scala 352:109] + node _T_551 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 352:161] + node _T_552 = eq(_T_551, UInt<8>("h0c0")) @[axi4_to_ahb.scala 352:168] + node _T_553 = or(_T_550, _T_552) @[axi4_to_ahb.scala 352:145] + node _T_554 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 353:21] + node _T_555 = eq(_T_554, UInt<4>("h0f")) @[axi4_to_ahb.scala 353:28] + node _T_556 = or(_T_553, _T_555) @[axi4_to_ahb.scala 352:181] + node _T_557 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 353:56] + node _T_558 = eq(_T_557, UInt<8>("h0f0")) @[axi4_to_ahb.scala 353:63] + node _T_559 = or(_T_556, _T_558) @[axi4_to_ahb.scala 353:40] + node _T_560 = bits(master_byteen, 7, 0) @[axi4_to_ahb.scala 353:92] + node _T_561 = eq(_T_560, UInt<8>("h0ff")) @[axi4_to_ahb.scala 353:99] + node _T_562 = or(_T_559, _T_561) @[axi4_to_ahb.scala 353:76] + node _T_563 = and(_T_542, _T_562) @[axi4_to_ahb.scala 352:38] + node _T_564 = or(_T_540, _T_563) @[axi4_to_ahb.scala 351:104] + buf_aligned_in <= _T_564 @[axi4_to_ahb.scala 350:18] + node _T_565 = bits(bypass_en, 0, 0) @[axi4_to_ahb.scala 355:39] + node _T_566 = bits(master_addr, 31, 3) @[axi4_to_ahb.scala 355:58] + node _T_567 = bits(buf_cmd_byte_ptr, 2, 0) @[axi4_to_ahb.scala 355:83] + node _T_568 = cat(_T_566, _T_567) @[Cat.scala 29:58] + node _T_569 = bits(buf_addr, 31, 3) @[axi4_to_ahb.scala 355:104] + node _T_570 = bits(buf_cmd_byte_ptr, 2, 0) @[axi4_to_ahb.scala 355:129] + node _T_571 = cat(_T_569, _T_570) @[Cat.scala 29:58] + node _T_572 = mux(_T_565, _T_568, _T_571) @[axi4_to_ahb.scala 355:22] + io.ahb_haddr <= _T_572 @[axi4_to_ahb.scala 355:16] + node _T_573 = bits(bypass_en, 0, 0) @[axi4_to_ahb.scala 356:39] + node _T_574 = bits(buf_aligned_in, 0, 0) @[Bitwise.scala 72:15] + node _T_575 = mux(_T_574, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_576 = bits(buf_size_in, 1, 0) @[axi4_to_ahb.scala 356:90] + node _T_577 = and(_T_575, _T_576) @[axi4_to_ahb.scala 356:77] + node _T_578 = cat(UInt<1>("h00"), _T_577) @[Cat.scala 29:58] + node _T_579 = bits(buf_aligned, 0, 0) @[Bitwise.scala 72:15] + node _T_580 = mux(_T_579, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_581 = bits(buf_size, 1, 0) @[axi4_to_ahb.scala 356:145] + node _T_582 = and(_T_580, _T_581) @[axi4_to_ahb.scala 356:135] + node _T_583 = cat(UInt<1>("h00"), _T_582) @[Cat.scala 29:58] + node _T_584 = mux(_T_573, _T_578, _T_583) @[axi4_to_ahb.scala 356:22] + io.ahb_hsize <= _T_584 @[axi4_to_ahb.scala 356:16] io.ahb_hburst <= UInt<1>("h00") @[axi4_to_ahb.scala 358:17] io.ahb_hmastlock <= UInt<1>("h00") @[axi4_to_ahb.scala 359:20] - node _T_586 = bits(io.axi_arprot, 2, 2) @[axi4_to_ahb.scala 360:47] - node _T_587 = not(_T_586) @[axi4_to_ahb.scala 360:33] - node _T_588 = cat(UInt<1>("h01"), _T_587) @[Cat.scala 29:58] - io.ahb_hprot <= _T_588 @[axi4_to_ahb.scala 360:16] - node _T_589 = bits(bypass_en, 0, 0) @[axi4_to_ahb.scala 361:40] - node _T_590 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 361:55] - node _T_591 = eq(_T_590, UInt<1>("h01")) @[axi4_to_ahb.scala 361:62] - node _T_592 = mux(_T_589, _T_591, buf_write) @[axi4_to_ahb.scala 361:23] - io.ahb_hwrite <= _T_592 @[axi4_to_ahb.scala 361:17] - node _T_593 = bits(buf_data, 63, 0) @[axi4_to_ahb.scala 362:28] - io.ahb_hwdata <= _T_593 @[axi4_to_ahb.scala 362:17] + node _T_585 = bits(io.axi_arprot, 2, 2) @[axi4_to_ahb.scala 360:47] + node _T_586 = not(_T_585) @[axi4_to_ahb.scala 360:33] + node _T_587 = cat(UInt<1>("h01"), _T_586) @[Cat.scala 29:58] + io.ahb_hprot <= _T_587 @[axi4_to_ahb.scala 360:16] + node _T_588 = bits(bypass_en, 0, 0) @[axi4_to_ahb.scala 361:40] + node _T_589 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 361:55] + node _T_590 = eq(_T_589, UInt<1>("h01")) @[axi4_to_ahb.scala 361:62] + node _T_591 = mux(_T_588, _T_590, buf_write) @[axi4_to_ahb.scala 361:23] + io.ahb_hwrite <= _T_591 @[axi4_to_ahb.scala 361:17] + node _T_592 = bits(buf_data, 63, 0) @[axi4_to_ahb.scala 362:28] + io.ahb_hwdata <= _T_592 @[axi4_to_ahb.scala 362:17] slave_valid <= slave_valid_pre @[axi4_to_ahb.scala 364:15] - node _T_594 = bits(slvbuf_write, 0, 0) @[axi4_to_ahb.scala 365:43] - node _T_595 = mux(_T_594, UInt<2>("h03"), UInt<1>("h00")) @[axi4_to_ahb.scala 365: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 365:88] - node _T_599 = cat(_T_595, _T_598) @[Cat.scala 29:58] - slave_opc <= _T_599 @[axi4_to_ahb.scala 365:13] - node _T_600 = bits(slvbuf_error, 0, 0) @[axi4_to_ahb.scala 366:41] - node _T_601 = bits(last_bus_addr, 31, 0) @[axi4_to_ahb.scala 366: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 366:91] - node _T_604 = bits(buf_data, 63, 0) @[axi4_to_ahb.scala 366:110] - node _T_605 = bits(ahb_hrdata_q, 63, 0) @[axi4_to_ahb.scala 366:131] - node _T_606 = mux(_T_603, _T_604, _T_605) @[axi4_to_ahb.scala 366:79] - node _T_607 = mux(_T_600, _T_602, _T_606) @[axi4_to_ahb.scala 366:21] - slave_rdata <= _T_607 @[axi4_to_ahb.scala 366:15] - node _T_608 = bits(slvbuf_tag, 0, 0) @[axi4_to_ahb.scala 367:26] - slave_tag <= _T_608 @[axi4_to_ahb.scala 367:13] - node _T_609 = bits(io.ahb_htrans, 1, 0) @[axi4_to_ahb.scala 369:33] - node _T_610 = neq(_T_609, UInt<1>("h00")) @[axi4_to_ahb.scala 369:40] - node _T_611 = and(_T_610, io.ahb_hready) @[axi4_to_ahb.scala 369:52] - node _T_612 = and(_T_611, io.ahb_hwrite) @[axi4_to_ahb.scala 369:68] - last_addr_en <= _T_612 @[axi4_to_ahb.scala 369:16] - node _T_613 = and(io.axi_awvalid, io.axi_awready) @[axi4_to_ahb.scala 371:30] - node _T_614 = and(_T_613, master_ready) @[axi4_to_ahb.scala 371:47] - wrbuf_en <= _T_614 @[axi4_to_ahb.scala 371:12] - node _T_615 = and(io.axi_wvalid, io.axi_wready) @[axi4_to_ahb.scala 372:34] - node _T_616 = and(_T_615, master_ready) @[axi4_to_ahb.scala 372:50] - wrbuf_data_en <= _T_616 @[axi4_to_ahb.scala 372:17] - node _T_617 = and(master_valid, master_ready) @[axi4_to_ahb.scala 373:34] - node _T_618 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 373:62] - node _T_619 = eq(_T_618, UInt<1>("h01")) @[axi4_to_ahb.scala 373:69] - node _T_620 = and(_T_617, _T_619) @[axi4_to_ahb.scala 373:49] - wrbuf_cmd_sent <= _T_620 @[axi4_to_ahb.scala 373:18] - node _T_621 = eq(wrbuf_en, UInt<1>("h00")) @[axi4_to_ahb.scala 374:33] - node _T_622 = and(wrbuf_cmd_sent, _T_621) @[axi4_to_ahb.scala 374:31] - wrbuf_rst <= _T_622 @[axi4_to_ahb.scala 374:13] - node _T_623 = eq(wrbuf_cmd_sent, UInt<1>("h00")) @[axi4_to_ahb.scala 376:35] - node _T_624 = and(wrbuf_vld, _T_623) @[axi4_to_ahb.scala 376:33] - node _T_625 = eq(_T_624, UInt<1>("h00")) @[axi4_to_ahb.scala 376:21] - node _T_626 = and(_T_625, master_ready) @[axi4_to_ahb.scala 376:52] - io.axi_awready <= _T_626 @[axi4_to_ahb.scala 376:18] - node _T_627 = eq(wrbuf_cmd_sent, UInt<1>("h00")) @[axi4_to_ahb.scala 377:39] - node _T_628 = and(wrbuf_data_vld, _T_627) @[axi4_to_ahb.scala 377:37] - node _T_629 = eq(_T_628, UInt<1>("h00")) @[axi4_to_ahb.scala 377:20] - node _T_630 = and(_T_629, master_ready) @[axi4_to_ahb.scala 377:56] - io.axi_wready <= _T_630 @[axi4_to_ahb.scala 377:17] - node _T_631 = and(wrbuf_vld, wrbuf_data_vld) @[axi4_to_ahb.scala 378:33] - node _T_632 = eq(_T_631, UInt<1>("h00")) @[axi4_to_ahb.scala 378:21] - node _T_633 = and(_T_632, master_ready) @[axi4_to_ahb.scala 378:51] - io.axi_arready <= _T_633 @[axi4_to_ahb.scala 378:18] + node _T_593 = bits(slvbuf_write, 0, 0) @[axi4_to_ahb.scala 365:43] + node _T_594 = mux(_T_593, UInt<2>("h03"), UInt<1>("h00")) @[axi4_to_ahb.scala 365:23] + node _T_595 = bits(slvbuf_error, 0, 0) @[Bitwise.scala 72:15] + node _T_596 = mux(_T_595, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] + node _T_597 = and(_T_596, UInt<2>("h02")) @[axi4_to_ahb.scala 365:88] + node _T_598 = cat(_T_594, _T_597) @[Cat.scala 29:58] + slave_opc <= _T_598 @[axi4_to_ahb.scala 365:13] + node _T_599 = bits(slvbuf_error, 0, 0) @[axi4_to_ahb.scala 366:41] + node _T_600 = bits(last_bus_addr, 31, 0) @[axi4_to_ahb.scala 366:66] + node _T_601 = cat(_T_600, _T_600) @[Cat.scala 29:58] + node _T_602 = eq(buf_state, UInt<3>("h05")) @[axi4_to_ahb.scala 366:91] + node _T_603 = bits(buf_data, 63, 0) @[axi4_to_ahb.scala 366:110] + node _T_604 = bits(ahb_hrdata_q, 63, 0) @[axi4_to_ahb.scala 366:131] + node _T_605 = mux(_T_602, _T_603, _T_604) @[axi4_to_ahb.scala 366:79] + node _T_606 = mux(_T_599, _T_601, _T_605) @[axi4_to_ahb.scala 366:21] + slave_rdata <= _T_606 @[axi4_to_ahb.scala 366:15] + node _T_607 = bits(slvbuf_tag, 0, 0) @[axi4_to_ahb.scala 367:26] + slave_tag <= _T_607 @[axi4_to_ahb.scala 367:13] + node _T_608 = bits(io.ahb_htrans, 1, 0) @[axi4_to_ahb.scala 369:33] + node _T_609 = neq(_T_608, UInt<1>("h00")) @[axi4_to_ahb.scala 369:40] + node _T_610 = and(_T_609, io.ahb_hready) @[axi4_to_ahb.scala 369:52] + node _T_611 = and(_T_610, io.ahb_hwrite) @[axi4_to_ahb.scala 369:68] + last_addr_en <= _T_611 @[axi4_to_ahb.scala 369:16] + node _T_612 = and(io.axi_awvalid, io.axi_awready) @[axi4_to_ahb.scala 371:30] + node _T_613 = and(_T_612, master_ready) @[axi4_to_ahb.scala 371:47] + wrbuf_en <= _T_613 @[axi4_to_ahb.scala 371:12] + node _T_614 = and(io.axi_wvalid, io.axi_wready) @[axi4_to_ahb.scala 372:34] + node _T_615 = and(_T_614, master_ready) @[axi4_to_ahb.scala 372:50] + wrbuf_data_en <= _T_615 @[axi4_to_ahb.scala 372:17] + node _T_616 = and(master_valid, master_ready) @[axi4_to_ahb.scala 373:34] + node _T_617 = bits(master_opc, 2, 1) @[axi4_to_ahb.scala 373:62] + node _T_618 = eq(_T_617, UInt<1>("h01")) @[axi4_to_ahb.scala 373:69] + node _T_619 = and(_T_616, _T_618) @[axi4_to_ahb.scala 373:49] + wrbuf_cmd_sent <= _T_619 @[axi4_to_ahb.scala 373:18] + node _T_620 = eq(wrbuf_en, UInt<1>("h00")) @[axi4_to_ahb.scala 374:33] + node _T_621 = and(wrbuf_cmd_sent, _T_620) @[axi4_to_ahb.scala 374:31] + wrbuf_rst <= _T_621 @[axi4_to_ahb.scala 374:13] + node _T_622 = eq(wrbuf_cmd_sent, UInt<1>("h00")) @[axi4_to_ahb.scala 376:35] + node _T_623 = and(wrbuf_vld, _T_622) @[axi4_to_ahb.scala 376:33] + node _T_624 = eq(_T_623, UInt<1>("h00")) @[axi4_to_ahb.scala 376:21] + node _T_625 = and(_T_624, master_ready) @[axi4_to_ahb.scala 376:52] + io.axi_awready <= _T_625 @[axi4_to_ahb.scala 376:18] + node _T_626 = eq(wrbuf_cmd_sent, UInt<1>("h00")) @[axi4_to_ahb.scala 377:39] + node _T_627 = and(wrbuf_data_vld, _T_626) @[axi4_to_ahb.scala 377:37] + node _T_628 = eq(_T_627, UInt<1>("h00")) @[axi4_to_ahb.scala 377:20] + node _T_629 = and(_T_628, master_ready) @[axi4_to_ahb.scala 377:56] + io.axi_wready <= _T_629 @[axi4_to_ahb.scala 377:17] + node _T_630 = and(wrbuf_vld, wrbuf_data_vld) @[axi4_to_ahb.scala 378:33] + node _T_631 = eq(_T_630, UInt<1>("h00")) @[axi4_to_ahb.scala 378:21] + node _T_632 = and(_T_631, master_ready) @[axi4_to_ahb.scala 378:51] + io.axi_arready <= _T_632 @[axi4_to_ahb.scala 378:18] io.axi_rlast <= UInt<1>("h01") @[axi4_to_ahb.scala 379:16] - node _T_634 = bits(wrbuf_en, 0, 0) @[axi4_to_ahb.scala 382:68] - node _T_635 = mux(_T_634, UInt<1>("h01"), wrbuf_vld) @[axi4_to_ahb.scala 382:52] - node _T_636 = eq(wrbuf_rst, UInt<1>("h00")) @[axi4_to_ahb.scala 382:88] - node _T_637 = and(_T_635, _T_636) @[axi4_to_ahb.scala 382:86] - reg _T_638 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 382:48] - _T_638 <= _T_637 @[axi4_to_ahb.scala 382:48] - wrbuf_vld <= _T_638 @[axi4_to_ahb.scala 382:18] - node _T_639 = bits(wrbuf_data_en, 0, 0) @[axi4_to_ahb.scala 383:73] - node _T_640 = mux(_T_639, UInt<1>("h01"), wrbuf_data_vld) @[axi4_to_ahb.scala 383:52] - node _T_641 = eq(wrbuf_rst, UInt<1>("h00")) @[axi4_to_ahb.scala 383:99] - node _T_642 = and(_T_640, _T_641) @[axi4_to_ahb.scala 383:97] - reg _T_643 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 383:48] - _T_643 <= _T_642 @[axi4_to_ahb.scala 383:48] - wrbuf_data_vld <= _T_643 @[axi4_to_ahb.scala 383:18] - node _T_644 = bits(io.axi_awid, 0, 0) @[axi4_to_ahb.scala 385:57] - node _T_645 = bits(wrbuf_en, 0, 0) @[axi4_to_ahb.scala 385:91] - reg _T_646 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] - when _T_645 : @[Reg.scala 28:19] - _T_646 <= _T_644 @[Reg.scala 28:23] + node _T_633 = bits(wrbuf_en, 0, 0) @[axi4_to_ahb.scala 382:68] + node _T_634 = mux(_T_633, UInt<1>("h01"), wrbuf_vld) @[axi4_to_ahb.scala 382:52] + node _T_635 = eq(wrbuf_rst, UInt<1>("h00")) @[axi4_to_ahb.scala 382:88] + node _T_636 = and(_T_634, _T_635) @[axi4_to_ahb.scala 382:86] + reg _T_637 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 382:48] + _T_637 <= _T_636 @[axi4_to_ahb.scala 382:48] + wrbuf_vld <= _T_637 @[axi4_to_ahb.scala 382:18] + node _T_638 = bits(wrbuf_data_en, 0, 0) @[axi4_to_ahb.scala 383:73] + node _T_639 = mux(_T_638, UInt<1>("h01"), wrbuf_data_vld) @[axi4_to_ahb.scala 383:52] + node _T_640 = eq(wrbuf_rst, UInt<1>("h00")) @[axi4_to_ahb.scala 383:99] + node _T_641 = and(_T_639, _T_640) @[axi4_to_ahb.scala 383:97] + reg _T_642 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 383:48] + _T_642 <= _T_641 @[axi4_to_ahb.scala 383:48] + wrbuf_data_vld <= _T_642 @[axi4_to_ahb.scala 383:18] + node _T_643 = bits(io.axi_awid, 0, 0) @[axi4_to_ahb.scala 385:57] + node _T_644 = bits(wrbuf_en, 0, 0) @[axi4_to_ahb.scala 385:91] + reg _T_645 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_644 : @[Reg.scala 28:19] + _T_645 <= _T_643 @[Reg.scala 28:23] skip @[Reg.scala 28:19] - wrbuf_tag <= _T_646 @[axi4_to_ahb.scala 385:13] - node _T_647 = bits(io.axi_awsize, 2, 0) @[axi4_to_ahb.scala 386:60] - node _T_648 = bits(wrbuf_en, 0, 0) @[axi4_to_ahb.scala 386:88] - reg _T_649 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] - when _T_648 : @[Reg.scala 28:19] - _T_649 <= _T_647 @[Reg.scala 28:23] + wrbuf_tag <= _T_645 @[axi4_to_ahb.scala 385:13] + node _T_646 = bits(io.axi_awsize, 2, 0) @[axi4_to_ahb.scala 386:60] + node _T_647 = bits(wrbuf_en, 0, 0) @[axi4_to_ahb.scala 386:88] + reg _T_648 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_647 : @[Reg.scala 28:19] + _T_648 <= _T_646 @[Reg.scala 28:23] skip @[Reg.scala 28:19] - wrbuf_size <= _T_649 @[axi4_to_ahb.scala 386:14] - node _T_650 = bits(wrbuf_en, 0, 0) @[axi4_to_ahb.scala 388:48] + wrbuf_size <= _T_648 @[axi4_to_ahb.scala 386:14] + node _T_649 = bits(wrbuf_en, 0, 0) @[axi4_to_ahb.scala 388:48] inst rvclkhdr_2 of rvclkhdr_2 @[el2_lib.scala 508:23] rvclkhdr_2.clock <= clock rvclkhdr_2.reset <= reset rvclkhdr_2.io.clk <= bus_clk @[el2_lib.scala 510:18] - rvclkhdr_2.io.en <= _T_650 @[el2_lib.scala 511:17] + rvclkhdr_2.io.en <= _T_649 @[el2_lib.scala 511:17] rvclkhdr_2.io.scan_mode <= io.scan_mode @[el2_lib.scala 512:24] - reg _T_651 : UInt, rvclkhdr_2.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[el2_lib.scala 514:16] - _T_651 <= io.axi_awaddr @[el2_lib.scala 514:16] - wrbuf_addr <= _T_651 @[axi4_to_ahb.scala 388:14] - node _T_652 = bits(wrbuf_data_en, 0, 0) @[axi4_to_ahb.scala 389:52] + reg _T_650 : UInt, rvclkhdr_2.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[el2_lib.scala 514:16] + _T_650 <= io.axi_awaddr @[el2_lib.scala 514:16] + wrbuf_addr <= _T_650 @[axi4_to_ahb.scala 388:14] + node _T_651 = bits(wrbuf_data_en, 0, 0) @[axi4_to_ahb.scala 389:52] inst rvclkhdr_3 of rvclkhdr_3 @[el2_lib.scala 508:23] rvclkhdr_3.clock <= clock rvclkhdr_3.reset <= reset rvclkhdr_3.io.clk <= bus_clk @[el2_lib.scala 510:18] - rvclkhdr_3.io.en <= _T_652 @[el2_lib.scala 511:17] + rvclkhdr_3.io.en <= _T_651 @[el2_lib.scala 511:17] rvclkhdr_3.io.scan_mode <= io.scan_mode @[el2_lib.scala 512:24] - reg _T_653 : UInt, rvclkhdr_3.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[el2_lib.scala 514:16] - _T_653 <= io.axi_wdata @[el2_lib.scala 514:16] - wrbuf_data <= _T_653 @[axi4_to_ahb.scala 389:14] - node _T_654 = bits(io.axi_wstrb, 7, 0) @[axi4_to_ahb.scala 392:27] - node _T_655 = bits(wrbuf_data_en, 0, 0) @[axi4_to_ahb.scala 392:60] - reg _T_656 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] - when _T_655 : @[Reg.scala 28:19] - _T_656 <= _T_654 @[Reg.scala 28:23] + reg _T_652 : UInt, rvclkhdr_3.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[el2_lib.scala 514:16] + _T_652 <= io.axi_wdata @[el2_lib.scala 514:16] + wrbuf_data <= _T_652 @[axi4_to_ahb.scala 389:14] + node _T_653 = bits(io.axi_wstrb, 7, 0) @[axi4_to_ahb.scala 392:27] + node _T_654 = bits(wrbuf_data_en, 0, 0) @[axi4_to_ahb.scala 392:60] + reg _T_655 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_654 : @[Reg.scala 28:19] + _T_655 <= _T_653 @[Reg.scala 28:23] skip @[Reg.scala 28:19] - wrbuf_byteen <= _T_656 @[axi4_to_ahb.scala 391:16] - node _T_657 = bits(io.ahb_haddr, 31, 0) @[axi4_to_ahb.scala 395:27] - node _T_658 = bits(last_addr_en, 0, 0) @[axi4_to_ahb.scala 395:60] - reg _T_659 : UInt, ahbm_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] - when _T_658 : @[Reg.scala 28:19] - _T_659 <= _T_657 @[Reg.scala 28:23] + wrbuf_byteen <= _T_655 @[axi4_to_ahb.scala 391:16] + node _T_656 = bits(io.ahb_haddr, 31, 0) @[axi4_to_ahb.scala 395:27] + node _T_657 = bits(last_addr_en, 0, 0) @[axi4_to_ahb.scala 395:60] + reg _T_658 : UInt, ahbm_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_657 : @[Reg.scala 28:19] + _T_658 <= _T_656 @[Reg.scala 28:23] skip @[Reg.scala 28:19] - last_bus_addr <= _T_659 @[axi4_to_ahb.scala 394:17] - node _T_660 = bits(buf_wr_en, 0, 0) @[axi4_to_ahb.scala 403:50] - reg _T_661 : UInt, buf_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] - when _T_660 : @[Reg.scala 28:19] - _T_661 <= buf_write_in @[Reg.scala 28:23] + last_bus_addr <= _T_658 @[axi4_to_ahb.scala 394:17] + node _T_659 = bits(buf_wr_en, 0, 0) @[axi4_to_ahb.scala 403:50] + reg _T_660 : UInt, buf_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_659 : @[Reg.scala 28:19] + _T_660 <= buf_write_in @[Reg.scala 28:23] skip @[Reg.scala 28:19] - buf_write <= _T_661 @[axi4_to_ahb.scala 402:13] - node _T_662 = bits(buf_tag_in, 0, 0) @[axi4_to_ahb.scala 406:25] - node _T_663 = bits(buf_wr_en, 0, 0) @[axi4_to_ahb.scala 406:60] - reg _T_664 : UInt, buf_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] - when _T_663 : @[Reg.scala 28:19] - _T_664 <= _T_662 @[Reg.scala 28:23] + buf_write <= _T_660 @[axi4_to_ahb.scala 402:13] + node _T_661 = bits(buf_tag_in, 0, 0) @[axi4_to_ahb.scala 406:25] + node _T_662 = bits(buf_wr_en, 0, 0) @[axi4_to_ahb.scala 406:60] + reg _T_663 : UInt, buf_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_662 : @[Reg.scala 28:19] + _T_663 <= _T_661 @[Reg.scala 28:23] skip @[Reg.scala 28:19] - buf_tag <= _T_664 @[axi4_to_ahb.scala 405:11] - node _T_665 = bits(buf_addr_in, 31, 0) @[axi4_to_ahb.scala 409:33] - node _T_666 = and(buf_wr_en, io.bus_clk_en) @[axi4_to_ahb.scala 409:52] - node _T_667 = bits(_T_666, 0, 0) @[axi4_to_ahb.scala 409:69] + buf_tag <= _T_663 @[axi4_to_ahb.scala 405:11] + node _T_664 = bits(buf_addr_in, 31, 0) @[axi4_to_ahb.scala 409:33] + node _T_665 = and(buf_wr_en, io.bus_clk_en) @[axi4_to_ahb.scala 409:52] + node _T_666 = bits(_T_665, 0, 0) @[axi4_to_ahb.scala 409:69] inst rvclkhdr_4 of rvclkhdr_4 @[el2_lib.scala 508:23] rvclkhdr_4.clock <= clock rvclkhdr_4.reset <= reset rvclkhdr_4.io.clk <= clock @[el2_lib.scala 510:18] - rvclkhdr_4.io.en <= _T_667 @[el2_lib.scala 511:17] + rvclkhdr_4.io.en <= _T_666 @[el2_lib.scala 511:17] rvclkhdr_4.io.scan_mode <= io.scan_mode @[el2_lib.scala 512:24] - reg _T_668 : UInt, rvclkhdr_4.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[el2_lib.scala 514:16] - _T_668 <= _T_665 @[el2_lib.scala 514:16] - buf_addr <= _T_668 @[axi4_to_ahb.scala 409:12] - node _T_669 = bits(buf_size_in, 1, 0) @[axi4_to_ahb.scala 412:26] - node _T_670 = bits(buf_wr_en, 0, 0) @[axi4_to_ahb.scala 412:55] - reg _T_671 : UInt, buf_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] - when _T_670 : @[Reg.scala 28:19] - _T_671 <= _T_669 @[Reg.scala 28:23] + reg _T_667 : UInt, rvclkhdr_4.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[el2_lib.scala 514:16] + _T_667 <= _T_664 @[el2_lib.scala 514:16] + buf_addr <= _T_667 @[axi4_to_ahb.scala 409:12] + node _T_668 = bits(buf_size_in, 1, 0) @[axi4_to_ahb.scala 412:26] + node _T_669 = bits(buf_wr_en, 0, 0) @[axi4_to_ahb.scala 412:55] + reg _T_670 : UInt, buf_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_669 : @[Reg.scala 28:19] + _T_670 <= _T_668 @[Reg.scala 28:23] skip @[Reg.scala 28:19] - buf_size <= _T_671 @[axi4_to_ahb.scala 411:12] - node _T_672 = bits(buf_wr_en, 0, 0) @[axi4_to_ahb.scala 415:52] - reg _T_673 : UInt, buf_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] - when _T_672 : @[Reg.scala 28:19] - _T_673 <= buf_aligned_in @[Reg.scala 28:23] + buf_size <= _T_670 @[axi4_to_ahb.scala 411:12] + node _T_671 = bits(buf_wr_en, 0, 0) @[axi4_to_ahb.scala 415:52] + reg _T_672 : UInt, buf_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_671 : @[Reg.scala 28:19] + _T_672 <= buf_aligned_in @[Reg.scala 28:23] skip @[Reg.scala 28:19] - buf_aligned <= _T_673 @[axi4_to_ahb.scala 414:15] - node _T_674 = bits(buf_byteen_in, 7, 0) @[axi4_to_ahb.scala 418:28] - node _T_675 = bits(buf_wr_en, 0, 0) @[axi4_to_ahb.scala 418:57] - reg _T_676 : UInt, buf_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] - when _T_675 : @[Reg.scala 28:19] - _T_676 <= _T_674 @[Reg.scala 28:23] + buf_aligned <= _T_672 @[axi4_to_ahb.scala 414:15] + node _T_673 = bits(buf_byteen_in, 7, 0) @[axi4_to_ahb.scala 418:28] + node _T_674 = bits(buf_wr_en, 0, 0) @[axi4_to_ahb.scala 418:57] + reg _T_675 : UInt, buf_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_674 : @[Reg.scala 28:19] + _T_675 <= _T_673 @[Reg.scala 28:23] skip @[Reg.scala 28:19] - buf_byteen <= _T_676 @[axi4_to_ahb.scala 417:14] - node _T_677 = bits(buf_data_in, 63, 0) @[axi4_to_ahb.scala 421:33] - node _T_678 = and(buf_data_wr_en, io.bus_clk_en) @[axi4_to_ahb.scala 421:57] - node _T_679 = bits(_T_678, 0, 0) @[axi4_to_ahb.scala 421:80] + buf_byteen <= _T_675 @[axi4_to_ahb.scala 417:14] + node _T_676 = bits(buf_data_in, 63, 0) @[axi4_to_ahb.scala 421:33] + node _T_677 = and(buf_data_wr_en, io.bus_clk_en) @[axi4_to_ahb.scala 421:57] + node _T_678 = bits(_T_677, 0, 0) @[axi4_to_ahb.scala 421:80] inst rvclkhdr_5 of rvclkhdr_5 @[el2_lib.scala 508:23] rvclkhdr_5.clock <= clock rvclkhdr_5.reset <= reset rvclkhdr_5.io.clk <= clock @[el2_lib.scala 510:18] - rvclkhdr_5.io.en <= _T_679 @[el2_lib.scala 511:17] + rvclkhdr_5.io.en <= _T_678 @[el2_lib.scala 511:17] rvclkhdr_5.io.scan_mode <= io.scan_mode @[el2_lib.scala 512:24] - reg _T_680 : UInt, rvclkhdr_5.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[el2_lib.scala 514:16] - _T_680 <= _T_677 @[el2_lib.scala 514:16] - buf_data <= _T_680 @[axi4_to_ahb.scala 421:12] - node _T_681 = bits(slvbuf_wr_en, 0, 0) @[axi4_to_ahb.scala 424:50] - reg _T_682 : UInt, buf_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] - when _T_681 : @[Reg.scala 28:19] - _T_682 <= buf_write @[Reg.scala 28:23] + reg _T_679 : UInt, rvclkhdr_5.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[el2_lib.scala 514:16] + _T_679 <= _T_676 @[el2_lib.scala 514:16] + buf_data <= _T_679 @[axi4_to_ahb.scala 421:12] + node _T_680 = bits(slvbuf_wr_en, 0, 0) @[axi4_to_ahb.scala 424:50] + reg _T_681 : UInt, buf_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_680 : @[Reg.scala 28:19] + _T_681 <= buf_write @[Reg.scala 28:23] skip @[Reg.scala 28:19] - slvbuf_write <= _T_682 @[axi4_to_ahb.scala 423:16] - node _T_683 = bits(buf_tag, 0, 0) @[axi4_to_ahb.scala 427:22] - node _T_684 = bits(slvbuf_wr_en, 0, 0) @[axi4_to_ahb.scala 427:60] - reg _T_685 : UInt, buf_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] - when _T_684 : @[Reg.scala 28:19] - _T_685 <= _T_683 @[Reg.scala 28:23] + slvbuf_write <= _T_681 @[axi4_to_ahb.scala 423:16] + node _T_682 = bits(buf_tag, 0, 0) @[axi4_to_ahb.scala 427:22] + node _T_683 = bits(slvbuf_wr_en, 0, 0) @[axi4_to_ahb.scala 427:60] + reg _T_684 : UInt, buf_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_683 : @[Reg.scala 28:19] + _T_684 <= _T_682 @[Reg.scala 28:23] skip @[Reg.scala 28:19] - slvbuf_tag <= _T_685 @[axi4_to_ahb.scala 426:14] - node _T_686 = bits(slvbuf_error_en, 0, 0) @[axi4_to_ahb.scala 430:59] - reg _T_687 : UInt, ahbm_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] - when _T_686 : @[Reg.scala 28:19] - _T_687 <= slvbuf_error_in @[Reg.scala 28:23] + slvbuf_tag <= _T_684 @[axi4_to_ahb.scala 426:14] + node _T_685 = bits(slvbuf_error_en, 0, 0) @[axi4_to_ahb.scala 430:59] + reg _T_686 : UInt, ahbm_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_685 : @[Reg.scala 28:19] + _T_686 <= slvbuf_error_in @[Reg.scala 28:23] skip @[Reg.scala 28:19] - slvbuf_error <= _T_687 @[axi4_to_ahb.scala 429:16] - node _T_688 = bits(cmd_done, 0, 0) @[axi4_to_ahb.scala 434:32] - node _T_689 = mux(_T_688, UInt<1>("h01"), cmd_doneQ) @[axi4_to_ahb.scala 434:16] - node _T_690 = eq(cmd_done_rst, UInt<1>("h00")) @[axi4_to_ahb.scala 434:52] - node _T_691 = and(_T_689, _T_690) @[axi4_to_ahb.scala 434:50] - reg _T_692 : UInt, ahbm_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 434:12] - _T_692 <= _T_691 @[axi4_to_ahb.scala 434:12] - cmd_doneQ <= _T_692 @[axi4_to_ahb.scala 433:13] - node _T_693 = bits(buf_cmd_byte_ptr, 2, 0) @[axi4_to_ahb.scala 438:31] - node _T_694 = bits(buf_cmd_byte_ptr_en, 0, 0) @[axi4_to_ahb.scala 438:70] - reg _T_695 : UInt, ahbm_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] - when _T_694 : @[Reg.scala 28:19] - _T_695 <= _T_693 @[Reg.scala 28:23] + slvbuf_error <= _T_686 @[axi4_to_ahb.scala 429:16] + node _T_687 = bits(cmd_done, 0, 0) @[axi4_to_ahb.scala 434:32] + node _T_688 = mux(_T_687, UInt<1>("h01"), cmd_doneQ) @[axi4_to_ahb.scala 434:16] + node _T_689 = eq(cmd_done_rst, UInt<1>("h00")) @[axi4_to_ahb.scala 434:52] + node _T_690 = and(_T_688, _T_689) @[axi4_to_ahb.scala 434:50] + reg _T_691 : UInt, ahbm_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 434:12] + _T_691 <= _T_690 @[axi4_to_ahb.scala 434:12] + cmd_doneQ <= _T_691 @[axi4_to_ahb.scala 433:13] + node _T_692 = bits(buf_cmd_byte_ptr, 2, 0) @[axi4_to_ahb.scala 438:31] + node _T_693 = bits(buf_cmd_byte_ptr_en, 0, 0) @[axi4_to_ahb.scala 438:70] + reg _T_694 : UInt, ahbm_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_693 : @[Reg.scala 28:19] + _T_694 <= _T_692 @[Reg.scala 28:23] skip @[Reg.scala 28:19] - buf_cmd_byte_ptrQ <= _T_695 @[axi4_to_ahb.scala 437:21] - reg _T_696 : UInt<1>, ahbm_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 443:12] - _T_696 <= io.ahb_hready @[axi4_to_ahb.scala 443:12] - ahb_hready_q <= _T_696 @[axi4_to_ahb.scala 442:16] - node _T_697 = bits(io.ahb_htrans, 1, 0) @[axi4_to_ahb.scala 446:26] - reg _T_698 : UInt, ahbm_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 446:12] - _T_698 <= _T_697 @[axi4_to_ahb.scala 446:12] - ahb_htrans_q <= _T_698 @[axi4_to_ahb.scala 445:16] - reg _T_699 : UInt<1>, ahbm_addr_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 449:12] - _T_699 <= io.ahb_hwrite @[axi4_to_ahb.scala 449:12] - ahb_hwrite_q <= _T_699 @[axi4_to_ahb.scala 448:16] - reg _T_700 : UInt<1>, ahbm_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 452:12] - _T_700 <= io.ahb_hresp @[axi4_to_ahb.scala 452:12] - ahb_hresp_q <= _T_700 @[axi4_to_ahb.scala 451:15] - node _T_701 = bits(io.ahb_hrdata, 63, 0) @[axi4_to_ahb.scala 455:26] - reg _T_702 : UInt, ahbm_data_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 455:12] - _T_702 <= _T_701 @[axi4_to_ahb.scala 455:12] - ahb_hrdata_q <= _T_702 @[axi4_to_ahb.scala 454:16] - node _T_703 = or(buf_wr_en, slvbuf_wr_en) @[axi4_to_ahb.scala 458:43] - node _T_704 = or(_T_703, io.clk_override) @[axi4_to_ahb.scala 458:58] - node _T_705 = and(io.bus_clk_en, _T_704) @[axi4_to_ahb.scala 458:30] - buf_clken <= _T_705 @[axi4_to_ahb.scala 458:13] - node _T_706 = bits(io.ahb_htrans, 1, 1) @[axi4_to_ahb.scala 459:69] - node _T_707 = and(io.ahb_hready, _T_706) @[axi4_to_ahb.scala 459:54] - node _T_708 = or(_T_707, io.clk_override) @[axi4_to_ahb.scala 459:74] - node _T_709 = and(io.bus_clk_en, _T_708) @[axi4_to_ahb.scala 459:36] - ahbm_addr_clken <= _T_709 @[axi4_to_ahb.scala 459:19] - node _T_710 = neq(buf_state, UInt<3>("h00")) @[axi4_to_ahb.scala 460:50] - node _T_711 = or(_T_710, io.clk_override) @[axi4_to_ahb.scala 460:60] - node _T_712 = and(io.bus_clk_en, _T_711) @[axi4_to_ahb.scala 460:36] - ahbm_data_clken <= _T_712 @[axi4_to_ahb.scala 460:19] + buf_cmd_byte_ptrQ <= _T_694 @[axi4_to_ahb.scala 437:21] + reg _T_695 : UInt<1>, ahbm_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 443:12] + _T_695 <= io.ahb_hready @[axi4_to_ahb.scala 443:12] + ahb_hready_q <= _T_695 @[axi4_to_ahb.scala 442:16] + node _T_696 = bits(io.ahb_htrans, 1, 0) @[axi4_to_ahb.scala 446:26] + reg _T_697 : UInt, ahbm_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 446:12] + _T_697 <= _T_696 @[axi4_to_ahb.scala 446:12] + ahb_htrans_q <= _T_697 @[axi4_to_ahb.scala 445:16] + reg _T_698 : UInt<1>, ahbm_addr_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 449:12] + _T_698 <= io.ahb_hwrite @[axi4_to_ahb.scala 449:12] + ahb_hwrite_q <= _T_698 @[axi4_to_ahb.scala 448:16] + reg _T_699 : UInt<1>, ahbm_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 452:12] + _T_699 <= io.ahb_hresp @[axi4_to_ahb.scala 452:12] + ahb_hresp_q <= _T_699 @[axi4_to_ahb.scala 451:15] + node _T_700 = bits(io.ahb_hrdata, 63, 0) @[axi4_to_ahb.scala 455:26] + reg _T_701 : UInt, ahbm_data_clk with : (reset => (reset, UInt<1>("h00"))) @[axi4_to_ahb.scala 455:12] + _T_701 <= _T_700 @[axi4_to_ahb.scala 455:12] + ahb_hrdata_q <= _T_701 @[axi4_to_ahb.scala 454:16] + node _T_702 = or(buf_wr_en, slvbuf_wr_en) @[axi4_to_ahb.scala 458:43] + node _T_703 = or(_T_702, io.clk_override) @[axi4_to_ahb.scala 458:58] + node _T_704 = and(io.bus_clk_en, _T_703) @[axi4_to_ahb.scala 458:30] + buf_clken <= _T_704 @[axi4_to_ahb.scala 458:13] + node _T_705 = bits(io.ahb_htrans, 1, 1) @[axi4_to_ahb.scala 459:69] + node _T_706 = and(io.ahb_hready, _T_705) @[axi4_to_ahb.scala 459:54] + node _T_707 = or(_T_706, io.clk_override) @[axi4_to_ahb.scala 459:74] + node _T_708 = and(io.bus_clk_en, _T_707) @[axi4_to_ahb.scala 459:36] + ahbm_addr_clken <= _T_708 @[axi4_to_ahb.scala 459:19] + node _T_709 = neq(buf_state, UInt<3>("h00")) @[axi4_to_ahb.scala 460:50] + node _T_710 = or(_T_709, io.clk_override) @[axi4_to_ahb.scala 460:60] + node _T_711 = and(io.bus_clk_en, _T_710) @[axi4_to_ahb.scala 460:36] + ahbm_data_clken <= _T_711 @[axi4_to_ahb.scala 460:19] inst rvclkhdr_6 of rvclkhdr_6 @[el2_lib.scala 483:22] rvclkhdr_6.clock <= clock rvclkhdr_6.reset <= reset diff --git a/axi4_to_ahb.v b/axi4_to_ahb.v index 1a48fee3..a38aa281 100644 --- a/axi4_to_ahb.v +++ b/axi4_to_ahb.v @@ -168,9 +168,9 @@ module axi4_to_ahb( reg cmd_doneQ; // @[axi4_to_ahb.scala 434:12] wire _T_280 = cmd_doneQ & ahb_hready_q; // @[axi4_to_ahb.scala 317:34] wire _T_281 = _T_280 | ahb_hresp_q; // @[axi4_to_ahb.scala 317:50] - wire _T_442 = 3'h5 == buf_state; // @[Conditional.scala 37:30] + wire _T_441 = 3'h5 == buf_state; // @[Conditional.scala 37:30] wire slave_ready = io_axi_bready & io_axi_rready; // @[axi4_to_ahb.scala 216:32] - wire _GEN_1 = _T_442 & slave_ready; // @[Conditional.scala 39:67] + wire _GEN_1 = _T_441 & slave_ready; // @[Conditional.scala 39:67] wire _GEN_3 = _T_279 ? _T_281 : _GEN_1; // @[Conditional.scala 39:67] wire _GEN_20 = _T_186 ? trxn_done : _GEN_3; // @[Conditional.scala 39:67] wire _GEN_35 = _T_184 ? _T_154 : _GEN_20; // @[Conditional.scala 39:67] @@ -201,10 +201,10 @@ module axi4_to_ahb( wire _T_141 = _T_136 & _T_140; // @[axi4_to_ahb.scala 272:53] wire _T_285 = _T_281 & _T_135; // @[axi4_to_ahb.scala 318:66] wire _T_286 = _T_285 & slave_ready; // @[axi4_to_ahb.scala 318:81] - wire _GEN_4 = _T_279 ? _T_286 : 1'h1; // @[Conditional.scala 39:67] - wire _GEN_26 = _T_186 | _GEN_4; // @[Conditional.scala 39:67] - wire _GEN_45 = _T_184 | _GEN_26; // @[Conditional.scala 39:67] - wire _GEN_62 = _T_173 | _GEN_45; // @[Conditional.scala 39:67] + wire _GEN_4 = _T_279 & _T_286; // @[Conditional.scala 39:67] + wire _GEN_26 = _T_186 ? 1'h0 : _GEN_4; // @[Conditional.scala 39:67] + wire _GEN_45 = _T_184 ? 1'h0 : _GEN_26; // @[Conditional.scala 39:67] + wire _GEN_62 = _T_173 ? 1'h0 : _GEN_45; // @[Conditional.scala 39:67] wire _GEN_66 = _T_134 ? _T_141 : _GEN_62; // @[Conditional.scala 39:67] wire _GEN_86 = _T_99 ? _T_123 : _GEN_66; // @[Conditional.scala 39:67] wire master_ready = _T_47 | _GEN_86; // @[Conditional.scala 40:58] @@ -235,7 +235,7 @@ module axi4_to_ahb( wire _T_156 = buf_state_en & _T_135; // @[axi4_to_ahb.scala 279:39] wire _T_359 = buf_nxtstate != 3'h5; // @[axi4_to_ahb.scala 328:55] wire _T_360 = buf_state_en & _T_359; // @[axi4_to_ahb.scala 328:39] - wire _GEN_14 = _T_279 ? _T_360 : _T_442; // @[Conditional.scala 39:67] + wire _GEN_14 = _T_279 ? _T_360 : _T_441; // @[Conditional.scala 39:67] wire _GEN_33 = _T_186 ? 1'h0 : _GEN_14; // @[Conditional.scala 39:67] wire _GEN_49 = _T_184 ? 1'h0 : _GEN_33; // @[Conditional.scala 39:67] wire _GEN_52 = _T_173 ? buf_state_en : _GEN_49; // @[Conditional.scala 39:67] @@ -245,21 +245,21 @@ module axi4_to_ahb( wire _T_23 = slave_valid_pre & slave_ready; // @[axi4_to_ahb.scala 208:32] wire buf_clk = rvclkhdr_6_io_l1clk; // @[axi4_to_ahb.scala 156:21 axi4_to_ahb.scala 463:12] reg slvbuf_write; // @[Reg.scala 27:20] - wire [1:0] _T_595 = slvbuf_write ? 2'h3 : 2'h0; // @[axi4_to_ahb.scala 365:23] + wire [1:0] _T_594 = slvbuf_write ? 2'h3 : 2'h0; // @[axi4_to_ahb.scala 365: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 365:88] - wire [3:0] slave_opc = {_T_595,_T_598}; // @[Cat.scala 29:58] + wire [1:0] _T_596 = slvbuf_error ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire [1:0] _T_597 = _T_596 & 2'h2; // @[axi4_to_ahb.scala 365:88] + wire [3:0] slave_opc = {_T_594,_T_597}; // @[Cat.scala 29:58] wire [1:0] _T_28 = slave_opc[1] ? 2'h3 : 2'h0; // @[axi4_to_ahb.scala 209:49] reg slvbuf_tag; // @[Reg.scala 27:20] wire _T_33 = slave_opc[3:2] == 2'h0; // @[axi4_to_ahb.scala 212:65] 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 366:91] + wire [63:0] _T_601 = {last_bus_addr,last_bus_addr}; // @[Cat.scala 29:58] + wire _T_602 = buf_state == 3'h5; // @[axi4_to_ahb.scala 366:91] reg [63:0] buf_data; // @[el2_lib.scala 514:16] wire ahbm_data_clk = rvclkhdr_9_io_l1clk; // @[axi4_to_ahb.scala 64:27 axi4_to_ahb.scala 466:17] reg [63:0] ahb_hrdata_q; // @[axi4_to_ahb.scala 455:12] - wire [63:0] _T_606 = _T_603 ? buf_data : ahb_hrdata_q; // @[axi4_to_ahb.scala 366:79] + wire [63:0] _T_605 = _T_602 ? buf_data : ahb_hrdata_q; // @[axi4_to_ahb.scala 366:79] wire _T_42 = io_axi_awvalid & io_axi_awready; // @[axi4_to_ahb.scala 219:56] wire _T_43 = io_axi_wvalid & io_axi_wready; // @[axi4_to_ahb.scala 219:91] wire _T_44 = _T_42 | _T_43; // @[axi4_to_ahb.scala 219:74] @@ -358,9 +358,9 @@ module axi4_to_ahb( wire [1:0] _T_357 = _T_355 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] wire [1:0] _T_358 = _T_357 & 2'h2; // @[axi4_to_ahb.scala 327:71] wire _T_365 = trxn_done | bypass_en; // @[axi4_to_ahb.scala 330:40] - wire [2:0] _T_441 = bypass_en ? _T_91 : _T_229; // @[axi4_to_ahb.scala 333:30] + wire [2:0] _T_440 = bypass_en ? _T_91 : _T_229; // @[axi4_to_ahb.scala 333:30] wire _GEN_6 = _T_279 & ahb_hresp_q; // @[Conditional.scala 39:67] - wire _GEN_7 = _T_279 ? buf_state_en : _T_442; // @[Conditional.scala 39:67] + wire _GEN_7 = _T_279 ? buf_state_en : _T_441; // @[Conditional.scala 39:67] wire _GEN_9 = _T_279 & _T_302; // @[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] @@ -371,7 +371,7 @@ module axi4_to_ahb( wire _GEN_10 = _T_279 & buf_wr_en; // @[Conditional.scala 39:67] wire [1:0] _GEN_13 = _T_279 ? _T_358 : 2'h0; // @[Conditional.scala 39:67] wire _GEN_16 = _T_279 & _T_365; // @[Conditional.scala 39:67] - wire [2:0] _GEN_17 = _T_279 ? _T_441 : 3'h0; // @[Conditional.scala 39:67] + wire [2:0] _GEN_17 = _T_279 ? _T_440 : 3'h0; // @[Conditional.scala 39:67] wire _GEN_21 = _T_186 ? buf_state_en : _GEN_16; // @[Conditional.scala 39:67] wire _GEN_22 = _T_186 & buf_state_en; // @[Conditional.scala 39:67] wire [2:0] _GEN_23 = _T_186 ? _T_229 : _GEN_17; // @[Conditional.scala 39:67] @@ -407,72 +407,72 @@ module axi4_to_ahb( wire [2:0] buf_cmd_byte_ptr = _T_47 ? _T_93 : _GEN_89; // @[Conditional.scala 40:58] wire slvbuf_wr_en = _T_47 ? 1'h0 : _GEN_85; // @[Conditional.scala 40:58] wire slvbuf_error_en = _T_47 ? 1'h0 : _GEN_93; // @[Conditional.scala 40:58] - wire _T_534 = master_size[1:0] == 2'h0; // @[axi4_to_ahb.scala 351:24] - wire _T_535 = _T_101 | _T_534; // @[axi4_to_ahb.scala 350:51] - wire _T_537 = master_size[1:0] == 2'h1; // @[axi4_to_ahb.scala 351:57] - wire _T_538 = _T_535 | _T_537; // @[axi4_to_ahb.scala 351:36] - wire _T_540 = master_size[1:0] == 2'h2; // @[axi4_to_ahb.scala 351:91] - wire _T_541 = _T_538 | _T_540; // @[axi4_to_ahb.scala 351:70] - wire _T_543 = master_size[1:0] == 2'h3; // @[axi4_to_ahb.scala 352:25] - wire _T_545 = wrbuf_byteen == 8'h3; // @[axi4_to_ahb.scala 352:62] - wire _T_547 = wrbuf_byteen == 8'hc; // @[axi4_to_ahb.scala 352:97] - wire _T_548 = _T_545 | _T_547; // @[axi4_to_ahb.scala 352:74] - wire _T_550 = wrbuf_byteen == 8'h30; // @[axi4_to_ahb.scala 352:132] - wire _T_551 = _T_548 | _T_550; // @[axi4_to_ahb.scala 352:109] - wire _T_553 = wrbuf_byteen == 8'hc0; // @[axi4_to_ahb.scala 352:168] - wire _T_554 = _T_551 | _T_553; // @[axi4_to_ahb.scala 352:145] - wire _T_556 = wrbuf_byteen == 8'hf; // @[axi4_to_ahb.scala 353:28] - wire _T_557 = _T_554 | _T_556; // @[axi4_to_ahb.scala 352:181] - wire _T_559 = wrbuf_byteen == 8'hf0; // @[axi4_to_ahb.scala 353:63] - wire _T_560 = _T_557 | _T_559; // @[axi4_to_ahb.scala 353:40] - wire _T_562 = wrbuf_byteen == 8'hff; // @[axi4_to_ahb.scala 353:99] - wire _T_563 = _T_560 | _T_562; // @[axi4_to_ahb.scala 353:76] - wire _T_564 = _T_543 & _T_563; // @[axi4_to_ahb.scala 352:38] - wire buf_aligned_in = _T_541 | _T_564; // @[axi4_to_ahb.scala 351:104] - wire _T_446 = buf_aligned_in & _T_49; // @[axi4_to_ahb.scala 345:60] - wire [2:0] _T_483 = _T_446 ? 3'h0 : master_addr[2:0]; // @[axi4_to_ahb.scala 345:43] - wire _T_487 = buf_state == 3'h3; // @[axi4_to_ahb.scala 348:33] - wire _T_493 = buf_aligned_in & _T_543; // @[axi4_to_ahb.scala 349:38] - wire _T_496 = _T_493 & _T_49; // @[axi4_to_ahb.scala 349:72] - wire [1:0] _T_530 = _T_496 ? 2'h0 : master_size[1:0]; // @[axi4_to_ahb.scala 349:21] - wire [31:0] _T_569 = {master_addr[31:3],buf_cmd_byte_ptr}; // @[Cat.scala 29:58] - wire [31:0] _T_572 = {buf_addr[31:3],buf_cmd_byte_ptr}; // @[Cat.scala 29:58] - 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_530}; // @[axi4_to_ahb.scala 349:15] - wire [1:0] _T_578 = _T_576 & buf_size_in[1:0]; // @[axi4_to_ahb.scala 356:80] - 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] + wire _T_533 = master_size[1:0] == 2'h0; // @[axi4_to_ahb.scala 351:24] + wire _T_534 = _T_101 | _T_533; // @[axi4_to_ahb.scala 350:51] + wire _T_536 = master_size[1:0] == 2'h1; // @[axi4_to_ahb.scala 351:57] + wire _T_537 = _T_534 | _T_536; // @[axi4_to_ahb.scala 351:36] + wire _T_539 = master_size[1:0] == 2'h2; // @[axi4_to_ahb.scala 351:91] + wire _T_540 = _T_537 | _T_539; // @[axi4_to_ahb.scala 351:70] + wire _T_542 = master_size[1:0] == 2'h3; // @[axi4_to_ahb.scala 352:25] + wire _T_544 = wrbuf_byteen == 8'h3; // @[axi4_to_ahb.scala 352:62] + wire _T_546 = wrbuf_byteen == 8'hc; // @[axi4_to_ahb.scala 352:97] + wire _T_547 = _T_544 | _T_546; // @[axi4_to_ahb.scala 352:74] + wire _T_549 = wrbuf_byteen == 8'h30; // @[axi4_to_ahb.scala 352:132] + wire _T_550 = _T_547 | _T_549; // @[axi4_to_ahb.scala 352:109] + wire _T_552 = wrbuf_byteen == 8'hc0; // @[axi4_to_ahb.scala 352:168] + wire _T_553 = _T_550 | _T_552; // @[axi4_to_ahb.scala 352:145] + wire _T_555 = wrbuf_byteen == 8'hf; // @[axi4_to_ahb.scala 353:28] + wire _T_556 = _T_553 | _T_555; // @[axi4_to_ahb.scala 352:181] + wire _T_558 = wrbuf_byteen == 8'hf0; // @[axi4_to_ahb.scala 353:63] + wire _T_559 = _T_556 | _T_558; // @[axi4_to_ahb.scala 353:40] + wire _T_561 = wrbuf_byteen == 8'hff; // @[axi4_to_ahb.scala 353:99] + wire _T_562 = _T_559 | _T_561; // @[axi4_to_ahb.scala 353:76] + wire _T_563 = _T_542 & _T_562; // @[axi4_to_ahb.scala 352:38] + wire buf_aligned_in = _T_540 | _T_563; // @[axi4_to_ahb.scala 351:104] + wire _T_445 = buf_aligned_in & _T_49; // @[axi4_to_ahb.scala 345:60] + wire [2:0] _T_482 = _T_445 ? 3'h0 : master_addr[2:0]; // @[axi4_to_ahb.scala 345:43] + wire _T_486 = buf_state == 3'h3; // @[axi4_to_ahb.scala 348:33] + wire _T_492 = buf_aligned_in & _T_542; // @[axi4_to_ahb.scala 349:38] + wire _T_495 = _T_492 & _T_49; // @[axi4_to_ahb.scala 349:72] + wire [1:0] _T_529 = _T_495 ? 2'h0 : master_size[1:0]; // @[axi4_to_ahb.scala 349:21] + wire [31:0] _T_568 = {master_addr[31:3],buf_cmd_byte_ptr}; // @[Cat.scala 29:58] + wire [31:0] _T_571 = {buf_addr[31:3],buf_cmd_byte_ptr}; // @[Cat.scala 29:58] + wire [1:0] _T_575 = 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 349:15] + wire [1:0] _T_577 = _T_575 & buf_size_in[1:0]; // @[axi4_to_ahb.scala 356:77] + wire [2:0] _T_578 = {1'h0,_T_577}; // @[Cat.scala 29:58] + wire [1:0] _T_580 = 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 356:138] - wire [2:0] _T_584 = {1'h0,_T_583}; // @[Cat.scala 29:58] - wire _T_587 = ~io_axi_arprot[2]; // @[axi4_to_ahb.scala 360:33] - wire [1:0] _T_588 = {1'h1,_T_587}; // @[Cat.scala 29:58] + wire [1:0] _T_582 = _T_580 & buf_size; // @[axi4_to_ahb.scala 356:135] + wire [2:0] _T_583 = {1'h0,_T_582}; // @[Cat.scala 29:58] + wire _T_586 = ~io_axi_arprot[2]; // @[axi4_to_ahb.scala 360:33] + wire [1:0] _T_587 = {1'h1,_T_586}; // @[Cat.scala 29:58] reg buf_write; // @[Reg.scala 27:20] - wire _T_610 = io_ahb_htrans != 2'h0; // @[axi4_to_ahb.scala 369:40] - wire _T_611 = _T_610 & io_ahb_hready; // @[axi4_to_ahb.scala 369:52] - wire last_addr_en = _T_611 & io_ahb_hwrite; // @[axi4_to_ahb.scala 369:68] + wire _T_609 = io_ahb_htrans != 2'h0; // @[axi4_to_ahb.scala 369:40] + wire _T_610 = _T_609 & io_ahb_hready; // @[axi4_to_ahb.scala 369:52] + wire last_addr_en = _T_610 & io_ahb_hwrite; // @[axi4_to_ahb.scala 369:68] wire wrbuf_en = _T_42 & master_ready; // @[axi4_to_ahb.scala 371:47] wire wrbuf_data_en = _T_43 & master_ready; // @[axi4_to_ahb.scala 372:50] wire wrbuf_cmd_sent = _T_147 & _T_49; // @[axi4_to_ahb.scala 373:49] - wire _T_621 = ~wrbuf_en; // @[axi4_to_ahb.scala 374:33] - wire wrbuf_rst = wrbuf_cmd_sent & _T_621; // @[axi4_to_ahb.scala 374:31] - wire _T_623 = ~wrbuf_cmd_sent; // @[axi4_to_ahb.scala 376:35] - wire _T_624 = wrbuf_vld & _T_623; // @[axi4_to_ahb.scala 376:33] - wire _T_625 = ~_T_624; // @[axi4_to_ahb.scala 376:21] - wire _T_628 = wrbuf_data_vld & _T_623; // @[axi4_to_ahb.scala 377:37] - wire _T_629 = ~_T_628; // @[axi4_to_ahb.scala 377:20] - wire _T_632 = ~wr_cmd_vld; // @[axi4_to_ahb.scala 378:21] - wire _T_635 = wrbuf_en | wrbuf_vld; // @[axi4_to_ahb.scala 382:52] - wire _T_636 = ~wrbuf_rst; // @[axi4_to_ahb.scala 382:88] - wire _T_640 = wrbuf_data_en | wrbuf_data_vld; // @[axi4_to_ahb.scala 383:52] + wire _T_620 = ~wrbuf_en; // @[axi4_to_ahb.scala 374:33] + wire wrbuf_rst = wrbuf_cmd_sent & _T_620; // @[axi4_to_ahb.scala 374:31] + wire _T_622 = ~wrbuf_cmd_sent; // @[axi4_to_ahb.scala 376:35] + wire _T_623 = wrbuf_vld & _T_622; // @[axi4_to_ahb.scala 376:33] + wire _T_624 = ~_T_623; // @[axi4_to_ahb.scala 376:21] + wire _T_627 = wrbuf_data_vld & _T_622; // @[axi4_to_ahb.scala 377:37] + wire _T_628 = ~_T_627; // @[axi4_to_ahb.scala 377:20] + wire _T_631 = ~wr_cmd_vld; // @[axi4_to_ahb.scala 378:21] + wire _T_634 = wrbuf_en | wrbuf_vld; // @[axi4_to_ahb.scala 382:52] + wire _T_635 = ~wrbuf_rst; // @[axi4_to_ahb.scala 382:88] + wire _T_639 = wrbuf_data_en | wrbuf_data_vld; // @[axi4_to_ahb.scala 383:52] reg buf_tag; // @[Reg.scala 27:20] - wire _T_690 = ~slave_valid_pre; // @[axi4_to_ahb.scala 434:52] - wire _T_703 = buf_wr_en | slvbuf_wr_en; // @[axi4_to_ahb.scala 458:43] - wire _T_704 = _T_703 | io_clk_override; // @[axi4_to_ahb.scala 458:58] - wire _T_707 = io_ahb_hready & io_ahb_htrans[1]; // @[axi4_to_ahb.scala 459:54] - wire _T_708 = _T_707 | io_clk_override; // @[axi4_to_ahb.scala 459:74] - wire _T_710 = buf_state != 3'h0; // @[axi4_to_ahb.scala 460:50] - wire _T_711 = _T_710 | io_clk_override; // @[axi4_to_ahb.scala 460:60] + wire _T_689 = ~slave_valid_pre; // @[axi4_to_ahb.scala 434:52] + wire _T_702 = buf_wr_en | slvbuf_wr_en; // @[axi4_to_ahb.scala 458:43] + wire _T_703 = _T_702 | io_clk_override; // @[axi4_to_ahb.scala 458:58] + wire _T_706 = io_ahb_hready & io_ahb_htrans[1]; // @[axi4_to_ahb.scala 459:54] + wire _T_707 = _T_706 | io_clk_override; // @[axi4_to_ahb.scala 459:74] + wire _T_709 = buf_state != 3'h0; // @[axi4_to_ahb.scala 460:50] + wire _T_710 = _T_709 | io_clk_override; // @[axi4_to_ahb.scala 460:60] rvclkhdr rvclkhdr ( // @[el2_lib.scala 483:22] .io_l1clk(rvclkhdr_io_l1clk), .io_clk(rvclkhdr_io_clk), @@ -533,22 +533,22 @@ module axi4_to_ahb( .io_en(rvclkhdr_9_io_en), .io_scan_mode(rvclkhdr_9_io_scan_mode) ); - assign io_axi_awready = _T_625 & master_ready; // @[axi4_to_ahb.scala 376:18] - assign io_axi_wready = _T_629 & master_ready; // @[axi4_to_ahb.scala 377:17] + assign io_axi_awready = _T_624 & master_ready; // @[axi4_to_ahb.scala 376:18] + assign io_axi_wready = _T_628 & master_ready; // @[axi4_to_ahb.scala 377:17] assign io_axi_bvalid = _T_23 & slave_opc[3]; // @[axi4_to_ahb.scala 208:17] assign io_axi_bresp = slave_opc[0] ? 2'h2 : _T_28; // @[axi4_to_ahb.scala 209:16] assign io_axi_bid = slvbuf_tag; // @[axi4_to_ahb.scala 210:14] - assign io_axi_arready = _T_632 & master_ready; // @[axi4_to_ahb.scala 378:18] + assign io_axi_arready = _T_631 & master_ready; // @[axi4_to_ahb.scala 378:18] assign io_axi_rvalid = _T_23 & _T_33; // @[axi4_to_ahb.scala 212:17] assign io_axi_rid = slvbuf_tag; // @[axi4_to_ahb.scala 214:14] - assign io_axi_rdata = slvbuf_error ? _T_602 : _T_606; // @[axi4_to_ahb.scala 215:16] + assign io_axi_rdata = slvbuf_error ? _T_601 : _T_605; // @[axi4_to_ahb.scala 215:16] assign io_axi_rresp = slave_opc[0] ? 2'h2 : _T_28; // @[axi4_to_ahb.scala 213:16] assign io_axi_rlast = 1'h1; // @[axi4_to_ahb.scala 379:16] - assign io_ahb_haddr = bypass_en ? _T_569 : _T_572; // @[axi4_to_ahb.scala 355:16] + assign io_ahb_haddr = bypass_en ? _T_568 : _T_571; // @[axi4_to_ahb.scala 355:16] assign io_ahb_hburst = 3'h0; // @[axi4_to_ahb.scala 358:17] assign io_ahb_hmastlock = 1'h0; // @[axi4_to_ahb.scala 359:20] - assign io_ahb_hprot = {{2'd0}, _T_588}; // @[axi4_to_ahb.scala 360:16] - assign io_ahb_hsize = bypass_en ? _T_579 : _T_584; // @[axi4_to_ahb.scala 356:16] + assign io_ahb_hprot = {{2'd0}, _T_587}; // @[axi4_to_ahb.scala 360:16] + assign io_ahb_hsize = bypass_en ? _T_578 : _T_583; // @[axi4_to_ahb.scala 356:16] assign io_ahb_htrans = _T_47 ? _T_98 : _GEN_90; // @[axi4_to_ahb.scala 225:17 axi4_to_ahb.scala 256:21 axi4_to_ahb.scala 268:21 axi4_to_ahb.scala 283:21 axi4_to_ahb.scala 293:21 axi4_to_ahb.scala 313:21 axi4_to_ahb.scala 327:21] assign io_ahb_hwrite = bypass_en ? _T_49 : buf_write; // @[axi4_to_ahb.scala 361:17] assign io_ahb_hwdata = buf_data; // @[axi4_to_ahb.scala 362:17] @@ -571,16 +571,16 @@ module axi4_to_ahb( assign rvclkhdr_5_io_en = buf_data_wr_en & io_bus_clk_en; // @[el2_lib.scala 511:17] assign rvclkhdr_5_io_scan_mode = io_scan_mode; // @[el2_lib.scala 512:24] assign rvclkhdr_6_io_clk = clock; // @[el2_lib.scala 484:17] - assign rvclkhdr_6_io_en = io_bus_clk_en & _T_704; // @[el2_lib.scala 485:16] + assign rvclkhdr_6_io_en = io_bus_clk_en & _T_703; // @[el2_lib.scala 485:16] assign rvclkhdr_6_io_scan_mode = io_scan_mode; // @[el2_lib.scala 486:23] assign rvclkhdr_7_io_clk = clock; // @[el2_lib.scala 484:17] assign rvclkhdr_7_io_en = io_bus_clk_en; // @[el2_lib.scala 485:16] assign rvclkhdr_7_io_scan_mode = io_scan_mode; // @[el2_lib.scala 486:23] assign rvclkhdr_8_io_clk = clock; // @[el2_lib.scala 484:17] - assign rvclkhdr_8_io_en = io_bus_clk_en & _T_708; // @[el2_lib.scala 485:16] + assign rvclkhdr_8_io_en = io_bus_clk_en & _T_707; // @[el2_lib.scala 485:16] assign rvclkhdr_8_io_scan_mode = io_scan_mode; // @[el2_lib.scala 486:23] assign rvclkhdr_9_io_clk = clock; // @[el2_lib.scala 484:17] - assign rvclkhdr_9_io_en = io_bus_clk_en & _T_711; // @[el2_lib.scala 485:16] + assign rvclkhdr_9_io_en = io_bus_clk_en & _T_710; // @[el2_lib.scala 485:16] assign rvclkhdr_9_io_scan_mode = io_scan_mode; // @[el2_lib.scala 486:23] `ifdef RANDOMIZE_GARBAGE_ASSIGN `define RANDOMIZE @@ -765,14 +765,14 @@ end // initial if (reset) begin wrbuf_vld <= 1'h0; end else begin - wrbuf_vld <= _T_635 & _T_636; + wrbuf_vld <= _T_634 & _T_635; end end always @(posedge bus_clk or posedge reset) begin if (reset) begin wrbuf_data_vld <= 1'h0; end else begin - wrbuf_data_vld <= _T_640 & _T_636; + wrbuf_data_vld <= _T_639 & _T_635; end end always @(posedge ahbm_clk or posedge reset) begin @@ -807,7 +807,7 @@ end // initial if (reset) begin cmd_doneQ <= 1'h0; end else begin - cmd_doneQ <= _T_274 & _T_690; + cmd_doneQ <= _T_274 & _T_689; end end always @(posedge bus_clk or posedge reset) begin @@ -890,7 +890,7 @@ end // initial always @(posedge rvclkhdr_5_io_l1clk or posedge reset) begin if (reset) begin buf_data <= 64'h0; - end else if (_T_487) begin + end else if (_T_486) begin buf_data <= ahb_hrdata_q; end else begin buf_data <= wrbuf_data; @@ -907,7 +907,7 @@ end // initial if (reset) begin buf_addr <= 32'h0; end else begin - buf_addr <= {master_addr[31:3],_T_483}; + buf_addr <= {master_addr[31:3],_T_482}; end end always @(posedge ahbm_clk or posedge reset) begin diff --git a/src/main/scala/lib/ahb_to_axi4.scala b/src/main/scala/lib/ahb_to_axi4.scala index e1da8da5..3255f2df 100644 --- a/src/main/scala/lib/ahb_to_axi4.scala +++ b/src/main/scala/lib/ahb_to_axi4.scala @@ -1,85 +1,240 @@ package lib import chisel3._ import chisel3.util._ -import chisel3.experimental.chiselName +//import chisel3.experimental.chiselName -@chiselName +//@chiselName class ahb_to_axi4 extends Module with el2_lib with RequireAsyncReset { - val TAG = 1 - val io = IO(new Bundle { - val scan_mode = Input(Bool()) - val bus_clk_en = Input(Bool()) - val clk_override = Input(Bool()) - val axi_awready = Input(Bool()) - val axi_wready = Input(Bool()) - val axi_bvalid = Input(Bool()) - val axi_bresp = Input(UInt(2.W)) - val axi_bid = Input(UInt(TAG.W)) - val axi_arready = Input(Bool()) - val axi_rvalid = Input(Bool()) - val axi_rid = Input(UInt(TAG.W)) - val axi_rdata = Input(UInt(64.W)) - val axi_rresp = Input(UInt(2.W)) - val ahb_haddr = Input(UInt(32.W)) // ahb bus address - val ahb_hburst = Input(UInt(3.W)) // tied to 0 - val ahb_hmastlock = Input(Bool()) // tied to 0 - val ahb_hprot = Input(UInt(4.W)) // tied to 4'b0011 - val ahb_hsize = Input(UInt(3.W)) // size of bus transaction (possible values 0 =1 =2 =3) - val ahb_htrans = Input(UInt(2.W)) // Transaction type (possible values 0 =2 only right now) - val ahb_hwrite = Input(Bool()) // ahb bus write - val ahb_hwdata = Input(UInt(64.W)) // ahb bus write data - val ahb_hsel = Input(Bool()) // this slave was selected - val ahb_hreadyin = Input(Bool()) // previous hready was accepted or not - // outputs - val axi_awvalid = Output(Bool()) - val axi_awid = Output(UInt(TAG.W)) - val axi_awaddr = Output(UInt(32.W)) - val axi_awsize = Output(UInt(3.W)) - val axi_awprot = Output(UInt(3.W)) - val axi_awlen = Output(UInt(8.W)) - val axi_awburst = Output(UInt(2.W)) - val axi_wvalid = Output(Bool()) - val axi_wdata = Output(UInt(64.W)) - val axi_wstrb = Output(UInt(8.W)) - val axi_wlast = Output(Bool()) - val axi_bready = Output(Bool()) - val axi_arvalid = Output(Bool()) - val axi_arid = Output(UInt(TAG.W)) - val axi_araddr = Output(UInt(32.W)) - val axi_arsize = Output(UInt(3.W)) - val axi_arprot = Output(UInt(3.W)) - val axi_arlen = Output(UInt(8.W)) - val axi_arburst = Output(UInt(2.W)) - val axi_rready = Output(Bool()) - val ahb_hrdata = Output(UInt(64.W)) // ahb bus read data - val ahb_hreadyout = Output(Bool()) // slave ready to accept transaction - val ahb_hresp = Output(Bool()) // slave response (high indicates erro) - }) - io.axi_awvalid := 0.U - io.axi_awid := 0.U - io.axi_awaddr := 0.U - io.axi_awsize := 0.U - io.axi_awprot := 0.U - io.axi_awlen := 0.U - io.axi_awburst := 0.U - io.axi_wvalid := 0.U - io.axi_wdata := 0.U - io.axi_wstrb := 0.U - io.axi_wlast := 0.U - io.axi_bready := 0.U - io.axi_arvalid := 0.U - io.axi_arid := 0.U - io.axi_araddr := 0.U - io.axi_arsize := 0.U - io.axi_arprot := 0.U - io.axi_arlen := 0.U - io.axi_arburst := 0.U - io.axi_rready := 0.U - io.ahb_hrdata := 0.U - io.ahb_hreadyout := 0.U - io.ahb_hresp := 0.U + val io = IO(new Bundle { + val scan_mode = Input(Bool()) + val bus_clk_en = Input(Bool()) + val clk_override = Input(Bool()) + val axi_awready = Input(Bool()) + val axi_wready = Input(Bool()) + val axi_bvalid = Input(Bool()) + val axi_bresp = Input(UInt(2.W)) + val axi_bid = Input(UInt(TAG.W)) + val axi_arready = Input(Bool()) + val axi_rvalid = Input(Bool()) + val axi_rid = Input(UInt(TAG.W)) + val axi_rdata = Input(UInt(64.W)) + val axi_rresp = Input(UInt(2.W)) + val ahb_haddr = Input(UInt(32.W)) // ahb bus address + val ahb_hburst = Input(UInt(3.W)) // tied to 0 + val ahb_hmastlock = Input(Bool()) // tied to 0 + val ahb_hprot = Input(UInt(4.W)) // tied to 4'b0011 + val ahb_hsize = Input(UInt(3.W)) // size of bus transaction (possible values 0 =1 =2 =3) + val ahb_htrans = Input(UInt(2.W)) // Transaction type (possible values 0 =2 only right now) + val ahb_hwrite = Input(Bool()) // ahb bus write + val ahb_hwdata = Input(UInt(64.W)) // ahb bus write data + val ahb_hsel = Input(Bool()) // this slave was selected + val ahb_hreadyin = Input(Bool()) // previous hready was accepted or not + // outputs + val axi_awvalid = Output(Bool()) + val axi_awid = Output(UInt(TAG.W)) + val axi_awaddr = Output(UInt(32.W)) + val axi_awsize = Output(UInt(3.W)) + val axi_awprot = Output(UInt(3.W)) + val axi_awlen = Output(UInt(8.W)) + val axi_awburst = Output(UInt(2.W)) + val axi_wvalid = Output(Bool()) + val axi_wdata = Output(UInt(64.W)) + val axi_wstrb = Output(UInt(8.W)) + val axi_wlast = Output(Bool()) + val axi_bready = Output(Bool()) + val axi_arvalid = Output(Bool()) + val axi_arid = Output(UInt(TAG.W)) + val axi_araddr = Output(UInt(32.W)) + val axi_arsize = Output(UInt(3.W)) + val axi_arprot = Output(UInt(3.W)) + val axi_arlen = Output(UInt(8.W)) + val axi_arburst = Output(UInt(2.W)) + val axi_rready = Output(Bool()) + val ahb_hrdata = Output(UInt(64.W)) // ahb bus read data + val ahb_hreadyout = Output(Bool()) // slave ready to accept transaction + val ahb_hresp = Output(Bool()) // slave response (high indicates erro) + }) + val idle:: wr :: rd :: pend :: Nil = Enum(4) + val TAG= 1 + val master_wstrb = WireInit(0.U(8.W)) + val buf_state_en = WireInit(false.B) + + // Buffer signals (one entry buffer) + val buf_read_error_in = WireInit(false.B) + val buf_read_error = WireInit(false.B) + val buf_rdata = WireInit(0.U(64.W)) + val ahb_hready = WireInit(Bool(), false.B) + val ahb_hready_q = WireInit(Bool(), false.B) + val ahb_htrans_in = WireInit(0.U(2.W)) + val ahb_htrans_q = WireInit(0.U(2.W)) + val ahb_hsize_q = WireInit(0.U(3.W)) + val ahb_hwrite_q = WireInit(Bool(), false.B) + val ahb_haddr_q = WireInit(0.U(32.W)) + val ahb_hwdata_q = WireInit(0.U(64.W)) + val ahb_hresp_q = WireInit(Bool(), false.B) + + //Miscellaneous signals + val ahb_addr_in_iccm = WireInit(Bool(), false.B) + val ahb_addr_in_iccm_region_nc = WireInit(Bool(), false.B) + + // signals needed for the read data coming back from the core and to block any further commands as AHB is a blocking bus + val buf_rdata_en = WireInit(Bool(), false.B) + val ahb_bus_addr_clk_en = WireInit(Bool(), false.B) + val buf_rdata_clk_en = WireInit(Bool(), false.B) + val ahb_clk = Wire(Clock()) + val ahb_addr_clk = Wire(Clock()) + val buf_rdata_clk = Wire(Clock()) + + // Command buffer is the holding station where we convert to AXI and send to core + val cmdbuf_wr_en = WireInit(Bool(), false.B) + val cmdbuf_rst = WireInit(Bool(), false.B) + val cmdbuf_full = WireInit(Bool(), false.B) + val cmdbuf_vld = WireInit(Bool(), false.B) + val cmdbuf_write = WireInit(Bool(), false.B) + val cmdbuf_size = WireInit(0.U(2.W)) + val cmdbuf_wstrb = WireInit(0.U(8.W)) + val cmdbuf_addr = WireInit(0.U(32.W)) + val cmdbuf_wdata = WireInit(0.U(64.W)) + val bus_clk = Wire(Clock()) + + // Address check dccm + val (ahb_addr_in_dccm, ahb_addr_in_dccm_region_nc) = rvrangecheck_ch(ahb_haddr_q.asUInt,aslong(DCCM_SADR).asUInt(),DCCM_SIZE) + + // Address check iccm + if (ICCM_ENABLE == 1) { + ahb_addr_in_iccm := rvrangecheck_ch(ahb_haddr_q.asUInt, aslong(ICCM_SADR).asUInt(), ICCM_SIZE)._1 + ahb_addr_in_iccm_region_nc := rvrangecheck_ch(ahb_haddr_q.asUInt, aslong(ICCM_SADR).asUInt(), ICCM_SIZE)._2 + } + else { + ahb_addr_in_iccm := 0.U + ahb_addr_in_iccm_region_nc := 0.U + + } + // PIC memory address check + val (ahb_addr_in_pic, ahb_addr_in_pic_region_nc) = rvrangecheck_ch(ahb_haddr_q.asUInt,aslong(PIC_BASE_ADDR).asUInt(),PIC_SIZE) + + // FSM to control the bus states and when to block the hready and load the command buffer + val buf_state = WireInit(idle) + val buf_nxtstate = WireInit(idle) + buf_nxtstate := idle + buf_state_en := false.B + buf_rdata_en := false.B // signal to load the buffer when the core sends read data back + buf_read_error_in := false.B // signal indicating that an error came back with the read from the core + cmdbuf_wr_en := false.B // all clear from the gasket to load the buffer with the command for reads, command/dat for writes + switch(buf_state) { + + is(idle) { + buf_nxtstate := Mux(io.ahb_hwrite, wr, rd) + buf_state_en := ahb_hready & io.ahb_htrans(1) & io.ahb_hsel // only transition on a valid hrtans + } + is(wr) { // Write command recieved last cycle + buf_nxtstate := Mux((io.ahb_hresp | (io.ahb_htrans(1, 0) === "b0".U) | !io.ahb_hsel).asBool, idle, Mux(io.ahb_hwrite, wr, rd)) + buf_state_en := (!cmdbuf_full | io.ahb_hresp) + cmdbuf_wr_en := !cmdbuf_full & !(io.ahb_hresp | ((io.ahb_htrans(1, 0) === "b01".U) & io.ahb_hsel)) // Dont send command to the buffer in case of an error or when the master is not ready with the data now. + } + is(rd) { // Read command recieved last cycle. + buf_nxtstate := Mux(io.ahb_hresp, idle, pend) // If error go to idle, else wait for read data + buf_state_en := (!cmdbuf_full | io.ahb_hresp) // only when command can go, or if its an error + cmdbuf_wr_en := !io.ahb_hresp & !cmdbuf_full // send command only when no error + } + is(pend) { // Read Command has been sent. Waiting on Data. + buf_nxtstate := idle // go back for next command and present data next cycle + buf_state_en := io.axi_rvalid & !cmdbuf_write // read data is back + buf_rdata_en := buf_state_en // buffer the read data coming back from core + buf_read_error_in := buf_state_en & io.axi_rresp(1, 0).orR // buffer error flag if return has Error ( ECC ) + } + } + buf_state := withClock(ahb_clk){RegEnable(buf_nxtstate,0.U,buf_state_en.asBool())} + + master_wstrb := (Fill(8,ahb_hsize_q(2,0) === 0.U) & (1.U << ahb_haddr_q(2,0)).asUInt()) | + (Fill(8,ahb_hsize_q(2,0) === 1.U) & (3.U << ahb_haddr_q(2,0)).asUInt()) | + (Fill(8,ahb_hsize_q(2,0) === 2.U) & (15.U << ahb_haddr_q(2,0)).asUInt()) | + (Fill(8,ahb_hsize_q(2,0) === 3.U) & 255.U) + + // AHB signals + io.ahb_hreadyout := Mux(io.ahb_hresp,(ahb_hresp_q & !ahb_hready_q), ((!cmdbuf_full | (buf_state === idle)) & !(buf_state === rd | buf_state === pend) & !buf_read_error)) + ahb_hready := io.ahb_hreadyout & io.ahb_hreadyin + ahb_htrans_in := Fill(2,io.ahb_hsel) & io.ahb_htrans(1,0) + io.ahb_hrdata := buf_rdata(63,0) + io.ahb_hresp := ((ahb_htrans_q(1,0) =/= 0.U) & (buf_state =/= idle) & + ((!(ahb_addr_in_dccm | ahb_addr_in_iccm)) | // request not for ICCM or DCCM + ((ahb_addr_in_iccm | (ahb_addr_in_dccm & ahb_hwrite_q)) & !((ahb_hsize_q(1,0) === 2.U) | (ahb_hsize_q(1,0) === 3.U))) | // ICCM Rd/Wr OR DCCM Wr not the right size + ((ahb_hsize_q(2,0) === 1.U) & ahb_haddr_q(0)) | // HW size but unaligned + ((ahb_hsize_q(2,0) === 2.U) & (ahb_haddr_q(1,0)).orR) | // W size but unaligned + ((ahb_hsize_q(2,0) === 3.U) & (ahb_haddr_q(2,0)).orR))) | // DW size but unaligned + buf_read_error | // Read ECC error + (ahb_hresp_q & !ahb_hready_q) + + // Buffer signals - needed for the read data and ECC error response + buf_rdata := withClock(buf_rdata_clk){RegNext(io.axi_rdata,0.U)} + buf_read_error := withClock(ahb_clk){RegNext(buf_read_error_in,0.U)} + + // All the Master signals are captured before presenting it to the command buffer. We check for Hresp before sending it to the cmd buffer. + ahb_hresp_q := withClock(ahb_clk){RegNext(io.ahb_hresp,0.U)} + ahb_hready_q := withClock(ahb_clk){RegNext(ahb_hready,0.U)} + ahb_htrans_q := withClock(ahb_clk){RegNext(ahb_htrans_in,0.U)} + ahb_hsize_q := withClock(ahb_addr_clk){RegNext(io.ahb_hsize,0.U)} + ahb_hwrite_q := withClock(ahb_addr_clk){RegNext(io.ahb_hwrite,0.U)} + ahb_haddr_q := withClock(ahb_addr_clk){RegNext(io.ahb_haddr,0.U)} + + // Clock header logic + ahb_bus_addr_clk_en := io.bus_clk_en & (ahb_hready & io.ahb_htrans(1)) + buf_rdata_clk_en := io.bus_clk_en & buf_rdata_en; + + ahb_clk := rvclkhdr(clock, io.bus_clk_en, io.scan_mode) + ahb_addr_clk := rvclkhdr(clock, ahb_bus_addr_clk_en, io.scan_mode) + buf_rdata_clk := rvclkhdr(clock, buf_rdata_clk_en, io.scan_mode) + + cmdbuf_rst := (((io.axi_awvalid & io.axi_awready) | (io.axi_arvalid & io.axi_arready)) & !cmdbuf_wr_en) | (io.ahb_hresp & !cmdbuf_write) + cmdbuf_full := (cmdbuf_vld & !((io.axi_awvalid & io.axi_awready) | (io.axi_arvalid & io.axi_arready))) + + //rvdffsc + cmdbuf_vld := withClock(bus_clk) { + RegEnable("b1".U & Fill("b1".U.getWidth, cmdbuf_rst), 0.U, cmdbuf_wr_en.asBool())} + + //dffs + cmdbuf_write := withClock(bus_clk) { + RegEnable(ahb_hwrite_q, 0.U, cmdbuf_wr_en.asBool())} + + cmdbuf_size := withClock(bus_clk) { + RegEnable(ahb_hsize_q, 0.U, cmdbuf_wr_en.asBool())} + + cmdbuf_wstrb := withClock(bus_clk) { + RegEnable(master_wstrb, 0.U, cmdbuf_wr_en.asBool())} + + //rvdffe + cmdbuf_addr := RegEnable(ahb_haddr_q, 0.U, cmdbuf_wr_en.asBool()) + cmdbuf_wdata := RegEnable(io.ahb_hwdata, 0.U, cmdbuf_wr_en.asBool()) + + // AXI Write Command Channel + io.axi_awvalid := cmdbuf_vld & cmdbuf_write + io.axi_awid := Fill(TAG, 0.U) + io.axi_awaddr := cmdbuf_addr + io.axi_awsize := Cat("b0".U, cmdbuf_size(1, 0)) + io.axi_awprot := Fill(3, 0.U) + io.axi_awlen := Fill(8, 0.U) + io.axi_awburst := "b01".U + // 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_wvalid := cmdbuf_vld & cmdbuf_write + io.axi_wdata := cmdbuf_wdata + io.axi_wstrb := cmdbuf_wstrb + io.axi_wlast := "b1".U + // AXI Write Response - Always ready. AHB does not require a write response. + io.axi_bready := "b1".U + // AXI Read Channels + io.axi_arvalid := cmdbuf_vld & !cmdbuf_write + io.axi_arid := Fill(TAG, 0.U) + io.axi_araddr := cmdbuf_addr + io.axi_arsize := Cat("b0".U, cmdbuf_size(1, 0)) + io.axi_arprot := Fill(3, 0.U) + io.axi_arlen := Fill(8, 0.U) + io.axi_arburst := "b01".U + // 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_rready := true.B + + + bus_clk := rvclkhdr(clock, io.bus_clk_en, io.scan_mode) } object AHB_main extends App { - println("Generate Verilog") - println((new chisel3.stage.ChiselStage).emitVerilog(new ahb_to_axi4())) -} \ No newline at end of file + println("Generate Verilog") + println((new chisel3.stage.ChiselStage).emitVerilog(new ahb_to_axi4()))} diff --git a/src/main/scala/lib/axi4_to_ahb.scala b/src/main/scala/lib/axi4_to_ahb.scala index efdfaa97..40112ba3 100644 --- a/src/main/scala/lib/axi4_to_ahb.scala +++ b/src/main/scala/lib/axi4_to_ahb.scala @@ -163,9 +163,9 @@ class axi4_to_ahb extends Module with el2_lib with RequireAsyncReset with Config val byteen = WireInit(0.U(8.W)) - 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)))) | - ("b01".U & (Fill(2, (byteen(7, 0) === "hc0".U) | (byteen(7, 0) === "h30".U) | (byteen(7, 0) === "h0c".U) | (byteen(7, 0) === "h03".U))))) + 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))))) | + ("b01".U & (Fill(2, ((byteen(7, 0) === "hc0".U) | (byteen(7, 0) === "h30".U) | (byteen(7, 0) === "h0c".U) | (byteen(7, 0) === "h03".U))))) size } @@ -223,7 +223,7 @@ class axi4_to_ahb extends Module with el2_lib with RequireAsyncReset with Config //State machine io.ahb_htrans := 0.U - master_ready := 1.U + master_ready := 0.U buf_state_en := false.B buf_nxtstate := idle //buf_wr_en := 0.U @@ -250,7 +250,7 @@ class axi4_to_ahb extends Module with el2_lib with RequireAsyncReset with Config buf_data_wr_en := buf_state_en & (buf_nxtstate === cmd_wr) buf_cmd_byte_ptr_en := buf_state_en // ---------------------FROM FUNCTION CHECK LATER - buf_cmd_byte_ptr := Mux(buf_write_in.asBool(), (get_nxtbyte_ptr("b0".U, buf_byteen_in(7, 0), false.B)).asInstanceOf[UInt], master_addr(2, 0)) + buf_cmd_byte_ptr := Mux(buf_write_in.asBool(), (get_nxtbyte_ptr(0.U, buf_byteen_in(7, 0), false.B)).asInstanceOf[UInt], master_addr(2, 0)) bypass_en := buf_state_en rd_bypass_idle := bypass_en & (buf_nxtstate === cmd_rd) io.ahb_htrans := (Fill(2, bypass_en)) & "b10".U @@ -330,7 +330,7 @@ class axi4_to_ahb extends Module with el2_lib with RequireAsyncReset with Config buf_cmd_byte_ptr_en := trxn_done | bypass_en //val tmp_func = get_nxtbyte_ptr(Fill(3,0.U),buf_byteen_in(7,0),false.B) //val tmp_func2 = get_nxtbyte_ptr(buf_cmd_byte_ptrQ(2,0),buf_byteen(7,0),true.B) - buf_cmd_byte_ptr := Mux(bypass_en, get_nxtbyte_ptr(Fill(3, 0.U), 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, 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 @@ -353,7 +353,7 @@ class axi4_to_ahb extends Module with el2_lib with RequireAsyncReset with Config (master_byteen(7, 0) === "hf".U) | (master_byteen(7, 0) === "hf0".U) | (master_byteen(7, 0) === "hff".U))) // Generate the ahb signals io.ahb_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_hsize := Mux(bypass_en.asBool(), Cat("b0".U, (Fill(2, buf_aligned_in) & buf_size_in(1, 0))), (Cat("b0".U, (Fill(2, buf_aligned) & buf_size(1, 0))))) + io.ahb_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_hburst := "b0".U io.ahb_hmastlock := "b0".U diff --git a/target/scala-2.12/classes/lib/AHB_main$.class b/target/scala-2.12/classes/lib/AHB_main$.class index 8ab67464b7c953bd1f280b9ae7ab3b304bc16627..067b558beeaf94dc1e2926d410ccb6f93faa01fe 100644 GIT binary patch delta 125 zcmdldw_k3?mBhUKytL9hmAuq)6+?^7msnKU7~f6)!DS01{dvVF`*M3iS?jp1 zfUK9?Hb7F12O=*yxt7NQ$lu1}3RWdKS(Mij%!*yyBDnxILk)_1soK z)+=rsAgRs+k(ZoY$72EHZ|89ZtCE~7#%l>?#W03UUdtQG8O*@J5W=9(5Hy*auL3C3 H!nYd$WZfh3 diff --git a/target/scala-2.12/classes/lib/AHB_main$delayedInit$body.class b/target/scala-2.12/classes/lib/AHB_main$delayedInit$body.class index 272008f8603aaf480e188cd665820b126b69b518..df98dd7d3000626cdd8dbedf22d36a9b5f82ce63 100644 GIT binary patch delta 19 ZcmaFF`iOOdD-+|p$!<&mKyo^hHvmj~2Sxw@ delta 19 ZcmaFF`iOOdD-&bTWH+V&AUU1M8vsJP1`YrK diff --git a/target/scala-2.12/classes/lib/ahb_to_axi4$$anon$1.class b/target/scala-2.12/classes/lib/ahb_to_axi4$$anon$1.class index 2b73c2378bd29db8bd73dc39e25ba2e3e6bdfb37..942c6d55694ff5094a6b7bc8b8104a0c1a20573a 100644 GIT binary patch delta 576 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 literal 57784 zcmcItcVHC9)qiulcc+sEBvE~U0D-8YNf=|gPX!RDfF!_x@%bbjLZF5U#obQg9(Ttr ziA#!mHyGP-Ph1n1IEmvVPIr3Gm*O;k@6GJ>r(?o8f85O5x9|Pt&CJ``*}XTjum0zW zrvc!2`*#BJJ3CtDM|QP@2YSMh10BcvK?o>n-PO?_?OZs&qkACQ*B$AcUmIvSM zX&dZ}`oR*AM|#oD@-XIp@CpdVbQ+_32Rr(rq5gy2t&P$C=zt&m0t%DLnAhJL>5K@N zSgVNnebJqr(bj?aO~h{MXzz{;4E9Br3GlWY9EkP{-#(x4u4ok=Z>}f{ZHxqj*Hc)r zHAd2?Dt;jqFfVqsyh#ul?e-uB`p#W|uys!mj99tz+wh0W0L)T^L#IwW@a%7FKRr*tci;sFUYz zTzdMB;iEQp?N~Ty1tX*CPgyj0*2cg_uh&x~yt7*7ZC$*3$HWPP^%Iuu+}l{vG;eEp ze|SW0^Hedq&^xWKX^I$==bhU!GUPe2W&8Aj{dJaS-h6MUkmRFF<(hexXThdGSnN!`B6itzpGuIvVpl?V-X@ zd%fSYXI3CGBV-M%@wJVeYk8LJ2?Pt*O<3j$Y|I-B)Cj9-<(v_sAlEuWEDVJ<*y3Oy z5?Z@sVSCfkIa}t9J8|$VZ?Ld?LSdm-x9M zl}pdu+&y98&Qfogw^9_Y9T^A>Rtl>!yt2*T;+ekEYflRlH;TOK%@YoE1{Zg(8Z&_W z88QB_HRY%5@0_rFXLMcdnz`e=IYs+Mke{r!<_7!=wl8SuSvP0wux%>>`Jp`}!Qx7h z=i68~EWGHnIKL*9U%d_6as0wS{zlC&_0=f(>UDD#=kLh#%&jOC(am0~?9{?g@#bkg z9aEMR&(ZZ66R9XW*mU;DvBS}hC24j@O?| zZCP6u@_IJq6;BB+YF#yD)Ru-FO9u;!HfsLpyp5XQIku~4Syy=YDOm2}M7dK&?U&=1 z^oJX(_J&SLl#ADyuY1R$Gq69!e5c%yE_Y4Cj|b_Z-2w7WnE1puzgN* z>=def#&n&!C|X#w_vA!7tk}KExBNKOKE;7Ral(Fu)1&GYD%==~;rOVX$8=3p?I5NU zTZ#6;ewnj%dDr@-Rmitvd`bO<{MJ3|Calf3yq*z*j$h7FetDn^uPgMEfK}Sz^t<-6 zo)L1*{2=ldrt#}bW;PIindav?e%Vtl7w1nzer1fW{TuyN`F){xbfc>G=)AHiL8|wt zUGsyBch^h_6&9|J)laum-41N0;y}mL)b^M$Ke#X&CHXZmdEFj$JC^Pq97FXU9;


F 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 ArT_o{ 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 b5fa9cc6c0133893a5b0f6bb1b65ff88ac6a4078..cada42d1fe9091192f64f4f6f3e647a8af90e707 100644 GIT binary patch delta 2920 zcmZ`)dr(x@8Na{Xd-vk9%C5USSCptBvMMhX6c!d?I`M({s76r`R?r}C5J8ZaMu)^S z6G7Z8R?Uk}GQ`H7s)5=1_2Epl_C0hzg>S~>pI}CzM1%f1; zcjc5t#9cIS%T$2N2JS^wyK3O}s{q#wT!-o#0jJp#A24vREJOpz)m_m@YgFY6v@TKB zf$GZXAj4IaLhDCWO5h(=vuK@GJxJl-RR4h|-Rftv%97OT5IcLf+gJ} zaH4b9_JS?jiw(NR9-6Mc`Y4Lutq-0piJUiHOL0--iHllr6O@|TVrQMxAPQ=gsUa#% z5(AZ;E3w+G&f-RcIFWWGNUo&~QA;Gz3@%U!IveVpc{oblD)gSH!^QBu= zu>OV+;y2cis*}VRaCTQ=e7Ng)yxDasK|kQw6{x|`!1AWa%Fs49D_d!64iA;Y;|gu% zN2#u@sxycuRod@+GVU}dQl7RYkJiGLU|Q>2$_f4xa7$gL#IVDyIW*Cgt*_9)2R?1P zy9YLQh({E=T#v~-*KJH-PAwwX9X*Up&>#ad*y;(Gr|mJ?)X3koFrkN4Ct(UJ)Ii6w zMVQIao=lEv0Ta=4bSkVYRu2=Kuf-fzlSJljEoKmwr`IVx%-Y^(0L^NS2d=ITlQmqg zA1{buDiLbtVL`r9zW~K56KWQOwd^5}xoA?69RfnI=b3Pg61K8|>c$^xy*f z(u&0j^C|cY*JUvhBfus3_EZFuWDlm{RWDX$6dEbxFHtxKD%d+6iwOGCbo`tw=L`?# z!5QcYr%mrO^S_n&0f`^<4qz)$zap=ki7j}3*f(TE87(q@(#@Zi_-;w)q?`i!)NS5- z-m}esXygGG9Vt|H95)K%*UH zn-|~~?LQ_7XK9%Cl2AleN-~}j$3+W09Lp3j%1$ms3&pI9kUiaPqZ$3*!-o~dY|r5f z@EtyOei0(^W98UeS^FHA`4uMalwwYezV-BNwAn5SQm(AalXQi{g2cv`Aw&faSdMrV+`b%t)~L?t9IumY%%M&m7AY%z zzDmD#+OOU7Yx-3_!1Ptffm+&J0iUUOwp=8rS^;U3o}p&q_OsRN ziCcdzENaRx{mD;rQL6gNH=<0{KHunrGHybJ>f5u)=ac-}SAH!j&lg>nhqCWC?@|Zz zAkWwQpZ?_7{QqTo+{09E&&MOsQLZnb+4spe3$Ra1w{KYyQWW?8Vmu+UeJjQ_bQ$P< zGPAuU2x0to`hV#yLAZyse6s|y@`QL2I!iH`HJ8G|q*7#Auh@pfT#l2()pVNgk&*8+ zhMA=d4t3k>%aBO~eo{tvke;&J<+y`xcA^67F)V*mfk2{lv<6#=&9)lM)=hFhdoPOE z-RCeRpvWyYQIkG-q(R~DW>0q^Ui98dmfVP0?D`J6J*TYDYm1F5*h7o*PuE0usjm?t zZ8)J3!R*6EMBtEe7b88Xe6fk^@aJx#v;$4Bkr-^k7~FE}Zt!%y*eh+GS7opbg@QVl z@cmdJ(7W;S0mR~leDna?m8UQCM|h-bldvuB0bY(bpd|hsY)|M!X~KP!CvvDr`~sEp z3sE({A2kcQup=n~bx9|%Gr0-%$zNmF!kcJZ)P<&$#n_!viq@24XiFKxo|MPfn;MOM zsjp#w>R-{3`WUa;wdk;0aljsp*X@ZUm*KE|9b9d8Cn=41)4mT!?VTihaV%{cj;Gb& zL|O~UH}TW7Q}|ihS&}#KR@%ono%T7&zvJ!ne)ObYLT~yQ$@@5y{uSO$e~dGZAiU>@ zz&S@W$#nEPmcs2=N3sHgj$M!(`$(R^kfR4byyzGp&#mTsx8HQhFj^X3XC%BUphr3x$e3Ip2`A3kCBl5)~ On8{;EzTbuO0sjGNr@WW| delta 2876 zcmZ8ic~n&A6@R~(_hwioIKw83C{dJE9TZX7W`xtm1<+`UQK2v_hJ6r_O?0qTi5O1Q zF@7qI(WC<6hAi`@f(C_y)+UW)IZe|hJ;(Os*ptMXo|x2T>wWWPCfYyd-rskZ-@V^` z-}g=Dxa!!rs{eGkFE~Y^-a|N};cAuddvOY($9k?@Z#nD5w+VgVkggHVD{pymA;JX> z|1Fpla!JD#%fXj5+{=&Nr17=C4|-7DRAf5-zQ; zHC5MXgx?W`U>B}{^NBE3o2$2Oua2lLX^dD5j-Ows*Hc$lHQZ{s(3=|W85v#IaC_xK z;~K8rVH!lZ9ABHGNY1JmCie$5pYXI8 z+Af(s-X25Jqd}638`4PDHbe*5RS&_bX)pPOWyKoRH;$&Q{SD#dpK1t*wW~R&zn1)J zg~P8_g7cJeYKu+vCXHHbk@cC{ZkZ^>zD zY%ovfU!%4GA|X)`evD4=3zJRG@2a+gtq2j*0s0qeYz}%undH@q;#gIL0RQYSqdC{>>5o z*d{;zxQ_dtoiby_Q6p3{g>yFHqD|0ARX7qc86jf``izy7-BL0m?hXKaEN95 zqs4P%fWIO*mQ(()OxJTiDA#d6D&GR<@eIdt8o3>|doKJj%31@k9@p4A0caP-DC-8> z5{OJ;g5V@OABcE#i=PCd3{F#KkYr-Jf^eVGs)DiKnf7fk^cZ7tAvj1)watbBk+Qtlggb7gy!#HqF{QXQi3RK~5v+$y`LS;Cb zDdN*`9EV(DITgGz8^5Jh{v7&11FUlndV*;Jd;Iu6%X4;4ql8M1iCGaS1a7eYxim9* zkMGZQ>`^rjxxk266bTKeN=+1gMw;28$vw&LNvc~6iGdkv=eH3L#$uj(#jeI-Ax-9s zIJ`kThvvfr0VSMH8n;GC)${5175ygI#Rb?wC1MuhI`8b_!D0vh>;x!&VvJovBkg9n zOK_WZ7@3IkG%g|zVxK2s4VjiL#Shfu(q)bw%Ous!x|U%l`GS`tGkPe7wy&abC~f=! zn?UkC>fry*9kR5)kWThYFQv_O?%1W}2m@nN30S~q>A16wfH2-2Ks5h+{L5x(%bBSF zGg)5=edVGgbSgAT$01{?WaRPE%-9RbnC(DfXEG8!&?`=4;IBN5>-0+aDm;14p9|%< zjH7IHHD>zQH;JlTo2p<;un#M5GSe3L$vi)s*9O)*%~ma{IH`C0FrWkA==EDbJxyHlBSB9e7GAxA_1k(sZI_mkYIRM)s4Amt@DkHoH1dZ$Xt@qiKt)+66bd>qgUaUEa)GRLB`4 zZrcMlnw#g06F2A4x2J_RiW2S*$}zF5a~xSif?K?@zYZf0pg45_{r+Esde~Gs)aPe$<){JTIxm8lQ^9^h1XL*CjAg+(gx9!b`8C0 zw@KecU)mQqm-YyK1|2RKX5gYBinI}z4Qnt!m*}#=jA26yY=(WLPvVN-(k$C#&x3~=~#>#6ER^-C%qYy#uD5#ZX>-Pw^uC3AJRkcR{Cwcll~p< gWW-}CqX_S2yu#KWK^~5Z{YMbNV^sX$80;SZ1EQg^vj6}9