soc.scoremulti package

Submodules

soc.scoremulti.dependence_cell module

class soc.scoremulti.dependence_cell.DependencyRow(n_reg, n_src, n_dest, cancel_mode=False)

Bases: nmigen.hdl.ir.Elaboratable

implements 11.4.7 mitch alsup dependence cell, p27 adjusted to be clock-sync’d on rising edge only. mitch design (as does 6600) requires alternating rising/falling clock

  • SET mode: issue_i HI, go_i LO, reg_i HI - register is captured
    • FWD is DISABLED (~issue_i)
    • RSEL DISABLED
  • QRY mode: issue_i LO, go_i LO, haz_i HI - FWD is ASSERTED
    reg_i HI - ignored
  • GO mode : issue_i LO, go_i HI - RSEL is ASSERTED
    haz_i HI - FWD still can be ASSERTED

FWD assertion (hazard protection) therefore still occurs in both Query and Go Modes, for this cycle, due to the cq register

GO mode works for one cycle, again due to the cq register capturing the latch output. Without the cq register, the SR Latch (which is asynchronous) would be reset at the exact moment that GO was requested, and the RSEL would be garbage.

cancel_mode: individual bit-array of cancels rather than a global one

elaborate(platform)
ports()
soc.scoremulti.dependence_cell.dcell_sim(dut)
soc.scoremulti.dependence_cell.test_dcell()

soc.scoremulti.fu_dep_cell module

class soc.scoremulti.fu_dep_cell.FUDependenceCell(dummy, n_fu, n_src, n_dest)

Bases: nmigen.hdl.ir.Elaboratable

implements 11.4.7 mitch alsup dependence cell, p27

elaborate(platform)
ports()
soc.scoremulti.fu_dep_cell.dcell_sim(dut)
soc.scoremulti.fu_dep_cell.test_dcell()

soc.scoremulti.fu_fu_matrix module

class soc.scoremulti.fu_fu_matrix.FUFUDepMatrix(n_fu_row, n_fu_col, n_src, n_dest)

Bases: nmigen.hdl.ir.Elaboratable

implements 11.4.7 mitch alsup FU-to-Reg Dependency Matrix, p26

elaborate(platform)
ports()
soc.scoremulti.fu_fu_matrix.d_matrix_sim(dut)

XXX TODO

soc.scoremulti.fu_fu_matrix.test_fu_fu_matrix()

soc.scoremulti.fu_reg_matrix module

class soc.scoremulti.fu_reg_matrix.FURegDepMatrix(n_fu_row, n_reg_col, n_src, n_dest, cancel=None)

Bases: nmigen.hdl.ir.Elaboratable

implements 11.4.7 mitch alsup FU-to-Reg Dependency Matrix, p26

elaborate(platform)
ports()
soc.scoremulti.fu_reg_matrix.d_matrix_sim(dut)

XXX TODO

soc.scoremulti.fu_reg_matrix.test_d_matrix()

soc.scoremulti.fu_wr_pending module

class soc.scoremulti.fu_wr_pending.FU_RW_Pend(reg_count, n_src, n_dest)

Bases: nmigen.hdl.ir.Elaboratable

these are allocated per-FU (horizontally), and are of length reg_count

elaborate(platform)

soc.scoremulti.memfu module

class soc.scoremulti.memfu.MemFunctionUnits(n_ldsts, addrbitwid)

Bases: nmigen.hdl.ir.Elaboratable

elaborate(platform)
ports()
soc.scoremulti.memfu.test_fumem()

soc.scoremulti.reg_sel module

class soc.scoremulti.reg_sel.Reg_Rsv(fu_count, n_src, n_dest)

Bases: nmigen.hdl.ir.Elaboratable

these are allocated per-Register (vertically), and are each of length fu_count

elaborate(platform)

Module contents