DMA Updated
This commit is contained in:
parent
23ecf60a50
commit
0f1f134851
86
dbg.fir
86
dbg.fir
|
@ -144,6 +144,54 @@ circuit dbg :
|
||||||
clkhdr.EN <= io.en @[lib.scala 321:18]
|
clkhdr.EN <= io.en @[lib.scala 321:18]
|
||||||
clkhdr.SE <= io.scan_mode @[lib.scala 322:18]
|
clkhdr.SE <= io.scan_mode @[lib.scala 322:18]
|
||||||
|
|
||||||
|
extmodule gated_latch_6 :
|
||||||
|
output Q : Clock
|
||||||
|
input CK : Clock
|
||||||
|
input EN : UInt<1>
|
||||||
|
input SE : UInt<1>
|
||||||
|
|
||||||
|
defname = gated_latch
|
||||||
|
|
||||||
|
|
||||||
|
module rvclkhdr_6 :
|
||||||
|
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_6 @[lib.scala 318:26]
|
||||||
|
clkhdr.SE is invalid
|
||||||
|
clkhdr.EN is invalid
|
||||||
|
clkhdr.CK is invalid
|
||||||
|
clkhdr.Q is invalid
|
||||||
|
io.l1clk <= clkhdr.Q @[lib.scala 319:14]
|
||||||
|
clkhdr.CK <= io.clk @[lib.scala 320:18]
|
||||||
|
clkhdr.EN <= io.en @[lib.scala 321:18]
|
||||||
|
clkhdr.SE <= io.scan_mode @[lib.scala 322:18]
|
||||||
|
|
||||||
|
extmodule gated_latch_7 :
|
||||||
|
output Q : Clock
|
||||||
|
input CK : Clock
|
||||||
|
input EN : UInt<1>
|
||||||
|
input SE : UInt<1>
|
||||||
|
|
||||||
|
defname = gated_latch
|
||||||
|
|
||||||
|
|
||||||
|
module rvclkhdr_7 :
|
||||||
|
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_7 @[lib.scala 318:26]
|
||||||
|
clkhdr.SE is invalid
|
||||||
|
clkhdr.EN is invalid
|
||||||
|
clkhdr.CK is invalid
|
||||||
|
clkhdr.Q is invalid
|
||||||
|
io.l1clk <= clkhdr.Q @[lib.scala 319:14]
|
||||||
|
clkhdr.CK <= io.clk @[lib.scala 320:18]
|
||||||
|
clkhdr.EN <= io.en @[lib.scala 321:18]
|
||||||
|
clkhdr.SE <= io.scan_mode @[lib.scala 322:18]
|
||||||
|
|
||||||
module dbg :
|
module dbg :
|
||||||
input clock : Clock
|
input clock : Clock
|
||||||
input reset : AsyncReset
|
input reset : AsyncReset
|
||||||
|
@ -640,10 +688,14 @@ circuit dbg :
|
||||||
node command_din = cat(_T_300, _T_298) @[Cat.scala 29:58]
|
node command_din = cat(_T_300, _T_298) @[Cat.scala 29:58]
|
||||||
node _T_301 = eq(dbg_dm_rst_l, UInt<1>("h00")) @[dbg.scala 237:32]
|
node _T_301 = eq(dbg_dm_rst_l, UInt<1>("h00")) @[dbg.scala 237:32]
|
||||||
node _T_302 = asAsyncReset(_T_301) @[dbg.scala 237:59]
|
node _T_302 = asAsyncReset(_T_301) @[dbg.scala 237:59]
|
||||||
reg command_reg : UInt, clock with : (reset => (_T_302, UInt<1>("h00"))) @[Reg.scala 27:20]
|
inst rvclkhdr_5 of rvclkhdr_5 @[lib.scala 352:23]
|
||||||
when command_wren : @[Reg.scala 28:19]
|
rvclkhdr_5.clock <= clock
|
||||||
command_reg <= command_din @[Reg.scala 28:23]
|
rvclkhdr_5.reset <= _T_302
|
||||||
skip @[Reg.scala 28:19]
|
rvclkhdr_5.io.clk <= clock @[lib.scala 354:18]
|
||||||
|
rvclkhdr_5.io.en <= command_wren @[lib.scala 355:17]
|
||||||
|
rvclkhdr_5.io.scan_mode <= io.scan_mode @[lib.scala 356:24]
|
||||||
|
reg command_reg : UInt, rvclkhdr_5.io.l1clk with : (reset => (_T_302, UInt<1>("h00"))) @[lib.scala 358:16]
|
||||||
|
command_reg <= command_din @[lib.scala 358:16]
|
||||||
node _T_303 = and(io.dmi_reg_en, io.dmi_reg_wr_en) @[dbg.scala 241:39]
|
node _T_303 = and(io.dmi_reg_en, io.dmi_reg_wr_en) @[dbg.scala 241:39]
|
||||||
node _T_304 = eq(io.dmi_reg_addr, UInt<3>("h04")) @[dbg.scala 241:77]
|
node _T_304 = eq(io.dmi_reg_addr, UInt<3>("h04")) @[dbg.scala 241:77]
|
||||||
node _T_305 = and(_T_303, _T_304) @[dbg.scala 241:58]
|
node _T_305 = and(_T_303, _T_304) @[dbg.scala 241:58]
|
||||||
|
@ -664,10 +716,14 @@ circuit dbg :
|
||||||
node data0_din = or(_T_313, _T_316) @[dbg.scala 245:64]
|
node data0_din = or(_T_313, _T_316) @[dbg.scala 245:64]
|
||||||
node _T_317 = eq(dbg_dm_rst_l, UInt<1>("h00")) @[dbg.scala 246:30]
|
node _T_317 = eq(dbg_dm_rst_l, UInt<1>("h00")) @[dbg.scala 246:30]
|
||||||
node _T_318 = asAsyncReset(_T_317) @[dbg.scala 246:57]
|
node _T_318 = asAsyncReset(_T_317) @[dbg.scala 246:57]
|
||||||
reg data0_reg : UInt, clock with : (reset => (_T_318, UInt<1>("h00"))) @[Reg.scala 27:20]
|
inst rvclkhdr_6 of rvclkhdr_6 @[lib.scala 352:23]
|
||||||
when data0_reg_wren : @[Reg.scala 28:19]
|
rvclkhdr_6.clock <= clock
|
||||||
data0_reg <= data0_din @[Reg.scala 28:23]
|
rvclkhdr_6.reset <= _T_318
|
||||||
skip @[Reg.scala 28:19]
|
rvclkhdr_6.io.clk <= clock @[lib.scala 354:18]
|
||||||
|
rvclkhdr_6.io.en <= data0_reg_wren @[lib.scala 355:17]
|
||||||
|
rvclkhdr_6.io.scan_mode <= io.scan_mode @[lib.scala 356:24]
|
||||||
|
reg data0_reg : UInt, rvclkhdr_6.io.l1clk with : (reset => (_T_318, UInt<1>("h00"))) @[lib.scala 358:16]
|
||||||
|
data0_reg <= data0_din @[lib.scala 358:16]
|
||||||
node _T_319 = and(io.dmi_reg_en, io.dmi_reg_wr_en) @[dbg.scala 250:39]
|
node _T_319 = and(io.dmi_reg_en, io.dmi_reg_wr_en) @[dbg.scala 250:39]
|
||||||
node _T_320 = eq(io.dmi_reg_addr, UInt<3>("h05")) @[dbg.scala 250:77]
|
node _T_320 = eq(io.dmi_reg_addr, UInt<3>("h05")) @[dbg.scala 250:77]
|
||||||
node _T_321 = and(_T_319, _T_320) @[dbg.scala 250:58]
|
node _T_321 = and(_T_319, _T_320) @[dbg.scala 250:58]
|
||||||
|
@ -678,13 +734,13 @@ circuit dbg :
|
||||||
node data1_din = and(_T_324, io.dmi_reg_wdata) @[dbg.scala 251:44]
|
node data1_din = and(_T_324, io.dmi_reg_wdata) @[dbg.scala 251:44]
|
||||||
node _T_325 = eq(dbg_dm_rst_l, UInt<1>("h00")) @[dbg.scala 252:27]
|
node _T_325 = eq(dbg_dm_rst_l, UInt<1>("h00")) @[dbg.scala 252:27]
|
||||||
node _T_326 = asAsyncReset(_T_325) @[dbg.scala 252:54]
|
node _T_326 = asAsyncReset(_T_325) @[dbg.scala 252:54]
|
||||||
inst rvclkhdr_5 of rvclkhdr_5 @[lib.scala 352:23]
|
inst rvclkhdr_7 of rvclkhdr_7 @[lib.scala 352:23]
|
||||||
rvclkhdr_5.clock <= clock
|
rvclkhdr_7.clock <= clock
|
||||||
rvclkhdr_5.reset <= _T_326
|
rvclkhdr_7.reset <= _T_326
|
||||||
rvclkhdr_5.io.clk <= clock @[lib.scala 354:18]
|
rvclkhdr_7.io.clk <= clock @[lib.scala 354:18]
|
||||||
rvclkhdr_5.io.en <= data1_reg_wren @[lib.scala 355:17]
|
rvclkhdr_7.io.en <= data1_reg_wren @[lib.scala 355:17]
|
||||||
rvclkhdr_5.io.scan_mode <= io.scan_mode @[lib.scala 356:24]
|
rvclkhdr_7.io.scan_mode <= io.scan_mode @[lib.scala 356:24]
|
||||||
reg _T_327 : UInt, rvclkhdr_5.io.l1clk with : (reset => (_T_326, UInt<1>("h00"))) @[lib.scala 358:16]
|
reg _T_327 : UInt, rvclkhdr_7.io.l1clk with : (reset => (_T_326, UInt<1>("h00"))) @[lib.scala 358:16]
|
||||||
_T_327 <= data1_din @[lib.scala 358:16]
|
_T_327 <= data1_din @[lib.scala 358:16]
|
||||||
data1_reg <= _T_327 @[dbg.scala 252:13]
|
data1_reg <= _T_327 @[dbg.scala 252:13]
|
||||||
wire dbg_nxtstate : UInt<3>
|
wire dbg_nxtstate : UInt<3>
|
||||||
|
|
203
dbg.v
203
dbg.v
|
@ -344,29 +344,36 @@ module dbg(
|
||||||
wire [20:0] _T_289 = {19'h0,abs_temp_12,1'h0}; // @[Cat.scala 29:58]
|
wire [20:0] _T_289 = {19'h0,abs_temp_12,1'h0}; // @[Cat.scala 29:58]
|
||||||
wire _T_294 = dbg_state == 3'h2; // @[dbg.scala 235:100]
|
wire _T_294 = dbg_state == 3'h2; // @[dbg.scala 235:100]
|
||||||
wire command_wren = _T_235 & _T_294; // @[dbg.scala 235:87]
|
wire command_wren = _T_235 & _T_294; // @[dbg.scala 235:87]
|
||||||
wire [31:0] command_din = {io_dmi_reg_wdata[31:24],1'h0,io_dmi_reg_wdata[22:20],3'h0,io_dmi_reg_wdata[16:0]}; // @[Cat.scala 29:58]
|
wire [19:0] _T_298 = {3'h0,io_dmi_reg_wdata[16:0]}; // @[Cat.scala 29:58]
|
||||||
reg [31:0] command_reg; // @[Reg.scala 27:20]
|
wire [11:0] _T_300 = {io_dmi_reg_wdata[31:24],1'h0,io_dmi_reg_wdata[22:20]}; // @[Cat.scala 29:58]
|
||||||
|
wire rvclkhdr_5_io_l1clk; // @[lib.scala 352:23]
|
||||||
|
wire rvclkhdr_5_io_clk; // @[lib.scala 352:23]
|
||||||
|
wire rvclkhdr_5_io_en; // @[lib.scala 352:23]
|
||||||
|
wire rvclkhdr_5_io_scan_mode; // @[lib.scala 352:23]
|
||||||
|
reg [31:0] command_reg; // @[lib.scala 358:16]
|
||||||
wire _T_305 = _T_87 & _T_217; // @[dbg.scala 241:58]
|
wire _T_305 = _T_87 & _T_217; // @[dbg.scala 241:58]
|
||||||
wire data0_reg_wren0 = _T_305 & _T_294; // @[dbg.scala 241:89]
|
wire data0_reg_wren0 = _T_305 & _T_294; // @[dbg.scala 241:89]
|
||||||
wire _T_307 = dbg_state == 3'h4; // @[dbg.scala 242:59]
|
wire _T_307 = dbg_state == 3'h4; // @[dbg.scala 242:59]
|
||||||
wire _T_308 = io_core_dbg_cmd_done & _T_307; // @[dbg.scala 242:46]
|
wire _T_308 = io_core_dbg_cmd_done & _T_307; // @[dbg.scala 242:46]
|
||||||
wire _T_310 = ~command_reg[16]; // @[dbg.scala 242:83]
|
wire _T_310 = ~command_reg[16]; // @[dbg.scala 242:83]
|
||||||
wire data0_reg_wren1 = _T_308 & _T_310; // @[dbg.scala 242:81]
|
wire data0_reg_wren1 = _T_308 & _T_310; // @[dbg.scala 242:81]
|
||||||
wire data0_reg_wren = data0_reg_wren0 | data0_reg_wren1; // @[dbg.scala 244:40]
|
|
||||||
wire [31:0] _T_312 = data0_reg_wren0 ? 32'hffffffff : 32'h0; // @[Bitwise.scala 72:12]
|
wire [31:0] _T_312 = data0_reg_wren0 ? 32'hffffffff : 32'h0; // @[Bitwise.scala 72:12]
|
||||||
wire [31:0] _T_313 = _T_312 & io_dmi_reg_wdata; // @[dbg.scala 245:45]
|
wire [31:0] _T_313 = _T_312 & io_dmi_reg_wdata; // @[dbg.scala 245:45]
|
||||||
wire [31:0] _T_315 = data0_reg_wren1 ? 32'hffffffff : 32'h0; // @[Bitwise.scala 72:12]
|
wire [31:0] _T_315 = data0_reg_wren1 ? 32'hffffffff : 32'h0; // @[Bitwise.scala 72:12]
|
||||||
wire [31:0] _T_316 = _T_315 & io_core_dbg_rddata; // @[dbg.scala 245:92]
|
wire [31:0] _T_316 = _T_315 & io_core_dbg_rddata; // @[dbg.scala 245:92]
|
||||||
wire [31:0] data0_din = _T_313 | _T_316; // @[dbg.scala 245:64]
|
wire rvclkhdr_6_io_l1clk; // @[lib.scala 352:23]
|
||||||
reg [31:0] data0_reg; // @[Reg.scala 27:20]
|
wire rvclkhdr_6_io_clk; // @[lib.scala 352:23]
|
||||||
|
wire rvclkhdr_6_io_en; // @[lib.scala 352:23]
|
||||||
|
wire rvclkhdr_6_io_scan_mode; // @[lib.scala 352:23]
|
||||||
|
reg [31:0] data0_reg; // @[lib.scala 358:16]
|
||||||
wire _T_320 = io_dmi_reg_addr == 7'h5; // @[dbg.scala 250:77]
|
wire _T_320 = io_dmi_reg_addr == 7'h5; // @[dbg.scala 250:77]
|
||||||
wire _T_321 = _T_87 & _T_320; // @[dbg.scala 250:58]
|
wire _T_321 = _T_87 & _T_320; // @[dbg.scala 250:58]
|
||||||
wire data1_reg_wren = _T_321 & _T_294; // @[dbg.scala 250:89]
|
wire data1_reg_wren = _T_321 & _T_294; // @[dbg.scala 250:89]
|
||||||
wire [31:0] _T_324 = data1_reg_wren ? 32'hffffffff : 32'h0; // @[Bitwise.scala 72:12]
|
wire [31:0] _T_324 = data1_reg_wren ? 32'hffffffff : 32'h0; // @[Bitwise.scala 72:12]
|
||||||
wire rvclkhdr_5_io_l1clk; // @[lib.scala 352:23]
|
wire rvclkhdr_7_io_l1clk; // @[lib.scala 352:23]
|
||||||
wire rvclkhdr_5_io_clk; // @[lib.scala 352:23]
|
wire rvclkhdr_7_io_clk; // @[lib.scala 352:23]
|
||||||
wire rvclkhdr_5_io_en; // @[lib.scala 352:23]
|
wire rvclkhdr_7_io_en; // @[lib.scala 352:23]
|
||||||
wire rvclkhdr_5_io_scan_mode; // @[lib.scala 352:23]
|
wire rvclkhdr_7_io_scan_mode; // @[lib.scala 352:23]
|
||||||
reg [31:0] _T_327; // @[lib.scala 358:16]
|
reg [31:0] _T_327; // @[lib.scala 358:16]
|
||||||
wire [2:0] dbg_nxtstate;
|
wire [2:0] dbg_nxtstate;
|
||||||
wire _T_328 = 3'h0 == dbg_state; // @[Conditional.scala 37:30]
|
wire _T_328 = 3'h0 == dbg_state; // @[Conditional.scala 37:30]
|
||||||
|
@ -414,30 +421,30 @@ module dbg(
|
||||||
wire _T_424 = 3'h5 == dbg_state; // @[Conditional.scala 37:30]
|
wire _T_424 = 3'h5 == dbg_state; // @[Conditional.scala 37:30]
|
||||||
wire _T_433 = 3'h6 == dbg_state; // @[Conditional.scala 37:30]
|
wire _T_433 = 3'h6 == dbg_state; // @[Conditional.scala 37:30]
|
||||||
wire _T_436 = dmstatus_reg[17] | dmcontrol_reg[1]; // @[dbg.scala 304:40]
|
wire _T_436 = dmstatus_reg[17] | dmcontrol_reg[1]; // @[dbg.scala 304:40]
|
||||||
wire _GEN_13 = _T_433 & _T_436; // @[Conditional.scala 39:67]
|
wire _GEN_11 = _T_433 & _T_436; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_14 = _T_433 & _T_356; // @[Conditional.scala 39:67]
|
wire _GEN_12 = _T_433 & _T_356; // @[Conditional.scala 39:67]
|
||||||
wire [2:0] _GEN_15 = _T_424 ? _T_348 : 3'h0; // @[Conditional.scala 39:67]
|
wire [2:0] _GEN_13 = _T_424 ? _T_348 : 3'h0; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_16 = _T_424 | _GEN_13; // @[Conditional.scala 39:67]
|
wire _GEN_14 = _T_424 | _GEN_11; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_17 = _T_424 & dbg_state_en; // @[Conditional.scala 39:67]
|
wire _GEN_15 = _T_424 & dbg_state_en; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_19 = _T_424 ? _T_356 : _GEN_14; // @[Conditional.scala 39:67]
|
wire _GEN_17 = _T_424 ? _T_356 : _GEN_12; // @[Conditional.scala 39:67]
|
||||||
wire [2:0] _GEN_20 = _T_413 ? _T_415 : _GEN_15; // @[Conditional.scala 39:67]
|
wire [2:0] _GEN_18 = _T_413 ? _T_415 : _GEN_13; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_21 = _T_413 ? _T_417 : _GEN_16; // @[Conditional.scala 39:67]
|
wire _GEN_19 = _T_413 ? _T_417 : _GEN_14; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_22 = _T_413 ? _T_356 : _GEN_19; // @[Conditional.scala 39:67]
|
wire _GEN_20 = _T_413 ? _T_356 : _GEN_17; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_23 = _T_413 ? 1'h0 : _GEN_17; // @[Conditional.scala 39:67]
|
wire _GEN_21 = _T_413 ? 1'h0 : _GEN_15; // @[Conditional.scala 39:67]
|
||||||
wire [2:0] _GEN_25 = _T_396 ? _T_401 : _GEN_20; // @[Conditional.scala 39:67]
|
wire [2:0] _GEN_23 = _T_396 ? _T_401 : _GEN_18; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_26 = _T_396 ? _T_406 : _GEN_21; // @[Conditional.scala 39:67]
|
wire _GEN_24 = _T_396 ? _T_406 : _GEN_19; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_27 = _T_396 ? _T_356 : _GEN_22; // @[Conditional.scala 39:67]
|
wire _GEN_25 = _T_396 ? _T_356 : _GEN_20; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_28 = _T_396 ? 1'h0 : _GEN_23; // @[Conditional.scala 39:67]
|
wire _GEN_26 = _T_396 ? 1'h0 : _GEN_21; // @[Conditional.scala 39:67]
|
||||||
wire [2:0] _GEN_30 = _T_358 ? _T_370 : _GEN_25; // @[Conditional.scala 39:67]
|
wire [2:0] _GEN_28 = _T_358 ? _T_370 : _GEN_23; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_31 = _T_358 ? _T_384 : _GEN_26; // @[Conditional.scala 39:67]
|
wire _GEN_29 = _T_358 ? _T_384 : _GEN_24; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_32 = _T_358 ? _T_386 : _GEN_28; // @[Conditional.scala 39:67]
|
wire _GEN_30 = _T_358 ? _T_386 : _GEN_26; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_34 = _T_358 & _T_388; // @[Conditional.scala 39:67]
|
wire _GEN_32 = _T_358 & _T_388; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_35 = _T_358 ? _T_356 : _GEN_27; // @[Conditional.scala 39:67]
|
wire _GEN_33 = _T_358 ? _T_356 : _GEN_25; // @[Conditional.scala 39:67]
|
||||||
wire [2:0] _GEN_36 = _T_346 ? _T_348 : _GEN_30; // @[Conditional.scala 39:67]
|
wire [2:0] _GEN_34 = _T_346 ? _T_348 : _GEN_28; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_37 = _T_346 ? _T_351 : _GEN_31; // @[Conditional.scala 39:67]
|
wire _GEN_35 = _T_346 ? _T_351 : _GEN_29; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_38 = _T_346 ? _T_356 : _GEN_35; // @[Conditional.scala 39:67]
|
wire _GEN_36 = _T_346 ? _T_356 : _GEN_33; // @[Conditional.scala 39:67]
|
||||||
|
wire _GEN_37 = _T_346 ? 1'h0 : _GEN_30; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_39 = _T_346 ? 1'h0 : _GEN_32; // @[Conditional.scala 39:67]
|
wire _GEN_39 = _T_346 ? 1'h0 : _GEN_32; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_41 = _T_346 ? 1'h0 : _GEN_34; // @[Conditional.scala 39:67]
|
|
||||||
wire [31:0] _T_445 = _T_217 ? 32'hffffffff : 32'h0; // @[Bitwise.scala 72:12]
|
wire [31:0] _T_445 = _T_217 ? 32'hffffffff : 32'h0; // @[Bitwise.scala 72:12]
|
||||||
wire [31:0] _T_446 = _T_445 & data0_reg; // @[dbg.scala 308:71]
|
wire [31:0] _T_446 = _T_445 & data0_reg; // @[dbg.scala 308:71]
|
||||||
wire [31:0] _T_449 = _T_320 ? 32'hffffffff : 32'h0; // @[Bitwise.scala 72:12]
|
wire [31:0] _T_449 = _T_320 ? 32'hffffffff : 32'h0; // @[Bitwise.scala 72:12]
|
||||||
|
@ -489,8 +496,8 @@ module dbg(
|
||||||
wire _T_540 = |io_dmi_reg_wdata[14:12]; // @[dbg.scala 346:65]
|
wire _T_540 = |io_dmi_reg_wdata[14:12]; // @[dbg.scala 346:65]
|
||||||
wire _T_541 = sbcs_wren & _T_540; // @[dbg.scala 346:38]
|
wire _T_541 = sbcs_wren & _T_540; // @[dbg.scala 346:38]
|
||||||
wire _T_543 = io_dmi_reg_wdata[14:12] == 3'h0; // @[dbg.scala 347:27]
|
wire _T_543 = io_dmi_reg_wdata[14:12] == 3'h0; // @[dbg.scala 347:27]
|
||||||
wire [2:0] _GEN_118 = {{2'd0}, _T_543}; // @[dbg.scala 347:53]
|
wire [2:0] _GEN_116 = {{2'd0}, _T_543}; // @[dbg.scala 347:53]
|
||||||
wire [2:0] _T_545 = _GEN_118 & sbcs_reg[14:12]; // @[dbg.scala 347:53]
|
wire [2:0] _T_545 = _GEN_116 & sbcs_reg[14:12]; // @[dbg.scala 347:53]
|
||||||
wire _T_546 = 4'h1 == sb_state; // @[Conditional.scala 37:30]
|
wire _T_546 = 4'h1 == sb_state; // @[Conditional.scala 37:30]
|
||||||
wire _T_547 = sbcs_unaligned | sbcs_illegal_size; // @[dbg.scala 350:41]
|
wire _T_547 = sbcs_unaligned | sbcs_illegal_size; // @[dbg.scala 350:41]
|
||||||
wire _T_549 = io_dbg_bus_clk_en | sbcs_unaligned; // @[dbg.scala 351:40]
|
wire _T_549 = io_dbg_bus_clk_en | sbcs_unaligned; // @[dbg.scala 351:40]
|
||||||
|
@ -512,39 +519,39 @@ module dbg(
|
||||||
wire _T_575 = 4'h8 == sb_state; // @[Conditional.scala 37:30]
|
wire _T_575 = 4'h8 == sb_state; // @[Conditional.scala 37:30]
|
||||||
wire _T_576 = sb_bus_rsp_write & io_dbg_bus_clk_en; // @[dbg.scala 385:39]
|
wire _T_576 = sb_bus_rsp_write & io_dbg_bus_clk_en; // @[dbg.scala 385:39]
|
||||||
wire _T_578 = 4'h9 == sb_state; // @[Conditional.scala 37:30]
|
wire _T_578 = 4'h9 == sb_state; // @[Conditional.scala 37:30]
|
||||||
wire _GEN_53 = _T_578 & sbcs_reg[16]; // @[Conditional.scala 39:67]
|
wire _GEN_51 = _T_578 & sbcs_reg[16]; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_55 = _T_575 ? _T_576 : _T_578; // @[Conditional.scala 39:67]
|
wire _GEN_53 = _T_575 ? _T_576 : _T_578; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_56 = _T_575 & _T_574; // @[Conditional.scala 39:67]
|
wire _GEN_54 = _T_575 & _T_574; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_58 = _T_575 ? 1'h0 : _T_578; // @[Conditional.scala 39:67]
|
wire _GEN_56 = _T_575 ? 1'h0 : _T_578; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_60 = _T_575 ? 1'h0 : _GEN_53; // @[Conditional.scala 39:67]
|
wire _GEN_58 = _T_575 ? 1'h0 : _GEN_51; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_62 = _T_572 ? _T_573 : _GEN_55; // @[Conditional.scala 39:67]
|
wire _GEN_60 = _T_572 ? _T_573 : _GEN_53; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_63 = _T_572 ? _T_574 : _GEN_56; // @[Conditional.scala 39:67]
|
wire _GEN_61 = _T_572 ? _T_574 : _GEN_54; // @[Conditional.scala 39:67]
|
||||||
|
wire _GEN_63 = _T_572 ? 1'h0 : _GEN_56; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_65 = _T_572 ? 1'h0 : _GEN_58; // @[Conditional.scala 39:67]
|
wire _GEN_65 = _T_572 ? 1'h0 : _GEN_58; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_67 = _T_572 ? 1'h0 : _GEN_60; // @[Conditional.scala 39:67]
|
wire _GEN_67 = _T_570 ? _T_571 : _GEN_60; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_69 = _T_570 ? _T_571 : _GEN_62; // @[Conditional.scala 39:67]
|
wire _GEN_68 = _T_570 ? 1'h0 : _GEN_61; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_70 = _T_570 ? 1'h0 : _GEN_63; // @[Conditional.scala 39:67]
|
wire _GEN_70 = _T_570 ? 1'h0 : _GEN_63; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_72 = _T_570 ? 1'h0 : _GEN_65; // @[Conditional.scala 39:67]
|
wire _GEN_72 = _T_570 ? 1'h0 : _GEN_65; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_74 = _T_570 ? 1'h0 : _GEN_67; // @[Conditional.scala 39:67]
|
wire _GEN_74 = _T_568 ? _T_569 : _GEN_67; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_76 = _T_568 ? _T_569 : _GEN_69; // @[Conditional.scala 39:67]
|
wire _GEN_75 = _T_568 ? 1'h0 : _GEN_68; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_77 = _T_568 ? 1'h0 : _GEN_70; // @[Conditional.scala 39:67]
|
wire _GEN_77 = _T_568 ? 1'h0 : _GEN_70; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_79 = _T_568 ? 1'h0 : _GEN_72; // @[Conditional.scala 39:67]
|
wire _GEN_79 = _T_568 ? 1'h0 : _GEN_72; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_81 = _T_568 ? 1'h0 : _GEN_74; // @[Conditional.scala 39:67]
|
wire _GEN_81 = _T_562 ? _T_567 : _GEN_74; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_83 = _T_562 ? _T_567 : _GEN_76; // @[Conditional.scala 39:67]
|
wire _GEN_82 = _T_562 ? 1'h0 : _GEN_75; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_84 = _T_562 ? 1'h0 : _GEN_77; // @[Conditional.scala 39:67]
|
wire _GEN_84 = _T_562 ? 1'h0 : _GEN_77; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_86 = _T_562 ? 1'h0 : _GEN_79; // @[Conditional.scala 39:67]
|
wire _GEN_86 = _T_562 ? 1'h0 : _GEN_79; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_88 = _T_562 ? 1'h0 : _GEN_81; // @[Conditional.scala 39:67]
|
wire _GEN_88 = _T_560 ? _T_561 : _GEN_81; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_90 = _T_560 ? _T_561 : _GEN_83; // @[Conditional.scala 39:67]
|
wire _GEN_89 = _T_560 ? 1'h0 : _GEN_82; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_91 = _T_560 ? 1'h0 : _GEN_84; // @[Conditional.scala 39:67]
|
wire _GEN_91 = _T_560 ? 1'h0 : _GEN_84; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_93 = _T_560 ? 1'h0 : _GEN_86; // @[Conditional.scala 39:67]
|
wire _GEN_93 = _T_560 ? 1'h0 : _GEN_86; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_95 = _T_560 ? 1'h0 : _GEN_88; // @[Conditional.scala 39:67]
|
wire _GEN_95 = _T_553 ? _T_550 : _GEN_88; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_97 = _T_553 ? _T_550 : _GEN_90; // @[Conditional.scala 39:67]
|
wire _GEN_96 = _T_553 ? _T_547 : _GEN_89; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_98 = _T_553 ? _T_547 : _GEN_91; // @[Conditional.scala 39:67]
|
wire _GEN_98 = _T_553 ? 1'h0 : _GEN_91; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_100 = _T_553 ? 1'h0 : _GEN_93; // @[Conditional.scala 39:67]
|
wire _GEN_100 = _T_553 ? 1'h0 : _GEN_93; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_102 = _T_553 ? 1'h0 : _GEN_95; // @[Conditional.scala 39:67]
|
wire _GEN_102 = _T_546 ? _T_550 : _GEN_95; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_104 = _T_546 ? _T_550 : _GEN_97; // @[Conditional.scala 39:67]
|
wire _GEN_103 = _T_546 ? _T_547 : _GEN_96; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_105 = _T_546 ? _T_547 : _GEN_98; // @[Conditional.scala 39:67]
|
wire _GEN_105 = _T_546 ? 1'h0 : _GEN_98; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_107 = _T_546 ? 1'h0 : _GEN_100; // @[Conditional.scala 39:67]
|
wire _GEN_107 = _T_546 ? 1'h0 : _GEN_100; // @[Conditional.scala 39:67]
|
||||||
wire _GEN_109 = _T_546 ? 1'h0 : _GEN_102; // @[Conditional.scala 39:67]
|
|
||||||
reg [3:0] _T_582; // @[Reg.scala 27:20]
|
reg [3:0] _T_582; // @[Reg.scala 27:20]
|
||||||
wire _T_589 = |io_sb_axi_r_bits_resp; // @[dbg.scala 406:69]
|
wire _T_589 = |io_sb_axi_r_bits_resp; // @[dbg.scala 406:69]
|
||||||
wire _T_590 = sb_bus_rsp_read & _T_589; // @[dbg.scala 406:39]
|
wire _T_590 = sb_bus_rsp_read & _T_589; // @[dbg.scala 406:39]
|
||||||
|
@ -569,37 +576,37 @@ module dbg(
|
||||||
wire [63:0] _T_638 = _T_634 & _T_637; // @[dbg.scala 420:119]
|
wire [63:0] _T_638 = _T_634 & _T_637; // @[dbg.scala 420:119]
|
||||||
wire [7:0] _T_643 = _T_66 ? 8'hff : 8'h0; // @[Bitwise.scala 72:12]
|
wire [7:0] _T_643 = _T_66 ? 8'hff : 8'h0; // @[Bitwise.scala 72:12]
|
||||||
wire [14:0] _T_645 = 15'h1 << sbaddress0_reg[2:0]; // @[dbg.scala 422:82]
|
wire [14:0] _T_645 = 15'h1 << sbaddress0_reg[2:0]; // @[dbg.scala 422:82]
|
||||||
wire [14:0] _GEN_119 = {{7'd0}, _T_643}; // @[dbg.scala 422:67]
|
wire [14:0] _GEN_117 = {{7'd0}, _T_643}; // @[dbg.scala 422:67]
|
||||||
wire [14:0] _T_646 = _GEN_119 & _T_645; // @[dbg.scala 422:67]
|
wire [14:0] _T_646 = _GEN_117 & _T_645; // @[dbg.scala 422:67]
|
||||||
wire [7:0] _T_650 = _T_51 ? 8'hff : 8'h0; // @[Bitwise.scala 72:12]
|
wire [7:0] _T_650 = _T_51 ? 8'hff : 8'h0; // @[Bitwise.scala 72:12]
|
||||||
wire [2:0] _T_652 = {sbaddress0_reg[2:1],1'h0}; // @[Cat.scala 29:58]
|
wire [2:0] _T_652 = {sbaddress0_reg[2:1],1'h0}; // @[Cat.scala 29:58]
|
||||||
wire [14:0] _T_653 = 15'h3 << _T_652; // @[dbg.scala 423:59]
|
wire [14:0] _T_653 = 15'h3 << _T_652; // @[dbg.scala 423:59]
|
||||||
wire [14:0] _GEN_120 = {{7'd0}, _T_650}; // @[dbg.scala 423:44]
|
wire [14:0] _GEN_118 = {{7'd0}, _T_650}; // @[dbg.scala 423:44]
|
||||||
wire [14:0] _T_654 = _GEN_120 & _T_653; // @[dbg.scala 423:44]
|
wire [14:0] _T_654 = _GEN_118 & _T_653; // @[dbg.scala 423:44]
|
||||||
wire [14:0] _T_655 = _T_646 | _T_654; // @[dbg.scala 422:107]
|
wire [14:0] _T_655 = _T_646 | _T_654; // @[dbg.scala 422:107]
|
||||||
wire [7:0] _T_659 = _T_55 ? 8'hff : 8'h0; // @[Bitwise.scala 72:12]
|
wire [7:0] _T_659 = _T_55 ? 8'hff : 8'h0; // @[Bitwise.scala 72:12]
|
||||||
wire [1:0] _T_661 = {sbaddress0_reg[2],1'h0}; // @[Cat.scala 29:58]
|
wire [1:0] _T_661 = {sbaddress0_reg[2],1'h0}; // @[Cat.scala 29:58]
|
||||||
wire [10:0] _T_662 = 11'hf << _T_661; // @[dbg.scala 424:59]
|
wire [10:0] _T_662 = 11'hf << _T_661; // @[dbg.scala 424:59]
|
||||||
wire [10:0] _GEN_121 = {{3'd0}, _T_659}; // @[dbg.scala 424:44]
|
wire [10:0] _GEN_119 = {{3'd0}, _T_659}; // @[dbg.scala 424:44]
|
||||||
wire [10:0] _T_663 = _GEN_121 & _T_662; // @[dbg.scala 424:44]
|
wire [10:0] _T_663 = _GEN_119 & _T_662; // @[dbg.scala 424:44]
|
||||||
wire [14:0] _GEN_122 = {{4'd0}, _T_663}; // @[dbg.scala 423:97]
|
wire [14:0] _GEN_120 = {{4'd0}, _T_663}; // @[dbg.scala 423:97]
|
||||||
wire [14:0] _T_664 = _T_655 | _GEN_122; // @[dbg.scala 423:97]
|
wire [14:0] _T_664 = _T_655 | _GEN_120; // @[dbg.scala 423:97]
|
||||||
wire [7:0] _T_668 = _T_61 ? 8'hff : 8'h0; // @[Bitwise.scala 72:12]
|
wire [7:0] _T_668 = _T_61 ? 8'hff : 8'h0; // @[Bitwise.scala 72:12]
|
||||||
wire [14:0] _GEN_123 = {{7'd0}, _T_668}; // @[dbg.scala 424:95]
|
wire [14:0] _GEN_121 = {{7'd0}, _T_668}; // @[dbg.scala 424:95]
|
||||||
wire [14:0] _T_670 = _T_664 | _GEN_123; // @[dbg.scala 424:95]
|
wire [14:0] _T_670 = _T_664 | _GEN_121; // @[dbg.scala 424:95]
|
||||||
wire [3:0] _GEN_124 = {{1'd0}, sbaddress0_reg[2:0]}; // @[dbg.scala 441:99]
|
wire [3:0] _GEN_122 = {{1'd0}, sbaddress0_reg[2:0]}; // @[dbg.scala 441:99]
|
||||||
wire [6:0] _T_681 = 4'h8 * _GEN_124; // @[dbg.scala 441:99]
|
wire [6:0] _T_681 = 4'h8 * _GEN_122; // @[dbg.scala 441:99]
|
||||||
wire [63:0] _T_682 = io_sb_axi_r_bits_data >> _T_681; // @[dbg.scala 441:92]
|
wire [63:0] _T_682 = io_sb_axi_r_bits_data >> _T_681; // @[dbg.scala 441:92]
|
||||||
wire [63:0] _T_683 = _T_682 & 64'hff; // @[dbg.scala 441:123]
|
wire [63:0] _T_683 = _T_682 & 64'hff; // @[dbg.scala 441:123]
|
||||||
wire [63:0] _T_684 = _T_608 & _T_683; // @[dbg.scala 441:59]
|
wire [63:0] _T_684 = _T_608 & _T_683; // @[dbg.scala 441:59]
|
||||||
wire [4:0] _GEN_125 = {{3'd0}, sbaddress0_reg[2:1]}; // @[dbg.scala 442:86]
|
wire [4:0] _GEN_123 = {{3'd0}, sbaddress0_reg[2:1]}; // @[dbg.scala 442:86]
|
||||||
wire [6:0] _T_691 = 5'h10 * _GEN_125; // @[dbg.scala 442:86]
|
wire [6:0] _T_691 = 5'h10 * _GEN_123; // @[dbg.scala 442:86]
|
||||||
wire [63:0] _T_692 = io_sb_axi_r_bits_data >> _T_691; // @[dbg.scala 442:78]
|
wire [63:0] _T_692 = io_sb_axi_r_bits_data >> _T_691; // @[dbg.scala 442:78]
|
||||||
wire [63:0] _T_693 = _T_692 & 64'hffff; // @[dbg.scala 442:110]
|
wire [63:0] _T_693 = _T_692 & 64'hffff; // @[dbg.scala 442:110]
|
||||||
wire [63:0] _T_694 = _T_617 & _T_693; // @[dbg.scala 442:45]
|
wire [63:0] _T_694 = _T_617 & _T_693; // @[dbg.scala 442:45]
|
||||||
wire [63:0] _T_695 = _T_684 | _T_694; // @[dbg.scala 441:140]
|
wire [63:0] _T_695 = _T_684 | _T_694; // @[dbg.scala 441:140]
|
||||||
wire [5:0] _GEN_126 = {{5'd0}, sbaddress0_reg[2]}; // @[dbg.scala 443:86]
|
wire [5:0] _GEN_124 = {{5'd0}, sbaddress0_reg[2]}; // @[dbg.scala 443:86]
|
||||||
wire [6:0] _T_702 = 6'h20 * _GEN_126; // @[dbg.scala 443:86]
|
wire [6:0] _T_702 = 6'h20 * _GEN_124; // @[dbg.scala 443:86]
|
||||||
wire [63:0] _T_703 = io_sb_axi_r_bits_data >> _T_702; // @[dbg.scala 443:78]
|
wire [63:0] _T_703 = io_sb_axi_r_bits_data >> _T_702; // @[dbg.scala 443:78]
|
||||||
wire [63:0] _T_704 = _T_703 & 64'hffffffff; // @[dbg.scala 443:107]
|
wire [63:0] _T_704 = _T_703 & 64'hffffffff; // @[dbg.scala 443:107]
|
||||||
wire [63:0] _T_705 = _T_626 & _T_704; // @[dbg.scala 443:45]
|
wire [63:0] _T_705 = _T_626 & _T_704; // @[dbg.scala 443:45]
|
||||||
|
@ -641,10 +648,22 @@ module dbg(
|
||||||
.io_en(rvclkhdr_5_io_en),
|
.io_en(rvclkhdr_5_io_en),
|
||||||
.io_scan_mode(rvclkhdr_5_io_scan_mode)
|
.io_scan_mode(rvclkhdr_5_io_scan_mode)
|
||||||
);
|
);
|
||||||
|
rvclkhdr rvclkhdr_6 ( // @[lib.scala 352:23]
|
||||||
|
.io_l1clk(rvclkhdr_6_io_l1clk),
|
||||||
|
.io_clk(rvclkhdr_6_io_clk),
|
||||||
|
.io_en(rvclkhdr_6_io_en),
|
||||||
|
.io_scan_mode(rvclkhdr_6_io_scan_mode)
|
||||||
|
);
|
||||||
|
rvclkhdr rvclkhdr_7 ( // @[lib.scala 352:23]
|
||||||
|
.io_l1clk(rvclkhdr_7_io_l1clk),
|
||||||
|
.io_clk(rvclkhdr_7_io_clk),
|
||||||
|
.io_en(rvclkhdr_7_io_en),
|
||||||
|
.io_scan_mode(rvclkhdr_7_io_scan_mode)
|
||||||
|
);
|
||||||
assign io_dbg_cmd_size = command_reg[21:20]; // @[dbg.scala 329:19]
|
assign io_dbg_cmd_size = command_reg[21:20]; // @[dbg.scala 329:19]
|
||||||
assign io_dbg_core_rst_l = ~dmcontrol_reg[1]; // @[dbg.scala 100:21]
|
assign io_dbg_core_rst_l = ~dmcontrol_reg[1]; // @[dbg.scala 100:21]
|
||||||
assign io_dbg_halt_req = _T_328 ? _T_344 : _GEN_38; // @[dbg.scala 261:19 dbg.scala 267:23 dbg.scala 272:23 dbg.scala 283:23 dbg.scala 288:23 dbg.scala 293:23 dbg.scala 300:23 dbg.scala 305:23]
|
assign io_dbg_halt_req = _T_328 ? _T_344 : _GEN_36; // @[dbg.scala 261:19 dbg.scala 267:23 dbg.scala 272:23 dbg.scala 283:23 dbg.scala 288:23 dbg.scala 293:23 dbg.scala 300:23 dbg.scala 305:23]
|
||||||
assign io_dbg_resume_req = _T_328 ? 1'h0 : _GEN_41; // @[dbg.scala 262:21 dbg.scala 282:25]
|
assign io_dbg_resume_req = _T_328 ? 1'h0 : _GEN_39; // @[dbg.scala 262:21 dbg.scala 282:25]
|
||||||
assign io_dmi_reg_rdata = _T_502; // @[dbg.scala 320:20]
|
assign io_dmi_reg_rdata = _T_502; // @[dbg.scala 320:20]
|
||||||
assign io_sb_axi_aw_valid = _T_595 | _T_596; // @[dbg.scala 407:22]
|
assign io_sb_axi_aw_valid = _T_595 | _T_596; // @[dbg.scala 407:22]
|
||||||
assign io_sb_axi_aw_bits_id = 1'h0; // @[dbg.scala 409:24]
|
assign io_sb_axi_aw_bits_id = 1'h0; // @[dbg.scala 409:24]
|
||||||
|
@ -686,22 +705,22 @@ module dbg(
|
||||||
assign io_dbg_dma_dbg_dctl_dbg_cmd_wrdata = io_dbg_dec_dbg_dctl_dbg_cmd_wrdata; // @[dbg.scala 448:39]
|
assign io_dbg_dma_dbg_dctl_dbg_cmd_wrdata = io_dbg_dec_dbg_dctl_dbg_cmd_wrdata; // @[dbg.scala 448:39]
|
||||||
assign io_dbg_dma_io_dbg_dma_bubble = _T_515 | _T_307; // @[dbg.scala 330:32]
|
assign io_dbg_dma_io_dbg_dma_bubble = _T_515 | _T_307; // @[dbg.scala 330:32]
|
||||||
assign dbg_state = _T_499; // @[dbg.scala 315:13]
|
assign dbg_state = _T_499; // @[dbg.scala 315:13]
|
||||||
assign dbg_state_en = _T_328 ? _T_340 : _GEN_37; // @[dbg.scala 258:16 dbg.scala 266:20 dbg.scala 271:20 dbg.scala 278:20 dbg.scala 287:20 dbg.scala 292:20 dbg.scala 297:20 dbg.scala 304:20]
|
assign dbg_state_en = _T_328 ? _T_340 : _GEN_35; // @[dbg.scala 258:16 dbg.scala 266:20 dbg.scala 271:20 dbg.scala 278:20 dbg.scala 287:20 dbg.scala 292:20 dbg.scala 297:20 dbg.scala 304:20]
|
||||||
assign sb_state = _T_582; // @[dbg.scala 397:12]
|
assign sb_state = _T_582; // @[dbg.scala 397:12]
|
||||||
assign sb_state_en = _T_535 ? _T_538 : _GEN_104; // @[dbg.scala 343:19 dbg.scala 351:19 dbg.scala 357:19 dbg.scala 363:19 dbg.scala 367:19 dbg.scala 371:19 dbg.scala 375:19 dbg.scala 379:19 dbg.scala 385:19 dbg.scala 391:19]
|
assign sb_state_en = _T_535 ? _T_538 : _GEN_102; // @[dbg.scala 343:19 dbg.scala 351:19 dbg.scala 357:19 dbg.scala 363:19 dbg.scala 367:19 dbg.scala 371:19 dbg.scala 375:19 dbg.scala 379:19 dbg.scala 385:19 dbg.scala 391:19]
|
||||||
assign dmcontrol_reg = {_T_157,_T_155}; // @[dbg.scala 178:17]
|
assign dmcontrol_reg = {_T_157,_T_155}; // @[dbg.scala 178:17]
|
||||||
assign sbaddress0_reg = _T_128; // @[dbg.scala 159:18]
|
assign sbaddress0_reg = _T_128; // @[dbg.scala 159:18]
|
||||||
assign sbcs_sbbusy_wren = _T_535 ? sb_state_en : _GEN_107; // @[dbg.scala 335:20 dbg.scala 344:24 dbg.scala 392:24]
|
assign sbcs_sbbusy_wren = _T_535 ? sb_state_en : _GEN_105; // @[dbg.scala 335:20 dbg.scala 344:24 dbg.scala 392:24]
|
||||||
assign sbcs_sberror_wren = _T_535 ? _T_541 : _GEN_105; // @[dbg.scala 337:21 dbg.scala 346:25 dbg.scala 352:25 dbg.scala 358:25 dbg.scala 380:25 dbg.scala 386:25]
|
assign sbcs_sberror_wren = _T_535 ? _T_541 : _GEN_103; // @[dbg.scala 337:21 dbg.scala 346:25 dbg.scala 352:25 dbg.scala 358:25 dbg.scala 380:25 dbg.scala 386:25]
|
||||||
assign sb_bus_rdata = _T_706 | _T_712; // @[dbg.scala 441:16]
|
assign sb_bus_rdata = _T_706 | _T_712; // @[dbg.scala 441:16]
|
||||||
assign sbaddress0_reg_wren1 = _T_535 ? 1'h0 : _GEN_109; // @[dbg.scala 339:24 dbg.scala 394:28]
|
assign sbaddress0_reg_wren1 = _T_535 ? 1'h0 : _GEN_107; // @[dbg.scala 339:24 dbg.scala 394:28]
|
||||||
assign dmstatus_reg = {_T_177,_T_173}; // @[dbg.scala 184:16]
|
assign dmstatus_reg = {_T_177,_T_173}; // @[dbg.scala 184:16]
|
||||||
assign dmstatus_havereset = _T_210; // @[dbg.scala 201:22]
|
assign dmstatus_havereset = _T_210; // @[dbg.scala 201:22]
|
||||||
assign dmstatus_resumeack = _T_201; // @[dbg.scala 193:22]
|
assign dmstatus_resumeack = _T_201; // @[dbg.scala 193:22]
|
||||||
assign dmstatus_unavail = dmcontrol_reg[1] | _T_194; // @[dbg.scala 191:20]
|
assign dmstatus_unavail = dmcontrol_reg[1] | _T_194; // @[dbg.scala 191:20]
|
||||||
assign dmstatus_running = ~_T_197; // @[dbg.scala 192:20]
|
assign dmstatus_running = ~_T_197; // @[dbg.scala 192:20]
|
||||||
assign dmstatus_halted = _T_206; // @[dbg.scala 197:19]
|
assign dmstatus_halted = _T_206; // @[dbg.scala 197:19]
|
||||||
assign abstractcs_busy_wren = _T_328 ? 1'h0 : _GEN_39; // @[dbg.scala 259:24 dbg.scala 280:28 dbg.scala 298:28]
|
assign abstractcs_busy_wren = _T_328 ? 1'h0 : _GEN_37; // @[dbg.scala 259:24 dbg.scala 280:28 dbg.scala 298:28]
|
||||||
assign sb_bus_cmd_read = io_sb_axi_ar_valid & io_sb_axi_ar_ready; // @[dbg.scala 401:19]
|
assign sb_bus_cmd_read = io_sb_axi_ar_valid & io_sb_axi_ar_ready; // @[dbg.scala 401:19]
|
||||||
assign sb_bus_cmd_write_addr = io_sb_axi_aw_valid & io_sb_axi_aw_ready; // @[dbg.scala 402:25]
|
assign sb_bus_cmd_write_addr = io_sb_axi_aw_valid & io_sb_axi_aw_ready; // @[dbg.scala 402:25]
|
||||||
assign sb_bus_cmd_write_data = io_sb_axi_w_valid & io_sb_axi_w_ready; // @[dbg.scala 403:25]
|
assign sb_bus_cmd_write_data = io_sb_axi_w_valid & io_sb_axi_w_ready; // @[dbg.scala 403:25]
|
||||||
|
@ -728,9 +747,15 @@ module dbg(
|
||||||
assign rvclkhdr_4_io_scan_mode = io_scan_mode; // @[lib.scala 356:24]
|
assign rvclkhdr_4_io_scan_mode = io_scan_mode; // @[lib.scala 356:24]
|
||||||
assign abstractcs_reg = {_T_289,_T_287}; // @[dbg.scala 233:18]
|
assign abstractcs_reg = {_T_289,_T_287}; // @[dbg.scala 233:18]
|
||||||
assign rvclkhdr_5_io_clk = clock; // @[lib.scala 354:18]
|
assign rvclkhdr_5_io_clk = clock; // @[lib.scala 354:18]
|
||||||
assign rvclkhdr_5_io_en = _T_321 & _T_294; // @[lib.scala 355:17]
|
assign rvclkhdr_5_io_en = _T_235 & _T_294; // @[lib.scala 355:17]
|
||||||
assign rvclkhdr_5_io_scan_mode = io_scan_mode; // @[lib.scala 356:24]
|
assign rvclkhdr_5_io_scan_mode = io_scan_mode; // @[lib.scala 356:24]
|
||||||
assign dbg_nxtstate = _T_328 ? _T_331 : _GEN_36; // @[dbg.scala 257:16 dbg.scala 265:20 dbg.scala 270:20 dbg.scala 275:20 dbg.scala 286:20 dbg.scala 291:20 dbg.scala 296:20 dbg.scala 303:20]
|
assign rvclkhdr_6_io_clk = clock; // @[lib.scala 354:18]
|
||||||
|
assign rvclkhdr_6_io_en = data0_reg_wren0 | data0_reg_wren1; // @[lib.scala 355:17]
|
||||||
|
assign rvclkhdr_6_io_scan_mode = io_scan_mode; // @[lib.scala 356:24]
|
||||||
|
assign rvclkhdr_7_io_clk = clock; // @[lib.scala 354:18]
|
||||||
|
assign rvclkhdr_7_io_en = _T_321 & _T_294; // @[lib.scala 355:17]
|
||||||
|
assign rvclkhdr_7_io_scan_mode = io_scan_mode; // @[lib.scala 356:24]
|
||||||
|
assign dbg_nxtstate = _T_328 ? _T_331 : _GEN_34; // @[dbg.scala 257:16 dbg.scala 265:20 dbg.scala 270:20 dbg.scala 275:20 dbg.scala 286:20 dbg.scala 291:20 dbg.scala 296:20 dbg.scala 303:20]
|
||||||
`ifdef RANDOMIZE_GARBAGE_ASSIGN
|
`ifdef RANDOMIZE_GARBAGE_ASSIGN
|
||||||
`define RANDOMIZE
|
`define RANDOMIZE
|
||||||
`endif
|
`endif
|
||||||
|
@ -1029,21 +1054,21 @@ end // initial
|
||||||
abs_temp_10_8 <= _T_276 | _T_281;
|
abs_temp_10_8 <= _T_276 | _T_281;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
always @(posedge clock or posedge _T_30) begin
|
always @(posedge rvclkhdr_5_io_l1clk or posedge _T_30) begin
|
||||||
if (_T_30) begin
|
if (_T_30) begin
|
||||||
command_reg <= 32'h0;
|
command_reg <= 32'h0;
|
||||||
end else if (command_wren) begin
|
end else begin
|
||||||
command_reg <= command_din;
|
command_reg <= {_T_300,_T_298};
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
always @(posedge clock or posedge _T_30) begin
|
always @(posedge rvclkhdr_6_io_l1clk or posedge _T_30) begin
|
||||||
if (_T_30) begin
|
if (_T_30) begin
|
||||||
data0_reg <= 32'h0;
|
data0_reg <= 32'h0;
|
||||||
end else if (data0_reg_wren) begin
|
end else begin
|
||||||
data0_reg <= data0_din;
|
data0_reg <= _T_313 | _T_316;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
always @(posedge rvclkhdr_5_io_l1clk or posedge _T_30) begin
|
always @(posedge rvclkhdr_7_io_l1clk or posedge _T_30) begin
|
||||||
if (_T_30) begin
|
if (_T_30) begin
|
||||||
_T_327 <= 32'h0;
|
_T_327 <= 32'h0;
|
||||||
end else begin
|
end else begin
|
||||||
|
|
664
dma_ctrl.fir
664
dma_ctrl.fir
|
@ -1830,7 +1830,7 @@ circuit dma_ctrl :
|
||||||
node _T_987 = add(num_fifo_vld_tmp, num_fifo_vld_tmp2) @[dma_ctrl.scala 295:45]
|
node _T_987 = add(num_fifo_vld_tmp, num_fifo_vld_tmp2) @[dma_ctrl.scala 295:45]
|
||||||
node _T_988 = tail(_T_987, 1) @[dma_ctrl.scala 295:45]
|
node _T_988 = tail(_T_987, 1) @[dma_ctrl.scala 295:45]
|
||||||
num_fifo_vld <= _T_988 @[dma_ctrl.scala 295:25]
|
num_fifo_vld <= _T_988 @[dma_ctrl.scala 295:25]
|
||||||
node fifo_full_spec = geq(num_fifo_vld_tmp2, UInt<3>("h05")) @[dma_ctrl.scala 297:46]
|
node fifo_full_spec = geq(num_fifo_vld, UInt<3>("h05")) @[dma_ctrl.scala 297:41]
|
||||||
node _T_989 = or(fifo_full, dbg_dma_bubble_bus) @[dma_ctrl.scala 299:39]
|
node _T_989 = or(fifo_full, dbg_dma_bubble_bus) @[dma_ctrl.scala 299:39]
|
||||||
node dma_fifo_ready = not(_T_989) @[dma_ctrl.scala 299:27]
|
node dma_fifo_ready = not(_T_989) @[dma_ctrl.scala 299:27]
|
||||||
node _T_990 = dshr(fifo_valid, RdPtr) @[dma_ctrl.scala 303:38]
|
node _T_990 = dshr(fifo_valid, RdPtr) @[dma_ctrl.scala 303:38]
|
||||||
|
@ -1903,230 +1903,250 @@ circuit dma_ctrl :
|
||||||
node _T_1056 = bits(dma_mem_addr_int, 2, 0) @[dma_ctrl.scala 313:26]
|
node _T_1056 = bits(dma_mem_addr_int, 2, 0) @[dma_ctrl.scala 313:26]
|
||||||
node _T_1057 = eq(_T_1056, UInt<2>("h03")) @[dma_ctrl.scala 313:32]
|
node _T_1057 = eq(_T_1056, UInt<2>("h03")) @[dma_ctrl.scala 313:32]
|
||||||
node _T_1058 = bits(dma_mem_byteen, 6, 3) @[dma_ctrl.scala 313:59]
|
node _T_1058 = bits(dma_mem_byteen, 6, 3) @[dma_ctrl.scala 313:59]
|
||||||
node _T_1059 = mux(_T_1048, _T_1049, UInt<1>("h00")) @[Mux.scala 27:72]
|
node _T_1059 = bits(dma_mem_addr_int, 2, 0) @[dma_ctrl.scala 314:26]
|
||||||
node _T_1060 = mux(_T_1051, _T_1052, UInt<1>("h00")) @[Mux.scala 27:72]
|
node _T_1060 = eq(_T_1059, UInt<3>("h04")) @[dma_ctrl.scala 314:32]
|
||||||
node _T_1061 = mux(_T_1054, _T_1055, UInt<1>("h00")) @[Mux.scala 27:72]
|
node _T_1061 = bits(dma_mem_byteen, 7, 4) @[dma_ctrl.scala 314:59]
|
||||||
node _T_1062 = mux(_T_1057, _T_1058, UInt<1>("h00")) @[Mux.scala 27:72]
|
node _T_1062 = bits(dma_mem_addr_int, 2, 0) @[dma_ctrl.scala 315:26]
|
||||||
node _T_1063 = or(_T_1059, _T_1060) @[Mux.scala 27:72]
|
node _T_1063 = eq(_T_1062, UInt<3>("h05")) @[dma_ctrl.scala 315:32]
|
||||||
node _T_1064 = or(_T_1063, _T_1061) @[Mux.scala 27:72]
|
node _T_1064 = bits(dma_mem_byteen, 7, 5) @[dma_ctrl.scala 315:59]
|
||||||
node _T_1065 = or(_T_1064, _T_1062) @[Mux.scala 27:72]
|
node _T_1065 = bits(dma_mem_addr_int, 2, 0) @[dma_ctrl.scala 316:26]
|
||||||
wire _T_1066 : UInt<4> @[Mux.scala 27:72]
|
node _T_1066 = eq(_T_1065, UInt<3>("h06")) @[dma_ctrl.scala 316:32]
|
||||||
_T_1066 <= _T_1065 @[Mux.scala 27:72]
|
node _T_1067 = bits(dma_mem_byteen, 7, 6) @[dma_ctrl.scala 316:59]
|
||||||
node _T_1067 = neq(_T_1066, UInt<4>("h0f")) @[dma_ctrl.scala 313:68]
|
node _T_1068 = bits(dma_mem_addr_int, 2, 0) @[dma_ctrl.scala 317:26]
|
||||||
node _T_1068 = and(_T_1046, _T_1067) @[dma_ctrl.scala 310:78]
|
node _T_1069 = eq(_T_1068, UInt<3>("h07")) @[dma_ctrl.scala 317:32]
|
||||||
node _T_1069 = or(_T_1043, _T_1068) @[dma_ctrl.scala 309:145]
|
node _T_1070 = bits(dma_mem_byteen, 7, 7) @[dma_ctrl.scala 317:59]
|
||||||
node _T_1070 = bits(dma_mem_sz_int, 2, 0) @[dma_ctrl.scala 314:62]
|
node _T_1071 = mux(_T_1048, _T_1049, UInt<1>("h00")) @[Mux.scala 27:72]
|
||||||
node _T_1071 = eq(_T_1070, UInt<2>("h03")) @[dma_ctrl.scala 314:69]
|
node _T_1072 = mux(_T_1051, _T_1052, UInt<1>("h00")) @[Mux.scala 27:72]
|
||||||
node _T_1072 = and(io.lsu_dma.dma_lsc_ctl.dma_mem_write, _T_1071) @[dma_ctrl.scala 314:45]
|
node _T_1073 = mux(_T_1054, _T_1055, UInt<1>("h00")) @[Mux.scala 27:72]
|
||||||
node _T_1073 = bits(dma_mem_byteen, 7, 0) @[dma_ctrl.scala 314:97]
|
node _T_1074 = mux(_T_1057, _T_1058, UInt<1>("h00")) @[Mux.scala 27:72]
|
||||||
node _T_1074 = eq(_T_1073, UInt<4>("h0f")) @[dma_ctrl.scala 314:103]
|
node _T_1075 = mux(_T_1060, _T_1061, UInt<1>("h00")) @[Mux.scala 27:72]
|
||||||
node _T_1075 = bits(dma_mem_byteen, 7, 0) @[dma_ctrl.scala 314:133]
|
node _T_1076 = mux(_T_1063, _T_1064, UInt<1>("h00")) @[Mux.scala 27:72]
|
||||||
node _T_1076 = eq(_T_1075, UInt<8>("h0f0")) @[dma_ctrl.scala 314:139]
|
node _T_1077 = mux(_T_1066, _T_1067, UInt<1>("h00")) @[Mux.scala 27:72]
|
||||||
node _T_1077 = or(_T_1074, _T_1076) @[dma_ctrl.scala 314:116]
|
node _T_1078 = mux(_T_1069, _T_1070, UInt<1>("h00")) @[Mux.scala 27:72]
|
||||||
node _T_1078 = bits(dma_mem_byteen, 7, 0) @[dma_ctrl.scala 314:169]
|
node _T_1079 = or(_T_1071, _T_1072) @[Mux.scala 27:72]
|
||||||
node _T_1079 = eq(_T_1078, UInt<8>("h0ff")) @[dma_ctrl.scala 314:175]
|
node _T_1080 = or(_T_1079, _T_1073) @[Mux.scala 27:72]
|
||||||
node _T_1080 = or(_T_1077, _T_1079) @[dma_ctrl.scala 314:152]
|
node _T_1081 = or(_T_1080, _T_1074) @[Mux.scala 27:72]
|
||||||
node _T_1081 = eq(_T_1080, UInt<1>("h00")) @[dma_ctrl.scala 314:80]
|
node _T_1082 = or(_T_1081, _T_1075) @[Mux.scala 27:72]
|
||||||
node _T_1082 = and(_T_1072, _T_1081) @[dma_ctrl.scala 314:78]
|
node _T_1083 = or(_T_1082, _T_1076) @[Mux.scala 27:72]
|
||||||
node _T_1083 = or(_T_1069, _T_1082) @[dma_ctrl.scala 313:79]
|
node _T_1084 = or(_T_1083, _T_1077) @[Mux.scala 27:72]
|
||||||
node _T_1084 = and(_T_1010, _T_1083) @[dma_ctrl.scala 304:87]
|
node _T_1085 = or(_T_1084, _T_1078) @[Mux.scala 27:72]
|
||||||
dma_alignment_error <= _T_1084 @[dma_ctrl.scala 304:25]
|
wire _T_1086 : UInt<4> @[Mux.scala 27:72]
|
||||||
node _T_1085 = and(fifo_empty, dbg_dma_bubble_bus) @[dma_ctrl.scala 319:50]
|
_T_1086 <= _T_1085 @[Mux.scala 27:72]
|
||||||
io.dbg_dma_io.dma_dbg_ready <= _T_1085 @[dma_ctrl.scala 319:36]
|
node _T_1087 = neq(_T_1086, UInt<4>("h0f")) @[dma_ctrl.scala 317:66]
|
||||||
node _T_1086 = dshr(fifo_valid, RspPtr) @[dma_ctrl.scala 320:39]
|
node _T_1088 = and(_T_1046, _T_1087) @[dma_ctrl.scala 310:78]
|
||||||
node _T_1087 = bits(_T_1086, 0, 0) @[dma_ctrl.scala 320:39]
|
node _T_1089 = or(_T_1043, _T_1088) @[dma_ctrl.scala 309:145]
|
||||||
node _T_1088 = dshr(fifo_dbg, RspPtr) @[dma_ctrl.scala 320:58]
|
node _T_1090 = bits(dma_mem_sz_int, 2, 0) @[dma_ctrl.scala 318:62]
|
||||||
node _T_1089 = bits(_T_1088, 0, 0) @[dma_ctrl.scala 320:58]
|
node _T_1091 = eq(_T_1090, UInt<2>("h03")) @[dma_ctrl.scala 318:69]
|
||||||
node _T_1090 = and(_T_1087, _T_1089) @[dma_ctrl.scala 320:48]
|
node _T_1092 = and(io.lsu_dma.dma_lsc_ctl.dma_mem_write, _T_1091) @[dma_ctrl.scala 318:45]
|
||||||
node _T_1091 = dshr(fifo_done, RspPtr) @[dma_ctrl.scala 320:78]
|
node _T_1093 = bits(dma_mem_byteen, 7, 0) @[dma_ctrl.scala 318:97]
|
||||||
node _T_1092 = bits(_T_1091, 0, 0) @[dma_ctrl.scala 320:78]
|
node _T_1094 = eq(_T_1093, UInt<4>("h0f")) @[dma_ctrl.scala 318:103]
|
||||||
node _T_1093 = and(_T_1090, _T_1092) @[dma_ctrl.scala 320:67]
|
node _T_1095 = bits(dma_mem_byteen, 7, 0) @[dma_ctrl.scala 318:133]
|
||||||
io.dma_dbg_cmd_done <= _T_1093 @[dma_ctrl.scala 320:25]
|
node _T_1096 = eq(_T_1095, UInt<8>("h0f0")) @[dma_ctrl.scala 318:139]
|
||||||
node _T_1094 = bits(fifo_addr[RspPtr], 2, 2) @[dma_ctrl.scala 321:49]
|
node _T_1097 = or(_T_1094, _T_1096) @[dma_ctrl.scala 318:116]
|
||||||
node _T_1095 = bits(fifo_data[RspPtr], 63, 32) @[dma_ctrl.scala 321:71]
|
node _T_1098 = bits(dma_mem_byteen, 7, 0) @[dma_ctrl.scala 318:169]
|
||||||
node _T_1096 = bits(fifo_data[RspPtr], 31, 0) @[dma_ctrl.scala 321:98]
|
node _T_1099 = eq(_T_1098, UInt<8>("h0ff")) @[dma_ctrl.scala 318:175]
|
||||||
node _T_1097 = mux(_T_1094, _T_1095, _T_1096) @[dma_ctrl.scala 321:31]
|
node _T_1100 = or(_T_1097, _T_1099) @[dma_ctrl.scala 318:152]
|
||||||
io.dma_dbg_rddata <= _T_1097 @[dma_ctrl.scala 321:25]
|
node _T_1101 = eq(_T_1100, UInt<1>("h00")) @[dma_ctrl.scala 318:80]
|
||||||
node _T_1098 = orr(fifo_error[RspPtr]) @[dma_ctrl.scala 322:47]
|
node _T_1102 = and(_T_1092, _T_1101) @[dma_ctrl.scala 318:78]
|
||||||
io.dma_dbg_cmd_fail <= _T_1098 @[dma_ctrl.scala 322:25]
|
node _T_1103 = or(_T_1089, _T_1102) @[dma_ctrl.scala 317:79]
|
||||||
node _T_1099 = dshr(fifo_valid, RdPtr) @[dma_ctrl.scala 324:38]
|
node _T_1104 = and(_T_1010, _T_1103) @[dma_ctrl.scala 304:87]
|
||||||
node _T_1100 = bits(_T_1099, 0, 0) @[dma_ctrl.scala 324:38]
|
dma_alignment_error <= _T_1104 @[dma_ctrl.scala 304:25]
|
||||||
node _T_1101 = dshr(fifo_done, RdPtr) @[dma_ctrl.scala 324:58]
|
node _T_1105 = and(fifo_empty, dbg_dma_bubble_bus) @[dma_ctrl.scala 323:50]
|
||||||
node _T_1102 = bits(_T_1101, 0, 0) @[dma_ctrl.scala 324:58]
|
io.dbg_dma_io.dma_dbg_ready <= _T_1105 @[dma_ctrl.scala 323:36]
|
||||||
node _T_1103 = eq(_T_1102, UInt<1>("h00")) @[dma_ctrl.scala 324:48]
|
node _T_1106 = dshr(fifo_valid, RspPtr) @[dma_ctrl.scala 324:39]
|
||||||
node _T_1104 = and(_T_1100, _T_1103) @[dma_ctrl.scala 324:46]
|
node _T_1107 = bits(_T_1106, 0, 0) @[dma_ctrl.scala 324:39]
|
||||||
node _T_1105 = dshr(fifo_dbg, RdPtr) @[dma_ctrl.scala 324:76]
|
node _T_1108 = dshr(fifo_dbg, RspPtr) @[dma_ctrl.scala 324:58]
|
||||||
node _T_1106 = bits(_T_1105, 0, 0) @[dma_ctrl.scala 324:76]
|
node _T_1109 = bits(_T_1108, 0, 0) @[dma_ctrl.scala 324:58]
|
||||||
node _T_1107 = and(_T_1104, _T_1106) @[dma_ctrl.scala 324:66]
|
node _T_1110 = and(_T_1107, _T_1109) @[dma_ctrl.scala 324:48]
|
||||||
node _T_1108 = or(dma_mem_addr_in_dccm, dma_mem_addr_in_iccm) @[dma_ctrl.scala 324:111]
|
node _T_1111 = dshr(fifo_done, RspPtr) @[dma_ctrl.scala 324:78]
|
||||||
node _T_1109 = or(_T_1108, dma_mem_addr_in_pic) @[dma_ctrl.scala 324:134]
|
node _T_1112 = bits(_T_1111, 0, 0) @[dma_ctrl.scala 324:78]
|
||||||
node _T_1110 = not(_T_1109) @[dma_ctrl.scala 324:88]
|
node _T_1113 = and(_T_1110, _T_1112) @[dma_ctrl.scala 324:67]
|
||||||
node _T_1111 = bits(_T_1110, 0, 0) @[dma_ctrl.scala 324:164]
|
io.dma_dbg_cmd_done <= _T_1113 @[dma_ctrl.scala 324:25]
|
||||||
node _T_1112 = bits(dma_mem_sz_int, 1, 0) @[dma_ctrl.scala 324:184]
|
node _T_1114 = bits(fifo_addr[RspPtr], 2, 2) @[dma_ctrl.scala 325:49]
|
||||||
node _T_1113 = neq(_T_1112, UInt<2>("h02")) @[dma_ctrl.scala 324:191]
|
node _T_1115 = bits(fifo_data[RspPtr], 63, 32) @[dma_ctrl.scala 325:71]
|
||||||
node _T_1114 = or(_T_1111, _T_1113) @[dma_ctrl.scala 324:167]
|
node _T_1116 = bits(fifo_data[RspPtr], 31, 0) @[dma_ctrl.scala 325:98]
|
||||||
node _T_1115 = and(_T_1107, _T_1114) @[dma_ctrl.scala 324:84]
|
node _T_1117 = mux(_T_1114, _T_1115, _T_1116) @[dma_ctrl.scala 325:31]
|
||||||
dma_dbg_cmd_error <= _T_1115 @[dma_ctrl.scala 324:25]
|
io.dma_dbg_rddata <= _T_1117 @[dma_ctrl.scala 325:25]
|
||||||
node _T_1116 = or(dma_mem_addr_in_dccm, dma_mem_addr_in_pic) @[dma_ctrl.scala 328:80]
|
node _T_1118 = orr(fifo_error[RspPtr]) @[dma_ctrl.scala 326:47]
|
||||||
node _T_1117 = and(dma_mem_req, _T_1116) @[dma_ctrl.scala 328:56]
|
io.dma_dbg_cmd_fail <= _T_1118 @[dma_ctrl.scala 326:25]
|
||||||
node _T_1118 = geq(dma_nack_count, dma_nack_count_csr) @[dma_ctrl.scala 328:121]
|
node _T_1119 = dshr(fifo_valid, RdPtr) @[dma_ctrl.scala 328:38]
|
||||||
node _T_1119 = and(_T_1117, _T_1118) @[dma_ctrl.scala 328:103]
|
node _T_1120 = bits(_T_1119, 0, 0) @[dma_ctrl.scala 328:38]
|
||||||
io.dec_dma.tlu_dma.dma_dccm_stall_any <= _T_1119 @[dma_ctrl.scala 328:41]
|
node _T_1121 = dshr(fifo_done, RdPtr) @[dma_ctrl.scala 328:58]
|
||||||
node _T_1120 = and(dma_mem_req, dma_mem_addr_in_iccm) @[dma_ctrl.scala 329:56]
|
node _T_1122 = bits(_T_1121, 0, 0) @[dma_ctrl.scala 328:58]
|
||||||
node _T_1121 = geq(dma_nack_count, dma_nack_count_csr) @[dma_ctrl.scala 329:97]
|
node _T_1123 = eq(_T_1122, UInt<1>("h00")) @[dma_ctrl.scala 328:48]
|
||||||
node _T_1122 = and(_T_1120, _T_1121) @[dma_ctrl.scala 329:79]
|
node _T_1124 = and(_T_1120, _T_1123) @[dma_ctrl.scala 328:46]
|
||||||
io.ifu_dma.dma_ifc.dma_iccm_stall_any <= _T_1122 @[dma_ctrl.scala 329:41]
|
node _T_1125 = dshr(fifo_dbg, RdPtr) @[dma_ctrl.scala 328:76]
|
||||||
io.dec_dma.tlu_dma.dma_iccm_stall_any <= io.ifu_dma.dma_ifc.dma_iccm_stall_any @[dma_ctrl.scala 330:41]
|
node _T_1126 = bits(_T_1125, 0, 0) @[dma_ctrl.scala 328:76]
|
||||||
io.dec_dma.dctl_dma.dma_dccm_stall_any <= io.dec_dma.tlu_dma.dma_dccm_stall_any @[dma_ctrl.scala 331:42]
|
node _T_1127 = and(_T_1124, _T_1126) @[dma_ctrl.scala 328:66]
|
||||||
node _T_1123 = orr(fifo_valid) @[dma_ctrl.scala 334:30]
|
node _T_1128 = or(dma_mem_addr_in_dccm, dma_mem_addr_in_iccm) @[dma_ctrl.scala 328:111]
|
||||||
node _T_1124 = not(_T_1123) @[dma_ctrl.scala 334:17]
|
node _T_1129 = or(_T_1128, dma_mem_addr_in_pic) @[dma_ctrl.scala 328:134]
|
||||||
fifo_empty <= _T_1124 @[dma_ctrl.scala 334:14]
|
node _T_1130 = not(_T_1129) @[dma_ctrl.scala 328:88]
|
||||||
dma_nack_count_csr <= io.dec_dma.tlu_dma.dec_tlu_dma_qos_prty @[dma_ctrl.scala 338:22]
|
node _T_1131 = bits(_T_1130, 0, 0) @[dma_ctrl.scala 328:164]
|
||||||
node _T_1125 = geq(dma_nack_count, dma_nack_count_csr) @[dma_ctrl.scala 339:45]
|
node _T_1132 = bits(dma_mem_sz_int, 1, 0) @[dma_ctrl.scala 328:184]
|
||||||
node _T_1126 = or(io.lsu_dma.dma_lsc_ctl.dma_dccm_req, io.ifu_dma.dma_mem_ctl.dma_iccm_req) @[dma_ctrl.scala 339:115]
|
node _T_1133 = neq(_T_1132, UInt<2>("h02")) @[dma_ctrl.scala 328:191]
|
||||||
node _T_1127 = eq(_T_1126, UInt<1>("h00")) @[dma_ctrl.scala 339:77]
|
node _T_1134 = or(_T_1131, _T_1133) @[dma_ctrl.scala 328:167]
|
||||||
node _T_1128 = bits(_T_1127, 0, 0) @[Bitwise.scala 72:15]
|
node _T_1135 = and(_T_1127, _T_1134) @[dma_ctrl.scala 328:84]
|
||||||
node _T_1129 = mux(_T_1128, UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12]
|
dma_dbg_cmd_error <= _T_1135 @[dma_ctrl.scala 328:25]
|
||||||
node _T_1130 = bits(dma_nack_count, 2, 0) @[dma_ctrl.scala 339:171]
|
node _T_1136 = or(dma_mem_addr_in_dccm, dma_mem_addr_in_pic) @[dma_ctrl.scala 332:80]
|
||||||
node _T_1131 = and(_T_1129, _T_1130) @[dma_ctrl.scala 339:155]
|
node _T_1137 = and(dma_mem_req, _T_1136) @[dma_ctrl.scala 332:56]
|
||||||
node _T_1132 = bits(dma_mem_req, 0, 0) @[dma_ctrl.scala 339:196]
|
node _T_1138 = geq(dma_nack_count, dma_nack_count_csr) @[dma_ctrl.scala 332:121]
|
||||||
node _T_1133 = or(io.lsu_dma.dma_lsc_ctl.dma_dccm_req, io.ifu_dma.dma_mem_ctl.dma_iccm_req) @[dma_ctrl.scala 339:243]
|
node _T_1139 = and(_T_1137, _T_1138) @[dma_ctrl.scala 332:103]
|
||||||
node _T_1134 = eq(_T_1133, UInt<1>("h00")) @[dma_ctrl.scala 339:205]
|
io.dec_dma.tlu_dma.dma_dccm_stall_any <= _T_1139 @[dma_ctrl.scala 332:41]
|
||||||
node _T_1135 = and(_T_1132, _T_1134) @[dma_ctrl.scala 339:203]
|
node _T_1140 = and(dma_mem_req, dma_mem_addr_in_iccm) @[dma_ctrl.scala 333:56]
|
||||||
node _T_1136 = bits(dma_nack_count, 2, 0) @[dma_ctrl.scala 339:298]
|
node _T_1141 = geq(dma_nack_count, dma_nack_count_csr) @[dma_ctrl.scala 333:97]
|
||||||
node _T_1137 = add(_T_1136, UInt<1>("h01")) @[dma_ctrl.scala 339:304]
|
node _T_1142 = and(_T_1140, _T_1141) @[dma_ctrl.scala 333:79]
|
||||||
node _T_1138 = tail(_T_1137, 1) @[dma_ctrl.scala 339:304]
|
io.ifu_dma.dma_ifc.dma_iccm_stall_any <= _T_1142 @[dma_ctrl.scala 333:41]
|
||||||
node _T_1139 = mux(_T_1135, _T_1138, UInt<1>("h00")) @[dma_ctrl.scala 339:182]
|
io.dec_dma.tlu_dma.dma_iccm_stall_any <= io.ifu_dma.dma_ifc.dma_iccm_stall_any @[dma_ctrl.scala 334:41]
|
||||||
node dma_nack_count_d = mux(_T_1125, _T_1131, _T_1139) @[dma_ctrl.scala 339:29]
|
io.dec_dma.dctl_dma.dma_dccm_stall_any <= io.dec_dma.tlu_dma.dma_dccm_stall_any @[dma_ctrl.scala 335:42]
|
||||||
node _T_1140 = bits(dma_nack_count_d, 2, 0) @[dma_ctrl.scala 342:31]
|
node _T_1143 = orr(fifo_valid) @[dma_ctrl.scala 338:30]
|
||||||
node _T_1141 = bits(dma_mem_req, 0, 0) @[dma_ctrl.scala 342:55]
|
node _T_1144 = not(_T_1143) @[dma_ctrl.scala 338:17]
|
||||||
reg _T_1142 : UInt, dma_free_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20]
|
fifo_empty <= _T_1144 @[dma_ctrl.scala 338:14]
|
||||||
when _T_1141 : @[Reg.scala 28:19]
|
dma_nack_count_csr <= io.dec_dma.tlu_dma.dec_tlu_dma_qos_prty @[dma_ctrl.scala 342:22]
|
||||||
_T_1142 <= _T_1140 @[Reg.scala 28:23]
|
node _T_1145 = geq(dma_nack_count, dma_nack_count_csr) @[dma_ctrl.scala 343:45]
|
||||||
|
node _T_1146 = or(io.lsu_dma.dma_lsc_ctl.dma_dccm_req, io.ifu_dma.dma_mem_ctl.dma_iccm_req) @[dma_ctrl.scala 343:115]
|
||||||
|
node _T_1147 = eq(_T_1146, UInt<1>("h00")) @[dma_ctrl.scala 343:77]
|
||||||
|
node _T_1148 = bits(_T_1147, 0, 0) @[Bitwise.scala 72:15]
|
||||||
|
node _T_1149 = mux(_T_1148, UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12]
|
||||||
|
node _T_1150 = bits(dma_nack_count, 2, 0) @[dma_ctrl.scala 343:171]
|
||||||
|
node _T_1151 = and(_T_1149, _T_1150) @[dma_ctrl.scala 343:155]
|
||||||
|
node _T_1152 = bits(dma_mem_req, 0, 0) @[dma_ctrl.scala 343:196]
|
||||||
|
node _T_1153 = or(io.lsu_dma.dma_lsc_ctl.dma_dccm_req, io.ifu_dma.dma_mem_ctl.dma_iccm_req) @[dma_ctrl.scala 343:243]
|
||||||
|
node _T_1154 = eq(_T_1153, UInt<1>("h00")) @[dma_ctrl.scala 343:205]
|
||||||
|
node _T_1155 = and(_T_1152, _T_1154) @[dma_ctrl.scala 343:203]
|
||||||
|
node _T_1156 = bits(dma_nack_count, 2, 0) @[dma_ctrl.scala 343:298]
|
||||||
|
node _T_1157 = add(_T_1156, UInt<1>("h01")) @[dma_ctrl.scala 343:304]
|
||||||
|
node _T_1158 = tail(_T_1157, 1) @[dma_ctrl.scala 343:304]
|
||||||
|
node _T_1159 = mux(_T_1155, _T_1158, UInt<1>("h00")) @[dma_ctrl.scala 343:182]
|
||||||
|
node dma_nack_count_d = mux(_T_1145, _T_1151, _T_1159) @[dma_ctrl.scala 343:29]
|
||||||
|
node _T_1160 = bits(dma_nack_count_d, 2, 0) @[dma_ctrl.scala 346:31]
|
||||||
|
node _T_1161 = bits(dma_mem_req, 0, 0) @[dma_ctrl.scala 346:55]
|
||||||
|
reg _T_1162 : UInt, dma_free_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20]
|
||||||
|
when _T_1161 : @[Reg.scala 28:19]
|
||||||
|
_T_1162 <= _T_1160 @[Reg.scala 28:23]
|
||||||
skip @[Reg.scala 28:19]
|
skip @[Reg.scala 28:19]
|
||||||
dma_nack_count <= _T_1142 @[dma_ctrl.scala 341:22]
|
dma_nack_count <= _T_1162 @[dma_ctrl.scala 345:22]
|
||||||
node _T_1143 = dshr(fifo_valid, RdPtr) @[dma_ctrl.scala 347:33]
|
node _T_1163 = dshr(fifo_valid, RdPtr) @[dma_ctrl.scala 351:33]
|
||||||
node _T_1144 = bits(_T_1143, 0, 0) @[dma_ctrl.scala 347:33]
|
node _T_1164 = bits(_T_1163, 0, 0) @[dma_ctrl.scala 351:33]
|
||||||
node _T_1145 = dshr(fifo_rpend, RdPtr) @[dma_ctrl.scala 347:54]
|
node _T_1165 = dshr(fifo_rpend, RdPtr) @[dma_ctrl.scala 351:54]
|
||||||
node _T_1146 = bits(_T_1145, 0, 0) @[dma_ctrl.scala 347:54]
|
node _T_1166 = bits(_T_1165, 0, 0) @[dma_ctrl.scala 351:54]
|
||||||
node _T_1147 = eq(_T_1146, UInt<1>("h00")) @[dma_ctrl.scala 347:43]
|
node _T_1167 = eq(_T_1166, UInt<1>("h00")) @[dma_ctrl.scala 351:43]
|
||||||
node _T_1148 = and(_T_1144, _T_1147) @[dma_ctrl.scala 347:41]
|
node _T_1168 = and(_T_1164, _T_1167) @[dma_ctrl.scala 351:41]
|
||||||
node _T_1149 = dshr(fifo_done, RdPtr) @[dma_ctrl.scala 347:74]
|
node _T_1169 = dshr(fifo_done, RdPtr) @[dma_ctrl.scala 351:74]
|
||||||
node _T_1150 = bits(_T_1149, 0, 0) @[dma_ctrl.scala 347:74]
|
node _T_1170 = bits(_T_1169, 0, 0) @[dma_ctrl.scala 351:74]
|
||||||
node _T_1151 = eq(_T_1150, UInt<1>("h00")) @[dma_ctrl.scala 347:64]
|
node _T_1171 = eq(_T_1170, UInt<1>("h00")) @[dma_ctrl.scala 351:64]
|
||||||
node _T_1152 = and(_T_1148, _T_1151) @[dma_ctrl.scala 347:62]
|
node _T_1172 = and(_T_1168, _T_1171) @[dma_ctrl.scala 351:62]
|
||||||
node _T_1153 = or(dma_address_error, dma_alignment_error) @[dma_ctrl.scala 347:104]
|
node _T_1173 = or(dma_address_error, dma_alignment_error) @[dma_ctrl.scala 351:104]
|
||||||
node _T_1154 = or(_T_1153, dma_dbg_cmd_error) @[dma_ctrl.scala 347:126]
|
node _T_1174 = or(_T_1173, dma_dbg_cmd_error) @[dma_ctrl.scala 351:126]
|
||||||
node _T_1155 = eq(_T_1154, UInt<1>("h00")) @[dma_ctrl.scala 347:84]
|
node _T_1175 = eq(_T_1174, UInt<1>("h00")) @[dma_ctrl.scala 351:84]
|
||||||
node _T_1156 = and(_T_1152, _T_1155) @[dma_ctrl.scala 347:82]
|
node _T_1176 = and(_T_1172, _T_1175) @[dma_ctrl.scala 351:82]
|
||||||
dma_mem_req <= _T_1156 @[dma_ctrl.scala 347:20]
|
dma_mem_req <= _T_1176 @[dma_ctrl.scala 351:20]
|
||||||
node _T_1157 = or(dma_mem_addr_in_dccm, dma_mem_addr_in_pic) @[dma_ctrl.scala 348:79]
|
node _T_1177 = or(dma_mem_addr_in_dccm, dma_mem_addr_in_pic) @[dma_ctrl.scala 352:79]
|
||||||
node _T_1158 = and(dma_mem_req, _T_1157) @[dma_ctrl.scala 348:55]
|
node _T_1178 = and(dma_mem_req, _T_1177) @[dma_ctrl.scala 352:55]
|
||||||
node _T_1159 = and(_T_1158, io.lsu_dma.dccm_ready) @[dma_ctrl.scala 348:102]
|
node _T_1179 = and(_T_1178, io.lsu_dma.dccm_ready) @[dma_ctrl.scala 352:102]
|
||||||
io.lsu_dma.dma_lsc_ctl.dma_dccm_req <= _T_1159 @[dma_ctrl.scala 348:40]
|
io.lsu_dma.dma_lsc_ctl.dma_dccm_req <= _T_1179 @[dma_ctrl.scala 352:40]
|
||||||
node _T_1160 = and(dma_mem_req, dma_mem_addr_in_iccm) @[dma_ctrl.scala 349:55]
|
node _T_1180 = and(dma_mem_req, dma_mem_addr_in_iccm) @[dma_ctrl.scala 353:55]
|
||||||
node _T_1161 = and(_T_1160, io.iccm_ready) @[dma_ctrl.scala 349:78]
|
node _T_1181 = and(_T_1180, io.iccm_ready) @[dma_ctrl.scala 353:78]
|
||||||
io.ifu_dma.dma_mem_ctl.dma_iccm_req <= _T_1161 @[dma_ctrl.scala 349:40]
|
io.ifu_dma.dma_mem_ctl.dma_iccm_req <= _T_1181 @[dma_ctrl.scala 353:40]
|
||||||
io.lsu_dma.dma_mem_tag <= RdPtr @[dma_ctrl.scala 350:28]
|
io.lsu_dma.dma_mem_tag <= RdPtr @[dma_ctrl.scala 354:28]
|
||||||
dma_mem_addr_int <= fifo_addr[RdPtr] @[dma_ctrl.scala 351:20]
|
dma_mem_addr_int <= fifo_addr[RdPtr] @[dma_ctrl.scala 355:20]
|
||||||
dma_mem_sz_int <= fifo_sz[RdPtr] @[dma_ctrl.scala 352:20]
|
dma_mem_sz_int <= fifo_sz[RdPtr] @[dma_ctrl.scala 356:20]
|
||||||
node _T_1162 = bits(dma_mem_byteen, 7, 0) @[dma_ctrl.scala 353:101]
|
node _T_1182 = bits(dma_mem_byteen, 7, 0) @[dma_ctrl.scala 357:101]
|
||||||
node _T_1163 = eq(_T_1162, UInt<8>("h0f0")) @[dma_ctrl.scala 353:107]
|
node _T_1183 = eq(_T_1182, UInt<8>("h0f0")) @[dma_ctrl.scala 357:107]
|
||||||
node _T_1164 = and(io.lsu_dma.dma_lsc_ctl.dma_mem_write, _T_1163) @[dma_ctrl.scala 353:84]
|
node _T_1184 = and(io.lsu_dma.dma_lsc_ctl.dma_mem_write, _T_1183) @[dma_ctrl.scala 357:84]
|
||||||
node _T_1165 = bits(dma_mem_addr_int, 31, 3) @[dma_ctrl.scala 353:141]
|
node _T_1185 = bits(dma_mem_addr_int, 31, 3) @[dma_ctrl.scala 357:141]
|
||||||
node _T_1166 = bits(dma_mem_addr_int, 1, 0) @[dma_ctrl.scala 353:171]
|
node _T_1186 = bits(dma_mem_addr_int, 1, 0) @[dma_ctrl.scala 357:171]
|
||||||
node _T_1167 = cat(_T_1165, UInt<1>("h01")) @[Cat.scala 29:58]
|
node _T_1187 = cat(_T_1185, UInt<1>("h01")) @[Cat.scala 29:58]
|
||||||
node _T_1168 = cat(_T_1167, _T_1166) @[Cat.scala 29:58]
|
node _T_1188 = cat(_T_1187, _T_1186) @[Cat.scala 29:58]
|
||||||
node _T_1169 = bits(dma_mem_addr_int, 31, 0) @[dma_ctrl.scala 353:196]
|
node _T_1189 = bits(dma_mem_addr_int, 31, 0) @[dma_ctrl.scala 357:196]
|
||||||
node _T_1170 = mux(_T_1164, _T_1168, _T_1169) @[dma_ctrl.scala 353:46]
|
node _T_1190 = mux(_T_1184, _T_1188, _T_1189) @[dma_ctrl.scala 357:46]
|
||||||
io.lsu_dma.dma_lsc_ctl.dma_mem_addr <= _T_1170 @[dma_ctrl.scala 353:40]
|
io.lsu_dma.dma_lsc_ctl.dma_mem_addr <= _T_1190 @[dma_ctrl.scala 357:40]
|
||||||
node _T_1171 = bits(dma_mem_byteen, 7, 0) @[dma_ctrl.scala 354:102]
|
node _T_1191 = bits(dma_mem_byteen, 7, 0) @[dma_ctrl.scala 358:102]
|
||||||
node _T_1172 = eq(_T_1171, UInt<4>("h0f")) @[dma_ctrl.scala 354:108]
|
node _T_1192 = eq(_T_1191, UInt<4>("h0f")) @[dma_ctrl.scala 358:108]
|
||||||
node _T_1173 = bits(dma_mem_byteen, 7, 0) @[dma_ctrl.scala 354:138]
|
node _T_1193 = bits(dma_mem_byteen, 7, 0) @[dma_ctrl.scala 358:138]
|
||||||
node _T_1174 = eq(_T_1173, UInt<8>("h0f0")) @[dma_ctrl.scala 354:144]
|
node _T_1194 = eq(_T_1193, UInt<8>("h0f0")) @[dma_ctrl.scala 358:144]
|
||||||
node _T_1175 = or(_T_1172, _T_1174) @[dma_ctrl.scala 354:121]
|
node _T_1195 = or(_T_1192, _T_1194) @[dma_ctrl.scala 358:121]
|
||||||
node _T_1176 = and(io.lsu_dma.dma_lsc_ctl.dma_mem_write, _T_1175) @[dma_ctrl.scala 354:84]
|
node _T_1196 = and(io.lsu_dma.dma_lsc_ctl.dma_mem_write, _T_1195) @[dma_ctrl.scala 358:84]
|
||||||
node _T_1177 = bits(dma_mem_sz_int, 2, 0) @[dma_ctrl.scala 354:178]
|
node _T_1197 = bits(dma_mem_sz_int, 2, 0) @[dma_ctrl.scala 358:178]
|
||||||
node _T_1178 = mux(_T_1176, UInt<2>("h02"), _T_1177) @[dma_ctrl.scala 354:46]
|
node _T_1198 = mux(_T_1196, UInt<2>("h02"), _T_1197) @[dma_ctrl.scala 358:46]
|
||||||
io.lsu_dma.dma_lsc_ctl.dma_mem_sz <= _T_1178 @[dma_ctrl.scala 354:40]
|
io.lsu_dma.dma_lsc_ctl.dma_mem_sz <= _T_1198 @[dma_ctrl.scala 358:40]
|
||||||
dma_mem_byteen <= fifo_byteen[RdPtr] @[dma_ctrl.scala 355:20]
|
dma_mem_byteen <= fifo_byteen[RdPtr] @[dma_ctrl.scala 359:20]
|
||||||
node _T_1179 = dshr(fifo_write, RdPtr) @[dma_ctrl.scala 356:53]
|
node _T_1199 = dshr(fifo_write, RdPtr) @[dma_ctrl.scala 360:53]
|
||||||
node _T_1180 = bits(_T_1179, 0, 0) @[dma_ctrl.scala 356:53]
|
node _T_1200 = bits(_T_1199, 0, 0) @[dma_ctrl.scala 360:53]
|
||||||
io.lsu_dma.dma_lsc_ctl.dma_mem_write <= _T_1180 @[dma_ctrl.scala 356:40]
|
io.lsu_dma.dma_lsc_ctl.dma_mem_write <= _T_1200 @[dma_ctrl.scala 360:40]
|
||||||
io.lsu_dma.dma_lsc_ctl.dma_mem_wdata <= fifo_data[RdPtr] @[dma_ctrl.scala 357:40]
|
io.lsu_dma.dma_lsc_ctl.dma_mem_wdata <= fifo_data[RdPtr] @[dma_ctrl.scala 361:40]
|
||||||
node _T_1181 = eq(io.lsu_dma.dma_lsc_ctl.dma_mem_write, UInt<1>("h00")) @[dma_ctrl.scala 361:83]
|
node _T_1201 = eq(io.lsu_dma.dma_lsc_ctl.dma_mem_write, UInt<1>("h00")) @[dma_ctrl.scala 365:83]
|
||||||
node _T_1182 = and(io.lsu_dma.dma_lsc_ctl.dma_dccm_req, _T_1181) @[dma_ctrl.scala 361:81]
|
node _T_1202 = and(io.lsu_dma.dma_lsc_ctl.dma_dccm_req, _T_1201) @[dma_ctrl.scala 365:81]
|
||||||
io.dec_dma.tlu_dma.dma_pmu_dccm_read <= _T_1182 @[dma_ctrl.scala 361:42]
|
io.dec_dma.tlu_dma.dma_pmu_dccm_read <= _T_1202 @[dma_ctrl.scala 365:42]
|
||||||
node _T_1183 = and(io.lsu_dma.dma_lsc_ctl.dma_dccm_req, io.lsu_dma.dma_lsc_ctl.dma_mem_write) @[dma_ctrl.scala 362:81]
|
node _T_1203 = and(io.lsu_dma.dma_lsc_ctl.dma_dccm_req, io.lsu_dma.dma_lsc_ctl.dma_mem_write) @[dma_ctrl.scala 366:81]
|
||||||
io.dec_dma.tlu_dma.dma_pmu_dccm_write <= _T_1183 @[dma_ctrl.scala 362:42]
|
io.dec_dma.tlu_dma.dma_pmu_dccm_write <= _T_1203 @[dma_ctrl.scala 366:42]
|
||||||
node _T_1184 = or(io.lsu_dma.dma_lsc_ctl.dma_dccm_req, io.ifu_dma.dma_mem_ctl.dma_iccm_req) @[dma_ctrl.scala 363:82]
|
node _T_1204 = or(io.lsu_dma.dma_lsc_ctl.dma_dccm_req, io.ifu_dma.dma_mem_ctl.dma_iccm_req) @[dma_ctrl.scala 367:82]
|
||||||
node _T_1185 = eq(io.lsu_dma.dma_lsc_ctl.dma_mem_write, UInt<1>("h00")) @[dma_ctrl.scala 363:123]
|
node _T_1205 = eq(io.lsu_dma.dma_lsc_ctl.dma_mem_write, UInt<1>("h00")) @[dma_ctrl.scala 367:123]
|
||||||
node _T_1186 = and(_T_1184, _T_1185) @[dma_ctrl.scala 363:121]
|
node _T_1206 = and(_T_1204, _T_1205) @[dma_ctrl.scala 367:121]
|
||||||
io.dec_dma.tlu_dma.dma_pmu_any_read <= _T_1186 @[dma_ctrl.scala 363:42]
|
io.dec_dma.tlu_dma.dma_pmu_any_read <= _T_1206 @[dma_ctrl.scala 367:42]
|
||||||
node _T_1187 = or(io.lsu_dma.dma_lsc_ctl.dma_dccm_req, io.ifu_dma.dma_mem_ctl.dma_iccm_req) @[dma_ctrl.scala 364:82]
|
node _T_1207 = or(io.lsu_dma.dma_lsc_ctl.dma_dccm_req, io.ifu_dma.dma_mem_ctl.dma_iccm_req) @[dma_ctrl.scala 368:82]
|
||||||
node _T_1188 = and(_T_1187, io.lsu_dma.dma_lsc_ctl.dma_mem_write) @[dma_ctrl.scala 364:121]
|
node _T_1208 = and(_T_1207, io.lsu_dma.dma_lsc_ctl.dma_mem_write) @[dma_ctrl.scala 368:121]
|
||||||
io.dec_dma.tlu_dma.dma_pmu_any_write <= _T_1188 @[dma_ctrl.scala 364:42]
|
io.dec_dma.tlu_dma.dma_pmu_any_write <= _T_1208 @[dma_ctrl.scala 368:42]
|
||||||
reg _T_1189 : UInt<1>, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[dma_ctrl.scala 369:12]
|
reg _T_1209 : UInt<1>, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[dma_ctrl.scala 373:12]
|
||||||
_T_1189 <= fifo_full_spec @[dma_ctrl.scala 369:12]
|
_T_1209 <= fifo_full_spec @[dma_ctrl.scala 373:12]
|
||||||
fifo_full <= _T_1189 @[dma_ctrl.scala 368:22]
|
fifo_full <= _T_1209 @[dma_ctrl.scala 372:22]
|
||||||
reg _T_1190 : UInt<1>, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[dma_ctrl.scala 373:12]
|
reg _T_1210 : UInt<1>, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[dma_ctrl.scala 377:12]
|
||||||
_T_1190 <= io.dbg_dma_io.dbg_dma_bubble @[dma_ctrl.scala 373:12]
|
_T_1210 <= io.dbg_dma_io.dbg_dma_bubble @[dma_ctrl.scala 377:12]
|
||||||
dbg_dma_bubble_bus <= _T_1190 @[dma_ctrl.scala 372:22]
|
dbg_dma_bubble_bus <= _T_1210 @[dma_ctrl.scala 376:22]
|
||||||
reg _T_1191 : UInt<1>, io.free_clk with : (reset => (reset, UInt<1>("h00"))) @[dma_ctrl.scala 377:12]
|
reg _T_1211 : UInt<1>, io.free_clk with : (reset => (reset, UInt<1>("h00"))) @[dma_ctrl.scala 381:12]
|
||||||
_T_1191 <= io.dma_dbg_cmd_done @[dma_ctrl.scala 377:12]
|
_T_1211 <= io.dma_dbg_cmd_done @[dma_ctrl.scala 381:12]
|
||||||
dma_dbg_cmd_done_q <= _T_1191 @[dma_ctrl.scala 376:22]
|
dma_dbg_cmd_done_q <= _T_1211 @[dma_ctrl.scala 380:22]
|
||||||
node _T_1192 = and(bus_cmd_valid, io.dma_bus_clk_en) @[dma_ctrl.scala 382:44]
|
node _T_1212 = and(bus_cmd_valid, io.dma_bus_clk_en) @[dma_ctrl.scala 386:44]
|
||||||
node _T_1193 = or(_T_1192, io.dbg_dma.dbg_ib.dbg_cmd_valid) @[dma_ctrl.scala 382:65]
|
node _T_1213 = or(_T_1212, io.dbg_dma.dbg_ib.dbg_cmd_valid) @[dma_ctrl.scala 386:65]
|
||||||
node dma_buffer_c1_clken = or(_T_1193, io.clk_override) @[dma_ctrl.scala 382:99]
|
node dma_buffer_c1_clken = or(_T_1213, io.clk_override) @[dma_ctrl.scala 386:99]
|
||||||
node _T_1194 = or(bus_cmd_valid, bus_rsp_valid) @[dma_ctrl.scala 383:44]
|
node _T_1214 = or(bus_cmd_valid, bus_rsp_valid) @[dma_ctrl.scala 387:44]
|
||||||
node _T_1195 = or(_T_1194, io.dbg_dma.dbg_ib.dbg_cmd_valid) @[dma_ctrl.scala 383:60]
|
node _T_1215 = or(_T_1214, io.dbg_dma.dbg_ib.dbg_cmd_valid) @[dma_ctrl.scala 387:60]
|
||||||
node _T_1196 = or(_T_1195, io.dma_dbg_cmd_done) @[dma_ctrl.scala 383:94]
|
node _T_1216 = or(_T_1215, io.dma_dbg_cmd_done) @[dma_ctrl.scala 387:94]
|
||||||
node _T_1197 = or(_T_1196, dma_dbg_cmd_done_q) @[dma_ctrl.scala 383:116]
|
node _T_1217 = or(_T_1216, dma_dbg_cmd_done_q) @[dma_ctrl.scala 387:116]
|
||||||
node _T_1198 = orr(fifo_valid) @[dma_ctrl.scala 383:151]
|
node _T_1218 = orr(fifo_valid) @[dma_ctrl.scala 387:151]
|
||||||
node _T_1199 = or(_T_1197, _T_1198) @[dma_ctrl.scala 383:137]
|
node _T_1219 = or(_T_1217, _T_1218) @[dma_ctrl.scala 387:137]
|
||||||
node dma_free_clken = or(_T_1199, io.clk_override) @[dma_ctrl.scala 383:156]
|
node dma_free_clken = or(_T_1219, io.clk_override) @[dma_ctrl.scala 387:156]
|
||||||
inst dma_buffer_c1cgc of rvclkhdr_10 @[dma_ctrl.scala 385:32]
|
inst dma_buffer_c1cgc of rvclkhdr_10 @[dma_ctrl.scala 389:32]
|
||||||
dma_buffer_c1cgc.clock <= clock
|
dma_buffer_c1cgc.clock <= clock
|
||||||
dma_buffer_c1cgc.reset <= reset
|
dma_buffer_c1cgc.reset <= reset
|
||||||
dma_buffer_c1cgc.io.en <= dma_buffer_c1_clken @[dma_ctrl.scala 386:33]
|
dma_buffer_c1cgc.io.en <= dma_buffer_c1_clken @[dma_ctrl.scala 390:33]
|
||||||
dma_buffer_c1cgc.io.scan_mode <= io.scan_mode @[dma_ctrl.scala 387:33]
|
dma_buffer_c1cgc.io.scan_mode <= io.scan_mode @[dma_ctrl.scala 391:33]
|
||||||
dma_buffer_c1cgc.io.clk <= clock @[dma_ctrl.scala 388:33]
|
dma_buffer_c1cgc.io.clk <= clock @[dma_ctrl.scala 392:33]
|
||||||
dma_buffer_c1_clk <= dma_buffer_c1cgc.io.l1clk @[dma_ctrl.scala 389:33]
|
dma_buffer_c1_clk <= dma_buffer_c1cgc.io.l1clk @[dma_ctrl.scala 393:33]
|
||||||
inst dma_free_cgc of rvclkhdr_11 @[dma_ctrl.scala 391:28]
|
inst dma_free_cgc of rvclkhdr_11 @[dma_ctrl.scala 395:28]
|
||||||
dma_free_cgc.clock <= clock
|
dma_free_cgc.clock <= clock
|
||||||
dma_free_cgc.reset <= reset
|
dma_free_cgc.reset <= reset
|
||||||
dma_free_cgc.io.en <= dma_free_clken @[dma_ctrl.scala 392:29]
|
dma_free_cgc.io.en <= dma_free_clken @[dma_ctrl.scala 396:29]
|
||||||
dma_free_cgc.io.scan_mode <= io.scan_mode @[dma_ctrl.scala 393:29]
|
dma_free_cgc.io.scan_mode <= io.scan_mode @[dma_ctrl.scala 397:29]
|
||||||
dma_free_cgc.io.clk <= clock @[dma_ctrl.scala 394:29]
|
dma_free_cgc.io.clk <= clock @[dma_ctrl.scala 398:29]
|
||||||
dma_free_clk <= dma_free_cgc.io.l1clk @[dma_ctrl.scala 395:29]
|
dma_free_clk <= dma_free_cgc.io.l1clk @[dma_ctrl.scala 399:29]
|
||||||
inst dma_bus_cgc of rvclkhdr_12 @[dma_ctrl.scala 397:27]
|
inst dma_bus_cgc of rvclkhdr_12 @[dma_ctrl.scala 401:27]
|
||||||
dma_bus_cgc.clock <= clock
|
dma_bus_cgc.clock <= clock
|
||||||
dma_bus_cgc.reset <= reset
|
dma_bus_cgc.reset <= reset
|
||||||
dma_bus_cgc.io.en <= io.dma_bus_clk_en @[dma_ctrl.scala 398:28]
|
dma_bus_cgc.io.en <= io.dma_bus_clk_en @[dma_ctrl.scala 402:28]
|
||||||
dma_bus_cgc.io.scan_mode <= io.scan_mode @[dma_ctrl.scala 399:28]
|
dma_bus_cgc.io.scan_mode <= io.scan_mode @[dma_ctrl.scala 403:28]
|
||||||
dma_bus_cgc.io.clk <= clock @[dma_ctrl.scala 400:28]
|
dma_bus_cgc.io.clk <= clock @[dma_ctrl.scala 404:28]
|
||||||
dma_bus_clk <= dma_bus_cgc.io.l1clk @[dma_ctrl.scala 401:28]
|
dma_bus_clk <= dma_bus_cgc.io.l1clk @[dma_ctrl.scala 405:28]
|
||||||
node wrbuf_en = and(io.dma_axi.aw.valid, io.dma_axi.aw.ready) @[dma_ctrl.scala 405:47]
|
node wrbuf_en = and(io.dma_axi.aw.valid, io.dma_axi.aw.ready) @[dma_ctrl.scala 409:47]
|
||||||
node wrbuf_data_en = and(io.dma_axi.w.valid, io.dma_axi.w.ready) @[dma_ctrl.scala 406:46]
|
node wrbuf_data_en = and(io.dma_axi.w.valid, io.dma_axi.w.ready) @[dma_ctrl.scala 410:46]
|
||||||
node wrbuf_cmd_sent = and(axi_mstr_prty_en, bus_cmd_write) @[dma_ctrl.scala 407:40]
|
node wrbuf_cmd_sent = and(axi_mstr_prty_en, bus_cmd_write) @[dma_ctrl.scala 411:40]
|
||||||
node _T_1200 = bits(wrbuf_cmd_sent, 0, 0) @[dma_ctrl.scala 408:42]
|
node _T_1220 = bits(wrbuf_cmd_sent, 0, 0) @[dma_ctrl.scala 412:42]
|
||||||
node _T_1201 = eq(wrbuf_en, UInt<1>("h00")) @[dma_ctrl.scala 408:51]
|
node _T_1221 = eq(wrbuf_en, UInt<1>("h00")) @[dma_ctrl.scala 412:51]
|
||||||
node wrbuf_rst = and(_T_1200, _T_1201) @[dma_ctrl.scala 408:49]
|
node wrbuf_rst = and(_T_1220, _T_1221) @[dma_ctrl.scala 412:49]
|
||||||
node _T_1202 = bits(wrbuf_cmd_sent, 0, 0) @[dma_ctrl.scala 409:42]
|
node _T_1222 = bits(wrbuf_cmd_sent, 0, 0) @[dma_ctrl.scala 413:42]
|
||||||
node _T_1203 = eq(wrbuf_data_en, UInt<1>("h00")) @[dma_ctrl.scala 409:51]
|
node _T_1223 = eq(wrbuf_data_en, UInt<1>("h00")) @[dma_ctrl.scala 413:51]
|
||||||
node wrbuf_data_rst = and(_T_1202, _T_1203) @[dma_ctrl.scala 409:49]
|
node wrbuf_data_rst = and(_T_1222, _T_1223) @[dma_ctrl.scala 413:49]
|
||||||
node _T_1204 = mux(wrbuf_en, UInt<1>("h01"), wrbuf_vld) @[dma_ctrl.scala 411:63]
|
node _T_1224 = mux(wrbuf_en, UInt<1>("h01"), wrbuf_vld) @[dma_ctrl.scala 415:63]
|
||||||
node _T_1205 = eq(wrbuf_rst, UInt<1>("h00")) @[dma_ctrl.scala 411:92]
|
node _T_1225 = eq(wrbuf_rst, UInt<1>("h00")) @[dma_ctrl.scala 415:92]
|
||||||
node _T_1206 = and(_T_1204, _T_1205) @[dma_ctrl.scala 411:90]
|
node _T_1226 = and(_T_1224, _T_1225) @[dma_ctrl.scala 415:90]
|
||||||
reg _T_1207 : UInt, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[dma_ctrl.scala 411:59]
|
reg _T_1227 : UInt, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[dma_ctrl.scala 415:59]
|
||||||
_T_1207 <= _T_1206 @[dma_ctrl.scala 411:59]
|
_T_1227 <= _T_1226 @[dma_ctrl.scala 415:59]
|
||||||
wrbuf_vld <= _T_1207 @[dma_ctrl.scala 411:25]
|
wrbuf_vld <= _T_1227 @[dma_ctrl.scala 415:25]
|
||||||
node _T_1208 = mux(wrbuf_data_en, UInt<1>("h01"), wrbuf_data_vld) @[dma_ctrl.scala 413:63]
|
node _T_1228 = mux(wrbuf_data_en, UInt<1>("h01"), wrbuf_data_vld) @[dma_ctrl.scala 417:63]
|
||||||
node _T_1209 = eq(wrbuf_data_rst, UInt<1>("h00")) @[dma_ctrl.scala 413:102]
|
node _T_1229 = eq(wrbuf_data_rst, UInt<1>("h00")) @[dma_ctrl.scala 417:102]
|
||||||
node _T_1210 = and(_T_1208, _T_1209) @[dma_ctrl.scala 413:100]
|
node _T_1230 = and(_T_1228, _T_1229) @[dma_ctrl.scala 417:100]
|
||||||
reg _T_1211 : UInt, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[dma_ctrl.scala 413:59]
|
reg _T_1231 : UInt, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[dma_ctrl.scala 417:59]
|
||||||
_T_1211 <= _T_1210 @[dma_ctrl.scala 413:59]
|
_T_1231 <= _T_1230 @[dma_ctrl.scala 417:59]
|
||||||
wrbuf_data_vld <= _T_1211 @[dma_ctrl.scala 413:25]
|
wrbuf_data_vld <= _T_1231 @[dma_ctrl.scala 417:25]
|
||||||
reg wrbuf_tag : UInt, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20]
|
reg wrbuf_tag : UInt, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20]
|
||||||
when wrbuf_en : @[Reg.scala 28:19]
|
when wrbuf_en : @[Reg.scala 28:19]
|
||||||
wrbuf_tag <= io.dma_axi.aw.bits.id @[Reg.scala 28:23]
|
wrbuf_tag <= io.dma_axi.aw.bits.id @[Reg.scala 28:23]
|
||||||
|
@ -2135,21 +2155,21 @@ circuit dma_ctrl :
|
||||||
when wrbuf_en : @[Reg.scala 28:19]
|
when wrbuf_en : @[Reg.scala 28:19]
|
||||||
wrbuf_sz <= io.dma_axi.aw.bits.size @[Reg.scala 28:23]
|
wrbuf_sz <= io.dma_axi.aw.bits.size @[Reg.scala 28:23]
|
||||||
skip @[Reg.scala 28:19]
|
skip @[Reg.scala 28:19]
|
||||||
node _T_1212 = and(wrbuf_en, io.dma_bus_clk_en) @[dma_ctrl.scala 423:68]
|
node _T_1232 = and(wrbuf_en, io.dma_bus_clk_en) @[dma_ctrl.scala 427:68]
|
||||||
inst rvclkhdr_10 of rvclkhdr_13 @[lib.scala 352:23]
|
inst rvclkhdr_10 of rvclkhdr_13 @[lib.scala 352:23]
|
||||||
rvclkhdr_10.clock <= clock
|
rvclkhdr_10.clock <= clock
|
||||||
rvclkhdr_10.reset <= reset
|
rvclkhdr_10.reset <= reset
|
||||||
rvclkhdr_10.io.clk <= clock @[lib.scala 354:18]
|
rvclkhdr_10.io.clk <= clock @[lib.scala 354:18]
|
||||||
rvclkhdr_10.io.en <= _T_1212 @[lib.scala 355:17]
|
rvclkhdr_10.io.en <= _T_1232 @[lib.scala 355:17]
|
||||||
rvclkhdr_10.io.scan_mode <= io.scan_mode @[lib.scala 356:24]
|
rvclkhdr_10.io.scan_mode <= io.scan_mode @[lib.scala 356:24]
|
||||||
reg wrbuf_addr : UInt, rvclkhdr_10.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[lib.scala 358:16]
|
reg wrbuf_addr : UInt, rvclkhdr_10.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[lib.scala 358:16]
|
||||||
wrbuf_addr <= io.dma_axi.aw.bits.addr @[lib.scala 358:16]
|
wrbuf_addr <= io.dma_axi.aw.bits.addr @[lib.scala 358:16]
|
||||||
node _T_1213 = and(wrbuf_data_en, io.dma_bus_clk_en) @[dma_ctrl.scala 425:72]
|
node _T_1233 = and(wrbuf_data_en, io.dma_bus_clk_en) @[dma_ctrl.scala 429:72]
|
||||||
inst rvclkhdr_11 of rvclkhdr_14 @[lib.scala 352:23]
|
inst rvclkhdr_11 of rvclkhdr_14 @[lib.scala 352:23]
|
||||||
rvclkhdr_11.clock <= clock
|
rvclkhdr_11.clock <= clock
|
||||||
rvclkhdr_11.reset <= reset
|
rvclkhdr_11.reset <= reset
|
||||||
rvclkhdr_11.io.clk <= clock @[lib.scala 354:18]
|
rvclkhdr_11.io.clk <= clock @[lib.scala 354:18]
|
||||||
rvclkhdr_11.io.en <= _T_1213 @[lib.scala 355:17]
|
rvclkhdr_11.io.en <= _T_1233 @[lib.scala 355:17]
|
||||||
rvclkhdr_11.io.scan_mode <= io.scan_mode @[lib.scala 356:24]
|
rvclkhdr_11.io.scan_mode <= io.scan_mode @[lib.scala 356:24]
|
||||||
reg wrbuf_data : UInt, rvclkhdr_11.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[lib.scala 358:16]
|
reg wrbuf_data : UInt, rvclkhdr_11.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[lib.scala 358:16]
|
||||||
wrbuf_data <= io.dma_axi.w.bits.data @[lib.scala 358:16]
|
wrbuf_data <= io.dma_axi.w.bits.data @[lib.scala 358:16]
|
||||||
|
@ -2157,18 +2177,18 @@ circuit dma_ctrl :
|
||||||
when wrbuf_data_en : @[Reg.scala 28:19]
|
when wrbuf_data_en : @[Reg.scala 28:19]
|
||||||
wrbuf_byteen <= io.dma_axi.w.bits.strb @[Reg.scala 28:23]
|
wrbuf_byteen <= io.dma_axi.w.bits.strb @[Reg.scala 28:23]
|
||||||
skip @[Reg.scala 28:19]
|
skip @[Reg.scala 28:19]
|
||||||
node rdbuf_en = and(io.dma_axi.ar.valid, io.dma_axi.ar.ready) @[dma_ctrl.scala 433:59]
|
node rdbuf_en = and(io.dma_axi.ar.valid, io.dma_axi.ar.ready) @[dma_ctrl.scala 437:59]
|
||||||
node _T_1214 = eq(bus_cmd_write, UInt<1>("h00")) @[dma_ctrl.scala 434:44]
|
node _T_1234 = eq(bus_cmd_write, UInt<1>("h00")) @[dma_ctrl.scala 438:44]
|
||||||
node rdbuf_cmd_sent = and(axi_mstr_prty_en, _T_1214) @[dma_ctrl.scala 434:42]
|
node rdbuf_cmd_sent = and(axi_mstr_prty_en, _T_1234) @[dma_ctrl.scala 438:42]
|
||||||
node _T_1215 = bits(rdbuf_cmd_sent, 0, 0) @[dma_ctrl.scala 435:54]
|
node _T_1235 = bits(rdbuf_cmd_sent, 0, 0) @[dma_ctrl.scala 439:54]
|
||||||
node _T_1216 = eq(rdbuf_en, UInt<1>("h00")) @[dma_ctrl.scala 435:63]
|
node _T_1236 = eq(rdbuf_en, UInt<1>("h00")) @[dma_ctrl.scala 439:63]
|
||||||
node rdbuf_rst = and(_T_1215, _T_1216) @[dma_ctrl.scala 435:61]
|
node rdbuf_rst = and(_T_1235, _T_1236) @[dma_ctrl.scala 439:61]
|
||||||
node _T_1217 = mux(rdbuf_en, UInt<1>("h01"), rdbuf_vld) @[dma_ctrl.scala 437:51]
|
node _T_1237 = mux(rdbuf_en, UInt<1>("h01"), rdbuf_vld) @[dma_ctrl.scala 441:51]
|
||||||
node _T_1218 = eq(rdbuf_rst, UInt<1>("h00")) @[dma_ctrl.scala 437:80]
|
node _T_1238 = eq(rdbuf_rst, UInt<1>("h00")) @[dma_ctrl.scala 441:80]
|
||||||
node _T_1219 = and(_T_1217, _T_1218) @[dma_ctrl.scala 437:78]
|
node _T_1239 = and(_T_1237, _T_1238) @[dma_ctrl.scala 441:78]
|
||||||
reg _T_1220 : UInt, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[dma_ctrl.scala 437:47]
|
reg _T_1240 : UInt, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[dma_ctrl.scala 441:47]
|
||||||
_T_1220 <= _T_1219 @[dma_ctrl.scala 437:47]
|
_T_1240 <= _T_1239 @[dma_ctrl.scala 441:47]
|
||||||
rdbuf_vld <= _T_1220 @[dma_ctrl.scala 437:13]
|
rdbuf_vld <= _T_1240 @[dma_ctrl.scala 441:13]
|
||||||
reg rdbuf_tag : UInt, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20]
|
reg rdbuf_tag : UInt, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20]
|
||||||
when rdbuf_en : @[Reg.scala 28:19]
|
when rdbuf_en : @[Reg.scala 28:19]
|
||||||
rdbuf_tag <= io.dma_axi.ar.bits.id @[Reg.scala 28:23]
|
rdbuf_tag <= io.dma_axi.ar.bits.id @[Reg.scala 28:23]
|
||||||
|
@ -2177,100 +2197,100 @@ circuit dma_ctrl :
|
||||||
when rdbuf_en : @[Reg.scala 28:19]
|
when rdbuf_en : @[Reg.scala 28:19]
|
||||||
rdbuf_sz <= io.dma_axi.ar.bits.size @[Reg.scala 28:23]
|
rdbuf_sz <= io.dma_axi.ar.bits.size @[Reg.scala 28:23]
|
||||||
skip @[Reg.scala 28:19]
|
skip @[Reg.scala 28:19]
|
||||||
node _T_1221 = and(rdbuf_en, io.dma_bus_clk_en) @[dma_ctrl.scala 447:61]
|
node _T_1241 = and(rdbuf_en, io.dma_bus_clk_en) @[dma_ctrl.scala 451:61]
|
||||||
inst rvclkhdr_12 of rvclkhdr_15 @[lib.scala 352:23]
|
inst rvclkhdr_12 of rvclkhdr_15 @[lib.scala 352:23]
|
||||||
rvclkhdr_12.clock <= clock
|
rvclkhdr_12.clock <= clock
|
||||||
rvclkhdr_12.reset <= reset
|
rvclkhdr_12.reset <= reset
|
||||||
rvclkhdr_12.io.clk <= clock @[lib.scala 354:18]
|
rvclkhdr_12.io.clk <= clock @[lib.scala 354:18]
|
||||||
rvclkhdr_12.io.en <= _T_1221 @[lib.scala 355:17]
|
rvclkhdr_12.io.en <= _T_1241 @[lib.scala 355:17]
|
||||||
rvclkhdr_12.io.scan_mode <= io.scan_mode @[lib.scala 356:24]
|
rvclkhdr_12.io.scan_mode <= io.scan_mode @[lib.scala 356:24]
|
||||||
reg rdbuf_addr : UInt, rvclkhdr_12.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[lib.scala 358:16]
|
reg rdbuf_addr : UInt, rvclkhdr_12.io.l1clk with : (reset => (reset, UInt<1>("h00"))) @[lib.scala 358:16]
|
||||||
rdbuf_addr <= io.dma_axi.ar.bits.addr @[lib.scala 358:16]
|
rdbuf_addr <= io.dma_axi.ar.bits.addr @[lib.scala 358:16]
|
||||||
node _T_1222 = eq(wrbuf_cmd_sent, UInt<1>("h00")) @[dma_ctrl.scala 449:44]
|
node _T_1242 = eq(wrbuf_cmd_sent, UInt<1>("h00")) @[dma_ctrl.scala 453:44]
|
||||||
node _T_1223 = and(wrbuf_vld, _T_1222) @[dma_ctrl.scala 449:42]
|
node _T_1243 = and(wrbuf_vld, _T_1242) @[dma_ctrl.scala 453:42]
|
||||||
node _T_1224 = not(_T_1223) @[dma_ctrl.scala 449:30]
|
node _T_1244 = not(_T_1243) @[dma_ctrl.scala 453:30]
|
||||||
io.dma_axi.aw.ready <= _T_1224 @[dma_ctrl.scala 449:27]
|
io.dma_axi.aw.ready <= _T_1244 @[dma_ctrl.scala 453:27]
|
||||||
node _T_1225 = eq(wrbuf_cmd_sent, UInt<1>("h00")) @[dma_ctrl.scala 450:49]
|
node _T_1245 = eq(wrbuf_cmd_sent, UInt<1>("h00")) @[dma_ctrl.scala 454:49]
|
||||||
node _T_1226 = and(wrbuf_data_vld, _T_1225) @[dma_ctrl.scala 450:47]
|
node _T_1246 = and(wrbuf_data_vld, _T_1245) @[dma_ctrl.scala 454:47]
|
||||||
node _T_1227 = not(_T_1226) @[dma_ctrl.scala 450:30]
|
node _T_1247 = not(_T_1246) @[dma_ctrl.scala 454:30]
|
||||||
io.dma_axi.w.ready <= _T_1227 @[dma_ctrl.scala 450:27]
|
io.dma_axi.w.ready <= _T_1247 @[dma_ctrl.scala 454:27]
|
||||||
node _T_1228 = eq(rdbuf_cmd_sent, UInt<1>("h00")) @[dma_ctrl.scala 451:44]
|
node _T_1248 = eq(rdbuf_cmd_sent, UInt<1>("h00")) @[dma_ctrl.scala 455:44]
|
||||||
node _T_1229 = and(rdbuf_vld, _T_1228) @[dma_ctrl.scala 451:42]
|
node _T_1249 = and(rdbuf_vld, _T_1248) @[dma_ctrl.scala 455:42]
|
||||||
node _T_1230 = not(_T_1229) @[dma_ctrl.scala 451:30]
|
node _T_1250 = not(_T_1249) @[dma_ctrl.scala 455:30]
|
||||||
io.dma_axi.ar.ready <= _T_1230 @[dma_ctrl.scala 451:27]
|
io.dma_axi.ar.ready <= _T_1250 @[dma_ctrl.scala 455:27]
|
||||||
node _T_1231 = and(wrbuf_vld, wrbuf_data_vld) @[dma_ctrl.scala 455:51]
|
node _T_1251 = and(wrbuf_vld, wrbuf_data_vld) @[dma_ctrl.scala 459:51]
|
||||||
node _T_1232 = or(_T_1231, rdbuf_vld) @[dma_ctrl.scala 455:69]
|
node _T_1252 = or(_T_1251, rdbuf_vld) @[dma_ctrl.scala 459:69]
|
||||||
bus_cmd_valid <= _T_1232 @[dma_ctrl.scala 455:37]
|
bus_cmd_valid <= _T_1252 @[dma_ctrl.scala 459:37]
|
||||||
node _T_1233 = and(bus_cmd_valid, dma_fifo_ready) @[dma_ctrl.scala 456:54]
|
node _T_1253 = and(bus_cmd_valid, dma_fifo_ready) @[dma_ctrl.scala 460:54]
|
||||||
axi_mstr_prty_en <= _T_1233 @[dma_ctrl.scala 456:37]
|
axi_mstr_prty_en <= _T_1253 @[dma_ctrl.scala 460:37]
|
||||||
bus_cmd_write <= axi_mstr_sel @[dma_ctrl.scala 457:37]
|
bus_cmd_write <= axi_mstr_sel @[dma_ctrl.scala 461:37]
|
||||||
bus_cmd_posted_write <= UInt<1>("h00") @[dma_ctrl.scala 458:25]
|
bus_cmd_posted_write <= UInt<1>("h00") @[dma_ctrl.scala 462:25]
|
||||||
node _T_1234 = bits(axi_mstr_sel, 0, 0) @[dma_ctrl.scala 459:57]
|
node _T_1254 = bits(axi_mstr_sel, 0, 0) @[dma_ctrl.scala 463:57]
|
||||||
node _T_1235 = mux(_T_1234, wrbuf_addr, rdbuf_addr) @[dma_ctrl.scala 459:43]
|
node _T_1255 = mux(_T_1254, wrbuf_addr, rdbuf_addr) @[dma_ctrl.scala 463:43]
|
||||||
bus_cmd_addr <= _T_1235 @[dma_ctrl.scala 459:37]
|
bus_cmd_addr <= _T_1255 @[dma_ctrl.scala 463:37]
|
||||||
node _T_1236 = bits(axi_mstr_sel, 0, 0) @[dma_ctrl.scala 460:59]
|
node _T_1256 = bits(axi_mstr_sel, 0, 0) @[dma_ctrl.scala 464:59]
|
||||||
node _T_1237 = mux(_T_1236, wrbuf_sz, rdbuf_sz) @[dma_ctrl.scala 460:45]
|
node _T_1257 = mux(_T_1256, wrbuf_sz, rdbuf_sz) @[dma_ctrl.scala 464:45]
|
||||||
bus_cmd_sz <= _T_1237 @[dma_ctrl.scala 460:39]
|
bus_cmd_sz <= _T_1257 @[dma_ctrl.scala 464:39]
|
||||||
bus_cmd_wdata <= wrbuf_data @[dma_ctrl.scala 461:37]
|
bus_cmd_wdata <= wrbuf_data @[dma_ctrl.scala 465:37]
|
||||||
bus_cmd_byteen <= wrbuf_byteen @[dma_ctrl.scala 462:37]
|
bus_cmd_byteen <= wrbuf_byteen @[dma_ctrl.scala 466:37]
|
||||||
node _T_1238 = bits(axi_mstr_sel, 0, 0) @[dma_ctrl.scala 463:57]
|
node _T_1258 = bits(axi_mstr_sel, 0, 0) @[dma_ctrl.scala 467:57]
|
||||||
node _T_1239 = mux(_T_1238, wrbuf_tag, rdbuf_tag) @[dma_ctrl.scala 463:43]
|
node _T_1259 = mux(_T_1258, wrbuf_tag, rdbuf_tag) @[dma_ctrl.scala 467:43]
|
||||||
bus_cmd_tag <= _T_1239 @[dma_ctrl.scala 463:37]
|
bus_cmd_tag <= _T_1259 @[dma_ctrl.scala 467:37]
|
||||||
bus_cmd_mid <= UInt<1>("h00") @[dma_ctrl.scala 464:37]
|
bus_cmd_mid <= UInt<1>("h00") @[dma_ctrl.scala 468:37]
|
||||||
bus_cmd_prty <= UInt<1>("h00") @[dma_ctrl.scala 465:37]
|
bus_cmd_prty <= UInt<1>("h00") @[dma_ctrl.scala 469:37]
|
||||||
node _T_1240 = and(wrbuf_vld, wrbuf_data_vld) @[dma_ctrl.scala 469:43]
|
node _T_1260 = and(wrbuf_vld, wrbuf_data_vld) @[dma_ctrl.scala 473:43]
|
||||||
node _T_1241 = and(_T_1240, rdbuf_vld) @[dma_ctrl.scala 469:60]
|
node _T_1261 = and(_T_1260, rdbuf_vld) @[dma_ctrl.scala 473:60]
|
||||||
node _T_1242 = eq(_T_1241, UInt<1>("h01")) @[dma_ctrl.scala 469:73]
|
node _T_1262 = eq(_T_1261, UInt<1>("h01")) @[dma_ctrl.scala 473:73]
|
||||||
node _T_1243 = and(wrbuf_vld, wrbuf_data_vld) @[dma_ctrl.scala 469:111]
|
node _T_1263 = and(wrbuf_vld, wrbuf_data_vld) @[dma_ctrl.scala 473:111]
|
||||||
node _T_1244 = mux(_T_1242, axi_mstr_priority, _T_1243) @[dma_ctrl.scala 469:31]
|
node _T_1264 = mux(_T_1262, axi_mstr_priority, _T_1263) @[dma_ctrl.scala 473:31]
|
||||||
axi_mstr_sel <= _T_1244 @[dma_ctrl.scala 469:25]
|
axi_mstr_sel <= _T_1264 @[dma_ctrl.scala 473:25]
|
||||||
node axi_mstr_prty_in = not(axi_mstr_priority) @[dma_ctrl.scala 470:27]
|
node axi_mstr_prty_in = not(axi_mstr_priority) @[dma_ctrl.scala 474:27]
|
||||||
node _T_1245 = bits(axi_mstr_prty_en, 0, 0) @[dma_ctrl.scala 474:55]
|
node _T_1265 = bits(axi_mstr_prty_en, 0, 0) @[dma_ctrl.scala 478:55]
|
||||||
reg _T_1246 : UInt, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20]
|
reg _T_1266 : UInt, dma_bus_clk with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20]
|
||||||
when _T_1245 : @[Reg.scala 28:19]
|
when _T_1265 : @[Reg.scala 28:19]
|
||||||
_T_1246 <= axi_mstr_prty_in @[Reg.scala 28:23]
|
_T_1266 <= axi_mstr_prty_in @[Reg.scala 28:23]
|
||||||
skip @[Reg.scala 28:19]
|
skip @[Reg.scala 28:19]
|
||||||
axi_mstr_priority <= _T_1246 @[dma_ctrl.scala 473:27]
|
axi_mstr_priority <= _T_1266 @[dma_ctrl.scala 477:27]
|
||||||
node _T_1247 = dshr(fifo_valid, RspPtr) @[dma_ctrl.scala 477:39]
|
node _T_1267 = dshr(fifo_valid, RspPtr) @[dma_ctrl.scala 481:39]
|
||||||
node _T_1248 = bits(_T_1247, 0, 0) @[dma_ctrl.scala 477:39]
|
node _T_1268 = bits(_T_1267, 0, 0) @[dma_ctrl.scala 481:39]
|
||||||
node _T_1249 = dshr(fifo_dbg, RspPtr) @[dma_ctrl.scala 477:59]
|
node _T_1269 = dshr(fifo_dbg, RspPtr) @[dma_ctrl.scala 481:59]
|
||||||
node _T_1250 = bits(_T_1249, 0, 0) @[dma_ctrl.scala 477:59]
|
node _T_1270 = bits(_T_1269, 0, 0) @[dma_ctrl.scala 481:59]
|
||||||
node _T_1251 = eq(_T_1250, UInt<1>("h00")) @[dma_ctrl.scala 477:50]
|
node _T_1271 = eq(_T_1270, UInt<1>("h00")) @[dma_ctrl.scala 481:50]
|
||||||
node _T_1252 = and(_T_1248, _T_1251) @[dma_ctrl.scala 477:48]
|
node _T_1272 = and(_T_1268, _T_1271) @[dma_ctrl.scala 481:48]
|
||||||
node _T_1253 = dshr(fifo_done_bus, RspPtr) @[dma_ctrl.scala 477:83]
|
node _T_1273 = dshr(fifo_done_bus, RspPtr) @[dma_ctrl.scala 481:83]
|
||||||
node _T_1254 = bits(_T_1253, 0, 0) @[dma_ctrl.scala 477:83]
|
node _T_1274 = bits(_T_1273, 0, 0) @[dma_ctrl.scala 481:83]
|
||||||
node axi_rsp_valid = and(_T_1252, _T_1254) @[dma_ctrl.scala 477:68]
|
node axi_rsp_valid = and(_T_1272, _T_1274) @[dma_ctrl.scala 481:68]
|
||||||
node _T_1255 = dshr(fifo_write, RspPtr) @[dma_ctrl.scala 479:39]
|
node _T_1275 = dshr(fifo_write, RspPtr) @[dma_ctrl.scala 483:39]
|
||||||
node axi_rsp_write = bits(_T_1255, 0, 0) @[dma_ctrl.scala 479:39]
|
node axi_rsp_write = bits(_T_1275, 0, 0) @[dma_ctrl.scala 483:39]
|
||||||
node _T_1256 = bits(fifo_error[RspPtr], 0, 0) @[dma_ctrl.scala 480:51]
|
node _T_1276 = bits(fifo_error[RspPtr], 0, 0) @[dma_ctrl.scala 484:51]
|
||||||
node _T_1257 = bits(fifo_error[RspPtr], 1, 1) @[dma_ctrl.scala 480:83]
|
node _T_1277 = bits(fifo_error[RspPtr], 1, 1) @[dma_ctrl.scala 484:83]
|
||||||
node _T_1258 = mux(_T_1257, UInt<2>("h03"), UInt<1>("h00")) @[dma_ctrl.scala 480:64]
|
node _T_1278 = mux(_T_1277, UInt<2>("h03"), UInt<1>("h00")) @[dma_ctrl.scala 484:64]
|
||||||
node axi_rsp_error = mux(_T_1256, UInt<2>("h02"), _T_1258) @[dma_ctrl.scala 480:32]
|
node axi_rsp_error = mux(_T_1276, UInt<2>("h02"), _T_1278) @[dma_ctrl.scala 484:32]
|
||||||
node _T_1259 = and(axi_rsp_valid, axi_rsp_write) @[dma_ctrl.scala 486:44]
|
node _T_1279 = and(axi_rsp_valid, axi_rsp_write) @[dma_ctrl.scala 490:44]
|
||||||
io.dma_axi.b.valid <= _T_1259 @[dma_ctrl.scala 486:27]
|
io.dma_axi.b.valid <= _T_1279 @[dma_ctrl.scala 490:27]
|
||||||
node _T_1260 = bits(axi_rsp_error, 1, 0) @[dma_ctrl.scala 487:57]
|
node _T_1280 = bits(axi_rsp_error, 1, 0) @[dma_ctrl.scala 491:57]
|
||||||
io.dma_axi.b.bits.resp <= _T_1260 @[dma_ctrl.scala 487:41]
|
io.dma_axi.b.bits.resp <= _T_1280 @[dma_ctrl.scala 491:41]
|
||||||
io.dma_axi.b.bits.id <= fifo_tag[RspPtr] @[dma_ctrl.scala 488:33]
|
io.dma_axi.b.bits.id <= fifo_tag[RspPtr] @[dma_ctrl.scala 492:33]
|
||||||
node _T_1261 = eq(axi_rsp_write, UInt<1>("h00")) @[dma_ctrl.scala 490:46]
|
node _T_1281 = eq(axi_rsp_write, UInt<1>("h00")) @[dma_ctrl.scala 494:46]
|
||||||
node _T_1262 = and(axi_rsp_valid, _T_1261) @[dma_ctrl.scala 490:44]
|
node _T_1282 = and(axi_rsp_valid, _T_1281) @[dma_ctrl.scala 494:44]
|
||||||
io.dma_axi.r.valid <= _T_1262 @[dma_ctrl.scala 490:27]
|
io.dma_axi.r.valid <= _T_1282 @[dma_ctrl.scala 494:27]
|
||||||
io.dma_axi.r.bits.resp <= axi_rsp_error @[dma_ctrl.scala 491:41]
|
io.dma_axi.r.bits.resp <= axi_rsp_error @[dma_ctrl.scala 495:41]
|
||||||
node _T_1263 = bits(fifo_data[RspPtr], 63, 0) @[dma_ctrl.scala 492:59]
|
node _T_1283 = bits(fifo_data[RspPtr], 63, 0) @[dma_ctrl.scala 496:59]
|
||||||
io.dma_axi.r.bits.data <= _T_1263 @[dma_ctrl.scala 492:43]
|
io.dma_axi.r.bits.data <= _T_1283 @[dma_ctrl.scala 496:43]
|
||||||
io.dma_axi.r.bits.last <= UInt<1>("h01") @[dma_ctrl.scala 493:41]
|
io.dma_axi.r.bits.last <= UInt<1>("h01") @[dma_ctrl.scala 497:41]
|
||||||
io.dma_axi.r.bits.id <= fifo_tag[RspPtr] @[dma_ctrl.scala 494:37]
|
io.dma_axi.r.bits.id <= fifo_tag[RspPtr] @[dma_ctrl.scala 498:37]
|
||||||
bus_posted_write_done <= UInt<1>("h00") @[dma_ctrl.scala 496:25]
|
bus_posted_write_done <= UInt<1>("h00") @[dma_ctrl.scala 500:25]
|
||||||
node _T_1264 = or(io.dma_axi.b.valid, io.dma_axi.r.valid) @[dma_ctrl.scala 497:60]
|
node _T_1284 = or(io.dma_axi.b.valid, io.dma_axi.r.valid) @[dma_ctrl.scala 501:60]
|
||||||
bus_rsp_valid <= _T_1264 @[dma_ctrl.scala 497:37]
|
bus_rsp_valid <= _T_1284 @[dma_ctrl.scala 501:37]
|
||||||
node _T_1265 = and(io.dma_axi.b.valid, io.dma_axi.b.ready) @[dma_ctrl.scala 498:61]
|
node _T_1285 = and(io.dma_axi.b.valid, io.dma_axi.b.ready) @[dma_ctrl.scala 502:61]
|
||||||
node _T_1266 = and(io.dma_axi.r.valid, io.dma_axi.r.ready) @[dma_ctrl.scala 498:105]
|
node _T_1286 = and(io.dma_axi.r.valid, io.dma_axi.r.ready) @[dma_ctrl.scala 502:105]
|
||||||
node _T_1267 = or(_T_1265, _T_1266) @[dma_ctrl.scala 498:83]
|
node _T_1287 = or(_T_1285, _T_1286) @[dma_ctrl.scala 502:83]
|
||||||
bus_rsp_sent <= _T_1267 @[dma_ctrl.scala 498:37]
|
bus_rsp_sent <= _T_1287 @[dma_ctrl.scala 502:37]
|
||||||
io.lsu_dma.dma_dccm_ctl.dma_mem_addr <= io.lsu_dma.dma_lsc_ctl.dma_mem_addr @[dma_ctrl.scala 499:40]
|
io.lsu_dma.dma_dccm_ctl.dma_mem_addr <= io.lsu_dma.dma_lsc_ctl.dma_mem_addr @[dma_ctrl.scala 503:40]
|
||||||
io.lsu_dma.dma_dccm_ctl.dma_mem_wdata <= io.lsu_dma.dma_lsc_ctl.dma_mem_wdata @[dma_ctrl.scala 500:41]
|
io.lsu_dma.dma_dccm_ctl.dma_mem_wdata <= io.lsu_dma.dma_lsc_ctl.dma_mem_wdata @[dma_ctrl.scala 504:41]
|
||||||
io.ifu_dma.dma_mem_ctl.dma_mem_sz <= io.lsu_dma.dma_lsc_ctl.dma_mem_sz @[dma_ctrl.scala 501:37]
|
io.ifu_dma.dma_mem_ctl.dma_mem_sz <= io.lsu_dma.dma_lsc_ctl.dma_mem_sz @[dma_ctrl.scala 505:37]
|
||||||
io.ifu_dma.dma_mem_ctl.dma_mem_addr <= io.lsu_dma.dma_lsc_ctl.dma_mem_addr @[dma_ctrl.scala 502:39]
|
io.ifu_dma.dma_mem_ctl.dma_mem_addr <= io.lsu_dma.dma_lsc_ctl.dma_mem_addr @[dma_ctrl.scala 506:39]
|
||||||
io.ifu_dma.dma_mem_ctl.dma_mem_wdata <= io.lsu_dma.dma_lsc_ctl.dma_mem_wdata @[dma_ctrl.scala 503:40]
|
io.ifu_dma.dma_mem_ctl.dma_mem_wdata <= io.lsu_dma.dma_lsc_ctl.dma_mem_wdata @[dma_ctrl.scala 507:40]
|
||||||
io.ifu_dma.dma_mem_ctl.dma_mem_write <= io.lsu_dma.dma_lsc_ctl.dma_mem_write @[dma_ctrl.scala 504:40]
|
io.ifu_dma.dma_mem_ctl.dma_mem_write <= io.lsu_dma.dma_lsc_ctl.dma_mem_write @[dma_ctrl.scala 508:40]
|
||||||
io.ifu_dma.dma_mem_ctl.dma_mem_tag <= io.lsu_dma.dma_mem_tag @[dma_ctrl.scala 505:38]
|
io.ifu_dma.dma_mem_ctl.dma_mem_tag <= io.lsu_dma.dma_mem_tag @[dma_ctrl.scala 509:38]
|
||||||
|
|
||||||
|
|
455
dma_ctrl.v
455
dma_ctrl.v
|
@ -231,18 +231,18 @@ module dma_ctrl(
|
||||||
wire rvclkhdr_9_io_clk; // @[lib.scala 352:23]
|
wire rvclkhdr_9_io_clk; // @[lib.scala 352:23]
|
||||||
wire rvclkhdr_9_io_en; // @[lib.scala 352:23]
|
wire rvclkhdr_9_io_en; // @[lib.scala 352:23]
|
||||||
wire rvclkhdr_9_io_scan_mode; // @[lib.scala 352:23]
|
wire rvclkhdr_9_io_scan_mode; // @[lib.scala 352:23]
|
||||||
wire dma_buffer_c1cgc_io_l1clk; // @[dma_ctrl.scala 385:32]
|
wire dma_buffer_c1cgc_io_l1clk; // @[dma_ctrl.scala 389:32]
|
||||||
wire dma_buffer_c1cgc_io_clk; // @[dma_ctrl.scala 385:32]
|
wire dma_buffer_c1cgc_io_clk; // @[dma_ctrl.scala 389:32]
|
||||||
wire dma_buffer_c1cgc_io_en; // @[dma_ctrl.scala 385:32]
|
wire dma_buffer_c1cgc_io_en; // @[dma_ctrl.scala 389:32]
|
||||||
wire dma_buffer_c1cgc_io_scan_mode; // @[dma_ctrl.scala 385:32]
|
wire dma_buffer_c1cgc_io_scan_mode; // @[dma_ctrl.scala 389:32]
|
||||||
wire dma_free_cgc_io_l1clk; // @[dma_ctrl.scala 391:28]
|
wire dma_free_cgc_io_l1clk; // @[dma_ctrl.scala 395:28]
|
||||||
wire dma_free_cgc_io_clk; // @[dma_ctrl.scala 391:28]
|
wire dma_free_cgc_io_clk; // @[dma_ctrl.scala 395:28]
|
||||||
wire dma_free_cgc_io_en; // @[dma_ctrl.scala 391:28]
|
wire dma_free_cgc_io_en; // @[dma_ctrl.scala 395:28]
|
||||||
wire dma_free_cgc_io_scan_mode; // @[dma_ctrl.scala 391:28]
|
wire dma_free_cgc_io_scan_mode; // @[dma_ctrl.scala 395:28]
|
||||||
wire dma_bus_cgc_io_l1clk; // @[dma_ctrl.scala 397:27]
|
wire dma_bus_cgc_io_l1clk; // @[dma_ctrl.scala 401:27]
|
||||||
wire dma_bus_cgc_io_clk; // @[dma_ctrl.scala 397:27]
|
wire dma_bus_cgc_io_clk; // @[dma_ctrl.scala 401:27]
|
||||||
wire dma_bus_cgc_io_en; // @[dma_ctrl.scala 397:27]
|
wire dma_bus_cgc_io_en; // @[dma_ctrl.scala 401:27]
|
||||||
wire dma_bus_cgc_io_scan_mode; // @[dma_ctrl.scala 397:27]
|
wire dma_bus_cgc_io_scan_mode; // @[dma_ctrl.scala 401:27]
|
||||||
wire rvclkhdr_10_io_l1clk; // @[lib.scala 352:23]
|
wire rvclkhdr_10_io_l1clk; // @[lib.scala 352:23]
|
||||||
wire rvclkhdr_10_io_clk; // @[lib.scala 352:23]
|
wire rvclkhdr_10_io_clk; // @[lib.scala 352:23]
|
||||||
wire rvclkhdr_10_io_en; // @[lib.scala 352:23]
|
wire rvclkhdr_10_io_en; // @[lib.scala 352:23]
|
||||||
|
@ -255,31 +255,31 @@ module dma_ctrl(
|
||||||
wire rvclkhdr_12_io_clk; // @[lib.scala 352:23]
|
wire rvclkhdr_12_io_clk; // @[lib.scala 352:23]
|
||||||
wire rvclkhdr_12_io_en; // @[lib.scala 352:23]
|
wire rvclkhdr_12_io_en; // @[lib.scala 352:23]
|
||||||
wire rvclkhdr_12_io_scan_mode; // @[lib.scala 352:23]
|
wire rvclkhdr_12_io_scan_mode; // @[lib.scala 352:23]
|
||||||
wire dma_free_clk = dma_free_cgc_io_l1clk; // @[dma_ctrl.scala 168:26 dma_ctrl.scala 395:29]
|
wire dma_free_clk = dma_free_cgc_io_l1clk; // @[dma_ctrl.scala 168:26 dma_ctrl.scala 399:29]
|
||||||
reg [2:0] RdPtr; // @[Reg.scala 27:20]
|
reg [2:0] RdPtr; // @[Reg.scala 27:20]
|
||||||
reg [31:0] fifo_addr_4; // @[lib.scala 358:16]
|
reg [31:0] fifo_addr_4; // @[lib.scala 358:16]
|
||||||
reg [31:0] fifo_addr_3; // @[lib.scala 358:16]
|
reg [31:0] fifo_addr_3; // @[lib.scala 358:16]
|
||||||
reg [31:0] fifo_addr_2; // @[lib.scala 358:16]
|
reg [31:0] fifo_addr_2; // @[lib.scala 358:16]
|
||||||
reg [31:0] fifo_addr_1; // @[lib.scala 358:16]
|
reg [31:0] fifo_addr_1; // @[lib.scala 358:16]
|
||||||
reg [31:0] fifo_addr_0; // @[lib.scala 358:16]
|
reg [31:0] fifo_addr_0; // @[lib.scala 358:16]
|
||||||
wire [31:0] _GEN_60 = 3'h1 == RdPtr ? fifo_addr_1 : fifo_addr_0; // @[dma_ctrl.scala 351:20]
|
wire [31:0] _GEN_60 = 3'h1 == RdPtr ? fifo_addr_1 : fifo_addr_0; // @[dma_ctrl.scala 355:20]
|
||||||
wire [31:0] _GEN_61 = 3'h2 == RdPtr ? fifo_addr_2 : _GEN_60; // @[dma_ctrl.scala 351:20]
|
wire [31:0] _GEN_61 = 3'h2 == RdPtr ? fifo_addr_2 : _GEN_60; // @[dma_ctrl.scala 355:20]
|
||||||
wire [31:0] _GEN_62 = 3'h3 == RdPtr ? fifo_addr_3 : _GEN_61; // @[dma_ctrl.scala 351:20]
|
wire [31:0] _GEN_62 = 3'h3 == RdPtr ? fifo_addr_3 : _GEN_61; // @[dma_ctrl.scala 355:20]
|
||||||
wire [31:0] dma_mem_addr_int = 3'h4 == RdPtr ? fifo_addr_4 : _GEN_62; // @[dma_ctrl.scala 351:20]
|
wire [31:0] dma_mem_addr_int = 3'h4 == RdPtr ? fifo_addr_4 : _GEN_62; // @[dma_ctrl.scala 355:20]
|
||||||
wire dma_mem_addr_in_dccm = dma_mem_addr_int[31:16] == 16'hf004; // @[lib.scala 345:39]
|
wire dma_mem_addr_in_dccm = dma_mem_addr_int[31:16] == 16'hf004; // @[lib.scala 345:39]
|
||||||
wire dma_mem_addr_in_pic = dma_mem_addr_int[31:15] == 17'h1e018; // @[lib.scala 345:39]
|
wire dma_mem_addr_in_pic = dma_mem_addr_int[31:15] == 17'h1e018; // @[lib.scala 345:39]
|
||||||
wire dma_mem_addr_in_iccm = dma_mem_addr_int[31:16] == 16'hee00; // @[lib.scala 345:39]
|
wire dma_mem_addr_in_iccm = dma_mem_addr_int[31:16] == 16'hee00; // @[lib.scala 345:39]
|
||||||
wire dma_bus_clk = dma_bus_cgc_io_l1clk; // @[dma_ctrl.scala 170:25 dma_ctrl.scala 401:28]
|
wire dma_bus_clk = dma_bus_cgc_io_l1clk; // @[dma_ctrl.scala 170:25 dma_ctrl.scala 405:28]
|
||||||
reg wrbuf_vld; // @[dma_ctrl.scala 411:59]
|
reg wrbuf_vld; // @[dma_ctrl.scala 415:59]
|
||||||
reg wrbuf_data_vld; // @[dma_ctrl.scala 413:59]
|
reg wrbuf_data_vld; // @[dma_ctrl.scala 417:59]
|
||||||
wire _T_1240 = wrbuf_vld & wrbuf_data_vld; // @[dma_ctrl.scala 469:43]
|
wire _T_1260 = wrbuf_vld & wrbuf_data_vld; // @[dma_ctrl.scala 473:43]
|
||||||
reg rdbuf_vld; // @[dma_ctrl.scala 437:47]
|
reg rdbuf_vld; // @[dma_ctrl.scala 441:47]
|
||||||
wire _T_1241 = _T_1240 & rdbuf_vld; // @[dma_ctrl.scala 469:60]
|
wire _T_1261 = _T_1260 & rdbuf_vld; // @[dma_ctrl.scala 473:60]
|
||||||
reg axi_mstr_priority; // @[Reg.scala 27:20]
|
reg axi_mstr_priority; // @[Reg.scala 27:20]
|
||||||
wire axi_mstr_sel = _T_1241 ? axi_mstr_priority : _T_1240; // @[dma_ctrl.scala 469:31]
|
wire axi_mstr_sel = _T_1261 ? axi_mstr_priority : _T_1260; // @[dma_ctrl.scala 473:31]
|
||||||
reg [31:0] wrbuf_addr; // @[lib.scala 358:16]
|
reg [31:0] wrbuf_addr; // @[lib.scala 358:16]
|
||||||
reg [31:0] rdbuf_addr; // @[lib.scala 358:16]
|
reg [31:0] rdbuf_addr; // @[lib.scala 358:16]
|
||||||
wire [31:0] bus_cmd_addr = axi_mstr_sel ? wrbuf_addr : rdbuf_addr; // @[dma_ctrl.scala 459:43]
|
wire [31:0] bus_cmd_addr = axi_mstr_sel ? wrbuf_addr : rdbuf_addr; // @[dma_ctrl.scala 463:43]
|
||||||
wire [2:0] _GEN_90 = {{2'd0}, io_dbg_dma_dbg_ib_dbg_cmd_addr[2]}; // @[dma_ctrl.scala 195:91]
|
wire [2:0] _GEN_90 = {{2'd0}, io_dbg_dma_dbg_ib_dbg_cmd_addr[2]}; // @[dma_ctrl.scala 195:91]
|
||||||
wire [3:0] _T_17 = 3'h4 * _GEN_90; // @[dma_ctrl.scala 195:91]
|
wire [3:0] _T_17 = 3'h4 * _GEN_90; // @[dma_ctrl.scala 195:91]
|
||||||
wire [18:0] _T_18 = 19'hf << _T_17; // @[dma_ctrl.scala 195:83]
|
wire [18:0] _T_18 = 19'hf << _T_17; // @[dma_ctrl.scala 195:83]
|
||||||
|
@ -288,15 +288,15 @@ module dma_ctrl(
|
||||||
wire [2:0] _T_23 = {1'h0,io_dbg_cmd_size}; // @[Cat.scala 29:58]
|
wire [2:0] _T_23 = {1'h0,io_dbg_cmd_size}; // @[Cat.scala 29:58]
|
||||||
reg [2:0] wrbuf_sz; // @[Reg.scala 27:20]
|
reg [2:0] wrbuf_sz; // @[Reg.scala 27:20]
|
||||||
reg [2:0] rdbuf_sz; // @[Reg.scala 27:20]
|
reg [2:0] rdbuf_sz; // @[Reg.scala 27:20]
|
||||||
wire [2:0] bus_cmd_sz = axi_mstr_sel ? wrbuf_sz : rdbuf_sz; // @[dma_ctrl.scala 460:45]
|
wire [2:0] bus_cmd_sz = axi_mstr_sel ? wrbuf_sz : rdbuf_sz; // @[dma_ctrl.scala 464:45]
|
||||||
wire [2:0] fifo_sz_in = io_dbg_dma_dbg_ib_dbg_cmd_valid ? _T_23 : bus_cmd_sz; // @[dma_ctrl.scala 197:33]
|
wire [2:0] fifo_sz_in = io_dbg_dma_dbg_ib_dbg_cmd_valid ? _T_23 : bus_cmd_sz; // @[dma_ctrl.scala 197:33]
|
||||||
wire fifo_write_in = io_dbg_dma_dbg_ib_dbg_cmd_valid ? io_dbg_dma_dbg_ib_dbg_cmd_write : axi_mstr_sel; // @[dma_ctrl.scala 199:33]
|
wire fifo_write_in = io_dbg_dma_dbg_ib_dbg_cmd_valid ? io_dbg_dma_dbg_ib_dbg_cmd_write : axi_mstr_sel; // @[dma_ctrl.scala 199:33]
|
||||||
wire bus_cmd_valid = _T_1240 | rdbuf_vld; // @[dma_ctrl.scala 455:69]
|
wire bus_cmd_valid = _T_1260 | rdbuf_vld; // @[dma_ctrl.scala 459:69]
|
||||||
reg fifo_full; // @[dma_ctrl.scala 369:12]
|
reg fifo_full; // @[dma_ctrl.scala 373:12]
|
||||||
reg dbg_dma_bubble_bus; // @[dma_ctrl.scala 373:12]
|
reg dbg_dma_bubble_bus; // @[dma_ctrl.scala 377:12]
|
||||||
wire _T_989 = fifo_full | dbg_dma_bubble_bus; // @[dma_ctrl.scala 299:39]
|
wire _T_989 = fifo_full | dbg_dma_bubble_bus; // @[dma_ctrl.scala 299:39]
|
||||||
wire dma_fifo_ready = ~_T_989; // @[dma_ctrl.scala 299:27]
|
wire dma_fifo_ready = ~_T_989; // @[dma_ctrl.scala 299:27]
|
||||||
wire axi_mstr_prty_en = bus_cmd_valid & dma_fifo_ready; // @[dma_ctrl.scala 456:54]
|
wire axi_mstr_prty_en = bus_cmd_valid & dma_fifo_ready; // @[dma_ctrl.scala 460:54]
|
||||||
wire _T_28 = axi_mstr_prty_en & io_dma_bus_clk_en; // @[dma_ctrl.scala 206:80]
|
wire _T_28 = axi_mstr_prty_en & io_dma_bus_clk_en; // @[dma_ctrl.scala 206:80]
|
||||||
wire _T_31 = io_dbg_dma_dbg_ib_dbg_cmd_valid & io_dbg_dma_dbg_ib_dbg_cmd_type[1]; // @[dma_ctrl.scala 206:136]
|
wire _T_31 = io_dbg_dma_dbg_ib_dbg_cmd_valid & io_dbg_dma_dbg_ib_dbg_cmd_type[1]; // @[dma_ctrl.scala 206:136]
|
||||||
wire _T_32 = _T_28 | _T_31; // @[dma_ctrl.scala 206:101]
|
wire _T_32 = _T_28 | _T_31; // @[dma_ctrl.scala 206:101]
|
||||||
|
@ -333,7 +333,7 @@ module dma_ctrl(
|
||||||
wire [4:0] _T_992 = fifo_done >> RdPtr; // @[dma_ctrl.scala 303:58]
|
wire [4:0] _T_992 = fifo_done >> RdPtr; // @[dma_ctrl.scala 303:58]
|
||||||
wire _T_994 = ~_T_992[0]; // @[dma_ctrl.scala 303:48]
|
wire _T_994 = ~_T_992[0]; // @[dma_ctrl.scala 303:48]
|
||||||
wire _T_995 = _T_990[0] & _T_994; // @[dma_ctrl.scala 303:46]
|
wire _T_995 = _T_990[0] & _T_994; // @[dma_ctrl.scala 303:46]
|
||||||
wire dma_buffer_c1_clk = dma_buffer_c1cgc_io_l1clk; // @[dma_ctrl.scala 172:31 dma_ctrl.scala 389:33]
|
wire dma_buffer_c1_clk = dma_buffer_c1cgc_io_l1clk; // @[dma_ctrl.scala 172:31 dma_ctrl.scala 393:33]
|
||||||
reg _T_886; // @[Reg.scala 27:20]
|
reg _T_886; // @[Reg.scala 27:20]
|
||||||
reg _T_884; // @[Reg.scala 27:20]
|
reg _T_884; // @[Reg.scala 27:20]
|
||||||
reg _T_882; // @[Reg.scala 27:20]
|
reg _T_882; // @[Reg.scala 27:20]
|
||||||
|
@ -353,10 +353,10 @@ module dma_ctrl(
|
||||||
reg [2:0] fifo_sz_2; // @[Reg.scala 27:20]
|
reg [2:0] fifo_sz_2; // @[Reg.scala 27:20]
|
||||||
reg [2:0] fifo_sz_1; // @[Reg.scala 27:20]
|
reg [2:0] fifo_sz_1; // @[Reg.scala 27:20]
|
||||||
reg [2:0] fifo_sz_0; // @[Reg.scala 27:20]
|
reg [2:0] fifo_sz_0; // @[Reg.scala 27:20]
|
||||||
wire [2:0] _GEN_65 = 3'h1 == RdPtr ? fifo_sz_1 : fifo_sz_0; // @[dma_ctrl.scala 352:20]
|
wire [2:0] _GEN_65 = 3'h1 == RdPtr ? fifo_sz_1 : fifo_sz_0; // @[dma_ctrl.scala 356:20]
|
||||||
wire [2:0] _GEN_66 = 3'h2 == RdPtr ? fifo_sz_2 : _GEN_65; // @[dma_ctrl.scala 352:20]
|
wire [2:0] _GEN_66 = 3'h2 == RdPtr ? fifo_sz_2 : _GEN_65; // @[dma_ctrl.scala 356:20]
|
||||||
wire [2:0] _GEN_67 = 3'h3 == RdPtr ? fifo_sz_3 : _GEN_66; // @[dma_ctrl.scala 352:20]
|
wire [2:0] _GEN_67 = 3'h3 == RdPtr ? fifo_sz_3 : _GEN_66; // @[dma_ctrl.scala 356:20]
|
||||||
wire [2:0] dma_mem_sz_int = 3'h4 == RdPtr ? fifo_sz_4 : _GEN_67; // @[dma_ctrl.scala 352:20]
|
wire [2:0] dma_mem_sz_int = 3'h4 == RdPtr ? fifo_sz_4 : _GEN_67; // @[dma_ctrl.scala 356:20]
|
||||||
wire _T_1012 = dma_mem_sz_int == 3'h1; // @[dma_ctrl.scala 305:28]
|
wire _T_1012 = dma_mem_sz_int == 3'h1; // @[dma_ctrl.scala 305:28]
|
||||||
wire _T_1014 = _T_1012 & dma_mem_addr_int[0]; // @[dma_ctrl.scala 305:37]
|
wire _T_1014 = _T_1012 & dma_mem_addr_int[0]; // @[dma_ctrl.scala 305:37]
|
||||||
wire _T_1016 = dma_mem_sz_int == 3'h2; // @[dma_ctrl.scala 306:29]
|
wire _T_1016 = dma_mem_sz_int == 3'h2; // @[dma_ctrl.scala 306:29]
|
||||||
|
@ -383,33 +383,48 @@ module dma_ctrl(
|
||||||
reg [7:0] fifo_byteen_2; // @[Reg.scala 27:20]
|
reg [7:0] fifo_byteen_2; // @[Reg.scala 27:20]
|
||||||
reg [7:0] fifo_byteen_1; // @[Reg.scala 27:20]
|
reg [7:0] fifo_byteen_1; // @[Reg.scala 27:20]
|
||||||
reg [7:0] fifo_byteen_0; // @[Reg.scala 27:20]
|
reg [7:0] fifo_byteen_0; // @[Reg.scala 27:20]
|
||||||
wire [7:0] _GEN_70 = 3'h1 == RdPtr ? fifo_byteen_1 : fifo_byteen_0; // @[dma_ctrl.scala 355:20]
|
wire [7:0] _GEN_70 = 3'h1 == RdPtr ? fifo_byteen_1 : fifo_byteen_0; // @[dma_ctrl.scala 359:20]
|
||||||
wire [7:0] _GEN_71 = 3'h2 == RdPtr ? fifo_byteen_2 : _GEN_70; // @[dma_ctrl.scala 355:20]
|
wire [7:0] _GEN_71 = 3'h2 == RdPtr ? fifo_byteen_2 : _GEN_70; // @[dma_ctrl.scala 359:20]
|
||||||
wire [7:0] _GEN_72 = 3'h3 == RdPtr ? fifo_byteen_3 : _GEN_71; // @[dma_ctrl.scala 355:20]
|
wire [7:0] _GEN_72 = 3'h3 == RdPtr ? fifo_byteen_3 : _GEN_71; // @[dma_ctrl.scala 359:20]
|
||||||
wire [7:0] dma_mem_byteen = 3'h4 == RdPtr ? fifo_byteen_4 : _GEN_72; // @[dma_ctrl.scala 355:20]
|
wire [7:0] dma_mem_byteen = 3'h4 == RdPtr ? fifo_byteen_4 : _GEN_72; // @[dma_ctrl.scala 359:20]
|
||||||
wire [3:0] _T_1059 = _T_1048 ? dma_mem_byteen[3:0] : 4'h0; // @[Mux.scala 27:72]
|
wire [3:0] _T_1071 = _T_1048 ? dma_mem_byteen[3:0] : 4'h0; // @[Mux.scala 27:72]
|
||||||
wire _T_1051 = dma_mem_addr_int[2:0] == 3'h1; // @[dma_ctrl.scala 311:32]
|
wire _T_1051 = dma_mem_addr_int[2:0] == 3'h1; // @[dma_ctrl.scala 311:32]
|
||||||
wire [3:0] _T_1060 = _T_1051 ? dma_mem_byteen[4:1] : 4'h0; // @[Mux.scala 27:72]
|
wire [3:0] _T_1072 = _T_1051 ? dma_mem_byteen[4:1] : 4'h0; // @[Mux.scala 27:72]
|
||||||
wire [3:0] _T_1063 = _T_1059 | _T_1060; // @[Mux.scala 27:72]
|
wire [3:0] _T_1079 = _T_1071 | _T_1072; // @[Mux.scala 27:72]
|
||||||
wire _T_1054 = dma_mem_addr_int[2:0] == 3'h2; // @[dma_ctrl.scala 312:32]
|
wire _T_1054 = dma_mem_addr_int[2:0] == 3'h2; // @[dma_ctrl.scala 312:32]
|
||||||
wire [3:0] _T_1061 = _T_1054 ? dma_mem_byteen[5:2] : 4'h0; // @[Mux.scala 27:72]
|
wire [3:0] _T_1073 = _T_1054 ? dma_mem_byteen[5:2] : 4'h0; // @[Mux.scala 27:72]
|
||||||
wire [3:0] _T_1064 = _T_1063 | _T_1061; // @[Mux.scala 27:72]
|
wire [3:0] _T_1080 = _T_1079 | _T_1073; // @[Mux.scala 27:72]
|
||||||
wire _T_1057 = dma_mem_addr_int[2:0] == 3'h3; // @[dma_ctrl.scala 313:32]
|
wire _T_1057 = dma_mem_addr_int[2:0] == 3'h3; // @[dma_ctrl.scala 313:32]
|
||||||
wire [3:0] _T_1062 = _T_1057 ? dma_mem_byteen[6:3] : 4'h0; // @[Mux.scala 27:72]
|
wire [3:0] _T_1074 = _T_1057 ? dma_mem_byteen[6:3] : 4'h0; // @[Mux.scala 27:72]
|
||||||
wire [3:0] _T_1065 = _T_1064 | _T_1062; // @[Mux.scala 27:72]
|
wire [3:0] _T_1081 = _T_1080 | _T_1074; // @[Mux.scala 27:72]
|
||||||
wire _T_1067 = _T_1065 != 4'hf; // @[dma_ctrl.scala 313:68]
|
wire _T_1060 = dma_mem_addr_int[2:0] == 3'h4; // @[dma_ctrl.scala 314:32]
|
||||||
wire _T_1068 = _T_1046 & _T_1067; // @[dma_ctrl.scala 310:78]
|
wire [3:0] _T_1075 = _T_1060 ? dma_mem_byteen[7:4] : 4'h0; // @[Mux.scala 27:72]
|
||||||
wire _T_1069 = _T_1043 | _T_1068; // @[dma_ctrl.scala 309:145]
|
wire [3:0] _T_1082 = _T_1081 | _T_1075; // @[Mux.scala 27:72]
|
||||||
wire _T_1072 = io_lsu_dma_dma_lsc_ctl_dma_mem_write & _T_1022; // @[dma_ctrl.scala 314:45]
|
wire _T_1063 = dma_mem_addr_int[2:0] == 3'h5; // @[dma_ctrl.scala 315:32]
|
||||||
wire _T_1074 = dma_mem_byteen == 8'hf; // @[dma_ctrl.scala 314:103]
|
wire [2:0] _T_1076 = _T_1063 ? dma_mem_byteen[7:5] : 3'h0; // @[Mux.scala 27:72]
|
||||||
wire _T_1076 = dma_mem_byteen == 8'hf0; // @[dma_ctrl.scala 314:139]
|
wire [3:0] _GEN_91 = {{1'd0}, _T_1076}; // @[Mux.scala 27:72]
|
||||||
wire _T_1077 = _T_1074 | _T_1076; // @[dma_ctrl.scala 314:116]
|
wire [3:0] _T_1083 = _T_1082 | _GEN_91; // @[Mux.scala 27:72]
|
||||||
wire _T_1079 = dma_mem_byteen == 8'hff; // @[dma_ctrl.scala 314:175]
|
wire _T_1066 = dma_mem_addr_int[2:0] == 3'h6; // @[dma_ctrl.scala 316:32]
|
||||||
wire _T_1080 = _T_1077 | _T_1079; // @[dma_ctrl.scala 314:152]
|
wire [1:0] _T_1077 = _T_1066 ? dma_mem_byteen[7:6] : 2'h0; // @[Mux.scala 27:72]
|
||||||
wire _T_1081 = ~_T_1080; // @[dma_ctrl.scala 314:80]
|
wire [3:0] _GEN_92 = {{2'd0}, _T_1077}; // @[Mux.scala 27:72]
|
||||||
wire _T_1082 = _T_1072 & _T_1081; // @[dma_ctrl.scala 314:78]
|
wire [3:0] _T_1084 = _T_1083 | _GEN_92; // @[Mux.scala 27:72]
|
||||||
wire _T_1083 = _T_1069 | _T_1082; // @[dma_ctrl.scala 313:79]
|
wire _T_1069 = dma_mem_addr_int[2:0] == 3'h7; // @[dma_ctrl.scala 317:32]
|
||||||
wire dma_alignment_error = _T_1010 & _T_1083; // @[dma_ctrl.scala 304:87]
|
wire _T_1078 = _T_1069 & dma_mem_byteen[7]; // @[Mux.scala 27:72]
|
||||||
|
wire [3:0] _GEN_93 = {{3'd0}, _T_1078}; // @[Mux.scala 27:72]
|
||||||
|
wire [3:0] _T_1085 = _T_1084 | _GEN_93; // @[Mux.scala 27:72]
|
||||||
|
wire _T_1087 = _T_1085 != 4'hf; // @[dma_ctrl.scala 317:66]
|
||||||
|
wire _T_1088 = _T_1046 & _T_1087; // @[dma_ctrl.scala 310:78]
|
||||||
|
wire _T_1089 = _T_1043 | _T_1088; // @[dma_ctrl.scala 309:145]
|
||||||
|
wire _T_1092 = io_lsu_dma_dma_lsc_ctl_dma_mem_write & _T_1022; // @[dma_ctrl.scala 318:45]
|
||||||
|
wire _T_1094 = dma_mem_byteen == 8'hf; // @[dma_ctrl.scala 318:103]
|
||||||
|
wire _T_1096 = dma_mem_byteen == 8'hf0; // @[dma_ctrl.scala 318:139]
|
||||||
|
wire _T_1097 = _T_1094 | _T_1096; // @[dma_ctrl.scala 318:116]
|
||||||
|
wire _T_1099 = dma_mem_byteen == 8'hff; // @[dma_ctrl.scala 318:175]
|
||||||
|
wire _T_1100 = _T_1097 | _T_1099; // @[dma_ctrl.scala 318:152]
|
||||||
|
wire _T_1101 = ~_T_1100; // @[dma_ctrl.scala 318:80]
|
||||||
|
wire _T_1102 = _T_1092 & _T_1101; // @[dma_ctrl.scala 318:78]
|
||||||
|
wire _T_1103 = _T_1089 | _T_1102; // @[dma_ctrl.scala 317:79]
|
||||||
|
wire dma_alignment_error = _T_1010 & _T_1103; // @[dma_ctrl.scala 304:87]
|
||||||
wire _T_79 = dma_address_error | dma_alignment_error; // @[dma_ctrl.scala 208:258]
|
wire _T_79 = dma_address_error | dma_alignment_error; // @[dma_ctrl.scala 208:258]
|
||||||
wire _T_80 = 3'h0 == RdPtr; // @[dma_ctrl.scala 208:288]
|
wire _T_80 = 3'h0 == RdPtr; // @[dma_ctrl.scala 208:288]
|
||||||
wire _T_81 = _T_79 & _T_80; // @[dma_ctrl.scala 208:281]
|
wire _T_81 = _T_79 & _T_80; // @[dma_ctrl.scala 208:281]
|
||||||
|
@ -470,12 +485,12 @@ module dma_ctrl(
|
||||||
wire _T_184 = _T_167 & _T_134; // @[dma_ctrl.scala 210:174]
|
wire _T_184 = _T_167 & _T_134; // @[dma_ctrl.scala 210:174]
|
||||||
wire _T_189 = _T_167 & _T_152; // @[dma_ctrl.scala 210:174]
|
wire _T_189 = _T_167 & _T_152; // @[dma_ctrl.scala 210:174]
|
||||||
wire [4:0] fifo_pend_en = {_T_189,_T_184,_T_179,_T_174,_T_169}; // @[Cat.scala 29:58]
|
wire [4:0] fifo_pend_en = {_T_189,_T_184,_T_179,_T_174,_T_169}; // @[Cat.scala 29:58]
|
||||||
wire _T_1107 = _T_995 & _T_996[0]; // @[dma_ctrl.scala 324:66]
|
wire _T_1127 = _T_995 & _T_996[0]; // @[dma_ctrl.scala 328:66]
|
||||||
wire _T_1109 = _T_1000 | dma_mem_addr_in_pic; // @[dma_ctrl.scala 324:134]
|
wire _T_1129 = _T_1000 | dma_mem_addr_in_pic; // @[dma_ctrl.scala 328:134]
|
||||||
wire _T_1110 = ~_T_1109; // @[dma_ctrl.scala 324:88]
|
wire _T_1130 = ~_T_1129; // @[dma_ctrl.scala 328:88]
|
||||||
wire _T_1113 = dma_mem_sz_int[1:0] != 2'h2; // @[dma_ctrl.scala 324:191]
|
wire _T_1133 = dma_mem_sz_int[1:0] != 2'h2; // @[dma_ctrl.scala 328:191]
|
||||||
wire _T_1114 = _T_1110 | _T_1113; // @[dma_ctrl.scala 324:167]
|
wire _T_1134 = _T_1130 | _T_1133; // @[dma_ctrl.scala 328:167]
|
||||||
wire dma_dbg_cmd_error = _T_1107 & _T_1114; // @[dma_ctrl.scala 324:84]
|
wire dma_dbg_cmd_error = _T_1127 & _T_1134; // @[dma_ctrl.scala 328:84]
|
||||||
wire _T_197 = _T_79 | dma_dbg_cmd_error; // @[dma_ctrl.scala 212:114]
|
wire _T_197 = _T_79 | dma_dbg_cmd_error; // @[dma_ctrl.scala 212:114]
|
||||||
wire _T_199 = _T_197 & _T_80; // @[dma_ctrl.scala 212:135]
|
wire _T_199 = _T_197 & _T_80; // @[dma_ctrl.scala 212:135]
|
||||||
wire _T_200 = io_lsu_dma_dma_dccm_ctl_dccm_dma_rvalid & io_lsu_dma_dma_dccm_ctl_dccm_dma_ecc_error; // @[dma_ctrl.scala 212:198]
|
wire _T_200 = io_lsu_dma_dma_dccm_ctl_dccm_dma_rvalid & io_lsu_dma_dma_dccm_ctl_dccm_dma_ecc_error; // @[dma_ctrl.scala 212:198]
|
||||||
|
@ -571,9 +586,9 @@ module dma_ctrl(
|
||||||
wire _T_399 = fifo_done_en[4] | fifo_done[4]; // @[dma_ctrl.scala 218:75]
|
wire _T_399 = fifo_done_en[4] | fifo_done[4]; // @[dma_ctrl.scala 218:75]
|
||||||
wire _T_400 = _T_399 & io_dma_bus_clk_en; // @[dma_ctrl.scala 218:91]
|
wire _T_400 = _T_399 & io_dma_bus_clk_en; // @[dma_ctrl.scala 218:91]
|
||||||
wire [4:0] fifo_done_bus_en = {_T_400,_T_396,_T_392,_T_388,_T_384}; // @[Cat.scala 29:58]
|
wire [4:0] fifo_done_bus_en = {_T_400,_T_396,_T_392,_T_388,_T_384}; // @[Cat.scala 29:58]
|
||||||
wire _T_1265 = io_dma_axi_b_valid & io_dma_axi_b_ready; // @[dma_ctrl.scala 498:61]
|
wire _T_1285 = io_dma_axi_b_valid & io_dma_axi_b_ready; // @[dma_ctrl.scala 502:61]
|
||||||
wire _T_1266 = io_dma_axi_r_valid & io_dma_axi_r_ready; // @[dma_ctrl.scala 498:105]
|
wire _T_1286 = io_dma_axi_r_valid & io_dma_axi_r_ready; // @[dma_ctrl.scala 502:105]
|
||||||
wire bus_rsp_sent = _T_1265 | _T_1266; // @[dma_ctrl.scala 498:83]
|
wire bus_rsp_sent = _T_1285 | _T_1286; // @[dma_ctrl.scala 502:83]
|
||||||
wire _T_406 = bus_rsp_sent & io_dma_bus_clk_en; // @[dma_ctrl.scala 220:99]
|
wire _T_406 = bus_rsp_sent & io_dma_bus_clk_en; // @[dma_ctrl.scala 220:99]
|
||||||
wire _T_407 = _T_406 | io_dma_dbg_cmd_done; // @[dma_ctrl.scala 220:120]
|
wire _T_407 = _T_406 | io_dma_dbg_cmd_done; // @[dma_ctrl.scala 220:120]
|
||||||
reg [2:0] RspPtr; // @[Reg.scala 27:20]
|
reg [2:0] RspPtr; // @[Reg.scala 27:20]
|
||||||
|
@ -658,7 +673,7 @@ module dma_ctrl(
|
||||||
reg fifo_tag_0; // @[Reg.scala 27:20]
|
reg fifo_tag_0; // @[Reg.scala 27:20]
|
||||||
reg wrbuf_tag; // @[Reg.scala 27:20]
|
reg wrbuf_tag; // @[Reg.scala 27:20]
|
||||||
reg rdbuf_tag; // @[Reg.scala 27:20]
|
reg rdbuf_tag; // @[Reg.scala 27:20]
|
||||||
wire bus_cmd_tag = axi_mstr_sel ? wrbuf_tag : rdbuf_tag; // @[dma_ctrl.scala 463:43]
|
wire bus_cmd_tag = axi_mstr_sel ? wrbuf_tag : rdbuf_tag; // @[dma_ctrl.scala 467:43]
|
||||||
reg fifo_tag_1; // @[Reg.scala 27:20]
|
reg fifo_tag_1; // @[Reg.scala 27:20]
|
||||||
reg fifo_tag_2; // @[Reg.scala 27:20]
|
reg fifo_tag_2; // @[Reg.scala 27:20]
|
||||||
reg fifo_tag_3; // @[Reg.scala 27:20]
|
reg fifo_tag_3; // @[Reg.scala 27:20]
|
||||||
|
@ -672,6 +687,9 @@ module dma_ctrl(
|
||||||
wire WrPtrEn = |fifo_cmd_en; // @[dma_ctrl.scala 266:30]
|
wire WrPtrEn = |fifo_cmd_en; // @[dma_ctrl.scala 266:30]
|
||||||
wire RdPtrEn = _T_165 | _T_197; // @[dma_ctrl.scala 268:93]
|
wire RdPtrEn = _T_165 | _T_197; // @[dma_ctrl.scala 268:93]
|
||||||
wire RspPtrEn = io_dma_dbg_cmd_done | _T_406; // @[dma_ctrl.scala 270:39]
|
wire RspPtrEn = io_dma_dbg_cmd_done | _T_406; // @[dma_ctrl.scala 270:39]
|
||||||
|
wire [3:0] _T_959 = {3'h0,axi_mstr_prty_en}; // @[Cat.scala 29:58]
|
||||||
|
wire [3:0] _T_961 = {3'h0,bus_rsp_sent}; // @[Cat.scala 29:58]
|
||||||
|
wire [3:0] num_fifo_vld_tmp = _T_959 - _T_961; // @[dma_ctrl.scala 291:62]
|
||||||
wire [3:0] _T_966 = {3'h0,fifo_valid[0]}; // @[Cat.scala 29:58]
|
wire [3:0] _T_966 = {3'h0,fifo_valid[0]}; // @[Cat.scala 29:58]
|
||||||
wire [3:0] _T_969 = {3'h0,fifo_valid[1]}; // @[Cat.scala 29:58]
|
wire [3:0] _T_969 = {3'h0,fifo_valid[1]}; // @[Cat.scala 29:58]
|
||||||
wire [3:0] _T_972 = {3'h0,fifo_valid[2]}; // @[Cat.scala 29:58]
|
wire [3:0] _T_972 = {3'h0,fifo_valid[2]}; // @[Cat.scala 29:58]
|
||||||
|
@ -681,91 +699,92 @@ module dma_ctrl(
|
||||||
wire [3:0] _T_982 = _T_980 + _T_972; // @[dma_ctrl.scala 293:102]
|
wire [3:0] _T_982 = _T_980 + _T_972; // @[dma_ctrl.scala 293:102]
|
||||||
wire [3:0] _T_984 = _T_982 + _T_975; // @[dma_ctrl.scala 293:102]
|
wire [3:0] _T_984 = _T_982 + _T_975; // @[dma_ctrl.scala 293:102]
|
||||||
wire [3:0] num_fifo_vld_tmp2 = _T_984 + _T_978; // @[dma_ctrl.scala 293:102]
|
wire [3:0] num_fifo_vld_tmp2 = _T_984 + _T_978; // @[dma_ctrl.scala 293:102]
|
||||||
wire _T_1123 = |fifo_valid; // @[dma_ctrl.scala 334:30]
|
wire [3:0] num_fifo_vld = num_fifo_vld_tmp + num_fifo_vld_tmp2; // @[dma_ctrl.scala 295:45]
|
||||||
wire fifo_empty = ~_T_1123; // @[dma_ctrl.scala 334:17]
|
wire _T_1143 = |fifo_valid; // @[dma_ctrl.scala 338:30]
|
||||||
wire [4:0] _T_1086 = fifo_valid >> RspPtr; // @[dma_ctrl.scala 320:39]
|
wire fifo_empty = ~_T_1143; // @[dma_ctrl.scala 338:17]
|
||||||
wire [4:0] _T_1088 = fifo_dbg >> RspPtr; // @[dma_ctrl.scala 320:58]
|
wire [4:0] _T_1106 = fifo_valid >> RspPtr; // @[dma_ctrl.scala 324:39]
|
||||||
wire _T_1090 = _T_1086[0] & _T_1088[0]; // @[dma_ctrl.scala 320:48]
|
wire [4:0] _T_1108 = fifo_dbg >> RspPtr; // @[dma_ctrl.scala 324:58]
|
||||||
wire [4:0] _T_1091 = fifo_done >> RspPtr; // @[dma_ctrl.scala 320:78]
|
wire _T_1110 = _T_1106[0] & _T_1108[0]; // @[dma_ctrl.scala 324:48]
|
||||||
wire [31:0] _GEN_44 = 3'h1 == RspPtr ? fifo_addr_1 : fifo_addr_0; // @[dma_ctrl.scala 321:49]
|
wire [4:0] _T_1111 = fifo_done >> RspPtr; // @[dma_ctrl.scala 324:78]
|
||||||
wire [31:0] _GEN_45 = 3'h2 == RspPtr ? fifo_addr_2 : _GEN_44; // @[dma_ctrl.scala 321:49]
|
wire [31:0] _GEN_44 = 3'h1 == RspPtr ? fifo_addr_1 : fifo_addr_0; // @[dma_ctrl.scala 325:49]
|
||||||
wire [31:0] _GEN_46 = 3'h3 == RspPtr ? fifo_addr_3 : _GEN_45; // @[dma_ctrl.scala 321:49]
|
wire [31:0] _GEN_45 = 3'h2 == RspPtr ? fifo_addr_2 : _GEN_44; // @[dma_ctrl.scala 325:49]
|
||||||
wire [31:0] _GEN_47 = 3'h4 == RspPtr ? fifo_addr_4 : _GEN_46; // @[dma_ctrl.scala 321:49]
|
wire [31:0] _GEN_46 = 3'h3 == RspPtr ? fifo_addr_3 : _GEN_45; // @[dma_ctrl.scala 325:49]
|
||||||
wire [63:0] _GEN_49 = 3'h1 == RspPtr ? fifo_data_1 : fifo_data_0; // @[dma_ctrl.scala 321:71]
|
wire [31:0] _GEN_47 = 3'h4 == RspPtr ? fifo_addr_4 : _GEN_46; // @[dma_ctrl.scala 325:49]
|
||||||
wire [63:0] _GEN_50 = 3'h2 == RspPtr ? fifo_data_2 : _GEN_49; // @[dma_ctrl.scala 321:71]
|
wire [63:0] _GEN_49 = 3'h1 == RspPtr ? fifo_data_1 : fifo_data_0; // @[dma_ctrl.scala 325:71]
|
||||||
wire [63:0] _GEN_51 = 3'h3 == RspPtr ? fifo_data_3 : _GEN_50; // @[dma_ctrl.scala 321:71]
|
wire [63:0] _GEN_50 = 3'h2 == RspPtr ? fifo_data_2 : _GEN_49; // @[dma_ctrl.scala 325:71]
|
||||||
wire [63:0] _GEN_52 = 3'h4 == RspPtr ? fifo_data_4 : _GEN_51; // @[dma_ctrl.scala 321:71]
|
wire [63:0] _GEN_51 = 3'h3 == RspPtr ? fifo_data_3 : _GEN_50; // @[dma_ctrl.scala 325:71]
|
||||||
wire [1:0] _GEN_54 = 3'h1 == RspPtr ? fifo_error_1 : fifo_error_0; // @[dma_ctrl.scala 322:47]
|
wire [63:0] _GEN_52 = 3'h4 == RspPtr ? fifo_data_4 : _GEN_51; // @[dma_ctrl.scala 325:71]
|
||||||
wire [1:0] _GEN_55 = 3'h2 == RspPtr ? fifo_error_2 : _GEN_54; // @[dma_ctrl.scala 322:47]
|
wire [1:0] _GEN_54 = 3'h1 == RspPtr ? fifo_error_1 : fifo_error_0; // @[dma_ctrl.scala 326:47]
|
||||||
wire [1:0] _GEN_56 = 3'h3 == RspPtr ? fifo_error_3 : _GEN_55; // @[dma_ctrl.scala 322:47]
|
wire [1:0] _GEN_55 = 3'h2 == RspPtr ? fifo_error_2 : _GEN_54; // @[dma_ctrl.scala 326:47]
|
||||||
wire [1:0] _GEN_57 = 3'h4 == RspPtr ? fifo_error_4 : _GEN_56; // @[dma_ctrl.scala 322:47]
|
wire [1:0] _GEN_56 = 3'h3 == RspPtr ? fifo_error_3 : _GEN_55; // @[dma_ctrl.scala 326:47]
|
||||||
wire _T_1116 = dma_mem_addr_in_dccm | dma_mem_addr_in_pic; // @[dma_ctrl.scala 328:80]
|
wire [1:0] _GEN_57 = 3'h4 == RspPtr ? fifo_error_4 : _GEN_56; // @[dma_ctrl.scala 326:47]
|
||||||
wire [4:0] _T_1145 = fifo_rpend >> RdPtr; // @[dma_ctrl.scala 347:54]
|
wire _T_1136 = dma_mem_addr_in_dccm | dma_mem_addr_in_pic; // @[dma_ctrl.scala 332:80]
|
||||||
wire _T_1147 = ~_T_1145[0]; // @[dma_ctrl.scala 347:43]
|
wire [4:0] _T_1165 = fifo_rpend >> RdPtr; // @[dma_ctrl.scala 351:54]
|
||||||
wire _T_1148 = _T_990[0] & _T_1147; // @[dma_ctrl.scala 347:41]
|
wire _T_1167 = ~_T_1165[0]; // @[dma_ctrl.scala 351:43]
|
||||||
wire _T_1152 = _T_1148 & _T_994; // @[dma_ctrl.scala 347:62]
|
wire _T_1168 = _T_990[0] & _T_1167; // @[dma_ctrl.scala 351:41]
|
||||||
wire _T_1155 = ~_T_197; // @[dma_ctrl.scala 347:84]
|
wire _T_1172 = _T_1168 & _T_994; // @[dma_ctrl.scala 351:62]
|
||||||
wire dma_mem_req = _T_1152 & _T_1155; // @[dma_ctrl.scala 347:82]
|
wire _T_1175 = ~_T_197; // @[dma_ctrl.scala 351:84]
|
||||||
wire _T_1117 = dma_mem_req & _T_1116; // @[dma_ctrl.scala 328:56]
|
wire dma_mem_req = _T_1172 & _T_1175; // @[dma_ctrl.scala 351:82]
|
||||||
|
wire _T_1137 = dma_mem_req & _T_1136; // @[dma_ctrl.scala 332:56]
|
||||||
reg [2:0] dma_nack_count; // @[Reg.scala 27:20]
|
reg [2:0] dma_nack_count; // @[Reg.scala 27:20]
|
||||||
wire _T_1118 = dma_nack_count >= io_dec_dma_tlu_dma_dec_tlu_dma_qos_prty; // @[dma_ctrl.scala 328:121]
|
wire _T_1138 = dma_nack_count >= io_dec_dma_tlu_dma_dec_tlu_dma_qos_prty; // @[dma_ctrl.scala 332:121]
|
||||||
wire _T_1120 = dma_mem_req & dma_mem_addr_in_iccm; // @[dma_ctrl.scala 329:56]
|
wire _T_1140 = dma_mem_req & dma_mem_addr_in_iccm; // @[dma_ctrl.scala 333:56]
|
||||||
wire _T_1127 = ~_T_165; // @[dma_ctrl.scala 339:77]
|
wire _T_1147 = ~_T_165; // @[dma_ctrl.scala 343:77]
|
||||||
wire [2:0] _T_1129 = _T_1127 ? 3'h7 : 3'h0; // @[Bitwise.scala 72:12]
|
wire [2:0] _T_1149 = _T_1147 ? 3'h7 : 3'h0; // @[Bitwise.scala 72:12]
|
||||||
wire [2:0] _T_1131 = _T_1129 & dma_nack_count; // @[dma_ctrl.scala 339:155]
|
wire [2:0] _T_1151 = _T_1149 & dma_nack_count; // @[dma_ctrl.scala 343:155]
|
||||||
wire _T_1135 = dma_mem_req & _T_1127; // @[dma_ctrl.scala 339:203]
|
wire _T_1155 = dma_mem_req & _T_1147; // @[dma_ctrl.scala 343:203]
|
||||||
wire [2:0] _T_1138 = dma_nack_count + 3'h1; // @[dma_ctrl.scala 339:304]
|
wire [2:0] _T_1158 = dma_nack_count + 3'h1; // @[dma_ctrl.scala 343:304]
|
||||||
wire _T_1164 = io_lsu_dma_dma_lsc_ctl_dma_mem_write & _T_1076; // @[dma_ctrl.scala 353:84]
|
wire _T_1184 = io_lsu_dma_dma_lsc_ctl_dma_mem_write & _T_1096; // @[dma_ctrl.scala 357:84]
|
||||||
wire [31:0] _T_1168 = {dma_mem_addr_int[31:3],1'h1,dma_mem_addr_int[1:0]}; // @[Cat.scala 29:58]
|
wire [31:0] _T_1188 = {dma_mem_addr_int[31:3],1'h1,dma_mem_addr_int[1:0]}; // @[Cat.scala 29:58]
|
||||||
wire _T_1176 = io_lsu_dma_dma_lsc_ctl_dma_mem_write & _T_1077; // @[dma_ctrl.scala 354:84]
|
wire _T_1196 = io_lsu_dma_dma_lsc_ctl_dma_mem_write & _T_1097; // @[dma_ctrl.scala 358:84]
|
||||||
wire [4:0] _T_1179 = fifo_write >> RdPtr; // @[dma_ctrl.scala 356:53]
|
wire [4:0] _T_1199 = fifo_write >> RdPtr; // @[dma_ctrl.scala 360:53]
|
||||||
wire [63:0] _GEN_75 = 3'h1 == RdPtr ? fifo_data_1 : fifo_data_0; // @[dma_ctrl.scala 357:40]
|
wire [63:0] _GEN_75 = 3'h1 == RdPtr ? fifo_data_1 : fifo_data_0; // @[dma_ctrl.scala 361:40]
|
||||||
wire [63:0] _GEN_76 = 3'h2 == RdPtr ? fifo_data_2 : _GEN_75; // @[dma_ctrl.scala 357:40]
|
wire [63:0] _GEN_76 = 3'h2 == RdPtr ? fifo_data_2 : _GEN_75; // @[dma_ctrl.scala 361:40]
|
||||||
wire [63:0] _GEN_77 = 3'h3 == RdPtr ? fifo_data_3 : _GEN_76; // @[dma_ctrl.scala 357:40]
|
wire [63:0] _GEN_77 = 3'h3 == RdPtr ? fifo_data_3 : _GEN_76; // @[dma_ctrl.scala 361:40]
|
||||||
reg dma_dbg_cmd_done_q; // @[dma_ctrl.scala 377:12]
|
reg dma_dbg_cmd_done_q; // @[dma_ctrl.scala 381:12]
|
||||||
wire _T_1192 = bus_cmd_valid & io_dma_bus_clk_en; // @[dma_ctrl.scala 382:44]
|
wire _T_1212 = bus_cmd_valid & io_dma_bus_clk_en; // @[dma_ctrl.scala 386:44]
|
||||||
wire _T_1193 = _T_1192 | io_dbg_dma_dbg_ib_dbg_cmd_valid; // @[dma_ctrl.scala 382:65]
|
wire _T_1213 = _T_1212 | io_dbg_dma_dbg_ib_dbg_cmd_valid; // @[dma_ctrl.scala 386:65]
|
||||||
wire bus_rsp_valid = io_dma_axi_b_valid | io_dma_axi_r_valid; // @[dma_ctrl.scala 497:60]
|
wire bus_rsp_valid = io_dma_axi_b_valid | io_dma_axi_r_valid; // @[dma_ctrl.scala 501:60]
|
||||||
wire _T_1194 = bus_cmd_valid | bus_rsp_valid; // @[dma_ctrl.scala 383:44]
|
wire _T_1214 = bus_cmd_valid | bus_rsp_valid; // @[dma_ctrl.scala 387:44]
|
||||||
wire _T_1195 = _T_1194 | io_dbg_dma_dbg_ib_dbg_cmd_valid; // @[dma_ctrl.scala 383:60]
|
wire _T_1215 = _T_1214 | io_dbg_dma_dbg_ib_dbg_cmd_valid; // @[dma_ctrl.scala 387:60]
|
||||||
wire _T_1196 = _T_1195 | io_dma_dbg_cmd_done; // @[dma_ctrl.scala 383:94]
|
wire _T_1216 = _T_1215 | io_dma_dbg_cmd_done; // @[dma_ctrl.scala 387:94]
|
||||||
wire _T_1197 = _T_1196 | dma_dbg_cmd_done_q; // @[dma_ctrl.scala 383:116]
|
wire _T_1217 = _T_1216 | dma_dbg_cmd_done_q; // @[dma_ctrl.scala 387:116]
|
||||||
wire _T_1199 = _T_1197 | _T_1123; // @[dma_ctrl.scala 383:137]
|
wire _T_1219 = _T_1217 | _T_1143; // @[dma_ctrl.scala 387:137]
|
||||||
wire wrbuf_en = io_dma_axi_aw_valid & io_dma_axi_aw_ready; // @[dma_ctrl.scala 405:47]
|
wire wrbuf_en = io_dma_axi_aw_valid & io_dma_axi_aw_ready; // @[dma_ctrl.scala 409:47]
|
||||||
wire wrbuf_data_en = io_dma_axi_w_valid & io_dma_axi_w_ready; // @[dma_ctrl.scala 406:46]
|
wire wrbuf_data_en = io_dma_axi_w_valid & io_dma_axi_w_ready; // @[dma_ctrl.scala 410:46]
|
||||||
wire wrbuf_cmd_sent = axi_mstr_prty_en & axi_mstr_sel; // @[dma_ctrl.scala 407:40]
|
wire wrbuf_cmd_sent = axi_mstr_prty_en & axi_mstr_sel; // @[dma_ctrl.scala 411:40]
|
||||||
wire _T_1201 = ~wrbuf_en; // @[dma_ctrl.scala 408:51]
|
wire _T_1221 = ~wrbuf_en; // @[dma_ctrl.scala 412:51]
|
||||||
wire wrbuf_rst = wrbuf_cmd_sent & _T_1201; // @[dma_ctrl.scala 408:49]
|
wire wrbuf_rst = wrbuf_cmd_sent & _T_1221; // @[dma_ctrl.scala 412:49]
|
||||||
wire _T_1203 = ~wrbuf_data_en; // @[dma_ctrl.scala 409:51]
|
wire _T_1223 = ~wrbuf_data_en; // @[dma_ctrl.scala 413:51]
|
||||||
wire wrbuf_data_rst = wrbuf_cmd_sent & _T_1203; // @[dma_ctrl.scala 409:49]
|
wire wrbuf_data_rst = wrbuf_cmd_sent & _T_1223; // @[dma_ctrl.scala 413:49]
|
||||||
wire _T_1204 = wrbuf_en | wrbuf_vld; // @[dma_ctrl.scala 411:63]
|
wire _T_1224 = wrbuf_en | wrbuf_vld; // @[dma_ctrl.scala 415:63]
|
||||||
wire _T_1205 = ~wrbuf_rst; // @[dma_ctrl.scala 411:92]
|
wire _T_1225 = ~wrbuf_rst; // @[dma_ctrl.scala 415:92]
|
||||||
wire _T_1208 = wrbuf_data_en | wrbuf_data_vld; // @[dma_ctrl.scala 413:63]
|
wire _T_1228 = wrbuf_data_en | wrbuf_data_vld; // @[dma_ctrl.scala 417:63]
|
||||||
wire _T_1209 = ~wrbuf_data_rst; // @[dma_ctrl.scala 413:102]
|
wire _T_1229 = ~wrbuf_data_rst; // @[dma_ctrl.scala 417:102]
|
||||||
wire rdbuf_en = io_dma_axi_ar_valid & io_dma_axi_ar_ready; // @[dma_ctrl.scala 433:59]
|
wire rdbuf_en = io_dma_axi_ar_valid & io_dma_axi_ar_ready; // @[dma_ctrl.scala 437:59]
|
||||||
wire _T_1214 = ~axi_mstr_sel; // @[dma_ctrl.scala 434:44]
|
wire _T_1234 = ~axi_mstr_sel; // @[dma_ctrl.scala 438:44]
|
||||||
wire rdbuf_cmd_sent = axi_mstr_prty_en & _T_1214; // @[dma_ctrl.scala 434:42]
|
wire rdbuf_cmd_sent = axi_mstr_prty_en & _T_1234; // @[dma_ctrl.scala 438:42]
|
||||||
wire _T_1216 = ~rdbuf_en; // @[dma_ctrl.scala 435:63]
|
wire _T_1236 = ~rdbuf_en; // @[dma_ctrl.scala 439:63]
|
||||||
wire rdbuf_rst = rdbuf_cmd_sent & _T_1216; // @[dma_ctrl.scala 435:61]
|
wire rdbuf_rst = rdbuf_cmd_sent & _T_1236; // @[dma_ctrl.scala 439:61]
|
||||||
wire _T_1217 = rdbuf_en | rdbuf_vld; // @[dma_ctrl.scala 437:51]
|
wire _T_1237 = rdbuf_en | rdbuf_vld; // @[dma_ctrl.scala 441:51]
|
||||||
wire _T_1218 = ~rdbuf_rst; // @[dma_ctrl.scala 437:80]
|
wire _T_1238 = ~rdbuf_rst; // @[dma_ctrl.scala 441:80]
|
||||||
wire _T_1222 = ~wrbuf_cmd_sent; // @[dma_ctrl.scala 449:44]
|
wire _T_1242 = ~wrbuf_cmd_sent; // @[dma_ctrl.scala 453:44]
|
||||||
wire _T_1223 = wrbuf_vld & _T_1222; // @[dma_ctrl.scala 449:42]
|
wire _T_1243 = wrbuf_vld & _T_1242; // @[dma_ctrl.scala 453:42]
|
||||||
wire _T_1226 = wrbuf_data_vld & _T_1222; // @[dma_ctrl.scala 450:47]
|
wire _T_1246 = wrbuf_data_vld & _T_1242; // @[dma_ctrl.scala 454:47]
|
||||||
wire _T_1228 = ~rdbuf_cmd_sent; // @[dma_ctrl.scala 451:44]
|
wire _T_1248 = ~rdbuf_cmd_sent; // @[dma_ctrl.scala 455:44]
|
||||||
wire _T_1229 = rdbuf_vld & _T_1228; // @[dma_ctrl.scala 451:42]
|
wire _T_1249 = rdbuf_vld & _T_1248; // @[dma_ctrl.scala 455:42]
|
||||||
wire axi_mstr_prty_in = ~axi_mstr_priority; // @[dma_ctrl.scala 470:27]
|
wire axi_mstr_prty_in = ~axi_mstr_priority; // @[dma_ctrl.scala 474:27]
|
||||||
wire _T_1251 = ~_T_1088[0]; // @[dma_ctrl.scala 477:50]
|
wire _T_1271 = ~_T_1108[0]; // @[dma_ctrl.scala 481:50]
|
||||||
wire _T_1252 = _T_1086[0] & _T_1251; // @[dma_ctrl.scala 477:48]
|
wire _T_1272 = _T_1106[0] & _T_1271; // @[dma_ctrl.scala 481:48]
|
||||||
wire [4:0] _T_1253 = fifo_done_bus >> RspPtr; // @[dma_ctrl.scala 477:83]
|
wire [4:0] _T_1273 = fifo_done_bus >> RspPtr; // @[dma_ctrl.scala 481:83]
|
||||||
wire axi_rsp_valid = _T_1252 & _T_1253[0]; // @[dma_ctrl.scala 477:68]
|
wire axi_rsp_valid = _T_1272 & _T_1273[0]; // @[dma_ctrl.scala 481:68]
|
||||||
wire [4:0] _T_1255 = fifo_write >> RspPtr; // @[dma_ctrl.scala 479:39]
|
wire [4:0] _T_1275 = fifo_write >> RspPtr; // @[dma_ctrl.scala 483:39]
|
||||||
wire axi_rsp_write = _T_1255[0]; // @[dma_ctrl.scala 479:39]
|
wire axi_rsp_write = _T_1275[0]; // @[dma_ctrl.scala 483:39]
|
||||||
wire [1:0] _T_1258 = _GEN_57[1] ? 2'h3 : 2'h0; // @[dma_ctrl.scala 480:64]
|
wire [1:0] _T_1278 = _GEN_57[1] ? 2'h3 : 2'h0; // @[dma_ctrl.scala 484:64]
|
||||||
wire _GEN_86 = 3'h1 == RspPtr ? fifo_tag_1 : fifo_tag_0; // @[dma_ctrl.scala 488:33]
|
wire _GEN_86 = 3'h1 == RspPtr ? fifo_tag_1 : fifo_tag_0; // @[dma_ctrl.scala 492:33]
|
||||||
wire _GEN_87 = 3'h2 == RspPtr ? fifo_tag_2 : _GEN_86; // @[dma_ctrl.scala 488:33]
|
wire _GEN_87 = 3'h2 == RspPtr ? fifo_tag_2 : _GEN_86; // @[dma_ctrl.scala 492:33]
|
||||||
wire _GEN_88 = 3'h3 == RspPtr ? fifo_tag_3 : _GEN_87; // @[dma_ctrl.scala 488:33]
|
wire _GEN_88 = 3'h3 == RspPtr ? fifo_tag_3 : _GEN_87; // @[dma_ctrl.scala 492:33]
|
||||||
wire _T_1261 = ~axi_rsp_write; // @[dma_ctrl.scala 490:46]
|
wire _T_1281 = ~axi_rsp_write; // @[dma_ctrl.scala 494:46]
|
||||||
rvclkhdr rvclkhdr ( // @[lib.scala 352:23]
|
rvclkhdr rvclkhdr ( // @[lib.scala 352:23]
|
||||||
.io_l1clk(rvclkhdr_io_l1clk),
|
.io_l1clk(rvclkhdr_io_l1clk),
|
||||||
.io_clk(rvclkhdr_io_clk),
|
.io_clk(rvclkhdr_io_clk),
|
||||||
|
@ -826,19 +845,19 @@ module dma_ctrl(
|
||||||
.io_en(rvclkhdr_9_io_en),
|
.io_en(rvclkhdr_9_io_en),
|
||||||
.io_scan_mode(rvclkhdr_9_io_scan_mode)
|
.io_scan_mode(rvclkhdr_9_io_scan_mode)
|
||||||
);
|
);
|
||||||
rvclkhdr dma_buffer_c1cgc ( // @[dma_ctrl.scala 385:32]
|
rvclkhdr dma_buffer_c1cgc ( // @[dma_ctrl.scala 389:32]
|
||||||
.io_l1clk(dma_buffer_c1cgc_io_l1clk),
|
.io_l1clk(dma_buffer_c1cgc_io_l1clk),
|
||||||
.io_clk(dma_buffer_c1cgc_io_clk),
|
.io_clk(dma_buffer_c1cgc_io_clk),
|
||||||
.io_en(dma_buffer_c1cgc_io_en),
|
.io_en(dma_buffer_c1cgc_io_en),
|
||||||
.io_scan_mode(dma_buffer_c1cgc_io_scan_mode)
|
.io_scan_mode(dma_buffer_c1cgc_io_scan_mode)
|
||||||
);
|
);
|
||||||
rvclkhdr dma_free_cgc ( // @[dma_ctrl.scala 391:28]
|
rvclkhdr dma_free_cgc ( // @[dma_ctrl.scala 395:28]
|
||||||
.io_l1clk(dma_free_cgc_io_l1clk),
|
.io_l1clk(dma_free_cgc_io_l1clk),
|
||||||
.io_clk(dma_free_cgc_io_clk),
|
.io_clk(dma_free_cgc_io_clk),
|
||||||
.io_en(dma_free_cgc_io_en),
|
.io_en(dma_free_cgc_io_en),
|
||||||
.io_scan_mode(dma_free_cgc_io_scan_mode)
|
.io_scan_mode(dma_free_cgc_io_scan_mode)
|
||||||
);
|
);
|
||||||
rvclkhdr dma_bus_cgc ( // @[dma_ctrl.scala 397:27]
|
rvclkhdr dma_bus_cgc ( // @[dma_ctrl.scala 401:27]
|
||||||
.io_l1clk(dma_bus_cgc_io_l1clk),
|
.io_l1clk(dma_bus_cgc_io_l1clk),
|
||||||
.io_clk(dma_bus_cgc_io_clk),
|
.io_clk(dma_bus_cgc_io_clk),
|
||||||
.io_en(dma_bus_cgc_io_en),
|
.io_en(dma_bus_cgc_io_en),
|
||||||
|
@ -862,43 +881,43 @@ module dma_ctrl(
|
||||||
.io_en(rvclkhdr_12_io_en),
|
.io_en(rvclkhdr_12_io_en),
|
||||||
.io_scan_mode(rvclkhdr_12_io_scan_mode)
|
.io_scan_mode(rvclkhdr_12_io_scan_mode)
|
||||||
);
|
);
|
||||||
assign io_dma_dbg_rddata = _GEN_47[2] ? _GEN_52[63:32] : _GEN_52[31:0]; // @[dma_ctrl.scala 321:25]
|
assign io_dma_dbg_rddata = _GEN_47[2] ? _GEN_52[63:32] : _GEN_52[31:0]; // @[dma_ctrl.scala 325:25]
|
||||||
assign io_dma_dbg_cmd_done = _T_1090 & _T_1091[0]; // @[dma_ctrl.scala 320:25]
|
assign io_dma_dbg_cmd_done = _T_1110 & _T_1111[0]; // @[dma_ctrl.scala 324:25]
|
||||||
assign io_dma_dbg_cmd_fail = |_GEN_57; // @[dma_ctrl.scala 322:25]
|
assign io_dma_dbg_cmd_fail = |_GEN_57; // @[dma_ctrl.scala 326:25]
|
||||||
assign io_dbg_dma_io_dma_dbg_ready = fifo_empty & dbg_dma_bubble_bus; // @[dma_ctrl.scala 319:36]
|
assign io_dbg_dma_io_dma_dbg_ready = fifo_empty & dbg_dma_bubble_bus; // @[dma_ctrl.scala 323:36]
|
||||||
assign io_dec_dma_dctl_dma_dma_dccm_stall_any = io_dec_dma_tlu_dma_dma_dccm_stall_any; // @[dma_ctrl.scala 331:42]
|
assign io_dec_dma_dctl_dma_dma_dccm_stall_any = io_dec_dma_tlu_dma_dma_dccm_stall_any; // @[dma_ctrl.scala 335:42]
|
||||||
assign io_dec_dma_tlu_dma_dma_pmu_dccm_read = io_lsu_dma_dma_lsc_ctl_dma_dccm_req & _T_166; // @[dma_ctrl.scala 361:42]
|
assign io_dec_dma_tlu_dma_dma_pmu_dccm_read = io_lsu_dma_dma_lsc_ctl_dma_dccm_req & _T_166; // @[dma_ctrl.scala 365:42]
|
||||||
assign io_dec_dma_tlu_dma_dma_pmu_dccm_write = io_lsu_dma_dma_lsc_ctl_dma_dccm_req & io_lsu_dma_dma_lsc_ctl_dma_mem_write; // @[dma_ctrl.scala 362:42]
|
assign io_dec_dma_tlu_dma_dma_pmu_dccm_write = io_lsu_dma_dma_lsc_ctl_dma_dccm_req & io_lsu_dma_dma_lsc_ctl_dma_mem_write; // @[dma_ctrl.scala 366:42]
|
||||||
assign io_dec_dma_tlu_dma_dma_pmu_any_read = _T_165 & _T_166; // @[dma_ctrl.scala 363:42]
|
assign io_dec_dma_tlu_dma_dma_pmu_any_read = _T_165 & _T_166; // @[dma_ctrl.scala 367:42]
|
||||||
assign io_dec_dma_tlu_dma_dma_pmu_any_write = _T_165 & io_lsu_dma_dma_lsc_ctl_dma_mem_write; // @[dma_ctrl.scala 364:42]
|
assign io_dec_dma_tlu_dma_dma_pmu_any_write = _T_165 & io_lsu_dma_dma_lsc_ctl_dma_mem_write; // @[dma_ctrl.scala 368:42]
|
||||||
assign io_dec_dma_tlu_dma_dma_dccm_stall_any = _T_1117 & _T_1118; // @[dma_ctrl.scala 328:41]
|
assign io_dec_dma_tlu_dma_dma_dccm_stall_any = _T_1137 & _T_1138; // @[dma_ctrl.scala 332:41]
|
||||||
assign io_dec_dma_tlu_dma_dma_iccm_stall_any = io_ifu_dma_dma_ifc_dma_iccm_stall_any; // @[dma_ctrl.scala 330:41]
|
assign io_dec_dma_tlu_dma_dma_iccm_stall_any = io_ifu_dma_dma_ifc_dma_iccm_stall_any; // @[dma_ctrl.scala 334:41]
|
||||||
assign io_dma_axi_aw_ready = ~_T_1223; // @[dma_ctrl.scala 449:27]
|
assign io_dma_axi_aw_ready = ~_T_1243; // @[dma_ctrl.scala 453:27]
|
||||||
assign io_dma_axi_w_ready = ~_T_1226; // @[dma_ctrl.scala 450:27]
|
assign io_dma_axi_w_ready = ~_T_1246; // @[dma_ctrl.scala 454:27]
|
||||||
assign io_dma_axi_b_valid = axi_rsp_valid & axi_rsp_write; // @[dma_ctrl.scala 486:27]
|
assign io_dma_axi_b_valid = axi_rsp_valid & axi_rsp_write; // @[dma_ctrl.scala 490:27]
|
||||||
assign io_dma_axi_b_bits_resp = _GEN_57[0] ? 2'h2 : _T_1258; // @[dma_ctrl.scala 487:41]
|
assign io_dma_axi_b_bits_resp = _GEN_57[0] ? 2'h2 : _T_1278; // @[dma_ctrl.scala 491:41]
|
||||||
assign io_dma_axi_b_bits_id = 3'h4 == RspPtr ? fifo_tag_4 : _GEN_88; // @[dma_ctrl.scala 488:33]
|
assign io_dma_axi_b_bits_id = 3'h4 == RspPtr ? fifo_tag_4 : _GEN_88; // @[dma_ctrl.scala 492:33]
|
||||||
assign io_dma_axi_ar_ready = ~_T_1229; // @[dma_ctrl.scala 451:27]
|
assign io_dma_axi_ar_ready = ~_T_1249; // @[dma_ctrl.scala 455:27]
|
||||||
assign io_dma_axi_r_valid = axi_rsp_valid & _T_1261; // @[dma_ctrl.scala 490:27]
|
assign io_dma_axi_r_valid = axi_rsp_valid & _T_1281; // @[dma_ctrl.scala 494:27]
|
||||||
assign io_dma_axi_r_bits_id = 3'h4 == RspPtr ? fifo_tag_4 : _GEN_88; // @[dma_ctrl.scala 494:37]
|
assign io_dma_axi_r_bits_id = 3'h4 == RspPtr ? fifo_tag_4 : _GEN_88; // @[dma_ctrl.scala 498:37]
|
||||||
assign io_dma_axi_r_bits_data = 3'h4 == RspPtr ? fifo_data_4 : _GEN_51; // @[dma_ctrl.scala 492:43]
|
assign io_dma_axi_r_bits_data = 3'h4 == RspPtr ? fifo_data_4 : _GEN_51; // @[dma_ctrl.scala 496:43]
|
||||||
assign io_dma_axi_r_bits_resp = _GEN_57[0] ? 2'h2 : _T_1258; // @[dma_ctrl.scala 491:41]
|
assign io_dma_axi_r_bits_resp = _GEN_57[0] ? 2'h2 : _T_1278; // @[dma_ctrl.scala 495:41]
|
||||||
assign io_dma_axi_r_bits_last = 1'h1; // @[dma_ctrl.scala 493:41]
|
assign io_dma_axi_r_bits_last = 1'h1; // @[dma_ctrl.scala 497:41]
|
||||||
assign io_lsu_dma_dma_lsc_ctl_dma_dccm_req = _T_1117 & io_lsu_dma_dccm_ready; // @[dma_ctrl.scala 348:40]
|
assign io_lsu_dma_dma_lsc_ctl_dma_dccm_req = _T_1137 & io_lsu_dma_dccm_ready; // @[dma_ctrl.scala 352:40]
|
||||||
assign io_lsu_dma_dma_lsc_ctl_dma_mem_addr = _T_1164 ? _T_1168 : dma_mem_addr_int; // @[dma_ctrl.scala 353:40]
|
assign io_lsu_dma_dma_lsc_ctl_dma_mem_addr = _T_1184 ? _T_1188 : dma_mem_addr_int; // @[dma_ctrl.scala 357:40]
|
||||||
assign io_lsu_dma_dma_lsc_ctl_dma_mem_sz = _T_1176 ? 3'h2 : dma_mem_sz_int; // @[dma_ctrl.scala 354:40]
|
assign io_lsu_dma_dma_lsc_ctl_dma_mem_sz = _T_1196 ? 3'h2 : dma_mem_sz_int; // @[dma_ctrl.scala 358:40]
|
||||||
assign io_lsu_dma_dma_lsc_ctl_dma_mem_write = _T_1179[0]; // @[dma_ctrl.scala 356:40]
|
assign io_lsu_dma_dma_lsc_ctl_dma_mem_write = _T_1199[0]; // @[dma_ctrl.scala 360:40]
|
||||||
assign io_lsu_dma_dma_lsc_ctl_dma_mem_wdata = 3'h4 == RdPtr ? fifo_data_4 : _GEN_77; // @[dma_ctrl.scala 357:40]
|
assign io_lsu_dma_dma_lsc_ctl_dma_mem_wdata = 3'h4 == RdPtr ? fifo_data_4 : _GEN_77; // @[dma_ctrl.scala 361:40]
|
||||||
assign io_lsu_dma_dma_dccm_ctl_dma_mem_addr = io_lsu_dma_dma_lsc_ctl_dma_mem_addr; // @[dma_ctrl.scala 499:40]
|
assign io_lsu_dma_dma_dccm_ctl_dma_mem_addr = io_lsu_dma_dma_lsc_ctl_dma_mem_addr; // @[dma_ctrl.scala 503:40]
|
||||||
assign io_lsu_dma_dma_dccm_ctl_dma_mem_wdata = io_lsu_dma_dma_lsc_ctl_dma_mem_wdata; // @[dma_ctrl.scala 500:41]
|
assign io_lsu_dma_dma_dccm_ctl_dma_mem_wdata = io_lsu_dma_dma_lsc_ctl_dma_mem_wdata; // @[dma_ctrl.scala 504:41]
|
||||||
assign io_lsu_dma_dma_mem_tag = RdPtr; // @[dma_ctrl.scala 350:28]
|
assign io_lsu_dma_dma_mem_tag = RdPtr; // @[dma_ctrl.scala 354:28]
|
||||||
assign io_ifu_dma_dma_ifc_dma_iccm_stall_any = _T_1120 & _T_1118; // @[dma_ctrl.scala 329:41]
|
assign io_ifu_dma_dma_ifc_dma_iccm_stall_any = _T_1140 & _T_1138; // @[dma_ctrl.scala 333:41]
|
||||||
assign io_ifu_dma_dma_mem_ctl_dma_iccm_req = _T_1120 & io_iccm_ready; // @[dma_ctrl.scala 349:40]
|
assign io_ifu_dma_dma_mem_ctl_dma_iccm_req = _T_1140 & io_iccm_ready; // @[dma_ctrl.scala 353:40]
|
||||||
assign io_ifu_dma_dma_mem_ctl_dma_mem_addr = io_lsu_dma_dma_lsc_ctl_dma_mem_addr; // @[dma_ctrl.scala 502:39]
|
assign io_ifu_dma_dma_mem_ctl_dma_mem_addr = io_lsu_dma_dma_lsc_ctl_dma_mem_addr; // @[dma_ctrl.scala 506:39]
|
||||||
assign io_ifu_dma_dma_mem_ctl_dma_mem_sz = io_lsu_dma_dma_lsc_ctl_dma_mem_sz; // @[dma_ctrl.scala 501:37]
|
assign io_ifu_dma_dma_mem_ctl_dma_mem_sz = io_lsu_dma_dma_lsc_ctl_dma_mem_sz; // @[dma_ctrl.scala 505:37]
|
||||||
assign io_ifu_dma_dma_mem_ctl_dma_mem_write = io_lsu_dma_dma_lsc_ctl_dma_mem_write; // @[dma_ctrl.scala 504:40]
|
assign io_ifu_dma_dma_mem_ctl_dma_mem_write = io_lsu_dma_dma_lsc_ctl_dma_mem_write; // @[dma_ctrl.scala 508:40]
|
||||||
assign io_ifu_dma_dma_mem_ctl_dma_mem_wdata = io_lsu_dma_dma_lsc_ctl_dma_mem_wdata; // @[dma_ctrl.scala 503:40]
|
assign io_ifu_dma_dma_mem_ctl_dma_mem_wdata = io_lsu_dma_dma_lsc_ctl_dma_mem_wdata; // @[dma_ctrl.scala 507:40]
|
||||||
assign io_ifu_dma_dma_mem_ctl_dma_mem_tag = io_lsu_dma_dma_mem_tag; // @[dma_ctrl.scala 505:38]
|
assign io_ifu_dma_dma_mem_ctl_dma_mem_tag = io_lsu_dma_dma_mem_tag; // @[dma_ctrl.scala 509:38]
|
||||||
assign rvclkhdr_io_clk = clock; // @[lib.scala 354:18]
|
assign rvclkhdr_io_clk = clock; // @[lib.scala 354:18]
|
||||||
assign rvclkhdr_io_en = fifo_cmd_en[0]; // @[lib.scala 355:17]
|
assign rvclkhdr_io_en = fifo_cmd_en[0]; // @[lib.scala 355:17]
|
||||||
assign rvclkhdr_io_scan_mode = io_scan_mode; // @[lib.scala 356:24]
|
assign rvclkhdr_io_scan_mode = io_scan_mode; // @[lib.scala 356:24]
|
||||||
|
@ -929,15 +948,15 @@ module dma_ctrl(
|
||||||
assign rvclkhdr_9_io_clk = clock; // @[lib.scala 354:18]
|
assign rvclkhdr_9_io_clk = clock; // @[lib.scala 354:18]
|
||||||
assign rvclkhdr_9_io_en = fifo_data_en[4]; // @[lib.scala 355:17]
|
assign rvclkhdr_9_io_en = fifo_data_en[4]; // @[lib.scala 355:17]
|
||||||
assign rvclkhdr_9_io_scan_mode = io_scan_mode; // @[lib.scala 356:24]
|
assign rvclkhdr_9_io_scan_mode = io_scan_mode; // @[lib.scala 356:24]
|
||||||
assign dma_buffer_c1cgc_io_clk = clock; // @[dma_ctrl.scala 388:33]
|
assign dma_buffer_c1cgc_io_clk = clock; // @[dma_ctrl.scala 392:33]
|
||||||
assign dma_buffer_c1cgc_io_en = _T_1193 | io_clk_override; // @[dma_ctrl.scala 386:33]
|
assign dma_buffer_c1cgc_io_en = _T_1213 | io_clk_override; // @[dma_ctrl.scala 390:33]
|
||||||
assign dma_buffer_c1cgc_io_scan_mode = io_scan_mode; // @[dma_ctrl.scala 387:33]
|
assign dma_buffer_c1cgc_io_scan_mode = io_scan_mode; // @[dma_ctrl.scala 391:33]
|
||||||
assign dma_free_cgc_io_clk = clock; // @[dma_ctrl.scala 394:29]
|
assign dma_free_cgc_io_clk = clock; // @[dma_ctrl.scala 398:29]
|
||||||
assign dma_free_cgc_io_en = _T_1199 | io_clk_override; // @[dma_ctrl.scala 392:29]
|
assign dma_free_cgc_io_en = _T_1219 | io_clk_override; // @[dma_ctrl.scala 396:29]
|
||||||
assign dma_free_cgc_io_scan_mode = io_scan_mode; // @[dma_ctrl.scala 393:29]
|
assign dma_free_cgc_io_scan_mode = io_scan_mode; // @[dma_ctrl.scala 397:29]
|
||||||
assign dma_bus_cgc_io_clk = clock; // @[dma_ctrl.scala 400:28]
|
assign dma_bus_cgc_io_clk = clock; // @[dma_ctrl.scala 404:28]
|
||||||
assign dma_bus_cgc_io_en = io_dma_bus_clk_en; // @[dma_ctrl.scala 398:28]
|
assign dma_bus_cgc_io_en = io_dma_bus_clk_en; // @[dma_ctrl.scala 402:28]
|
||||||
assign dma_bus_cgc_io_scan_mode = io_scan_mode; // @[dma_ctrl.scala 399:28]
|
assign dma_bus_cgc_io_scan_mode = io_scan_mode; // @[dma_ctrl.scala 403:28]
|
||||||
assign rvclkhdr_10_io_clk = clock; // @[lib.scala 354:18]
|
assign rvclkhdr_10_io_clk = clock; // @[lib.scala 354:18]
|
||||||
assign rvclkhdr_10_io_en = wrbuf_en & io_dma_bus_clk_en; // @[lib.scala 355:17]
|
assign rvclkhdr_10_io_en = wrbuf_en & io_dma_bus_clk_en; // @[lib.scala 355:17]
|
||||||
assign rvclkhdr_10_io_scan_mode = io_scan_mode; // @[lib.scala 356:24]
|
assign rvclkhdr_10_io_scan_mode = io_scan_mode; // @[lib.scala 356:24]
|
||||||
|
@ -1452,21 +1471,21 @@ end // initial
|
||||||
if (reset) begin
|
if (reset) begin
|
||||||
wrbuf_vld <= 1'h0;
|
wrbuf_vld <= 1'h0;
|
||||||
end else begin
|
end else begin
|
||||||
wrbuf_vld <= _T_1204 & _T_1205;
|
wrbuf_vld <= _T_1224 & _T_1225;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
always @(posedge dma_bus_clk or posedge reset) begin
|
always @(posedge dma_bus_clk or posedge reset) begin
|
||||||
if (reset) begin
|
if (reset) begin
|
||||||
wrbuf_data_vld <= 1'h0;
|
wrbuf_data_vld <= 1'h0;
|
||||||
end else begin
|
end else begin
|
||||||
wrbuf_data_vld <= _T_1208 & _T_1209;
|
wrbuf_data_vld <= _T_1228 & _T_1229;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
always @(posedge dma_bus_clk or posedge reset) begin
|
always @(posedge dma_bus_clk or posedge reset) begin
|
||||||
if (reset) begin
|
if (reset) begin
|
||||||
rdbuf_vld <= 1'h0;
|
rdbuf_vld <= 1'h0;
|
||||||
end else begin
|
end else begin
|
||||||
rdbuf_vld <= _T_1217 & _T_1218;
|
rdbuf_vld <= _T_1237 & _T_1238;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
always @(posedge dma_bus_clk or posedge reset) begin
|
always @(posedge dma_bus_clk or posedge reset) begin
|
||||||
|
@ -1515,7 +1534,7 @@ end // initial
|
||||||
if (reset) begin
|
if (reset) begin
|
||||||
fifo_full <= 1'h0;
|
fifo_full <= 1'h0;
|
||||||
end else begin
|
end else begin
|
||||||
fifo_full <= num_fifo_vld_tmp2 >= 4'h5;
|
fifo_full <= num_fifo_vld >= 4'h5;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
always @(posedge dma_bus_clk or posedge reset) begin
|
always @(posedge dma_bus_clk or posedge reset) begin
|
||||||
|
@ -1864,10 +1883,10 @@ end // initial
|
||||||
end else if (fifo_cmd_en[0]) begin
|
end else if (fifo_cmd_en[0]) begin
|
||||||
if (io_dbg_dma_dbg_ib_dbg_cmd_valid) begin
|
if (io_dbg_dma_dbg_ib_dbg_cmd_valid) begin
|
||||||
_T_850 <= io_dbg_dma_dbg_ib_dbg_cmd_write;
|
_T_850 <= io_dbg_dma_dbg_ib_dbg_cmd_write;
|
||||||
end else if (_T_1241) begin
|
end else if (_T_1261) begin
|
||||||
_T_850 <= axi_mstr_priority;
|
_T_850 <= axi_mstr_priority;
|
||||||
end else begin
|
end else begin
|
||||||
_T_850 <= _T_1240;
|
_T_850 <= _T_1260;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1877,10 +1896,10 @@ end // initial
|
||||||
end else if (fifo_cmd_en[1]) begin
|
end else if (fifo_cmd_en[1]) begin
|
||||||
if (io_dbg_dma_dbg_ib_dbg_cmd_valid) begin
|
if (io_dbg_dma_dbg_ib_dbg_cmd_valid) begin
|
||||||
_T_852 <= io_dbg_dma_dbg_ib_dbg_cmd_write;
|
_T_852 <= io_dbg_dma_dbg_ib_dbg_cmd_write;
|
||||||
end else if (_T_1241) begin
|
end else if (_T_1261) begin
|
||||||
_T_852 <= axi_mstr_priority;
|
_T_852 <= axi_mstr_priority;
|
||||||
end else begin
|
end else begin
|
||||||
_T_852 <= _T_1240;
|
_T_852 <= _T_1260;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1890,10 +1909,10 @@ end // initial
|
||||||
end else if (fifo_cmd_en[2]) begin
|
end else if (fifo_cmd_en[2]) begin
|
||||||
if (io_dbg_dma_dbg_ib_dbg_cmd_valid) begin
|
if (io_dbg_dma_dbg_ib_dbg_cmd_valid) begin
|
||||||
_T_854 <= io_dbg_dma_dbg_ib_dbg_cmd_write;
|
_T_854 <= io_dbg_dma_dbg_ib_dbg_cmd_write;
|
||||||
end else if (_T_1241) begin
|
end else if (_T_1261) begin
|
||||||
_T_854 <= axi_mstr_priority;
|
_T_854 <= axi_mstr_priority;
|
||||||
end else begin
|
end else begin
|
||||||
_T_854 <= _T_1240;
|
_T_854 <= _T_1260;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1903,10 +1922,10 @@ end // initial
|
||||||
end else if (fifo_cmd_en[3]) begin
|
end else if (fifo_cmd_en[3]) begin
|
||||||
if (io_dbg_dma_dbg_ib_dbg_cmd_valid) begin
|
if (io_dbg_dma_dbg_ib_dbg_cmd_valid) begin
|
||||||
_T_856 <= io_dbg_dma_dbg_ib_dbg_cmd_write;
|
_T_856 <= io_dbg_dma_dbg_ib_dbg_cmd_write;
|
||||||
end else if (_T_1241) begin
|
end else if (_T_1261) begin
|
||||||
_T_856 <= axi_mstr_priority;
|
_T_856 <= axi_mstr_priority;
|
||||||
end else begin
|
end else begin
|
||||||
_T_856 <= _T_1240;
|
_T_856 <= _T_1260;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -2059,10 +2078,10 @@ end // initial
|
||||||
if (reset) begin
|
if (reset) begin
|
||||||
dma_nack_count <= 3'h0;
|
dma_nack_count <= 3'h0;
|
||||||
end else if (dma_mem_req) begin
|
end else if (dma_mem_req) begin
|
||||||
if (_T_1118) begin
|
if (_T_1138) begin
|
||||||
dma_nack_count <= _T_1131;
|
dma_nack_count <= _T_1151;
|
||||||
end else if (_T_1135) begin
|
end else if (_T_1155) begin
|
||||||
dma_nack_count <= _T_1138;
|
dma_nack_count <= _T_1158;
|
||||||
end else begin
|
end else begin
|
||||||
dma_nack_count <= 3'h0;
|
dma_nack_count <= 3'h0;
|
||||||
end
|
end
|
||||||
|
|
20165
quasar_wrapper.fir
20165
quasar_wrapper.fir
File diff suppressed because it is too large
Load Diff
7634
quasar_wrapper.v
7634
quasar_wrapper.v
File diff suppressed because it is too large
Load Diff
|
@ -235,7 +235,7 @@ class dbg extends Module with lib with RequireAsyncReset {
|
||||||
val command_wren = (io.dmi_reg_addr === "h17".U) & io.dmi_reg_en & io.dmi_reg_wr_en & (dbg_state === state_t.halted)
|
val command_wren = (io.dmi_reg_addr === "h17".U) & io.dmi_reg_en & io.dmi_reg_wr_en & (dbg_state === state_t.halted)
|
||||||
val command_din = Cat(io.dmi_reg_wdata(31, 24), 0.U(1.W), io.dmi_reg_wdata(22, 20), 0.U(3.W), io.dmi_reg_wdata(16, 0))
|
val command_din = Cat(io.dmi_reg_wdata(31, 24), 0.U(1.W), io.dmi_reg_wdata(22, 20), 0.U(3.W), io.dmi_reg_wdata(16, 0))
|
||||||
val command_reg = withReset((!dbg_dm_rst_l).asAsyncReset()) {
|
val command_reg = withReset((!dbg_dm_rst_l).asAsyncReset()) {
|
||||||
RegEnable(command_din, 0.U, command_wren)
|
rvdffe(command_din, command_wren,clock,io.scan_mode)
|
||||||
} // dmcommand_reg
|
} // dmcommand_reg
|
||||||
|
|
||||||
val data0_reg_wren0 = io.dmi_reg_en & io.dmi_reg_wr_en & (io.dmi_reg_addr === "h4".U) & (dbg_state === state_t.halted)
|
val data0_reg_wren0 = io.dmi_reg_en & io.dmi_reg_wr_en & (io.dmi_reg_addr === "h4".U) & (dbg_state === state_t.halted)
|
||||||
|
@ -244,7 +244,7 @@ class dbg extends Module with lib with RequireAsyncReset {
|
||||||
val data0_reg_wren = data0_reg_wren0 | data0_reg_wren1
|
val data0_reg_wren = data0_reg_wren0 | data0_reg_wren1
|
||||||
val data0_din = Fill(32, data0_reg_wren0) & io.dmi_reg_wdata | Fill(32, data0_reg_wren1) & io.core_dbg_rddata
|
val data0_din = Fill(32, data0_reg_wren0) & io.dmi_reg_wdata | Fill(32, data0_reg_wren1) & io.core_dbg_rddata
|
||||||
val data0_reg = withReset((!dbg_dm_rst_l).asAsyncReset()) {
|
val data0_reg = withReset((!dbg_dm_rst_l).asAsyncReset()) {
|
||||||
RegEnable(data0_din, 0.U, data0_reg_wren)
|
rvdffe(data0_din,data0_reg_wren,clock,io.scan_mode)
|
||||||
} // dbg_data0_reg
|
} // dbg_data0_reg
|
||||||
|
|
||||||
val data1_reg_wren = (io.dmi_reg_en & io.dmi_reg_wr_en & (io.dmi_reg_addr === "h5".U) & (dbg_state === state_t.halted))
|
val data1_reg_wren = (io.dmi_reg_en & io.dmi_reg_wr_en & (io.dmi_reg_addr === "h5".U) & (dbg_state === state_t.halted))
|
||||||
|
@ -450,6 +450,3 @@ class dbg extends Module with lib with RequireAsyncReset {
|
||||||
io.dbg_dma.dbg_ib.dbg_cmd_write := io.dbg_dec.dbg_ib.dbg_cmd_write
|
io.dbg_dma.dbg_ib.dbg_cmd_write := io.dbg_dec.dbg_ib.dbg_cmd_write
|
||||||
io.dbg_dma.dbg_ib.dbg_cmd_type := io.dbg_dec.dbg_ib.dbg_cmd_type
|
io.dbg_dma.dbg_ib.dbg_cmd_type := io.dbg_dec.dbg_ib.dbg_cmd_type
|
||||||
}
|
}
|
||||||
object dbg extends App {
|
|
||||||
println((new chisel3.stage.ChiselStage).emitVerilog(new dbg()))
|
|
||||||
}
|
|
|
@ -2127,7 +2127,7 @@ miccme_ce_req := (("hffffffff".U(32.W) << miccmect(31,27)) & Cat(0.U(5.W), miccm
|
||||||
val dicad1_raw = WireInit(UInt(7.W),0.U)
|
val dicad1_raw = WireInit(UInt(7.W),0.U)
|
||||||
val wr_dicad1_r = io.allow_dbg_halt_csr_write & io.dec_csr_wen_r_mod & (io.dec_csr_wraddr_r(11,0) === DICAD1)
|
val wr_dicad1_r = io.allow_dbg_halt_csr_write & io.dec_csr_wen_r_mod & (io.dec_csr_wraddr_r(11,0) === DICAD1)
|
||||||
|
|
||||||
val dicad1_ns = Mux(wr_dicad1_r.asBool, io.dec_csr_wrdata_r, io.ifu_ic_debug_rd_data(70,64))
|
val dicad1_ns = Mux(wr_dicad1_r.asBool, io.dec_csr_wrdata_r(6,0), io.ifu_ic_debug_rd_data(70,64))
|
||||||
|
|
||||||
dicad1_raw := withClock(io.active_clk){RegEnable(dicad1_ns,0.U,(wr_dicad1_r | io.ifu_ic_debug_rd_data_valid).asBool)}
|
dicad1_raw := withClock(io.active_clk){RegEnable(dicad1_ns,0.U,(wr_dicad1_r | io.ifu_ic_debug_rd_data_valid).asBool)}
|
||||||
dicad1 := Cat(0.U(25.W), dicad1_raw)
|
dicad1 := Cat(0.U(25.W), dicad1_raw)
|
||||||
|
|
|
@ -294,7 +294,7 @@ class dma_ctrl extends Module with lib with RequireAsyncReset {
|
||||||
|
|
||||||
num_fifo_vld := num_fifo_vld_tmp + num_fifo_vld_tmp2
|
num_fifo_vld := num_fifo_vld_tmp + num_fifo_vld_tmp2
|
||||||
|
|
||||||
val fifo_full_spec = (num_fifo_vld_tmp2 >= DMA_BUF_DEPTH.asUInt())
|
val fifo_full_spec = (num_fifo_vld >= DMA_BUF_DEPTH.asUInt())
|
||||||
|
|
||||||
val dma_fifo_ready = ~(fifo_full | dbg_dma_bubble_bus)
|
val dma_fifo_ready = ~(fifo_full | dbg_dma_bubble_bus)
|
||||||
|
|
||||||
|
@ -310,7 +310,11 @@ class dma_ctrl extends Module with lib with RequireAsyncReset {
|
||||||
(io.lsu_dma.dma_lsc_ctl.dma_mem_write & (dma_mem_sz_int(2, 0) === 2.U) & (Mux1H(Seq((dma_mem_addr_int(2,0) === 0.U) -> (dma_mem_byteen(3,0)),
|
(io.lsu_dma.dma_lsc_ctl.dma_mem_write & (dma_mem_sz_int(2, 0) === 2.U) & (Mux1H(Seq((dma_mem_addr_int(2,0) === 0.U) -> (dma_mem_byteen(3,0)),
|
||||||
(dma_mem_addr_int(2,0) === 1.U) -> (dma_mem_byteen(4,1)),
|
(dma_mem_addr_int(2,0) === 1.U) -> (dma_mem_byteen(4,1)),
|
||||||
(dma_mem_addr_int(2,0) === 2.U) -> (dma_mem_byteen(5,2)),
|
(dma_mem_addr_int(2,0) === 2.U) -> (dma_mem_byteen(5,2)),
|
||||||
(dma_mem_addr_int(2,0) === 3.U) -> (dma_mem_byteen(6,3)))) =/= 15.U)) | // Write byte enables not aligned for word store
|
(dma_mem_addr_int(2,0) === 3.U) -> (dma_mem_byteen(6,3)),
|
||||||
|
(dma_mem_addr_int(2,0) === 4.U) -> (dma_mem_byteen(7,4)),
|
||||||
|
(dma_mem_addr_int(2,0) === 5.U) -> (dma_mem_byteen(7,5)),
|
||||||
|
(dma_mem_addr_int(2,0) === 6.U) -> (dma_mem_byteen(7,6)),
|
||||||
|
(dma_mem_addr_int(2,0) === 7.U) -> (dma_mem_byteen(7)))) =/= "hf".U)) | // Write byte enables not aligned for word store
|
||||||
(io.lsu_dma.dma_lsc_ctl.dma_mem_write & (dma_mem_sz_int(2, 0) === 3.U) & !((dma_mem_byteen(7,0) === "h0f".U) | (dma_mem_byteen(7,0) === "hf0".U) | (dma_mem_byteen(7,0) === "hff".U)))) // Write byte enables not aligned for dword store
|
(io.lsu_dma.dma_lsc_ctl.dma_mem_write & (dma_mem_sz_int(2, 0) === 3.U) & !((dma_mem_byteen(7,0) === "h0f".U) | (dma_mem_byteen(7,0) === "hf0".U) | (dma_mem_byteen(7,0) === "hff".U)))) // Write byte enables not aligned for dword store
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,16 +13,14 @@ class ifu extends Module with lib with RequireAsyncReset {
|
||||||
val exu_flush_path_final = Input(UInt(31.W))
|
val exu_flush_path_final = Input(UInt(31.W))
|
||||||
val free_clk = Input(Clock())
|
val free_clk = Input(Clock())
|
||||||
val active_clk = Input(Clock())
|
val active_clk = Input(Clock())
|
||||||
val ifu_dec = new ifu_dec()
|
val ifu_dec = new ifu_dec() // IFU and DEC interconnects
|
||||||
val exu_ifu = new exu_ifu()
|
val exu_ifu = new exu_ifu() // IFU and EXU interconnects
|
||||||
val iccm = new iccm_mem()
|
val iccm = new iccm_mem() // ICCM memory signals
|
||||||
val ic = new ic_mem()
|
val ic = new ic_mem() // I$ memory signals
|
||||||
// AXI Write Channel
|
val ifu = new axi_channels(IFU_BUS_TAG) // AXI Write Channel
|
||||||
val ifu = new axi_channels(IFU_BUS_TAG)
|
|
||||||
val ifu_bus_clk_en = Input(Bool())
|
val ifu_bus_clk_en = Input(Bool())
|
||||||
// DMA signals
|
val ifu_dma = new ifu_dma() // DMA signals
|
||||||
val ifu_dma = new ifu_dma()
|
// ICCM DMA signals
|
||||||
// ICCM
|
|
||||||
val iccm_dma_ecc_error = Output(Bool())
|
val iccm_dma_ecc_error = Output(Bool())
|
||||||
val iccm_dma_rvalid = Output(Bool())
|
val iccm_dma_rvalid = Output(Bool())
|
||||||
val iccm_dma_rdata = Output(UInt(64.W))
|
val iccm_dma_rdata = Output(UInt(64.W))
|
||||||
|
@ -87,7 +85,8 @@ class ifu extends Module with lib with RequireAsyncReset {
|
||||||
bp_ctl.io.exu_bp <> io.exu_ifu.exu_bp
|
bp_ctl.io.exu_bp <> io.exu_ifu.exu_bp
|
||||||
bp_ctl.io.exu_flush_final := io.exu_flush_final
|
bp_ctl.io.exu_flush_final := io.exu_flush_final
|
||||||
bp_ctl.io.dec_tlu_flush_lower_wb := io.dec_tlu_flush_lower_wb
|
bp_ctl.io.dec_tlu_flush_lower_wb := io.dec_tlu_flush_lower_wb
|
||||||
// mem-ctl wiring
|
|
||||||
|
// mem-ctl Inputs
|
||||||
mem_ctl.io.free_clk := io.free_clk
|
mem_ctl.io.free_clk := io.free_clk
|
||||||
mem_ctl.io.active_clk := io.active_clk
|
mem_ctl.io.active_clk := io.active_clk
|
||||||
mem_ctl.io.exu_flush_final := io.exu_flush_final
|
mem_ctl.io.exu_flush_final := io.exu_flush_final
|
||||||
|
@ -110,6 +109,7 @@ class ifu extends Module with lib with RequireAsyncReset {
|
||||||
mem_ctl.io.dec_tlu_flush_lower_wb := io.dec_tlu_flush_lower_wb
|
mem_ctl.io.dec_tlu_flush_lower_wb := io.dec_tlu_flush_lower_wb
|
||||||
mem_ctl.io.scan_mode := io.scan_mode
|
mem_ctl.io.scan_mode := io.scan_mode
|
||||||
|
|
||||||
|
// DMA to the ICCM
|
||||||
io.iccm_dma_ecc_error := mem_ctl.io.iccm_dma_ecc_error
|
io.iccm_dma_ecc_error := mem_ctl.io.iccm_dma_ecc_error
|
||||||
io.iccm_dma_rvalid := mem_ctl.io.iccm_dma_rvalid
|
io.iccm_dma_rvalid := mem_ctl.io.iccm_dma_rvalid
|
||||||
io.iccm_dma_rdata := mem_ctl.io.iccm_dma_rdata
|
io.iccm_dma_rdata := mem_ctl.io.iccm_dma_rdata
|
||||||
|
|
|
@ -8,27 +8,27 @@ class ifu_aln_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val io = IO(new Bundle{
|
val io = IO(new Bundle{
|
||||||
val scan_mode = Input(Bool())
|
val scan_mode = Input(Bool())
|
||||||
val active_clk = Input(Clock())
|
val active_clk = Input(Clock())
|
||||||
val ifu_async_error_start = Input(Bool())
|
val ifu_async_error_start = Input(Bool()) // Error coming from mem-ctl
|
||||||
val iccm_rd_ecc_double_err = Input(Bool())
|
val iccm_rd_ecc_double_err = Input(Bool()) // ICCM double error coming from mem-ctl
|
||||||
val ic_access_fault_f = Input(Bool())
|
val ic_access_fault_f = Input(Bool()) // Access fault in I$
|
||||||
val ic_access_fault_type_f = Input(UInt(2.W))
|
val ic_access_fault_type_f = Input(UInt(2.W)) // Type of access fault occured
|
||||||
val ifu_bp_fghr_f = Input(UInt(BHT_GHR_SIZE.W))
|
val ifu_bp_fghr_f = Input(UInt(BHT_GHR_SIZE.W)) // Data coming from the branch predictor to put in the FP
|
||||||
val ifu_bp_btb_target_f = Input(UInt(31.W))
|
val ifu_bp_btb_target_f = Input(UInt(31.W)) // Target for the instruction enqueue in the FP
|
||||||
val ifu_bp_poffset_f = Input(UInt(12.W))
|
val ifu_bp_poffset_f = Input(UInt(12.W)) // Offset to the current PC for branch
|
||||||
val ifu_bp_hist0_f = Input(UInt(2.W))
|
val ifu_bp_hist0_f = Input(UInt(2.W)) // History to EXU
|
||||||
val ifu_bp_hist1_f = Input(UInt(2.W))
|
val ifu_bp_hist1_f = Input(UInt(2.W)) // History to EXU
|
||||||
val ifu_bp_pc4_f = Input(UInt(2.W))
|
val ifu_bp_pc4_f = Input(UInt(2.W)) // PC4
|
||||||
val ifu_bp_way_f = Input(UInt(2.W))
|
val ifu_bp_way_f = Input(UInt(2.W)) // Way to help in miss prediction
|
||||||
val ifu_bp_valid_f = Input(UInt(2.W))
|
val ifu_bp_valid_f = Input(UInt(2.W)) // Valid Branch prediction
|
||||||
val ifu_bp_ret_f = Input(UInt(2.W))
|
val ifu_bp_ret_f = Input(UInt(2.W)) // BP ret
|
||||||
val exu_flush_final = Input(Bool())
|
val exu_flush_final = Input(Bool()) // Miss prediction
|
||||||
val dec_aln = new dec_aln()
|
val dec_aln = new dec_aln() // Data going to the dec from the ALN
|
||||||
val ifu_fetch_data_f = Input(UInt(32.W))
|
val ifu_fetch_data_f = Input(UInt(32.W)) // PC of the current instruction in the FP
|
||||||
val ifu_fetch_val = Input(UInt(2.W))
|
val ifu_fetch_val = Input(UInt(2.W)) // PC boundary i.e 'x' of 2 or 4
|
||||||
val ifu_fetch_pc = Input(UInt(31.W))
|
val ifu_fetch_pc = Input(UInt(31.W)) // Current PC
|
||||||
/////////////////////////////////////////////////
|
/////////////////////////////////////////////////
|
||||||
val ifu_fb_consume1 = Output(Bool())
|
val ifu_fb_consume1 = Output(Bool()) // FP used 1
|
||||||
val ifu_fb_consume2 = Output(Bool())
|
val ifu_fb_consume2 = Output(Bool()) // FP used 2
|
||||||
|
|
||||||
})
|
})
|
||||||
val MHI = 46+BHT_GHR_SIZE // 54
|
val MHI = 46+BHT_GHR_SIZE // 54
|
||||||
|
@ -95,12 +95,16 @@ class ifu_aln_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val shift_2B = WireInit(Bool(), 0.U)
|
val shift_2B = WireInit(Bool(), 0.U)
|
||||||
val f0_shift_2B = WireInit(Bool(), 0.U)
|
val f0_shift_2B = WireInit(Bool(), 0.U)
|
||||||
|
|
||||||
|
// Stall if there is an error in the instrucion
|
||||||
error_stall_in := (error_stall | io.ifu_async_error_start) & !io.exu_flush_final
|
error_stall_in := (error_stall | io.ifu_async_error_start) & !io.exu_flush_final
|
||||||
|
|
||||||
|
// Flop the stall until flush
|
||||||
error_stall := withClock(io.active_clk) {RegNext(error_stall_in, init = 0.U)}
|
error_stall := withClock(io.active_clk) {RegNext(error_stall_in, init = 0.U)}
|
||||||
|
// Write Ptr of the FP
|
||||||
val wrptr = withClock(io.active_clk) {RegNext(wrptr_in, init = 0.U)}
|
val wrptr = withClock(io.active_clk) {RegNext(wrptr_in, init = 0.U)}
|
||||||
|
// Read Ptr of the FP
|
||||||
val rdptr = withClock(io.active_clk) {RegNext(rdptr_in, init = 0.U)}
|
val rdptr = withClock(io.active_clk) {RegNext(rdptr_in, init = 0.U)}
|
||||||
|
// Fetch Instruction boundary
|
||||||
val f2val = withClock(io.active_clk) {RegNext(f2val_in, init = 0.U)}
|
val f2val = withClock(io.active_clk) {RegNext(f2val_in, init = 0.U)}
|
||||||
val f1val = withClock(io.active_clk) {RegNext(f1val_in, init = 0.U)}
|
val f1val = withClock(io.active_clk) {RegNext(f1val_in, init = 0.U)}
|
||||||
val f0val = withClock(io.active_clk) {RegNext(f0val_in, init = 0.U)}
|
val f0val = withClock(io.active_clk) {RegNext(f0val_in, init = 0.U)}
|
||||||
|
@ -108,30 +112,34 @@ class ifu_aln_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val q2off = withClock(io.active_clk) {RegNext(q2off_in, init = 0.U)}
|
val q2off = withClock(io.active_clk) {RegNext(q2off_in, init = 0.U)}
|
||||||
val q1off = withClock(io.active_clk) {RegNext(q1off_in, init = 0.U)}
|
val q1off = withClock(io.active_clk) {RegNext(q1off_in, init = 0.U)}
|
||||||
val q0off = withClock(io.active_clk) {RegNext(q0off_in, init = 0.U)}
|
val q0off = withClock(io.active_clk) {RegNext(q0off_in, init = 0.U)}
|
||||||
|
// Instrution PC to the FP
|
||||||
val f2pc = rvdffe(io.ifu_fetch_pc, f2_wr_en.asBool, clock, io.scan_mode)
|
val f2pc = rvdffe(io.ifu_fetch_pc, f2_wr_en.asBool, clock, io.scan_mode)
|
||||||
val f1pc = rvdffe(f1pc_in, f1_shift_wr_en.asBool, clock, io.scan_mode)
|
val f1pc = rvdffe(f1pc_in, f1_shift_wr_en.asBool, clock, io.scan_mode)
|
||||||
val f0pc = rvdffe(f0pc_in, f0_shift_wr_en.asBool, clock, io.scan_mode)
|
val f0pc = rvdffe(f0pc_in, f0_shift_wr_en.asBool, clock, io.scan_mode)
|
||||||
|
// Branch data to the FP
|
||||||
brdata2 := rvdffe(brdata_in, qwen(2), clock, io.scan_mode)
|
brdata2 := rvdffe(brdata_in, qwen(2), clock, io.scan_mode)
|
||||||
brdata1 := rvdffe(brdata_in, qwen(1), clock, io.scan_mode)
|
brdata1 := rvdffe(brdata_in, qwen(1), clock, io.scan_mode)
|
||||||
brdata0 := rvdffe(brdata_in, qwen(0), clock, io.scan_mode)
|
brdata0 := rvdffe(brdata_in, qwen(0), clock, io.scan_mode)
|
||||||
|
// Miscalanious data to the FP including error's
|
||||||
misc2 := rvdffe(misc_data_in, qwen(2), clock, io.scan_mode)
|
misc2 := rvdffe(misc_data_in, qwen(2), clock, io.scan_mode)
|
||||||
misc1 := rvdffe(misc_data_in, qwen(1), clock, io.scan_mode)
|
misc1 := rvdffe(misc_data_in, qwen(1), clock, io.scan_mode)
|
||||||
misc0 := rvdffe(misc_data_in, qwen(0), clock, io.scan_mode)
|
misc0 := rvdffe(misc_data_in, qwen(0), clock, io.scan_mode)
|
||||||
|
// Instruction in the FP
|
||||||
q2 := rvdffe(io.ifu_fetch_data_f, qwen(2), clock, io.scan_mode)
|
q2 := rvdffe(io.ifu_fetch_data_f, qwen(2), clock, io.scan_mode)
|
||||||
q1 := rvdffe(io.ifu_fetch_data_f, qwen(1), clock, io.scan_mode)
|
q1 := rvdffe(io.ifu_fetch_data_f, qwen(1), clock, io.scan_mode)
|
||||||
q0 := rvdffe(io.ifu_fetch_data_f, qwen(0), clock, io.scan_mode)
|
q0 := rvdffe(io.ifu_fetch_data_f, qwen(0), clock, io.scan_mode)
|
||||||
|
|
||||||
|
// Shift FP logic
|
||||||
f2_wr_en := fetch_to_f2
|
f2_wr_en := fetch_to_f2
|
||||||
f1_shift_wr_en := fetch_to_f1 | shift_f2_f1 | f1_shift_2B
|
f1_shift_wr_en := fetch_to_f1 | shift_f2_f1 | f1_shift_2B
|
||||||
f0_shift_wr_en := fetch_to_f0 | shift_f2_f0 | shift_f1_f0 | shift_2B | shift_4B
|
f0_shift_wr_en := fetch_to_f0 | shift_f2_f0 | shift_f1_f0 | shift_2B | shift_4B
|
||||||
|
// FP read enable .. 3-bit for Implemenation of 1HMux
|
||||||
val qren = Cat(rdptr === 2.U, rdptr === 1.U, rdptr === 0.U)
|
val qren = Cat(rdptr === 2.U, rdptr === 1.U, rdptr === 0.U)
|
||||||
|
// FP write enable .. 3-bit for Implemenation of 1HMux
|
||||||
qwen := Cat(wrptr === 2.U & ifvalid, wrptr === 1.U & ifvalid, wrptr === 0.U & ifvalid)
|
qwen := Cat(wrptr === 2.U & ifvalid, wrptr === 1.U & ifvalid, wrptr === 0.U & ifvalid)
|
||||||
|
|
||||||
|
// Read Pointer calculation
|
||||||
|
// Next rdptr = # of consume + current ptr location (Rounding it from 2)
|
||||||
rdptr_in := Mux1H(Seq((qren(0) & io.ifu_fb_consume1 & !io.exu_flush_final).asBool -> 1.U,
|
rdptr_in := Mux1H(Seq((qren(0) & io.ifu_fb_consume1 & !io.exu_flush_final).asBool -> 1.U,
|
||||||
(qren(1) & io.ifu_fb_consume1 & !io.exu_flush_final).asBool -> 2.U,
|
(qren(1) & io.ifu_fb_consume1 & !io.exu_flush_final).asBool -> 2.U,
|
||||||
(qren(2) & io.ifu_fb_consume1 & !io.exu_flush_final).asBool -> 0.U,
|
(qren(2) & io.ifu_fb_consume1 & !io.exu_flush_final).asBool -> 0.U,
|
||||||
|
@ -140,6 +148,7 @@ class ifu_aln_ctl extends Module with lib with RequireAsyncReset {
|
||||||
(qren(2) & io.ifu_fb_consume2 & !io.exu_flush_final).asBool -> 1.U,
|
(qren(2) & io.ifu_fb_consume2 & !io.exu_flush_final).asBool -> 1.U,
|
||||||
(!io.ifu_fb_consume1 & !io.ifu_fb_consume2 & !io.exu_flush_final).asBool -> rdptr))
|
(!io.ifu_fb_consume1 & !io.ifu_fb_consume2 & !io.exu_flush_final).asBool -> rdptr))
|
||||||
|
|
||||||
|
// As there is only 1 enqueue so each time move by 1
|
||||||
wrptr_in := Mux1H(Seq((qwen(0) & !io.exu_flush_final).asBool -> 1.U,
|
wrptr_in := Mux1H(Seq((qwen(0) & !io.exu_flush_final).asBool -> 1.U,
|
||||||
(qwen(1) & !io.exu_flush_final).asBool -> 2.U,
|
(qwen(1) & !io.exu_flush_final).asBool -> 2.U,
|
||||||
(qwen(2) & !io.exu_flush_final).asBool -> 0.U,
|
(qwen(2) & !io.exu_flush_final).asBool -> 0.U,
|
||||||
|
@ -166,7 +175,7 @@ class ifu_aln_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val q0sel = Cat(q0ptr, !q0ptr)
|
val q0sel = Cat(q0ptr, !q0ptr)
|
||||||
|
|
||||||
val q1sel = Cat(q1ptr, !q1ptr)
|
val q1sel = Cat(q1ptr, !q1ptr)
|
||||||
|
// Misc data error, access-fault, type of fault, target, offset and ghr value
|
||||||
misc_data_in := Cat(io.iccm_rd_ecc_double_err, io.ic_access_fault_f, io.ic_access_fault_type_f,
|
misc_data_in := Cat(io.iccm_rd_ecc_double_err, io.ic_access_fault_f, io.ic_access_fault_type_f,
|
||||||
io.ifu_bp_btb_target_f, io.ifu_bp_poffset_f, io.ifu_bp_fghr_f)
|
io.ifu_bp_btb_target_f, io.ifu_bp_poffset_f, io.ifu_bp_fghr_f)
|
||||||
|
|
||||||
|
@ -192,10 +201,11 @@ class ifu_aln_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val f0poffset = misc0eff(BHT_GHR_SIZE+11, BHT_GHR_SIZE)
|
val f0poffset = misc0eff(BHT_GHR_SIZE+11, BHT_GHR_SIZE)
|
||||||
val f0fghr = misc0eff(BHT_GHR_SIZE-1, 0)
|
val f0fghr = misc0eff(BHT_GHR_SIZE-1, 0)
|
||||||
|
|
||||||
|
// Branch information
|
||||||
brdata_in := Cat(io.ifu_bp_hist1_f(1),io.ifu_bp_hist0_f(1),io.ifu_bp_pc4_f(1),io.ifu_bp_way_f(1),io.ifu_bp_valid_f(1),
|
brdata_in := Cat(io.ifu_bp_hist1_f(1),io.ifu_bp_hist0_f(1),io.ifu_bp_pc4_f(1),io.ifu_bp_way_f(1),io.ifu_bp_valid_f(1),
|
||||||
io.ifu_bp_ret_f(1), io.ifu_bp_hist1_f(0),io.ifu_bp_hist0_f(0),io.ifu_bp_pc4_f(0),io.ifu_bp_way_f(0),
|
io.ifu_bp_ret_f(1), io.ifu_bp_hist1_f(0),io.ifu_bp_hist0_f(0),io.ifu_bp_pc4_f(0),io.ifu_bp_way_f(0),
|
||||||
io.ifu_bp_valid_f(0),io.ifu_bp_ret_f(0))
|
io.ifu_bp_valid_f(0),io.ifu_bp_ret_f(0))
|
||||||
|
// Effective branch information
|
||||||
val brdataeff = Mux1H(Seq(qren(0).asBool->Cat(brdata1,brdata0),
|
val brdataeff = Mux1H(Seq(qren(0).asBool->Cat(brdata1,brdata0),
|
||||||
qren(1).asBool->Cat(brdata2,brdata1),
|
qren(1).asBool->Cat(brdata2,brdata1),
|
||||||
qren(2).asBool->Cat(brdata0,brdata2)))
|
qren(2).asBool->Cat(brdata0,brdata2)))
|
||||||
|
@ -227,11 +237,13 @@ class ifu_aln_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val consume_fb0 = !sf0val(0) & f0val(0)
|
val consume_fb0 = !sf0val(0) & f0val(0)
|
||||||
val consume_fb1 = !sf1val(0) & f1val(0)
|
val consume_fb1 = !sf1val(0) & f1val(0)
|
||||||
|
|
||||||
|
// Depending on type of instruction and boundary determine how many FP to consume
|
||||||
io.ifu_fb_consume1 := consume_fb0 & !consume_fb1 & !io.exu_flush_final
|
io.ifu_fb_consume1 := consume_fb0 & !consume_fb1 & !io.exu_flush_final
|
||||||
io.ifu_fb_consume2 := consume_fb0 & consume_fb1 & !io.exu_flush_final
|
io.ifu_fb_consume2 := consume_fb0 & consume_fb1 & !io.exu_flush_final
|
||||||
|
|
||||||
ifvalid := io.ifu_fetch_val(0)
|
ifvalid := io.ifu_fetch_val(0)
|
||||||
|
|
||||||
|
// Shift logic for each dequeue
|
||||||
shift_f1_f0 := !sf0_valid & sf1_valid
|
shift_f1_f0 := !sf0_valid & sf1_valid
|
||||||
shift_f2_f0 := !sf0_valid & !sf1_valid & f2_valid
|
shift_f2_f0 := !sf0_valid & !sf1_valid & f2_valid
|
||||||
shift_f2_f1 := !sf0_valid & sf1_valid & f2_valid
|
shift_f2_f1 := !sf0_valid & sf1_valid & f2_valid
|
||||||
|
@ -285,6 +297,7 @@ class ifu_aln_ctl extends Module with lib with RequireAsyncReset {
|
||||||
|
|
||||||
q1final := Mux1H(Seq(q1sel(0).asBool->q1eff(15,0), q1sel(1).asBool->q1eff(31,16)))
|
q1final := Mux1H(Seq(q1sel(0).asBool->q1eff(15,0), q1sel(1).asBool->q1eff(31,16)))
|
||||||
|
|
||||||
|
// Alinging the data according to the boundary of PC
|
||||||
val aligndata = Mux1H(Seq(f0val(1).asBool -> q0final, (~f0val(1) & f0val(0)).asBool -> Cat(q1final(15,0),q0final(15,0))))
|
val aligndata = Mux1H(Seq(f0val(1).asBool -> q0final, (~f0val(1) & f0val(0)).asBool -> Cat(q1final(15,0),q0final(15,0))))
|
||||||
|
|
||||||
alignval := Mux1H(Seq(f0val(1).asBool->3.U, (!f0val(1) & f0val(0)) -> Cat(f1val(0),1.U)))
|
alignval := Mux1H(Seq(f0val(1).asBool->3.U, (!f0val(1) & f0val(0)) -> Cat(f1val(0),1.U)))
|
||||||
|
@ -317,6 +330,7 @@ class ifu_aln_ctl extends Module with lib with RequireAsyncReset {
|
||||||
|
|
||||||
io.dec_aln.aln_dec.ifu_i0_cinst := aligndata(15,0)
|
io.dec_aln.aln_dec.ifu_i0_cinst := aligndata(15,0)
|
||||||
|
|
||||||
|
// Instruction is compressed or not
|
||||||
first4B := aligndata(1,0) === 3.U
|
first4B := aligndata(1,0) === 3.U
|
||||||
|
|
||||||
val first2B = ~first4B
|
val first2B = ~first4B
|
||||||
|
@ -334,11 +348,12 @@ class ifu_aln_ctl extends Module with lib with RequireAsyncReset {
|
||||||
io.dec_aln.aln_ib.ifu_i0_dbecc := Mux1H(Seq(first4B.asBool->aligndbecc.orR, first2B.asBool->aligndbecc(0)))
|
io.dec_aln.aln_ib.ifu_i0_dbecc := Mux1H(Seq(first4B.asBool->aligndbecc.orR, first2B.asBool->aligndbecc(0)))
|
||||||
|
|
||||||
val ifirst = aligndata
|
val ifirst = aligndata
|
||||||
|
// Expander from 16-bit to 32-bit
|
||||||
val decompressed = Module(new ifu_compress_ctl())
|
val decompressed = Module(new ifu_compress_ctl())
|
||||||
|
|
||||||
io.dec_aln.aln_ib.ifu_i0_instr := Mux1H(Seq(first4B.asBool -> ifirst, first2B.asBool -> decompressed.io.dout))
|
io.dec_aln.aln_ib.ifu_i0_instr := Mux1H(Seq(first4B.asBool -> ifirst, first2B.asBool -> decompressed.io.dout))
|
||||||
|
|
||||||
|
// Hashing the PC
|
||||||
val firstpc_hash = btb_addr_hash(f0pc)
|
val firstpc_hash = btb_addr_hash(f0pc)
|
||||||
|
|
||||||
val secondpc_hash = btb_addr_hash(secondpc)
|
val secondpc_hash = btb_addr_hash(secondpc)
|
||||||
|
|
|
@ -7,32 +7,32 @@ import chisel3.util._
|
||||||
|
|
||||||
class ifu_ifc_ctl extends Module with lib with RequireAsyncReset {
|
class ifu_ifc_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val io = IO(new Bundle{
|
val io = IO(new Bundle{
|
||||||
val exu_flush_final = Input(Bool())
|
val exu_flush_final = Input(Bool()) // Miss Prediction for EXU
|
||||||
val exu_flush_path_final = Input(UInt(31.W))
|
val exu_flush_path_final = Input(UInt(31.W)) // Replay PC
|
||||||
val free_clk = Input(Clock())
|
val free_clk = Input(Clock())
|
||||||
val active_clk = Input(Clock())
|
val active_clk = Input(Clock())
|
||||||
val scan_mode = Input(Bool())
|
val scan_mode = Input(Bool())
|
||||||
val ic_hit_f = Input(Bool())
|
val ic_hit_f = Input(Bool())
|
||||||
val ifu_ic_mb_empty = Input(Bool())
|
val ifu_ic_mb_empty = Input(Bool()) // Miss buffer of mem-ctl empty
|
||||||
val ifu_fb_consume1 = Input(Bool())
|
val ifu_fb_consume1 = Input(Bool()) // Consume 1 fetch from FP
|
||||||
val ifu_fb_consume2 = Input(Bool())
|
val ifu_fb_consume2 = Input(Bool()) // Consume 2 fetch from FP
|
||||||
val ifu_bp_hit_taken_f = Input(Bool())
|
val ifu_bp_hit_taken_f = Input(Bool()) // Branch taken from BP
|
||||||
val ifu_bp_btb_target_f = Input(UInt(31.W))
|
val ifu_bp_btb_target_f = Input(UInt(31.W)) // Predicted PC
|
||||||
val ic_dma_active = Input(Bool())
|
val ic_dma_active = Input(Bool()) // DMA for I$
|
||||||
val ic_write_stall = Input(Bool())
|
val ic_write_stall = Input(Bool())
|
||||||
val dec_ifc = new dec_ifc()
|
val dec_ifc = new dec_ifc() // DEC to IFC Bundle
|
||||||
val dma_ifc = new dma_ifc()
|
val dma_ifc = new dma_ifc() // DMA to IFC Bundle
|
||||||
val ifc_fetch_addr_f = Output(UInt(31.W))
|
val ifc_fetch_addr_f = Output(UInt(31.W)) // Previous PC
|
||||||
val ifc_fetch_addr_bf = Output(UInt(31.W))
|
val ifc_fetch_addr_bf = Output(UInt(31.W)) // Next PC
|
||||||
|
|
||||||
val ifc_fetch_req_f = Output(Bool())
|
val ifc_fetch_req_f = Output(Bool()) // Fetch State
|
||||||
|
|
||||||
val ifc_fetch_uncacheable_bf = Output(Bool())
|
val ifc_fetch_uncacheable_bf = Output(Bool()) // Fetch req for uncacheable
|
||||||
val ifc_fetch_req_bf = Output(Bool())
|
val ifc_fetch_req_bf = Output(Bool())
|
||||||
val ifc_fetch_req_bf_raw = Output(Bool())
|
val ifc_fetch_req_bf_raw = Output(Bool())
|
||||||
val ifc_iccm_access_bf = Output(Bool())
|
val ifc_iccm_access_bf = Output(Bool()) // ICCM access
|
||||||
val ifc_region_acc_fault_bf = Output(Bool())
|
val ifc_region_acc_fault_bf = Output(Bool()) // Region access fault
|
||||||
val ifc_dma_access_ok = Output(Bool())
|
val ifc_dma_access_ok = Output(Bool()) // DMA accesing
|
||||||
})
|
})
|
||||||
|
|
||||||
val fetch_addr_bf = WireInit(UInt(31.W), init = 0.U)
|
val fetch_addr_bf = WireInit(UInt(31.W), init = 0.U)
|
||||||
|
@ -69,6 +69,7 @@ class ifu_ifc_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val sel_next_addr_bf = !io.exu_flush_final & io.ifc_fetch_req_f & !io.ifu_bp_hit_taken_f & io.ic_hit_f
|
val sel_next_addr_bf = !io.exu_flush_final & io.ifc_fetch_req_f & !io.ifu_bp_hit_taken_f & io.ic_hit_f
|
||||||
|
|
||||||
// TODO: Make an assertion for the 1H-Mux under here
|
// TODO: Make an assertion for the 1H-Mux under here
|
||||||
|
// Next PC calculation
|
||||||
io.ifc_fetch_addr_bf := Mux1H(Seq(io.exu_flush_final.asBool -> io.exu_flush_path_final, // Replay PC
|
io.ifc_fetch_addr_bf := Mux1H(Seq(io.exu_flush_final.asBool -> io.exu_flush_path_final, // Replay PC
|
||||||
sel_last_addr_bf.asBool -> io.ifc_fetch_addr_f, // Hold the current PC
|
sel_last_addr_bf.asBool -> io.ifc_fetch_addr_f, // Hold the current PC
|
||||||
sel_btb_addr_bf.asBool -> io.ifu_bp_btb_target_f, // Take the predicted PC
|
sel_btb_addr_bf.asBool -> io.ifu_bp_btb_target_f, // Take the predicted PC
|
||||||
|
@ -77,6 +78,7 @@ class ifu_ifc_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val address_upper = io.ifc_fetch_addr_f(30,1)+1.U
|
val address_upper = io.ifc_fetch_addr_f(30,1)+1.U
|
||||||
fetch_addr_next_0 := !(address_upper(ICACHE_TAG_INDEX_LO-2) ^ io.ifc_fetch_addr_f(ICACHE_TAG_INDEX_LO-1)) & io.ifc_fetch_addr_f(0)
|
fetch_addr_next_0 := !(address_upper(ICACHE_TAG_INDEX_LO-2) ^ io.ifc_fetch_addr_f(ICACHE_TAG_INDEX_LO-1)) & io.ifc_fetch_addr_f(0)
|
||||||
|
|
||||||
|
// Next PC to check from which boundary it is comming from
|
||||||
fetch_addr_next := Cat(address_upper, fetch_addr_next_0)
|
fetch_addr_next := Cat(address_upper, fetch_addr_next_0)
|
||||||
|
|
||||||
io.ifc_fetch_req_bf_raw := ~idle
|
io.ifc_fetch_req_bf_raw := ~idle
|
||||||
|
@ -103,12 +105,14 @@ class ifu_ifc_ctl extends Module with lib with RequireAsyncReset {
|
||||||
|
|
||||||
flush_fb := io.exu_flush_final
|
flush_fb := io.exu_flush_final
|
||||||
|
|
||||||
|
// Checking FP for PMU
|
||||||
fb_right := ( io.ifu_fb_consume1 & !io.ifu_fb_consume2 & (!io.ifc_fetch_req_f | miss_f)) |
|
fb_right := ( io.ifu_fb_consume1 & !io.ifu_fb_consume2 & (!io.ifc_fetch_req_f | miss_f)) |
|
||||||
(io.ifu_fb_consume2 & io.ifc_fetch_req_f)
|
(io.ifu_fb_consume2 & io.ifc_fetch_req_f)
|
||||||
|
|
||||||
fb_right2 := (io.ifu_fb_consume2 & (~io.ifc_fetch_req_f | miss_f))
|
fb_right2 := (io.ifu_fb_consume2 & (~io.ifc_fetch_req_f | miss_f))
|
||||||
fb_left := io.ifc_fetch_req_f & !(io.ifu_fb_consume1 | io.ifu_fb_consume2) & !miss_f
|
fb_left := io.ifc_fetch_req_f & !(io.ifu_fb_consume1 | io.ifu_fb_consume2) & !miss_f
|
||||||
|
|
||||||
|
// Shifting the fb to remember the FP state
|
||||||
fb_write_ns := Mux1H(Seq(flush_fb.asBool -> 1.U(4.W),
|
fb_write_ns := Mux1H(Seq(flush_fb.asBool -> 1.U(4.W),
|
||||||
(!flush_fb & fb_right).asBool -> Cat(0.U(1.W), fb_write_f(3,1)),
|
(!flush_fb & fb_right).asBool -> Cat(0.U(1.W), fb_write_f(3,1)),
|
||||||
(!flush_fb & fb_right2).asBool -> Cat(0.U(2.W), fb_write_f(3,2)),
|
(!flush_fb & fb_right2).asBool -> Cat(0.U(2.W), fb_write_f(3,2)),
|
||||||
|
@ -126,6 +130,7 @@ class ifu_ifc_ctl extends Module with lib with RequireAsyncReset {
|
||||||
io.dec_ifc.ifu_pmu_fetch_stall := wfm | (io.ifc_fetch_req_bf_raw &
|
io.dec_ifc.ifu_pmu_fetch_stall := wfm | (io.ifc_fetch_req_bf_raw &
|
||||||
((fb_full_f & !(io.ifu_fb_consume2 | io.ifu_fb_consume1 | io.exu_flush_final)) | dma_stall))
|
((fb_full_f & !(io.ifu_fb_consume2 | io.ifu_fb_consume1 | io.exu_flush_final)) | dma_stall))
|
||||||
|
|
||||||
|
// Checking the next PC range and its region to access the ICCM or I$
|
||||||
val (iccm_acc_in_region_bf, iccm_acc_in_range_bf) = if(ICCM_ENABLE)
|
val (iccm_acc_in_region_bf, iccm_acc_in_range_bf) = if(ICCM_ENABLE)
|
||||||
rvrangecheck(ICCM_SADR, ICCM_SIZE, Cat(io.ifc_fetch_addr_bf,0.U))
|
rvrangecheck(ICCM_SADR, ICCM_SIZE, Cat(io.ifc_fetch_addr_bf,0.U))
|
||||||
else (0.U, 0.U)
|
else (0.U, 0.U)
|
||||||
|
|
|
@ -54,26 +54,7 @@ class mem_ctl_io extends Bundle with lib{
|
||||||
|
|
||||||
class ifu_mem_ctl extends Module with lib with RequireAsyncReset {
|
class ifu_mem_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val io = IO(new mem_ctl_io)
|
val io = IO(new mem_ctl_io)
|
||||||
io.ifu_axi.w.valid := 0.U
|
|
||||||
io.ifu_axi.w.bits.data := 0.U
|
|
||||||
io.ifu_axi.aw.bits.qos := 0.U
|
|
||||||
io.ifu_axi.aw.bits.addr := 0.U
|
|
||||||
io.ifu_axi.aw.bits.prot := 0.U
|
|
||||||
io.ifu_axi.aw.bits.len := 0.U
|
|
||||||
io.ifu_axi.ar.bits.lock := 0.U
|
|
||||||
io.ifu_axi.aw.bits.region := 0.U
|
|
||||||
io.ifu_axi.aw.bits.id := 0.U
|
|
||||||
io.ifu_axi.aw.valid := 0.U
|
|
||||||
io.ifu_axi.w.bits.strb := 0.U
|
|
||||||
io.ifu_axi.aw.bits.cache := 0.U
|
|
||||||
io.ifu_axi.ar.bits.qos := 0.U
|
|
||||||
io.ifu_axi.aw.bits.lock := 0.U
|
|
||||||
io.ifu_axi.b.ready := 0.U
|
|
||||||
io.ifu_axi.ar.bits.len := 0.U
|
|
||||||
io.ifu_axi.aw.bits.size := 0.U
|
|
||||||
io.ifu_axi.ar.bits.prot := 0.U
|
|
||||||
io.ifu_axi.aw.bits.burst := 0.U
|
|
||||||
io.ifu_axi.w.bits.last := 0.U
|
|
||||||
val idle_C :: crit_byp_ok_C :: hit_u_miss_C :: miss_wait_C :: crit_wrd_rdy_C :: scnd_miss_C :: stream_C :: stall_scnd_miss_C :: Nil = Enum(8)
|
val idle_C :: crit_byp_ok_C :: hit_u_miss_C :: miss_wait_C :: crit_wrd_rdy_C :: scnd_miss_C :: stream_C :: stall_scnd_miss_C :: Nil = Enum(8)
|
||||||
val err_stop_idle_C :: err_fetch1_C :: err_fetch2_C :: err_stop_fetch_C :: Nil = Enum(4)
|
val err_stop_idle_C :: err_fetch1_C :: err_fetch2_C :: err_stop_fetch_C :: Nil = Enum(4)
|
||||||
val err_idle_C :: ic_wff_C :: ecc_wff_C :: ecc_cor_C :: dma_sb_err_C :: Nil = Enum(5)
|
val err_idle_C :: ic_wff_C :: ecc_wff_C :: ecc_cor_C :: dma_sb_err_C :: Nil = Enum(5)
|
||||||
|
@ -104,6 +85,7 @@ class ifu_mem_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val ic_miss_under_miss_f = WireInit(Bool(), false.B)
|
val ic_miss_under_miss_f = WireInit(Bool(), false.B)
|
||||||
val ic_ignore_2nd_miss_f = WireInit(Bool(), false.B)
|
val ic_ignore_2nd_miss_f = WireInit(Bool(), false.B)
|
||||||
val ic_debug_rd_en_ff = WireInit(Bool(), false.B)
|
val ic_debug_rd_en_ff = WireInit(Bool(), false.B)
|
||||||
|
|
||||||
val debug_data_clk = rvclkhdr(clock, ic_debug_rd_en_ff, io.scan_mode)
|
val debug_data_clk = rvclkhdr(clock, ic_debug_rd_en_ff, io.scan_mode)
|
||||||
val flush_final_f = withClock(io.free_clk){RegNext(io.exu_flush_final, 0.U)}
|
val flush_final_f = withClock(io.free_clk){RegNext(io.exu_flush_final, 0.U)}
|
||||||
val fetch_bf_f_c1_clken = io.ifc_fetch_req_bf_raw | ifc_fetch_req_f | miss_pending | io.exu_flush_final | scnd_miss_req
|
val fetch_bf_f_c1_clken = io.ifc_fetch_req_bf_raw | ifc_fetch_req_f | miss_pending | io.exu_flush_final | scnd_miss_req
|
||||||
|
@ -120,11 +102,11 @@ class ifu_mem_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val ifu_bp_hit_taken_q_f = io.ifu_bp_hit_taken_f & io.ic_hit_f
|
val ifu_bp_hit_taken_q_f = io.ifu_bp_hit_taken_f & io.ic_hit_f
|
||||||
///////////////////////////////// MISS FSM /////////////////////////////////
|
///////////////////////////////// MISS FSM /////////////////////////////////
|
||||||
switch(miss_state){
|
switch(miss_state){
|
||||||
is (idle_C){
|
is (idle_C){ // Idle meaning there is not pending miss
|
||||||
miss_nxtstate := Mux((ic_act_miss_f & !io.exu_flush_final).asBool, crit_byp_ok_C, hit_u_miss_C)
|
miss_nxtstate := Mux((ic_act_miss_f & !io.exu_flush_final).asBool, crit_byp_ok_C, hit_u_miss_C)
|
||||||
miss_state_en := ic_act_miss_f & !io.dec_mem_ctrl.dec_tlu_force_halt}
|
miss_state_en := ic_act_miss_f & !io.dec_mem_ctrl.dec_tlu_force_halt}
|
||||||
|
|
||||||
is (crit_byp_ok_C){
|
is (crit_byp_ok_C){ // Miss started meaning each beat is checked if, it is the critical word
|
||||||
miss_nxtstate := Mux((io.dec_mem_ctrl.dec_tlu_force_halt | (ic_byp_hit_f & (last_data_recieved_ff | (bus_ifu_wr_en_ff & last_beat)) & uncacheable_miss_ff)).asBool, idle_C,
|
miss_nxtstate := Mux((io.dec_mem_ctrl.dec_tlu_force_halt | (ic_byp_hit_f & (last_data_recieved_ff | (bus_ifu_wr_en_ff & last_beat)) & uncacheable_miss_ff)).asBool, idle_C,
|
||||||
Mux((ic_byp_hit_f & !last_data_recieved_ff & uncacheable_miss_ff).asBool, miss_wait_C,
|
Mux((ic_byp_hit_f & !last_data_recieved_ff & uncacheable_miss_ff).asBool, miss_wait_C,
|
||||||
Mux((!ic_byp_hit_f & !io.exu_flush_final & (bus_ifu_wr_en_ff & last_beat) & uncacheable_miss_ff).asBool, crit_wrd_rdy_C,
|
Mux((!ic_byp_hit_f & !io.exu_flush_final & (bus_ifu_wr_en_ff & last_beat) & uncacheable_miss_ff).asBool, crit_wrd_rdy_C,
|
||||||
|
@ -135,35 +117,36 @@ class ifu_mem_ctl extends Module with lib with RequireAsyncReset {
|
||||||
Mux(((io.exu_flush_final | ifu_bp_hit_taken_q_f) & !(bus_ifu_wr_en_ff & last_beat)).asBool, hit_u_miss_C, idle_C))))))))
|
Mux(((io.exu_flush_final | ifu_bp_hit_taken_q_f) & !(bus_ifu_wr_en_ff & last_beat)).asBool, hit_u_miss_C, idle_C))))))))
|
||||||
miss_state_en := io.dec_mem_ctrl.dec_tlu_force_halt | io.exu_flush_final | ic_byp_hit_f | ifu_bp_hit_taken_q_f | (bus_ifu_wr_en_ff & last_beat) | (bus_ifu_wr_en_ff & !uncacheable_miss_ff)
|
miss_state_en := io.dec_mem_ctrl.dec_tlu_force_halt | io.exu_flush_final | ic_byp_hit_f | ifu_bp_hit_taken_q_f | (bus_ifu_wr_en_ff & last_beat) | (bus_ifu_wr_en_ff & !uncacheable_miss_ff)
|
||||||
}
|
}
|
||||||
is (crit_wrd_rdy_C){
|
is (crit_wrd_rdy_C){ // Critical word hit but not complete, its going to be available in next cycle
|
||||||
miss_nxtstate := idle_C
|
miss_nxtstate := idle_C
|
||||||
miss_state_en := io.exu_flush_final | flush_final_f | ic_byp_hit_f | io.dec_mem_ctrl.dec_tlu_force_halt
|
miss_state_en := io.exu_flush_final | flush_final_f | ic_byp_hit_f | io.dec_mem_ctrl.dec_tlu_force_halt
|
||||||
}
|
}
|
||||||
is (stream_C){
|
is (stream_C){ // The miss was a miss of uncacheable range
|
||||||
miss_nxtstate := Mux(((io.exu_flush_final | ifu_bp_hit_taken_q_f | stream_eol_f)&(!(bus_ifu_wr_en_ff & last_beat)) & !io.dec_mem_ctrl.dec_tlu_force_halt).asBool, hit_u_miss_C, idle_C)
|
miss_nxtstate := Mux(((io.exu_flush_final | ifu_bp_hit_taken_q_f | stream_eol_f)&(!(bus_ifu_wr_en_ff & last_beat)) & !io.dec_mem_ctrl.dec_tlu_force_halt).asBool, hit_u_miss_C, idle_C)
|
||||||
miss_state_en := io.exu_flush_final | ifu_bp_hit_taken_q_f | stream_eol_f | (bus_ifu_wr_en_ff & last_beat) | io.dec_mem_ctrl.dec_tlu_force_halt
|
miss_state_en := io.exu_flush_final | ifu_bp_hit_taken_q_f | stream_eol_f | (bus_ifu_wr_en_ff & last_beat) | io.dec_mem_ctrl.dec_tlu_force_halt
|
||||||
}
|
}
|
||||||
is (miss_wait_C){
|
is (miss_wait_C){ // Critial word hit but the miss is not complete
|
||||||
miss_nxtstate := Mux((io.exu_flush_final & !(bus_ifu_wr_en_ff & last_beat) & !io.dec_mem_ctrl.dec_tlu_force_halt).asBool, hit_u_miss_C, idle_C)
|
miss_nxtstate := Mux((io.exu_flush_final & !(bus_ifu_wr_en_ff & last_beat) & !io.dec_mem_ctrl.dec_tlu_force_halt).asBool, hit_u_miss_C, idle_C)
|
||||||
miss_state_en := io.exu_flush_final | (bus_ifu_wr_en_ff & last_beat) | io.dec_mem_ctrl.dec_tlu_force_halt
|
miss_state_en := io.exu_flush_final | (bus_ifu_wr_en_ff & last_beat) | io.dec_mem_ctrl.dec_tlu_force_halt
|
||||||
}
|
}
|
||||||
is (hit_u_miss_C){
|
is (hit_u_miss_C){ // The critical word was a hit taken, or miss due to a miss predicted pc occured
|
||||||
miss_nxtstate := Mux((ic_miss_under_miss_f & !(bus_ifu_wr_en_ff & last_beat) & !io.dec_mem_ctrl.dec_tlu_force_halt).asBool, scnd_miss_C,
|
miss_nxtstate := Mux((ic_miss_under_miss_f & !(bus_ifu_wr_en_ff & last_beat) & !io.dec_mem_ctrl.dec_tlu_force_halt).asBool, scnd_miss_C,
|
||||||
Mux((ic_ignore_2nd_miss_f & !(bus_ifu_wr_en_ff & last_beat) & !io.dec_mem_ctrl.dec_tlu_force_halt).asBool, stall_scnd_miss_C, idle_C))
|
Mux((ic_ignore_2nd_miss_f & !(bus_ifu_wr_en_ff & last_beat) & !io.dec_mem_ctrl.dec_tlu_force_halt).asBool, stall_scnd_miss_C, idle_C))
|
||||||
miss_state_en := (bus_ifu_wr_en_ff & last_beat) | ic_miss_under_miss_f | ic_ignore_2nd_miss_f | io.dec_mem_ctrl.dec_tlu_force_halt
|
miss_state_en := (bus_ifu_wr_en_ff & last_beat) | ic_miss_under_miss_f | ic_ignore_2nd_miss_f | io.dec_mem_ctrl.dec_tlu_force_halt
|
||||||
}
|
}
|
||||||
is (scnd_miss_C){
|
is (scnd_miss_C){ // Miss of the different pc occured
|
||||||
miss_nxtstate := Mux(io.dec_mem_ctrl.dec_tlu_force_halt, idle_C, Mux(io.exu_flush_final,
|
miss_nxtstate := Mux(io.dec_mem_ctrl.dec_tlu_force_halt, idle_C, Mux(io.exu_flush_final,
|
||||||
Mux((bus_ifu_wr_en_ff & last_beat).asBool, idle_C, hit_u_miss_C), crit_byp_ok_C))
|
Mux((bus_ifu_wr_en_ff & last_beat).asBool, idle_C, hit_u_miss_C), crit_byp_ok_C))
|
||||||
miss_state_en := (bus_ifu_wr_en_ff & last_beat) | io.exu_flush_final | io.dec_mem_ctrl.dec_tlu_force_halt
|
miss_state_en := (bus_ifu_wr_en_ff & last_beat) | io.exu_flush_final | io.dec_mem_ctrl.dec_tlu_force_halt
|
||||||
}
|
}
|
||||||
is (stall_scnd_miss_C){
|
is (stall_scnd_miss_C){ // Miss from the same pc occured
|
||||||
miss_nxtstate := Mux(io.dec_mem_ctrl.dec_tlu_force_halt, idle_C, Mux(io.exu_flush_final,
|
miss_nxtstate := Mux(io.dec_mem_ctrl.dec_tlu_force_halt, idle_C, Mux(io.exu_flush_final,
|
||||||
Mux((bus_ifu_wr_en_ff & last_beat).asBool, idle_C, hit_u_miss_C), idle_C))
|
Mux((bus_ifu_wr_en_ff & last_beat).asBool, idle_C, hit_u_miss_C), idle_C))
|
||||||
miss_state_en := (bus_ifu_wr_en_ff & last_beat) | io.exu_flush_final | io.dec_mem_ctrl.dec_tlu_force_halt
|
miss_state_en := (bus_ifu_wr_en_ff & last_beat) | io.exu_flush_final | io.dec_mem_ctrl.dec_tlu_force_halt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
miss_state := withClock(io.free_clk){RegEnable(miss_nxtstate, 0.U, miss_state_en.asBool)}
|
miss_state := withClock(io.free_clk){RegEnable(miss_nxtstate, 0.U, miss_state_en.asBool)}
|
||||||
|
// Calculation all the relevant signals for the miss FSM
|
||||||
val crit_byp_hit_f = WireInit(Bool(), 0.U)
|
val crit_byp_hit_f = WireInit(Bool(), 0.U)
|
||||||
val way_status_mb_scnd_ff = WireInit(UInt(ICACHE_STATUS_BITS.W), 0.U)
|
val way_status_mb_scnd_ff = WireInit(UInt(ICACHE_STATUS_BITS.W), 0.U)
|
||||||
val way_status = WireInit(UInt(ICACHE_STATUS_BITS.W), 0.U)
|
val way_status = WireInit(UInt(ICACHE_STATUS_BITS.W), 0.U)
|
||||||
|
@ -262,6 +245,8 @@ class ifu_mem_ctl extends Module with lib with RequireAsyncReset {
|
||||||
sel_mb_addr_ff := withClock(io.free_clk){RegNext(sel_mb_addr, 0.U)}
|
sel_mb_addr_ff := withClock(io.free_clk){RegNext(sel_mb_addr, 0.U)}
|
||||||
val ifu_bus_rdata_ff = WireInit(UInt(64.W), 0.U)
|
val ifu_bus_rdata_ff = WireInit(UInt(64.W), 0.U)
|
||||||
val ic_miss_buff_half = WireInit(UInt(64.W), 0.U)
|
val ic_miss_buff_half = WireInit(UInt(64.W), 0.U)
|
||||||
|
|
||||||
|
// Ecc of the read data from the AXI
|
||||||
val ic_wr_ecc = rvecc_encode_64(ifu_bus_rdata_ff)
|
val ic_wr_ecc = rvecc_encode_64(ifu_bus_rdata_ff)
|
||||||
val ic_miss_buff_ecc = rvecc_encode_64(ic_miss_buff_half)
|
val ic_miss_buff_ecc = rvecc_encode_64(ic_miss_buff_half)
|
||||||
val ic_wr_16bytes_data = WireInit(UInt((ICACHE_BANKS_WAY * (if(ICACHE_ECC) 71 else 68)).W), 0.U)
|
val ic_wr_16bytes_data = WireInit(UInt((ICACHE_BANKS_WAY * (if(ICACHE_ECC) 71 else 68)).W), 0.U)
|
||||||
|
@ -271,6 +256,7 @@ class ifu_mem_ctl extends Module with lib with RequireAsyncReset {
|
||||||
io.dec_mem_ctrl.ifu_ic_error_start := ((if(ICACHE_ECC)io.ic.eccerr.orR()else io.ic.parerr.orR()) & ic_act_hit_f) | ic_rd_parity_final_err
|
io.dec_mem_ctrl.ifu_ic_error_start := ((if(ICACHE_ECC)io.ic.eccerr.orR()else io.ic.parerr.orR()) & ic_act_hit_f) | ic_rd_parity_final_err
|
||||||
val ic_debug_tag_val_rd_out = WireInit(Bool(), 0.U)
|
val ic_debug_tag_val_rd_out = WireInit(Bool(), 0.U)
|
||||||
val ic_debug_ict_array_sel_ff = WireInit(Bool(), 0.U)
|
val ic_debug_ict_array_sel_ff = WireInit(Bool(), 0.U)
|
||||||
|
|
||||||
val ifu_ic_debug_rd_data_in = Mux(ic_debug_ict_array_sel_ff.asBool, if(ICACHE_ECC) Cat(0.U(2.W),io.ic.tag_debug_rd_data(25,21),0.U(32.W),io.ic.tag_debug_rd_data(20,0), 0.U((7-ICACHE_STATUS_BITS).W), way_status, 0.U(3.W),ic_debug_tag_val_rd_out)
|
val ifu_ic_debug_rd_data_in = Mux(ic_debug_ict_array_sel_ff.asBool, if(ICACHE_ECC) Cat(0.U(2.W),io.ic.tag_debug_rd_data(25,21),0.U(32.W),io.ic.tag_debug_rd_data(20,0), 0.U((7-ICACHE_STATUS_BITS).W), way_status, 0.U(3.W),ic_debug_tag_val_rd_out)
|
||||||
else Cat(0.U(6.W),io.ic.tag_debug_rd_data(21),0.U(32.W),io.ic.tag_debug_rd_data(20,0),0.U(7-ICACHE_STATUS_BITS),way_status ,0.U(3.W) ,ic_debug_tag_val_rd_out) ,
|
else Cat(0.U(6.W),io.ic.tag_debug_rd_data(21),0.U(32.W),io.ic.tag_debug_rd_data(20,0),0.U(7-ICACHE_STATUS_BITS),way_status ,0.U(3.W) ,ic_debug_tag_val_rd_out) ,
|
||||||
io.ic.debug_rd_data)
|
io.ic.debug_rd_data)
|
||||||
|
@ -395,6 +381,7 @@ class ifu_mem_ctl extends Module with lib with RequireAsyncReset {
|
||||||
ic_miss_buff_half := Cat(Mux1H((0 until 2*ICACHE_NUM_BEATS).map(i=>(Cat(other_tag,1.U)===i.U).asBool->ic_miss_buff_data(i))),
|
ic_miss_buff_half := Cat(Mux1H((0 until 2*ICACHE_NUM_BEATS).map(i=>(Cat(other_tag,1.U)===i.U).asBool->ic_miss_buff_data(i))),
|
||||||
Mux1H((0 until 2*ICACHE_NUM_BEATS).map(i=>(Cat(other_tag,0.U)===i.U).asBool->ic_miss_buff_data(i))))
|
Mux1H((0 until 2*ICACHE_NUM_BEATS).map(i=>(Cat(other_tag,0.U)===i.U).asBool->ic_miss_buff_data(i))))
|
||||||
|
|
||||||
|
// Parity check for the I$ logic
|
||||||
ic_rd_parity_final_err := io.ic.tag_perr & sel_ic_data & !(ifc_region_acc_fault_final_f | ifc_bus_acc_fault_f)
|
ic_rd_parity_final_err := io.ic.tag_perr & sel_ic_data & !(ifc_region_acc_fault_final_f | ifc_bus_acc_fault_f)
|
||||||
val ifu_ic_rw_int_addr_ff = WireInit(UInt((ICACHE_INDEX_HI-ICACHE_TAG_INDEX_LO+1).W), 0.U)
|
val ifu_ic_rw_int_addr_ff = WireInit(UInt((ICACHE_INDEX_HI-ICACHE_TAG_INDEX_LO+1).W), 0.U)
|
||||||
|
|
||||||
|
@ -408,7 +395,7 @@ class ifu_mem_ctl extends Module with lib with RequireAsyncReset {
|
||||||
io.iccm.buf_correct_ecc := iccm_correct_ecc & !dma_sb_err_state_ff
|
io.iccm.buf_correct_ecc := iccm_correct_ecc & !dma_sb_err_state_ff
|
||||||
dma_sb_err_state_ff := withClock(io.active_clk){RegNext(dma_sb_err_state, false.B)}
|
dma_sb_err_state_ff := withClock(io.active_clk){RegNext(dma_sb_err_state, false.B)}
|
||||||
|
|
||||||
///////////////////////////////// ERROR FSM /////////////////////////////////
|
///////////////////////////////// PARITY ERROR FSM /////////////////////////////////
|
||||||
val perr_nxtstate = WireInit(UInt(3.W), 0.U)
|
val perr_nxtstate = WireInit(UInt(3.W), 0.U)
|
||||||
val perr_state_en = WireInit(Bool(), false.B)
|
val perr_state_en = WireInit(Bool(), false.B)
|
||||||
val iccm_error_start = WireInit(Bool(), false.B)
|
val iccm_error_start = WireInit(Bool(), false.B)
|
||||||
|
@ -487,6 +474,26 @@ class ifu_mem_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val bus_cmd_req_in = (ic_act_miss_f | bus_cmd_req_hold) & !bus_cmd_sent & !io.dec_mem_ctrl.dec_tlu_force_halt
|
val bus_cmd_req_in = (ic_act_miss_f | bus_cmd_req_hold) & !bus_cmd_sent & !io.dec_mem_ctrl.dec_tlu_force_halt
|
||||||
bus_cmd_req_hold := withClock(io.free_clk){RegNext(bus_cmd_req_in, false.B)}
|
bus_cmd_req_hold := withClock(io.free_clk){RegNext(bus_cmd_req_in, false.B)}
|
||||||
// AXI Read-Channel
|
// AXI Read-Channel
|
||||||
|
io.ifu_axi.w.valid := 0.U
|
||||||
|
io.ifu_axi.w.bits.data := 0.U
|
||||||
|
io.ifu_axi.aw.bits.qos := 0.U
|
||||||
|
io.ifu_axi.aw.bits.addr := 0.U
|
||||||
|
io.ifu_axi.aw.bits.prot := 0.U
|
||||||
|
io.ifu_axi.aw.bits.len := 0.U
|
||||||
|
io.ifu_axi.ar.bits.lock := 0.U
|
||||||
|
io.ifu_axi.aw.bits.region := 0.U
|
||||||
|
io.ifu_axi.aw.bits.id := 0.U
|
||||||
|
io.ifu_axi.aw.valid := 0.U
|
||||||
|
io.ifu_axi.w.bits.strb := 0.U
|
||||||
|
io.ifu_axi.aw.bits.cache := 0.U
|
||||||
|
io.ifu_axi.ar.bits.qos := 0.U
|
||||||
|
io.ifu_axi.aw.bits.lock := 0.U
|
||||||
|
io.ifu_axi.b.ready := 0.U
|
||||||
|
io.ifu_axi.ar.bits.len := 0.U
|
||||||
|
io.ifu_axi.aw.bits.size := 0.U
|
||||||
|
io.ifu_axi.ar.bits.prot := 0.U
|
||||||
|
io.ifu_axi.aw.bits.burst := 0.U
|
||||||
|
io.ifu_axi.w.bits.last := 0.U
|
||||||
io.ifu_axi.ar.valid := ifu_bus_cmd_valid
|
io.ifu_axi.ar.valid := ifu_bus_cmd_valid
|
||||||
io.ifu_axi.ar.bits.id := bus_rd_addr_count & Fill(IFU_BUS_TAG, ifu_bus_cmd_valid)
|
io.ifu_axi.ar.bits.id := bus_rd_addr_count & Fill(IFU_BUS_TAG, ifu_bus_cmd_valid)
|
||||||
io.ifu_axi.ar.bits.addr := Cat(ifu_ic_req_addr_f, 0.U(3.W)) & Fill(32, ifu_bus_cmd_valid)
|
io.ifu_axi.ar.bits.addr := Cat(ifu_ic_req_addr_f, 0.U(3.W)) & Fill(32, ifu_bus_cmd_valid)
|
||||||
|
@ -516,6 +523,7 @@ class ifu_mem_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val ifu_bus_arready = ifu_bus_arready_unq & bus_ifu_bus_clk_en
|
val ifu_bus_arready = ifu_bus_arready_unq & bus_ifu_bus_clk_en
|
||||||
val ifu_bus_arready_ff = ifu_bus_arready_unq_ff & bus_ifu_bus_clk_en_ff
|
val ifu_bus_arready_ff = ifu_bus_arready_unq_ff & bus_ifu_bus_clk_en_ff
|
||||||
val ifu_bus_rvalid_ff = ifu_bus_rvalid_unq_ff & bus_ifu_bus_clk_en_ff
|
val ifu_bus_rvalid_ff = ifu_bus_rvalid_unq_ff & bus_ifu_bus_clk_en_ff
|
||||||
|
// Write signals to write to the bus
|
||||||
bus_cmd_sent := ifu_bus_arvalid & ifu_bus_arready & miss_pending & !io.dec_mem_ctrl.dec_tlu_force_halt
|
bus_cmd_sent := ifu_bus_arvalid & ifu_bus_arready & miss_pending & !io.dec_mem_ctrl.dec_tlu_force_halt
|
||||||
val bus_last_data_beat = WireInit(Bool(), false.B)
|
val bus_last_data_beat = WireInit(Bool(), false.B)
|
||||||
val bus_inc_data_beat_cnt = bus_ifu_wr_en_ff & !bus_last_data_beat & !io.dec_mem_ctrl.dec_tlu_force_halt
|
val bus_inc_data_beat_cnt = bus_ifu_wr_en_ff & !bus_last_data_beat & !io.dec_mem_ctrl.dec_tlu_force_halt
|
||||||
|
@ -594,7 +602,7 @@ class ifu_mem_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val ic_fetch_val_int_f = Cat(0.U(2.W), io.ic_fetch_val_f)
|
val ic_fetch_val_int_f = Cat(0.U(2.W), io.ic_fetch_val_f)
|
||||||
val ic_fetch_val_shift_right = ic_fetch_val_int_f << ifu_fetch_addr_int_f(0)
|
val ic_fetch_val_shift_right = ic_fetch_val_int_f << ifu_fetch_addr_int_f(0)
|
||||||
val iccm_rdmux_data = io.iccm.rd_data_ecc
|
val iccm_rdmux_data = io.iccm.rd_data_ecc
|
||||||
|
// ICCM ECC Check logic
|
||||||
val iccm_ecc_word_enable = (0 until 2).map(i=>((ic_fetch_val_shift_right((2*i+1),(2*i)).orR & !io.exu_flush_final & sel_iccm_data) | iccm_dma_rvalid_in) & !io.dec_mem_ctrl.dec_tlu_core_ecc_disable).reverse.reduce(Cat(_,_))
|
val iccm_ecc_word_enable = (0 until 2).map(i=>((ic_fetch_val_shift_right((2*i+1),(2*i)).orR & !io.exu_flush_final & sel_iccm_data) | iccm_dma_rvalid_in) & !io.dec_mem_ctrl.dec_tlu_core_ecc_disable).reverse.reduce(Cat(_,_))
|
||||||
val ecc_decoded = (0 until 2).map(i=>rvecc_decode(iccm_ecc_word_enable(i), iccm_rdmux_data((39*i+31),(39*i)), iccm_rdmux_data((39*i+38),(39*i+32)), 0.U))
|
val ecc_decoded = (0 until 2).map(i=>rvecc_decode(iccm_ecc_word_enable(i), iccm_rdmux_data((39*i+31),(39*i)), iccm_rdmux_data((39*i+38),(39*i+32)), 0.U))
|
||||||
val iccm_corrected_ecc = Wire(Vec(2, UInt(7.W)))
|
val iccm_corrected_ecc = Wire(Vec(2, UInt(7.W)))
|
||||||
|
@ -628,7 +636,7 @@ class ifu_mem_ctl extends Module with lib with RequireAsyncReset {
|
||||||
io.ic.wr_en := bus_ic_wr_en & Fill(ICACHE_NUM_WAYS, write_ic_16_bytes)
|
io.ic.wr_en := bus_ic_wr_en & Fill(ICACHE_NUM_WAYS, write_ic_16_bytes)
|
||||||
io.ic_write_stall := write_ic_16_bytes & !((((miss_state===crit_byp_ok_C) | ((miss_state===stream_C) & !(io.exu_flush_final | ifu_bp_hit_taken_q_f | stream_eol_f ))) & !(bus_ifu_wr_en_ff & last_beat & !uncacheable_miss_ff)))
|
io.ic_write_stall := write_ic_16_bytes & !((((miss_state===crit_byp_ok_C) | ((miss_state===stream_C) & !(io.exu_flush_final | ifu_bp_hit_taken_q_f | stream_eol_f ))) & !(bus_ifu_wr_en_ff & last_beat & !uncacheable_miss_ff)))
|
||||||
reset_all_tags := withClock(io.active_clk){RegNext(io.dec_mem_ctrl.dec_tlu_fence_i_wb, false.B)}
|
reset_all_tags := withClock(io.active_clk){RegNext(io.dec_mem_ctrl.dec_tlu_fence_i_wb, false.B)}
|
||||||
|
// I$ status and P-LRU
|
||||||
val ic_valid = !ifu_wr_cumulative_err_data & !(reset_ic_in | reset_ic_ff) & !reset_tag_valid_for_miss
|
val ic_valid = !ifu_wr_cumulative_err_data & !(reset_ic_in | reset_ic_ff) & !reset_tag_valid_for_miss
|
||||||
val ifu_status_wr_addr_w_debug = Mux((io.ic.debug_rd_en | io.ic.debug_wr_en) & io.ic.debug_tag_array, io.ic.debug_addr(ICACHE_INDEX_HI - 3, ICACHE_TAG_INDEX_LO - 3),
|
val ifu_status_wr_addr_w_debug = Mux((io.ic.debug_rd_en | io.ic.debug_wr_en) & io.ic.debug_tag_array, io.ic.debug_addr(ICACHE_INDEX_HI - 3, ICACHE_TAG_INDEX_LO - 3),
|
||||||
ifu_status_wr_addr(ICACHE_INDEX_HI - 1, ICACHE_TAG_INDEX_LO - 1))
|
ifu_status_wr_addr(ICACHE_INDEX_HI - 1, ICACHE_TAG_INDEX_LO - 1))
|
||||||
|
@ -688,8 +696,7 @@ class ifu_mem_ctl extends Module with lib with RequireAsyncReset {
|
||||||
val ic_tag_valid_unq = (0 until ICACHE_NUM_WAYS).map(k => (0 until ICACHE_TAG_DEPTH).map(j =>
|
val ic_tag_valid_unq = (0 until ICACHE_NUM_WAYS).map(k => (0 until ICACHE_TAG_DEPTH).map(j =>
|
||||||
Mux(ifu_ic_rw_int_addr_ff === j.U, ic_tag_valid_out(k)(j), false.B).asUInt).reduce(_|_)).reverse.reduce(Cat(_,_))
|
Mux(ifu_ic_rw_int_addr_ff === j.U, ic_tag_valid_out(k)(j), false.B).asUInt).reduce(_|_)).reverse.reduce(Cat(_,_))
|
||||||
|
|
||||||
// Making a sudo LRU
|
// Making sudo LRU
|
||||||
// val replace_way_mb_any = Wire(Vec(ICACHE_NUM_WAYS, Bool()))
|
|
||||||
val way_status_hit_new = WireInit(UInt(ICACHE_STATUS_BITS.W), 0.U)
|
val way_status_hit_new = WireInit(UInt(ICACHE_STATUS_BITS.W), 0.U)
|
||||||
if (ICACHE_NUM_WAYS == 4) {
|
if (ICACHE_NUM_WAYS == 4) {
|
||||||
replace_way_mb_any(3) := (way_status_mb_ff(2) & way_status_mb_ff(0) & tagv_mb_ff(3, 0).andR) |
|
replace_way_mb_any(3) := (way_status_mb_ff(2) & way_status_mb_ff(0) & tagv_mb_ff(3, 0).andR) |
|
||||||
|
@ -762,6 +769,7 @@ class ifu_mem_ctl extends Module with lib with RequireAsyncReset {
|
||||||
ic_debug_ict_array_sel_ff := withClock(debug_c1_clk){RegNext(ic_debug_ict_array_sel_in, 0.U)}
|
ic_debug_ict_array_sel_ff := withClock(debug_c1_clk){RegNext(ic_debug_ict_array_sel_in, 0.U)}
|
||||||
ic_debug_rd_en_ff := withClock(io.free_clk){RegNext(io.ic.debug_rd_en, false.B)}
|
ic_debug_rd_en_ff := withClock(io.free_clk){RegNext(io.ic.debug_rd_en, false.B)}
|
||||||
io.dec_mem_ctrl.ifu_ic_debug_rd_data_valid := withClock(io.free_clk){RegNext(ic_debug_rd_en_ff, 0.U)}
|
io.dec_mem_ctrl.ifu_ic_debug_rd_data_valid := withClock(io.free_clk){RegNext(ic_debug_rd_en_ff, 0.U)}
|
||||||
|
// Memory protection each access enable with its Mask
|
||||||
val ifc_region_acc_okay = !(Cat(INST_ACCESS_ENABLE0.U,INST_ACCESS_ENABLE1.U,INST_ACCESS_ENABLE2.U,INST_ACCESS_ENABLE3.U,INST_ACCESS_ENABLE4.U,INST_ACCESS_ENABLE5.U,INST_ACCESS_ENABLE6.U,INST_ACCESS_ENABLE7.U).orR()) |
|
val ifc_region_acc_okay = !(Cat(INST_ACCESS_ENABLE0.U,INST_ACCESS_ENABLE1.U,INST_ACCESS_ENABLE2.U,INST_ACCESS_ENABLE3.U,INST_ACCESS_ENABLE4.U,INST_ACCESS_ENABLE5.U,INST_ACCESS_ENABLE6.U,INST_ACCESS_ENABLE7.U).orR()) |
|
||||||
(INST_ACCESS_ENABLE0.U & ((Cat(io.ifc_fetch_addr_bf, 0.U) | aslong(INST_ACCESS_MASK0).U) === (aslong(INST_ACCESS_ADDR0).U | aslong(INST_ACCESS_MASK0).U))) |
|
(INST_ACCESS_ENABLE0.U & ((Cat(io.ifc_fetch_addr_bf, 0.U) | aslong(INST_ACCESS_MASK0).U) === (aslong(INST_ACCESS_ADDR0).U | aslong(INST_ACCESS_MASK0).U))) |
|
||||||
(INST_ACCESS_ENABLE1.U & ((Cat(io.ifc_fetch_addr_bf, 0.U) | aslong(INST_ACCESS_MASK1).U) === (aslong(INST_ACCESS_ADDR1).U | aslong(INST_ACCESS_MASK1).U))) |
|
(INST_ACCESS_ENABLE1.U & ((Cat(io.ifc_fetch_addr_bf, 0.U) | aslong(INST_ACCESS_MASK1).U) === (aslong(INST_ACCESS_ADDR1).U | aslong(INST_ACCESS_MASK1).U))) |
|
||||||
|
|
|
@ -58,6 +58,8 @@ class ahb_out extends Bundle{
|
||||||
val htrans = Output(UInt(2.W))
|
val htrans = Output(UInt(2.W))
|
||||||
val hwrite = Output(Bool()) // ahb bus write
|
val hwrite = Output(Bool()) // ahb bus write
|
||||||
val hwdata = Output(UInt(64.W)) // [63:0] // ahb bus write data
|
val hwdata = Output(UInt(64.W)) // [63:0] // ahb bus write data
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
class ahb_channel extends Bundle{
|
class ahb_channel extends Bundle{
|
||||||
val in = Input(new ahb_in)
|
val in = Input(new ahb_in)
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue