soc.fu package

Subpackages

Submodules

soc.fu.base_input_record module

class soc.fu.base_input_record.CompOpSubsetBase(layout, name)

Bases: nmigen.hdl.rec.Record

base class of subset Operation information

eq_from(other)

use this to copy in from another CompRecord

eq_from_execute1(other)

use this to copy in from Decode2Execute1Type

ports()

soc.fu.common_input_stage module

class soc.fu.common_input_stage.CommonInputStage(pspec, modname)

Bases: nmutil.pipemodbase.PipeModBase

elaborate(platform)

soc.fu.common_output_stage module

class soc.fu.common_output_stage.CommonOutputStage(pspec)

Bases: nmutil.pipemodbase.PipeModBase

elaborate(platform)

soc.fu.pipe_data module

class soc.fu.pipe_data.CommonPipeSpec(id_wid)

Bases: object

CommonPipeSpec: base class for all pipeline specifications see README.md for explanation of members.

class soc.fu.pipe_data.IntegerData(pspec, output)

Bases: object

IntegerData: base class for all pipeline data structures

see README.md for explanation of parameters and purpose.

note the mode parameter - output. XXXInputData specs must have this set to “False”, and XXXOutputData specs (and anything that creates intermediary outputs which propagate through a pipeline to output) must have it set to “True”.

eq(i)
ports()
soc.fu.pipe_data.get_rec_width(rec)

soc.fu.regspec module

RegSpecs

see https://libre-soc.org/3d_gpu/architecture/regfile/ section on regspecs

this module is a key strategic module that links pipeline specifications (soc.fu.*.pipe_data and soc.fo.*.pipeline) to MultiCompUnits. MultiCompUnits know absolutely nothing about the data passing through them: all they know is: how many inputs they need to manage, and how many outputs.

regspecs tell MultiCompUnit what the ordering of the inputs is, how many to create, and how to connect them up to the ALU being “managed” by this CompUnit. likewise for outputs.

later (TODO) the Register Files will be connected to MultiCompUnits, and, again, the regspecs will say which Regfile (which type) is connected to which MultiCompUnit port, how wide the connection is, and so on.

class soc.fu.regspec.RegSpec(rwid, n_src=None, n_dst=None, name=None)

Bases: object

class soc.fu.regspec.RegSpecALUAPI(rwid, alu)

Bases: soc.fu.regspec.RegSpecAPI

get_in(i)
get_op()
get_out(i)
class soc.fu.regspec.RegSpecAPI(rwid)

Bases: object

get_in_name(i)
get_in_spec(i)
get_out_name(i)
get_out_spec(i)
soc.fu.regspec.get_regspec_bitwidth(regspec, srcdest, idx)

Module contents