From c5414d6a20ace792937acddcfbe0d500cfcfe725 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=8BLaraib=20Khan?= <​laraib.khan@lampromellon.com> Date: Wed, 2 Dec 2020 15:58:23 +0500 Subject: [PATCH] ahb to axi update --- ahb_to_axi4.fir | 480 +++++++++--------- ahb_to_axi4.v | 239 ++++----- src/main/scala/lib/ahb_to_axi4.scala | 29 +- target/scala-2.12/classes/lib/AHB_main$.class | Bin 3903 -> 3903 bytes .../lib/AHB_main$delayedInit$body.class | Bin 738 -> 738 bytes .../scala-2.12/classes/lib/ahb_to_axi4.class | Bin 110948 -> 111457 bytes 6 files changed, 372 insertions(+), 376 deletions(-) diff --git a/ahb_to_axi4.fir b/ahb_to_axi4.fir index 9c822645..95854991 100644 --- a/ahb_to_axi4.fir +++ b/ahb_to_axi4.fir @@ -177,10 +177,6 @@ circuit ahb_to_axi4 : 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> @@ -209,278 +205,276 @@ circuit ahb_to_axi4 : 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] + node _T = bits(ahb_haddr_q, 31, 28) @[el2_lib.scala 224:25] + node ahb_addr_in_dccm_region_nc = eq(_T, UInt<4>("h0f")) @[el2_lib.scala 224:47] + node _T_1 = bits(ahb_haddr_q, 31, 16) @[el2_lib.scala 227:14] + node ahb_addr_in_dccm = eq(_T_1, UInt<16>("h0f004")) @[el2_lib.scala 227:29] + node _T_2 = bits(ahb_haddr_q, 31, 28) @[el2_lib.scala 224:25] + node ahb_addr_in_iccm_region_nc = eq(_T_2, UInt<4>("h0e")) @[el2_lib.scala 224:47] + node _T_3 = bits(ahb_haddr_q, 31, 16) @[el2_lib.scala 227:14] + node ahb_addr_in_iccm = eq(_T_3, UInt<16>("h0ee00")) @[el2_lib.scala 227:29] + node _T_4 = bits(ahb_haddr_q, 31, 28) @[el2_lib.scala 224:25] + node ahb_addr_in_pic_region_nc = eq(_T_4, UInt<4>("h0f")) @[el2_lib.scala 224:47] + node _T_5 = bits(ahb_haddr_q, 31, 15) @[el2_lib.scala 227:14] + node ahb_addr_in_pic = eq(_T_5, UInt<17>("h01e018")) @[el2_lib.scala 227:29] 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] + buf_nxtstate <= UInt<2>("h00") @[ahb_to_axi4.scala 118:33] + buf_state_en <= UInt<1>("h00") @[ahb_to_axi4.scala 119:33] + buf_rdata_en <= UInt<1>("h00") @[ahb_to_axi4.scala 120:33] + buf_read_error_in <= UInt<1>("h00") @[ahb_to_axi4.scala 121:33] + cmdbuf_wr_en <= UInt<1>("h00") @[ahb_to_axi4.scala 122: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] + node _T_7 = mux(io.ahb_hwrite, UInt<2>("h01"), UInt<2>("h02")) @[ahb_to_axi4.scala 126:28] + buf_nxtstate <= _T_7 @[ahb_to_axi4.scala 126:22] + node _T_8 = bits(io.ahb_htrans, 1, 1) @[ahb_to_axi4.scala 127:51] + node _T_9 = and(ahb_hready, _T_8) @[ahb_to_axi4.scala 127:36] + node _T_10 = and(_T_9, io.ahb_hsel) @[ahb_to_axi4.scala 127:55] + buf_state_en <= _T_10 @[ahb_to_axi4.scala 127: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<2>("h01")) @[ahb_to_axi4.scala 133:79] - node _T_25 = and(_T_24, io.ahb_hsel) @[ahb_to_axi4.scala 133:97] - 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] + node _T_12 = bits(io.ahb_htrans, 1, 0) @[ahb_to_axi4.scala 130:59] + node _T_13 = eq(_T_12, UInt<1>("h00")) @[ahb_to_axi4.scala 130:66] + node _T_14 = or(io.ahb_hresp, _T_13) @[ahb_to_axi4.scala 130:43] + node _T_15 = eq(io.ahb_hsel, UInt<1>("h00")) @[ahb_to_axi4.scala 130:80] + node _T_16 = or(_T_14, _T_15) @[ahb_to_axi4.scala 130:78] + node _T_17 = bits(_T_16, 0, 0) @[ahb_to_axi4.scala 130:94] + node _T_18 = mux(io.ahb_hwrite, UInt<2>("h01"), UInt<2>("h02")) @[ahb_to_axi4.scala 130:111] + node _T_19 = mux(_T_17, UInt<2>("h00"), _T_18) @[ahb_to_axi4.scala 130:28] + buf_nxtstate <= _T_19 @[ahb_to_axi4.scala 130:22] + node _T_20 = eq(cmdbuf_full, UInt<1>("h00")) @[ahb_to_axi4.scala 131:26] + node _T_21 = or(_T_20, io.ahb_hresp) @[ahb_to_axi4.scala 131:39] + buf_state_en <= _T_21 @[ahb_to_axi4.scala 131:22] + node _T_22 = eq(cmdbuf_full, UInt<1>("h00")) @[ahb_to_axi4.scala 132:25] + node _T_23 = bits(io.ahb_htrans, 1, 0) @[ahb_to_axi4.scala 132:72] + node _T_24 = eq(_T_23, UInt<2>("h01")) @[ahb_to_axi4.scala 132:79] + node _T_25 = and(_T_24, io.ahb_hsel) @[ahb_to_axi4.scala 132:97] + node _T_26 = or(io.ahb_hresp, _T_25) @[ahb_to_axi4.scala 132:55] + node _T_27 = eq(_T_26, UInt<1>("h00")) @[ahb_to_axi4.scala 132:40] + node _T_28 = and(_T_22, _T_27) @[ahb_to_axi4.scala 132:38] + cmdbuf_wr_en <= _T_28 @[ahb_to_axi4.scala 132: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] + node _T_30 = mux(io.ahb_hresp, UInt<2>("h00"), UInt<2>("h03")) @[ahb_to_axi4.scala 135:28] + buf_nxtstate <= _T_30 @[ahb_to_axi4.scala 135:22] + node _T_31 = eq(cmdbuf_full, UInt<1>("h00")) @[ahb_to_axi4.scala 136:26] + node _T_32 = or(_T_31, io.ahb_hresp) @[ahb_to_axi4.scala 136:39] + buf_state_en <= _T_32 @[ahb_to_axi4.scala 136:22] + node _T_33 = eq(io.ahb_hresp, UInt<1>("h00")) @[ahb_to_axi4.scala 137:25] + node _T_34 = eq(cmdbuf_full, UInt<1>("h00")) @[ahb_to_axi4.scala 137:41] + node _T_35 = and(_T_33, _T_34) @[ahb_to_axi4.scala 137:39] + cmdbuf_wr_en <= _T_35 @[ahb_to_axi4.scala 137: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] + buf_nxtstate <= UInt<2>("h00") @[ahb_to_axi4.scala 140:22] + node _T_37 = eq(cmdbuf_write, UInt<1>("h00")) @[ahb_to_axi4.scala 141:41] + node _T_38 = and(io.axi_rvalid, _T_37) @[ahb_to_axi4.scala 141:39] + buf_state_en <= _T_38 @[ahb_to_axi4.scala 141:22] + buf_rdata_en <= buf_state_en @[ahb_to_axi4.scala 142:22] + node _T_39 = bits(io.axi_rresp, 1, 0) @[ahb_to_axi4.scala 143:57] + node _T_40 = orr(_T_39) @[ahb_to_axi4.scala 143:64] + node _T_41 = and(buf_state_en, _T_40) @[ahb_to_axi4.scala 143:43] + buf_read_error_in <= _T_41 @[ahb_to_axi4.scala 143:27] skip @[Conditional.scala 39:67] - node _T_42 = bits(buf_state_en, 0, 0) @[ahb_to_axi4.scala 147:101] + node _T_42 = bits(buf_state_en, 0, 0) @[ahb_to_axi4.scala 146: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] + buf_state <= _T_43 @[ahb_to_axi4.scala 146:33] + node _T_44 = bits(ahb_hsize_q, 2, 0) @[ahb_to_axi4.scala 148:56] + node _T_45 = eq(_T_44, UInt<1>("h00")) @[ahb_to_axi4.scala 148: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_48 = bits(ahb_haddr_q, 2, 0) @[ahb_to_axi4.scala 148:94] + node _T_49 = dshl(UInt<1>("h01"), _T_48) @[ahb_to_axi4.scala 148:80] + node _T_50 = and(_T_47, _T_49) @[ahb_to_axi4.scala 148:72] + node _T_51 = bits(ahb_hsize_q, 2, 0) @[ahb_to_axi4.scala 149:56] + node _T_52 = eq(_T_51, UInt<1>("h01")) @[ahb_to_axi4.scala 149: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_55 = bits(ahb_haddr_q, 2, 0) @[ahb_to_axi4.scala 149:94] + node _T_56 = dshl(UInt<2>("h03"), _T_55) @[ahb_to_axi4.scala 149:80] + node _T_57 = and(_T_54, _T_56) @[ahb_to_axi4.scala 149:72] + node _T_58 = or(_T_50, _T_57) @[ahb_to_axi4.scala 148:111] + node _T_59 = bits(ahb_hsize_q, 2, 0) @[ahb_to_axi4.scala 150:56] + node _T_60 = eq(_T_59, UInt<2>("h02")) @[ahb_to_axi4.scala 150: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_63 = bits(ahb_haddr_q, 2, 0) @[ahb_to_axi4.scala 150:94] + node _T_64 = dshl(UInt<4>("h0f"), _T_63) @[ahb_to_axi4.scala 150:80] + node _T_65 = and(_T_62, _T_64) @[ahb_to_axi4.scala 150:72] + node _T_66 = or(_T_58, _T_65) @[ahb_to_axi4.scala 149:111] + node _T_67 = bits(ahb_hsize_q, 2, 0) @[ahb_to_axi4.scala 151:56] + node _T_68 = eq(_T_67, UInt<2>("h03")) @[ahb_to_axi4.scala 151: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_71 = and(_T_70, UInt<8>("h0ff")) @[ahb_to_axi4.scala 151:72] + node _T_72 = or(_T_66, _T_71) @[ahb_to_axi4.scala 150:111] + master_wstrb <= _T_72 @[ahb_to_axi4.scala 148:33] + node _T_73 = eq(ahb_hready_q, UInt<1>("h00")) @[ahb_to_axi4.scala 154:68] + node _T_74 = and(ahb_hresp_q, _T_73) @[ahb_to_axi4.scala 154:66] + node _T_75 = eq(cmdbuf_full, UInt<1>("h00")) @[ahb_to_axi4.scala 154:86] + node _T_76 = eq(buf_state, UInt<2>("h00")) @[ahb_to_axi4.scala 154:112] + node _T_77 = or(_T_75, _T_76) @[ahb_to_axi4.scala 154:99] + node _T_78 = eq(buf_state, UInt<2>("h02")) @[ahb_to_axi4.scala 154:137] + node _T_79 = eq(buf_state, UInt<2>("h03")) @[ahb_to_axi4.scala 154:156] + node _T_80 = or(_T_78, _T_79) @[ahb_to_axi4.scala 154:144] + node _T_81 = eq(_T_80, UInt<1>("h00")) @[ahb_to_axi4.scala 154:125] + node _T_82 = and(_T_77, _T_81) @[ahb_to_axi4.scala 154:123] + node _T_83 = eq(buf_read_error, UInt<1>("h00")) @[ahb_to_axi4.scala 154:169] + node _T_84 = and(_T_82, _T_83) @[ahb_to_axi4.scala 154:167] + node _T_85 = mux(io.ahb_hresp, _T_74, _T_84) @[ahb_to_axi4.scala 154:39] + io.ahb_hreadyout <= _T_85 @[ahb_to_axi4.scala 154:33] + node _T_86 = and(io.ahb_hreadyout, io.ahb_hreadyin) @[ahb_to_axi4.scala 155:53] + ahb_hready <= _T_86 @[ahb_to_axi4.scala 155: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] + node _T_89 = bits(io.ahb_htrans, 1, 0) @[ahb_to_axi4.scala 156:71] + node _T_90 = and(_T_88, _T_89) @[ahb_to_axi4.scala 156:56] + ahb_htrans_in <= _T_90 @[ahb_to_axi4.scala 156:33] + node _T_91 = bits(buf_rdata, 63, 0) @[ahb_to_axi4.scala 157:45] + io.ahb_hrdata <= _T_91 @[ahb_to_axi4.scala 157:33] + node _T_92 = bits(ahb_htrans_q, 1, 0) @[ahb_to_axi4.scala 158:50] + node _T_93 = neq(_T_92, UInt<1>("h00")) @[ahb_to_axi4.scala 158:56] + node _T_94 = neq(buf_state, UInt<2>("h00")) @[ahb_to_axi4.scala 158:78] + node _T_95 = and(_T_93, _T_94) @[ahb_to_axi4.scala 158:65] + node _T_96 = or(ahb_addr_in_dccm, ahb_addr_in_iccm) @[ahb_to_axi4.scala 159:57] + node _T_97 = eq(_T_96, UInt<1>("h00")) @[ahb_to_axi4.scala 159:38] + node _T_98 = and(ahb_addr_in_dccm, ahb_hwrite_q) @[ahb_to_axi4.scala 160:75] + node _T_99 = or(ahb_addr_in_iccm, _T_98) @[ahb_to_axi4.scala 160:55] + node _T_100 = bits(ahb_hsize_q, 1, 0) @[ahb_to_axi4.scala 160:109] + node _T_101 = eq(_T_100, UInt<2>("h02")) @[ahb_to_axi4.scala 160:115] + node _T_102 = bits(ahb_hsize_q, 1, 0) @[ahb_to_axi4.scala 160:138] + node _T_103 = eq(_T_102, UInt<2>("h03")) @[ahb_to_axi4.scala 160:144] + node _T_104 = or(_T_101, _T_103) @[ahb_to_axi4.scala 160:124] + node _T_105 = eq(_T_104, UInt<1>("h00")) @[ahb_to_axi4.scala 160:95] + node _T_106 = and(_T_99, _T_105) @[ahb_to_axi4.scala 160:93] + node _T_107 = or(_T_97, _T_106) @[ahb_to_axi4.scala 159:78] + node _T_108 = bits(ahb_hsize_q, 2, 0) @[ahb_to_axi4.scala 161:49] + node _T_109 = eq(_T_108, UInt<1>("h01")) @[ahb_to_axi4.scala 161:55] + node _T_110 = bits(ahb_haddr_q, 0, 0) @[ahb_to_axi4.scala 161:77] + node _T_111 = and(_T_109, _T_110) @[ahb_to_axi4.scala 161:64] + node _T_112 = or(_T_107, _T_111) @[ahb_to_axi4.scala 160:155] + node _T_113 = bits(ahb_hsize_q, 2, 0) @[ahb_to_axi4.scala 162:49] + node _T_114 = eq(_T_113, UInt<2>("h02")) @[ahb_to_axi4.scala 162:55] + node _T_115 = bits(ahb_haddr_q, 1, 0) @[ahb_to_axi4.scala 162:78] + node _T_116 = orr(_T_115) @[ahb_to_axi4.scala 162:85] + node _T_117 = and(_T_114, _T_116) @[ahb_to_axi4.scala 162:64] + node _T_118 = or(_T_112, _T_117) @[ahb_to_axi4.scala 161:84] + node _T_119 = bits(ahb_hsize_q, 2, 0) @[ahb_to_axi4.scala 163:49] + node _T_120 = eq(_T_119, UInt<2>("h03")) @[ahb_to_axi4.scala 163:55] + node _T_121 = bits(ahb_haddr_q, 2, 0) @[ahb_to_axi4.scala 163:78] + node _T_122 = orr(_T_121) @[ahb_to_axi4.scala 163:85] + node _T_123 = and(_T_120, _T_122) @[ahb_to_axi4.scala 163:64] + node _T_124 = or(_T_118, _T_123) @[ahb_to_axi4.scala 162:90] + node _T_125 = and(_T_95, _T_124) @[ahb_to_axi4.scala 158:89] + node _T_126 = or(_T_125, buf_read_error) @[ahb_to_axi4.scala 163:92] + node _T_127 = eq(ahb_hready_q, UInt<1>("h00")) @[ahb_to_axi4.scala 165:51] + node _T_128 = and(ahb_hresp_q, _T_127) @[ahb_to_axi4.scala 165:49] + node _T_129 = or(_T_126, _T_128) @[ahb_to_axi4.scala 164:51] + io.ahb_hresp <= _T_129 @[ahb_to_axi4.scala 158:33] + reg _T_130 : UInt, buf_rdata_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 168:68] + _T_130 <= io.axi_rdata @[ahb_to_axi4.scala 168:68] + buf_rdata <= _T_130 @[ahb_to_axi4.scala 168:33] + reg _T_131 : UInt<1>, ahb_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 169:62] + _T_131 <= buf_read_error_in @[ahb_to_axi4.scala 169:62] + buf_read_error <= _T_131 @[ahb_to_axi4.scala 169:33] + reg _T_132 : UInt<1>, ahb_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 172:62] + _T_132 <= io.ahb_hresp @[ahb_to_axi4.scala 172:62] + ahb_hresp_q <= _T_132 @[ahb_to_axi4.scala 172:33] + reg _T_133 : UInt<1>, ahb_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 173:62] + _T_133 <= ahb_hready @[ahb_to_axi4.scala 173:62] + ahb_hready_q <= _T_133 @[ahb_to_axi4.scala 173:33] + reg _T_134 : UInt, ahb_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 174:62] + _T_134 <= ahb_htrans_in @[ahb_to_axi4.scala 174:62] + ahb_htrans_q <= _T_134 @[ahb_to_axi4.scala 174:33] + reg _T_135 : UInt, ahb_addr_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 175:67] + _T_135 <= io.ahb_hsize @[ahb_to_axi4.scala 175:67] + ahb_hsize_q <= _T_135 @[ahb_to_axi4.scala 175:33] + reg _T_136 : UInt<1>, ahb_addr_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 176:67] + _T_136 <= io.ahb_hwrite @[ahb_to_axi4.scala 176:67] + ahb_hwrite_q <= _T_136 @[ahb_to_axi4.scala 176:33] + reg _T_137 : UInt, ahb_addr_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 177:67] + _T_137 <= io.ahb_haddr @[ahb_to_axi4.scala 177:67] + ahb_haddr_q <= _T_137 @[ahb_to_axi4.scala 177:33] + node _T_138 = bits(io.ahb_htrans, 1, 1) @[ahb_to_axi4.scala 180:79] + node _T_139 = and(ahb_hready, _T_138) @[ahb_to_axi4.scala 180:64] + node _T_140 = and(io.bus_clk_en, _T_139) @[ahb_to_axi4.scala 180:50] + ahb_bus_addr_clk_en <= _T_140 @[ahb_to_axi4.scala 180:33] + node _T_141 = and(io.bus_clk_en, buf_rdata_en) @[ahb_to_axi4.scala 181:50] + buf_rdata_clk_en <= _T_141 @[ahb_to_axi4.scala 181: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] + ahb_clk <= rvclkhdr.io.l1clk @[ahb_to_axi4.scala 183: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] + ahb_addr_clk <= rvclkhdr_1.io.l1clk @[ahb_to_axi4.scala 184: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 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 191:88] - node _T_156 = mux(_T_155, UInt<1>("h01"), cmdbuf_vld) @[ahb_to_axi4.scala 191:68] - node _T_157 = eq(cmdbuf_rst, UInt<1>("h00")) @[ahb_to_axi4.scala 191:112] - node _T_158 = and(_T_156, _T_157) @[ahb_to_axi4.scala 191:110] - reg _T_159 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 191:63] - _T_159 <= _T_158 @[ahb_to_axi4.scala 191:63] - cmdbuf_vld <= _T_159 @[ahb_to_axi4.scala 191:33] - node _T_160 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 195:57] + buf_rdata_clk <= rvclkhdr_2.io.l1clk @[ahb_to_axi4.scala 185:33] + node _T_142 = and(io.axi_awvalid, io.axi_awready) @[ahb_to_axi4.scala 187:54] + node _T_143 = and(io.axi_arvalid, io.axi_arready) @[ahb_to_axi4.scala 187:90] + node _T_144 = or(_T_142, _T_143) @[ahb_to_axi4.scala 187:72] + node _T_145 = eq(cmdbuf_wr_en, UInt<1>("h00")) @[ahb_to_axi4.scala 187:111] + node _T_146 = and(_T_144, _T_145) @[ahb_to_axi4.scala 187:109] + node _T_147 = eq(cmdbuf_write, UInt<1>("h00")) @[ahb_to_axi4.scala 187:144] + node _T_148 = and(io.ahb_hresp, _T_147) @[ahb_to_axi4.scala 187:142] + node _T_149 = or(_T_146, _T_148) @[ahb_to_axi4.scala 187:126] + cmdbuf_rst <= _T_149 @[ahb_to_axi4.scala 187:33] + node _T_150 = and(io.axi_awvalid, io.axi_awready) @[ahb_to_axi4.scala 188:68] + node _T_151 = and(io.axi_arvalid, io.axi_arready) @[ahb_to_axi4.scala 188:104] + node _T_152 = or(_T_150, _T_151) @[ahb_to_axi4.scala 188:86] + node _T_153 = eq(_T_152, UInt<1>("h00")) @[ahb_to_axi4.scala 188:50] + node _T_154 = and(cmdbuf_vld, _T_153) @[ahb_to_axi4.scala 188:48] + cmdbuf_full <= _T_154 @[ahb_to_axi4.scala 188:33] + node _T_155 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 190:88] + node _T_156 = mux(_T_155, UInt<1>("h01"), cmdbuf_vld) @[ahb_to_axi4.scala 190:68] + node _T_157 = eq(cmdbuf_rst, UInt<1>("h00")) @[ahb_to_axi4.scala 190:112] + node _T_158 = and(_T_156, _T_157) @[ahb_to_axi4.scala 190:110] + reg _T_159 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[ahb_to_axi4.scala 190:63] + _T_159 <= _T_158 @[ahb_to_axi4.scala 190:63] + cmdbuf_vld <= _T_159 @[ahb_to_axi4.scala 190:33] + node _T_160 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 194:57] 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_hwrite_q @[Reg.scala 28:23] skip @[Reg.scala 28:19] - cmdbuf_write <= _T_161 @[ahb_to_axi4.scala 194:33] - node _T_162 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 198:56] + cmdbuf_write <= _T_161 @[ahb_to_axi4.scala 193:33] + node _T_162 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 197:56] 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 <= ahb_hsize_q @[Reg.scala 28:23] skip @[Reg.scala 28:19] - cmdbuf_size <= _T_163 @[ahb_to_axi4.scala 197:33] - node _T_164 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 201:57] + cmdbuf_size <= _T_163 @[ahb_to_axi4.scala 196:33] + node _T_164 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 200:57] reg _T_165 : UInt, bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] when _T_164 : @[Reg.scala 28:19] _T_165 <= master_wstrb @[Reg.scala 28:23] skip @[Reg.scala 28:19] - cmdbuf_wstrb <= _T_165 @[ahb_to_axi4.scala 200:33] - node _T_166 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 204:59] + cmdbuf_wstrb <= _T_165 @[ahb_to_axi4.scala 199:33] + node _T_166 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 203:59] inst rvclkhdr_3 of rvclkhdr_3 @[el2_lib.scala 508:23] rvclkhdr_3.clock <= clock rvclkhdr_3.reset <= reset @@ -489,8 +483,8 @@ circuit ahb_to_axi4 : rvclkhdr_3.io.scan_mode <= io.scan_mode @[el2_lib.scala 512:24] reg _T_167 : UInt, rvclkhdr_3.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[el2_lib.scala 514:16] _T_167 <= ahb_haddr_q @[el2_lib.scala 514:16] - cmdbuf_addr <= _T_167 @[ahb_to_axi4.scala 204:17] - node _T_168 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 205:62] + cmdbuf_addr <= _T_167 @[ahb_to_axi4.scala 203:17] + node _T_168 = bits(cmdbuf_wr_en, 0, 0) @[ahb_to_axi4.scala 204:62] inst rvclkhdr_4 of rvclkhdr_4 @[el2_lib.scala 508:23] rvclkhdr_4.clock <= clock rvclkhdr_4.reset <= reset @@ -499,44 +493,44 @@ circuit ahb_to_axi4 : rvclkhdr_4.io.scan_mode <= io.scan_mode @[el2_lib.scala 512:24] reg _T_169 : UInt, rvclkhdr_4.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[el2_lib.scala 514:16] _T_169 <= io.ahb_hwdata @[el2_lib.scala 514:16] - cmdbuf_wdata <= _T_169 @[ahb_to_axi4.scala 205:18] - node _T_170 = and(cmdbuf_vld, cmdbuf_write) @[ahb_to_axi4.scala 208:43] - io.axi_awvalid <= _T_170 @[ahb_to_axi4.scala 208:29] - io.axi_awid <= UInt<1>("h00") @[ahb_to_axi4.scala 209:29] - io.axi_awaddr <= cmdbuf_addr @[ahb_to_axi4.scala 210:29] - node _T_171 = bits(cmdbuf_size, 1, 0) @[ahb_to_axi4.scala 211:55] + cmdbuf_wdata <= _T_169 @[ahb_to_axi4.scala 204:18] + node _T_170 = and(cmdbuf_vld, cmdbuf_write) @[ahb_to_axi4.scala 207:43] + io.axi_awvalid <= _T_170 @[ahb_to_axi4.scala 207:29] + io.axi_awid <= UInt<1>("h00") @[ahb_to_axi4.scala 208:29] + io.axi_awaddr <= cmdbuf_addr @[ahb_to_axi4.scala 209:29] + node _T_171 = bits(cmdbuf_size, 1, 0) @[ahb_to_axi4.scala 210:55] node _T_172 = cat(UInt<1>("h00"), _T_171) @[Cat.scala 29:58] - io.axi_awsize <= _T_172 @[ahb_to_axi4.scala 211:29] + io.axi_awsize <= _T_172 @[ahb_to_axi4.scala 210:29] node _T_173 = mux(UInt<1>("h00"), UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] - io.axi_awprot <= _T_173 @[ahb_to_axi4.scala 212:29] + io.axi_awprot <= _T_173 @[ahb_to_axi4.scala 211:29] node _T_174 = mux(UInt<1>("h00"), UInt<8>("h0ff"), UInt<8>("h00")) @[Bitwise.scala 72:12] - io.axi_awlen <= _T_174 @[ahb_to_axi4.scala 213:29] - io.axi_awburst <= UInt<1>("h01") @[ahb_to_axi4.scala 214:29] - node _T_175 = and(cmdbuf_vld, cmdbuf_write) @[ahb_to_axi4.scala 216:43] - io.axi_wvalid <= _T_175 @[ahb_to_axi4.scala 216:29] - io.axi_wdata <= cmdbuf_wdata @[ahb_to_axi4.scala 217:29] - io.axi_wstrb <= cmdbuf_wstrb @[ahb_to_axi4.scala 218:29] - io.axi_wlast <= UInt<1>("h01") @[ahb_to_axi4.scala 219:29] - io.axi_bready <= UInt<1>("h01") @[ahb_to_axi4.scala 221:29] - node _T_176 = eq(cmdbuf_write, UInt<1>("h00")) @[ahb_to_axi4.scala 223:45] - node _T_177 = and(cmdbuf_vld, _T_176) @[ahb_to_axi4.scala 223:43] - io.axi_arvalid <= _T_177 @[ahb_to_axi4.scala 223:29] - io.axi_arid <= UInt<1>("h00") @[ahb_to_axi4.scala 224:29] - io.axi_araddr <= cmdbuf_addr @[ahb_to_axi4.scala 225:29] - node _T_178 = bits(cmdbuf_size, 1, 0) @[ahb_to_axi4.scala 226:55] + io.axi_awlen <= _T_174 @[ahb_to_axi4.scala 212:29] + io.axi_awburst <= UInt<1>("h01") @[ahb_to_axi4.scala 213:29] + node _T_175 = and(cmdbuf_vld, cmdbuf_write) @[ahb_to_axi4.scala 215:43] + io.axi_wvalid <= _T_175 @[ahb_to_axi4.scala 215:29] + io.axi_wdata <= cmdbuf_wdata @[ahb_to_axi4.scala 216:29] + io.axi_wstrb <= cmdbuf_wstrb @[ahb_to_axi4.scala 217:29] + io.axi_wlast <= UInt<1>("h01") @[ahb_to_axi4.scala 218:29] + io.axi_bready <= UInt<1>("h01") @[ahb_to_axi4.scala 220:29] + node _T_176 = eq(cmdbuf_write, UInt<1>("h00")) @[ahb_to_axi4.scala 222:45] + node _T_177 = and(cmdbuf_vld, _T_176) @[ahb_to_axi4.scala 222:43] + io.axi_arvalid <= _T_177 @[ahb_to_axi4.scala 222:29] + io.axi_arid <= UInt<1>("h00") @[ahb_to_axi4.scala 223:29] + io.axi_araddr <= cmdbuf_addr @[ahb_to_axi4.scala 224:29] + node _T_178 = bits(cmdbuf_size, 1, 0) @[ahb_to_axi4.scala 225:55] node _T_179 = cat(UInt<1>("h00"), _T_178) @[Cat.scala 29:58] - io.axi_arsize <= _T_179 @[ahb_to_axi4.scala 226:29] + io.axi_arsize <= _T_179 @[ahb_to_axi4.scala 225:29] node _T_180 = mux(UInt<1>("h00"), UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] - io.axi_arprot <= _T_180 @[ahb_to_axi4.scala 227:29] + io.axi_arprot <= _T_180 @[ahb_to_axi4.scala 226:29] node _T_181 = mux(UInt<1>("h00"), UInt<8>("h0ff"), UInt<8>("h00")) @[Bitwise.scala 72:12] - io.axi_arlen <= _T_181 @[ahb_to_axi4.scala 228:29] - io.axi_arburst <= UInt<1>("h01") @[ahb_to_axi4.scala 229:29] - io.axi_rready <= UInt<1>("h01") @[ahb_to_axi4.scala 231:29] + io.axi_arlen <= _T_181 @[ahb_to_axi4.scala 227:29] + io.axi_arburst <= UInt<1>("h01") @[ahb_to_axi4.scala 228:29] + io.axi_rready <= UInt<1>("h01") @[ahb_to_axi4.scala 230:29] inst rvclkhdr_5 of rvclkhdr_5 @[el2_lib.scala 483:22] rvclkhdr_5.clock <= clock rvclkhdr_5.reset <= reset rvclkhdr_5.io.clk <= clock @[el2_lib.scala 484:17] rvclkhdr_5.io.en <= io.bus_clk_en @[el2_lib.scala 485:16] rvclkhdr_5.io.scan_mode <= io.scan_mode @[el2_lib.scala 486:23] - bus_clk <= rvclkhdr_5.io.l1clk @[ahb_to_axi4.scala 234:29] + bus_clk <= rvclkhdr_5.io.l1clk @[ahb_to_axi4.scala 233:29] diff --git a/ahb_to_axi4.v b/ahb_to_axi4.v index 5fdbf1eb..3ea31de9 100644 --- a/ahb_to_axi4.v +++ b/ahb_to_axi4.v @@ -106,47 +106,48 @@ module ahb_to_axi4( wire rvclkhdr_5_io_clk; // @[el2_lib.scala 483:22] wire rvclkhdr_5_io_en; // @[el2_lib.scala 483:22] wire rvclkhdr_5_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] + wire ahb_addr_clk = rvclkhdr_1_io_l1clk; // @[ahb_to_axi4.scala 85:35 ahb_to_axi4.scala 184:33] + reg [31:0] ahb_haddr_q; // @[ahb_to_axi4.scala 177:67] + wire ahb_addr_in_dccm = ahb_haddr_q[31:16] == 16'hf004; // @[el2_lib.scala 227:29] + wire ahb_addr_in_iccm = ahb_haddr_q[31:16] == 16'hee00; // @[el2_lib.scala 227:29] + wire ahb_clk = rvclkhdr_io_l1clk; // @[ahb_to_axi4.scala 84:35 ahb_to_axi4.scala 183: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 ahb_hready = io_ahb_hreadyout & io_ahb_hreadyin; // @[ahb_to_axi4.scala 155:53] + wire _T_9 = ahb_hready & io_ahb_htrans[1]; // @[ahb_to_axi4.scala 127:36] + wire _T_10 = _T_9 & io_ahb_hsel; // @[ahb_to_axi4.scala 127: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_5_io_l1clk; // @[ahb_to_axi4.scala 98:35 ahb_to_axi4.scala 234:29] - reg cmdbuf_vld; // @[ahb_to_axi4.scala 191:63] - 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:97] - 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_13 = io_ahb_htrans == 2'h0; // @[ahb_to_axi4.scala 130:66] + wire _T_14 = io_ahb_hresp | _T_13; // @[ahb_to_axi4.scala 130:43] + wire _T_15 = ~io_ahb_hsel; // @[ahb_to_axi4.scala 130:80] + wire _T_16 = _T_14 | _T_15; // @[ahb_to_axi4.scala 130:78] + wire bus_clk = rvclkhdr_5_io_l1clk; // @[ahb_to_axi4.scala 98:35 ahb_to_axi4.scala 233:29] + reg cmdbuf_vld; // @[ahb_to_axi4.scala 190:63] + wire _T_150 = io_axi_awvalid & io_axi_awready; // @[ahb_to_axi4.scala 188:68] + wire _T_151 = io_axi_arvalid & io_axi_arready; // @[ahb_to_axi4.scala 188:104] + wire _T_152 = _T_150 | _T_151; // @[ahb_to_axi4.scala 188:86] + wire _T_153 = ~_T_152; // @[ahb_to_axi4.scala 188:50] + wire cmdbuf_full = cmdbuf_vld & _T_153; // @[ahb_to_axi4.scala 188:48] + wire _T_20 = ~cmdbuf_full; // @[ahb_to_axi4.scala 131:26] + wire _T_21 = _T_20 | io_ahb_hresp; // @[ahb_to_axi4.scala 131:39] + wire _T_24 = io_ahb_htrans == 2'h1; // @[ahb_to_axi4.scala 132:79] + wire _T_25 = _T_24 & io_ahb_hsel; // @[ahb_to_axi4.scala 132:97] + wire _T_26 = io_ahb_hresp | _T_25; // @[ahb_to_axi4.scala 132:55] + wire _T_27 = ~_T_26; // @[ahb_to_axi4.scala 132:40] + wire _T_28 = _T_20 & _T_27; // @[ahb_to_axi4.scala 132: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_33 = ~io_ahb_hresp; // @[ahb_to_axi4.scala 137:25] + wire _T_35 = _T_33 & _T_20; // @[ahb_to_axi4.scala 137: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 _T_37 = ~cmdbuf_write; // @[ahb_to_axi4.scala 141:41] + wire _T_38 = io_axi_rvalid & _T_37; // @[ahb_to_axi4.scala 141:39] + wire _T_40 = |io_axi_rresp; // @[ahb_to_axi4.scala 143: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 _T_41 = buf_state_en & _T_40; // @[ahb_to_axi4.scala 143: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] @@ -155,81 +156,83 @@ module ahb_to_axi4( 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] + reg [2:0] ahb_hsize_q; // @[ahb_to_axi4.scala 175:67] + wire _T_45 = ahb_hsize_q == 3'h0; // @[ahb_to_axi4.scala 148: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_49 = 8'h1 << ahb_haddr_q[2:0]; // @[ahb_to_axi4.scala 148:80] + wire [7:0] _T_50 = _T_47 & _T_49; // @[ahb_to_axi4.scala 148:72] + wire _T_52 = ahb_hsize_q == 3'h1; // @[ahb_to_axi4.scala 149: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_23 = {{1'd0}, _T_54}; // @[ahb_to_axi4.scala 150:72] - wire [8:0] _T_57 = _GEN_23 & _T_56; // @[ahb_to_axi4.scala 150:72] - wire [8:0] _GEN_24 = {{1'd0}, _T_50}; // @[ahb_to_axi4.scala 149:111] - wire [8:0] _T_58 = _GEN_24 | _T_57; // @[ahb_to_axi4.scala 149:111] - wire _T_60 = ahb_hsize_q == 3'h2; // @[ahb_to_axi4.scala 151:62] + wire [8:0] _T_56 = 9'h3 << ahb_haddr_q[2:0]; // @[ahb_to_axi4.scala 149:80] + wire [8:0] _GEN_23 = {{1'd0}, _T_54}; // @[ahb_to_axi4.scala 149:72] + wire [8:0] _T_57 = _GEN_23 & _T_56; // @[ahb_to_axi4.scala 149:72] + wire [8:0] _GEN_24 = {{1'd0}, _T_50}; // @[ahb_to_axi4.scala 148:111] + wire [8:0] _T_58 = _GEN_24 | _T_57; // @[ahb_to_axi4.scala 148:111] + wire _T_60 = ahb_hsize_q == 3'h2; // @[ahb_to_axi4.scala 150: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_25 = {{3'd0}, _T_62}; // @[ahb_to_axi4.scala 151:72] - wire [10:0] _T_65 = _GEN_25 & _T_64; // @[ahb_to_axi4.scala 151:72] - wire [10:0] _GEN_26 = {{2'd0}, _T_58}; // @[ahb_to_axi4.scala 150:111] - wire [10:0] _T_66 = _GEN_26 | _T_65; // @[ahb_to_axi4.scala 150:111] - wire _T_68 = ahb_hsize_q == 3'h3; // @[ahb_to_axi4.scala 152:62] + wire [10:0] _T_64 = 11'hf << ahb_haddr_q[2:0]; // @[ahb_to_axi4.scala 150:80] + wire [10:0] _GEN_25 = {{3'd0}, _T_62}; // @[ahb_to_axi4.scala 150:72] + wire [10:0] _T_65 = _GEN_25 & _T_64; // @[ahb_to_axi4.scala 150:72] + wire [10:0] _GEN_26 = {{2'd0}, _T_58}; // @[ahb_to_axi4.scala 149:111] + wire [10:0] _T_66 = _GEN_26 | _T_65; // @[ahb_to_axi4.scala 149:111] + wire _T_68 = ahb_hsize_q == 3'h3; // @[ahb_to_axi4.scala 151:62] wire [7:0] _T_70 = _T_68 ? 8'hff : 8'h0; // @[Bitwise.scala 72:12] - wire [10:0] _GEN_27 = {{3'd0}, _T_70}; // @[ahb_to_axi4.scala 151:111] - wire [10:0] _T_72 = _T_66 | _GEN_27; // @[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 [10:0] _GEN_27 = {{3'd0}, _T_70}; // @[ahb_to_axi4.scala 150:111] + wire [10:0] _T_72 = _T_66 | _GEN_27; // @[ahb_to_axi4.scala 150:111] + reg ahb_hready_q; // @[ahb_to_axi4.scala 173:62] + wire _T_73 = ~ahb_hready_q; // @[ahb_to_axi4.scala 154:68] + reg ahb_hresp_q; // @[ahb_to_axi4.scala 172:62] + wire _T_74 = ahb_hresp_q & _T_73; // @[ahb_to_axi4.scala 154:66] + wire _T_76 = buf_state == 2'h0; // @[ahb_to_axi4.scala 154:112] + wire _T_77 = _T_20 | _T_76; // @[ahb_to_axi4.scala 154:99] + wire _T_78 = buf_state == 2'h2; // @[ahb_to_axi4.scala 154:137] + wire _T_79 = buf_state == 2'h3; // @[ahb_to_axi4.scala 154:156] + wire _T_80 = _T_78 | _T_79; // @[ahb_to_axi4.scala 154:144] + wire _T_81 = ~_T_80; // @[ahb_to_axi4.scala 154:125] + wire _T_82 = _T_77 & _T_81; // @[ahb_to_axi4.scala 154:123] + reg buf_read_error; // @[ahb_to_axi4.scala 169:62] + wire _T_83 = ~buf_read_error; // @[ahb_to_axi4.scala 154:169] + wire _T_84 = _T_82 & _T_83; // @[ahb_to_axi4.scala 154: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] - wire _T_156 = cmdbuf_wr_en | cmdbuf_vld; // @[ahb_to_axi4.scala 191:68] - wire _T_157 = ~cmdbuf_rst; // @[ahb_to_axi4.scala 191:112] + wire buf_rdata_clk = rvclkhdr_2_io_l1clk; // @[ahb_to_axi4.scala 86:35 ahb_to_axi4.scala 185:33] + reg [63:0] buf_rdata; // @[ahb_to_axi4.scala 168:68] + reg [1:0] ahb_htrans_q; // @[ahb_to_axi4.scala 174:62] + wire _T_93 = ahb_htrans_q != 2'h0; // @[ahb_to_axi4.scala 158:56] + wire _T_94 = buf_state != 2'h0; // @[ahb_to_axi4.scala 158:78] + wire _T_95 = _T_93 & _T_94; // @[ahb_to_axi4.scala 158:65] + wire _T_96 = ahb_addr_in_dccm | ahb_addr_in_iccm; // @[ahb_to_axi4.scala 159:57] + wire _T_97 = ~_T_96; // @[ahb_to_axi4.scala 159:38] + reg ahb_hwrite_q; // @[ahb_to_axi4.scala 176:67] + wire _T_98 = ahb_addr_in_dccm & ahb_hwrite_q; // @[ahb_to_axi4.scala 160:75] + wire _T_99 = ahb_addr_in_iccm | _T_98; // @[ahb_to_axi4.scala 160:55] + wire _T_101 = ahb_hsize_q[1:0] == 2'h2; // @[ahb_to_axi4.scala 160:115] + wire _T_103 = ahb_hsize_q[1:0] == 2'h3; // @[ahb_to_axi4.scala 160:144] + wire _T_104 = _T_101 | _T_103; // @[ahb_to_axi4.scala 160:124] + wire _T_105 = ~_T_104; // @[ahb_to_axi4.scala 160:95] + wire _T_106 = _T_99 & _T_105; // @[ahb_to_axi4.scala 160:93] + wire _T_107 = _T_97 | _T_106; // @[ahb_to_axi4.scala 159:78] + wire _T_111 = _T_52 & ahb_haddr_q[0]; // @[ahb_to_axi4.scala 161:64] + wire _T_112 = _T_107 | _T_111; // @[ahb_to_axi4.scala 160:155] + wire _T_116 = |ahb_haddr_q[1:0]; // @[ahb_to_axi4.scala 162:85] + wire _T_117 = _T_60 & _T_116; // @[ahb_to_axi4.scala 162:64] + wire _T_118 = _T_112 | _T_117; // @[ahb_to_axi4.scala 161:84] + wire _T_122 = |ahb_haddr_q[2:0]; // @[ahb_to_axi4.scala 163:85] + wire _T_123 = _T_68 & _T_122; // @[ahb_to_axi4.scala 163:64] + wire _T_124 = _T_118 | _T_123; // @[ahb_to_axi4.scala 162:90] + wire _T_125 = _T_95 & _T_124; // @[ahb_to_axi4.scala 158:89] + wire _T_126 = _T_125 | buf_read_error; // @[ahb_to_axi4.scala 163:92] + wire _T_145 = ~cmdbuf_wr_en; // @[ahb_to_axi4.scala 187:111] + wire _T_146 = _T_152 & _T_145; // @[ahb_to_axi4.scala 187:109] + wire _T_148 = io_ahb_hresp & _T_37; // @[ahb_to_axi4.scala 187:142] + wire cmdbuf_rst = _T_146 | _T_148; // @[ahb_to_axi4.scala 187:126] + wire _T_156 = cmdbuf_wr_en | cmdbuf_vld; // @[ahb_to_axi4.scala 190:68] + wire _T_157 = ~cmdbuf_rst; // @[ahb_to_axi4.scala 190:112] reg [2:0] _T_163; // @[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] + wire [7:0] master_wstrb = _T_72[7:0]; // @[ahb_to_axi4.scala 148:33] reg [31:0] cmdbuf_addr; // @[el2_lib.scala 514:16] reg [63:0] cmdbuf_wdata; // @[el2_lib.scala 514:16] - wire [1:0] cmdbuf_size = _T_163[1:0]; // @[ahb_to_axi4.scala 197:33] + wire [1:0] cmdbuf_size = _T_163[1:0]; // @[ahb_to_axi4.scala 196:33] rvclkhdr rvclkhdr ( // @[el2_lib.scala 483:22] .io_l1clk(rvclkhdr_io_l1clk), .io_clk(rvclkhdr_io_clk), @@ -266,27 +269,27 @@ module ahb_to_axi4( .io_en(rvclkhdr_5_io_en), .io_scan_mode(rvclkhdr_5_io_scan_mode) ); - assign io_axi_awvalid = cmdbuf_vld & cmdbuf_write; // @[ahb_to_axi4.scala 208:29] - assign io_axi_awaddr = cmdbuf_addr; // @[ahb_to_axi4.scala 210:29] - assign io_axi_awsize = {1'h0,cmdbuf_size}; // @[ahb_to_axi4.scala 211:29] - assign io_axi_awprot = 3'h0; // @[ahb_to_axi4.scala 212:29] - assign io_axi_awlen = 8'h0; // @[ahb_to_axi4.scala 213:29] - assign io_axi_awburst = 2'h1; // @[ahb_to_axi4.scala 214:29] - assign io_axi_wvalid = cmdbuf_vld & cmdbuf_write; // @[ahb_to_axi4.scala 216:29] - assign io_axi_wdata = cmdbuf_wdata; // @[ahb_to_axi4.scala 217:29] - assign io_axi_wstrb = cmdbuf_wstrb; // @[ahb_to_axi4.scala 218:29] - assign io_axi_wlast = 1'h1; // @[ahb_to_axi4.scala 219:29] - assign io_axi_bready = 1'h1; // @[ahb_to_axi4.scala 221:29] - assign io_axi_arvalid = cmdbuf_vld & _T_37; // @[ahb_to_axi4.scala 223:29] - assign io_axi_araddr = cmdbuf_addr; // @[ahb_to_axi4.scala 225:29] - assign io_axi_arsize = {1'h0,cmdbuf_size}; // @[ahb_to_axi4.scala 226:29] - assign io_axi_arprot = 3'h0; // @[ahb_to_axi4.scala 227:29] - assign io_axi_arlen = 8'h0; // @[ahb_to_axi4.scala 228:29] - assign io_axi_arburst = 2'h1; // @[ahb_to_axi4.scala 229:29] - assign io_axi_rready = 1'h1; // @[ahb_to_axi4.scala 231: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 io_axi_awvalid = cmdbuf_vld & cmdbuf_write; // @[ahb_to_axi4.scala 207:29] + assign io_axi_awaddr = cmdbuf_addr; // @[ahb_to_axi4.scala 209:29] + assign io_axi_awsize = {1'h0,cmdbuf_size}; // @[ahb_to_axi4.scala 210:29] + assign io_axi_awprot = 3'h0; // @[ahb_to_axi4.scala 211:29] + assign io_axi_awlen = 8'h0; // @[ahb_to_axi4.scala 212:29] + assign io_axi_awburst = 2'h1; // @[ahb_to_axi4.scala 213:29] + assign io_axi_wvalid = cmdbuf_vld & cmdbuf_write; // @[ahb_to_axi4.scala 215:29] + assign io_axi_wdata = cmdbuf_wdata; // @[ahb_to_axi4.scala 216:29] + assign io_axi_wstrb = cmdbuf_wstrb; // @[ahb_to_axi4.scala 217:29] + assign io_axi_wlast = 1'h1; // @[ahb_to_axi4.scala 218:29] + assign io_axi_bready = 1'h1; // @[ahb_to_axi4.scala 220:29] + assign io_axi_arvalid = cmdbuf_vld & _T_37; // @[ahb_to_axi4.scala 222:29] + assign io_axi_araddr = cmdbuf_addr; // @[ahb_to_axi4.scala 224:29] + assign io_axi_arsize = {1'h0,cmdbuf_size}; // @[ahb_to_axi4.scala 225:29] + assign io_axi_arprot = 3'h0; // @[ahb_to_axi4.scala 226:29] + assign io_axi_arlen = 8'h0; // @[ahb_to_axi4.scala 227:29] + assign io_axi_arburst = 2'h1; // @[ahb_to_axi4.scala 228:29] + assign io_axi_rready = 1'h1; // @[ahb_to_axi4.scala 230:29] + assign io_ahb_hrdata = buf_rdata; // @[ahb_to_axi4.scala 157:33] + assign io_ahb_hreadyout = io_ahb_hresp ? _T_74 : _T_84; // @[ahb_to_axi4.scala 154:33] + assign io_ahb_hresp = _T_126 | _T_74; // @[ahb_to_axi4.scala 158: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] diff --git a/src/main/scala/lib/ahb_to_axi4.scala b/src/main/scala/lib/ahb_to_axi4.scala index dbae8bfa..aa6c4eb4 100644 --- a/src/main/scala/lib/ahb_to_axi4.scala +++ b/src/main/scala/lib/ahb_to_axi4.scala @@ -74,8 +74,8 @@ class ahb_to_axi4 extends Module with el2_lib with RequireAsyncReset { 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) + // 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) @@ -98,21 +98,20 @@ class ahb_to_axi4 extends Module with el2_lib with RequireAsyncReset { 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) - + val (ahb_addr_in_dccm_region_nc,ahb_addr_in_dccm) = rvrangecheck(DCCM_SADR,DCCM_SIZE,ahb_haddr_q) + val (ahb_addr_in_iccm_region_nc,ahb_addr_in_iccm) = if(ICCM_ENABLE) rvrangecheck(ICCM_SADR ,ICCM_SIZE,ahb_haddr_q) else (0.U,0.U) // 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 - - } +// if (ICCM_ENABLE == 1) { +// ahb_addr_in_iccm := rvrangecheck(ahb_haddr_q.asUInt, aslong(ICCM_SADR).asUInt(), ICCM_SIZE)._1 +// ahb_addr_in_iccm_region_nc := rvrangecheck(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 +// +// } +val (ahb_addr_in_pic_region_nc, ahb_addr_in_pic) = rvrangecheck(PIC_BASE_ADDR,PIC_SIZE,ahb_haddr_q) // 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) diff --git a/target/scala-2.12/classes/lib/AHB_main$.class b/target/scala-2.12/classes/lib/AHB_main$.class index c9f3ec78ea5a6497cd7eb09469d6aedd40b00fee..38fae01ed3b077db07291797e52765da57a6e61c 100644 GIT binary patch delta 103 zcmdllw_k3<4=%>nlYesA0?7bg@yUMNo>10$ZYv<`6}JtLROf-nOHQuiu>kV7^SFXl mNlq5ywFI+b7~f7_%Nxr1hJl0OErUM8>&e`F6+oF5zTE)v@g?2> delta 103 zcmdllw_k3<4=%10$ZYv<`6}JtLROf-nOHQuiu>kV7^SFXl mNlq5ywFI+b7~f4^%Nxr1mVtxe9fLl@o5|dK6+oF5zTE)ycO~oq 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 d4c0f487f46c62c6fd3cef714cc3d505ea98af9e..a9800433e82cdf7d9a583d09a00daa5108904382 100644 GIT binary patch delta 19 ZcmaFF`iOOdD-+}E$!<&mKyo^hHvmja2S5M- delta 19 ZcmaFF`iOOdD-+|J$!<&mKyo^hHvmjq2SNY< diff --git a/target/scala-2.12/classes/lib/ahb_to_axi4.class b/target/scala-2.12/classes/lib/ahb_to_axi4.class index 8328c4c949404027506c1bdcf2494d3ffcbe99cf..3c011a20f2c0d31c94f2c1db6f58ba40a4bda87f 100644 GIT binary patch literal 111457 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Øk1D58!1>J=9N^JeCiZO^F>Wk>)l9g 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 NQCp9H&*}^!{{~^V<#PZ4 literal 110948 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 DFY`0t