Most common arithmetic operators can be instantiated without the Inst constructor.
Arithmetical operators are listed below :
Addition : q <= i0 + i1
Substraction : q <= i0 - i1
Multiplication : q <= i0 * i1
Division : q <= i0 / i1
One can choose the generator to be used. Some methods are applied to the cell and set the generator used when using overloard. Methods are :
SetAdd (for addition and substraction)
SetMult
SetDiv
The generators used by default are :
Addition : Slansky adder
Substraction : Slansky adder + inversor + cin = '1'
Multiplication : CA2 multiplier (signed, modified booth/Wallace tree)
Division : not available yet
class essai ( Model ) :
def Interface ( self ) :
self.A = SignalIn ( "a", 4 )
self.B = SignalIn ( "b", 4 )
self.S = SignalOut ( "s", 4 )
self.T = SignalOut ( "t", 8 )
self.vdd = VddIn ( "vdd" )
self.vss = VssIn ( "vss" )
def Netlist ( self ) :
self.S <= self.A + self.B
self.T <= self.A * self.B
Some errors may occur :
[Stratus ERROR] + : the nets must have the same lenght.
[Stratus ERROR] : there is no alim.
Introduction Netlist Instanciation of a multiplexor Instanciation of a shifter Instanciation of a register Instanciation of constants Boolean operations Comparison operations
Sophie BELLOEIL