4.1.2. undulate.bricks.digital module

digital.py declare the basic building block to generate a digital waveform

class undulate.bricks.digital.Nclk(**kwargs)

Bases: undulate.bricks.generic.Brick

Falling edge clock without arrow

Parameters
  • slewing (float) – limit the slope

  • duty_cycle (float > 0) – between 0 and 1

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.NclkArrow(**kwargs)

Bases: undulate.bricks.digital.Nclk

Falling edge clock with arrow

Parameters
  • slewing (float) – limit the slope

  • duty_cycle (float > 0) – between 0 and 1

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Pclk(**kwargs)

Bases: undulate.bricks.generic.Brick

Rising edge clock without arrow

Parameters
  • slewing (float) – limit the slope

  • duty_cycle (float > 0) – between 0 and 1

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.PclkArrow(**kwargs)

Bases: undulate.bricks.digital.Pclk

Rising edge clock with arrow

Parameters
  • slewing (float) – limit the slope

  • duty_cycle (float > 0) – between 0 and 1

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Low(**kwargs)

Bases: undulate.bricks.generic.Brick

Falling edge clock and rest at zero

Parameters

slewing (float) – limit the slope

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.LowArrow(**kwargs)

Bases: undulate.bricks.digital.Low

Falling edge clock with arrow and rest at zero

Parameters

slewing (float) – limit the slope

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.High(**kwargs)

Bases: undulate.bricks.generic.Brick

Rising edge clock and rest at one

Parameters

slewing (float) – limit the slope

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.HighArrow(**kwargs)

Bases: undulate.bricks.digital.High

Rising edge clock with arrow and rest at one

Parameters

slewing (float) – limit the slope

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.HighZ(**kwargs)

Bases: undulate.bricks.generic.Brick

High impedance mode with a reset close to VDD/2

Parameters

slewing (float) – limit the slope

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Zero(**kwargs)

Bases: undulate.bricks.generic.Brick

Zero level

Parameters

slewing (float) – limit the slope

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.One(**kwargs)

Bases: undulate.bricks.generic.Brick

One level

Parameters

slewing (float) – limit the slope

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Garbage(**kwargs)

Bases: undulate.bricks.generic.Brick

Unknown state for data

Parameters
  • slewing (float) – limit the slope

  • follow_data (bool) – data ‘=’ occurs before this brick

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Data(style: str = 's2-polygon', **kwargs)

Bases: undulate.bricks.generic.Brick

Multibits value such as a Bus

Parameters
  • slewing (float) – limit the slope

  • style (str) – from s2 to s9-polygon or hatch, by default s2-polygon

  • hide_data (bool) – prevent the display of the associated data

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Two(**kwargs)

Bases: undulate.bricks.digital.Data

Variant of Data with a css rule ‘.s2-polygon’

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Three(**kwargs)

Bases: undulate.bricks.digital.Data

Variant of Data with a css rule ‘.s3-polygon’

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Four(**kwargs)

Bases: undulate.bricks.digital.Data

Variant of Data with a css rule ‘.s4-polygon’

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Five(**kwargs)

Bases: undulate.bricks.digital.Data

Variant of Data with a css rule ‘.s5-polygon’

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Six(**kwargs)

Bases: undulate.bricks.digital.Data

Variant of Data with a css rule ‘.s6-polygon’

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Seven(**kwargs)

Bases: undulate.bricks.digital.Data

Variant of Data with a css rule ‘.s7-polygon’

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Eight(**kwargs)

Bases: undulate.bricks.digital.Data

Variant of Data with a css rule ‘.s8-polygon’

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Nine(**kwargs)

Bases: undulate.bricks.digital.Data

Variant of Data with a css rule ‘.s9-polygon’

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Unknown(**kwargs)

Bases: undulate.bricks.digital.Data

Variant of Data with a css rule ‘.hatch’

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Gap(**kwargs)

Bases: undulate.bricks.generic.Brick

single line time compression

Its position inside a brick, similarly to a duty cycle for a clock, can be adjusted globally with the property ‘gap_offset’ in the ‘config’ section. The a value is a float in the ]0-1[ range.

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Up(**kwargs)

Bases: undulate.bricks.generic.Brick

RC charging to VDD

Parameters

slewing (float) – limit the slope

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Down(**kwargs)

Bases: undulate.bricks.generic.Brick

RC discharge to GND

Parameters

slewing (float) – limit the slope

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.ImpulseUp(**kwargs)

Bases: undulate.bricks.generic.Brick

pulse from GND to VDD

Parameters

duty_cycle (float) – adjust the x position of the impulse from 0 to 1, by default 0.5

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.ImpulseDown(**kwargs)

Bases: undulate.bricks.generic.Brick

pulse from VDD to GND

Parameters

duty_cycle (float) – adjust the x position of the impulse from 0 to 1, by default 0.5

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Space(**kwargs)

Bases: undulate.bricks.generic.Brick

blank (area without any drawing) This block can be used in coordination of the overlay possibility to create even more complex signal or apply a specific color for a portion of the signal.

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

class undulate.bricks.digital.Empty(**kwargs)

Bases: undulate.bricks.generic.Brick

empty brick with zero width

get_first_y() → float

Get first y-coordinate of the brick

get_last_y() → float

Get last y-coordinate of the brick

undulate.bricks.digital.filter_width(waveform: List[undulate.bricks.generic.Brick]) → List[undulate.bricks.generic.Brick]

Compute the width/height of each brick considering the following properties:

  • brick_width

  • brick_height

  • hscale

  • vscale

  • period

undulate.bricks.digital.filter_repeat(waveform: List[undulate.bricks.generic.Brick]) → List[undulate.bricks.generic.Brick]

Compute the number of size expension for a given brick (using ‘.’ symbol) at the exception of clock signals where the brick ‘.’ means duplication.

undulate.bricks.digital.filter_phase_pos(waveform: List[undulate.bricks.generic.Brick]) → List[undulate.bricks.generic.Brick]

Adjust the size of the first and last brick of signal based on the following properties:

  • phase

  • repeat

  • slewing

  • brick_width

  • width

A signal should always have a width equal to ‘width’

undulate.bricks.digital.filter_transition(waveform: List[undulate.bricks.generic.Brick]) → List[undulate.bricks.generic.Brick]

Smooth abutment of different brick to prevent glitches and fusion data brick of the same symbol with the same ‘data’ value

undulate.bricks.digital.initialize() → None

register defined digital blocks in the rendering system