Examples
Immediate set and clear
Assert or deassert one signal without the sequencer. Read state with get_bits:
from sanblaze import riser
r = riser.Riser(0)
r.clear('12VEDSF')
r.set('12VEDSF')
r.clear('12VEDSF')
bits = r.get_bits(raw=True)
for bit in bits.bits:
print(bit.name, bit.dir, bit.val)
Example console session:
>>> from sanblaze import riser
>>> r = riser.Riser(0)
>>> r.clear('12VEDSF')
DETAIL:sanblaze:iRiser -d 0 clear 12VEDSF
{'status': 0, 'result': '210:[02][Out] 0', 'reason': ''}
>>> r.set('12VEDSF')
DETAIL:sanblaze:iRiser -d 0 set 12VEDSF
{'status': 0, 'result': '210:[02][In] 1', 'reason': ''}
>>> r.clear('12VEDSF')
DETAIL:sanblaze:iRiser -d 0 clear 12VEDSF
{'status': 0, 'result': '210:[02][Out] 0', 'reason': ''}
Discover signal names
After init(), list the GPIO names available on the slot:
from sanblaze import riser
device = riser.Riser(0)
device.init()
bits = device.get_bits(raw=True)
for bit in bits.bits:
print(bit.name, bit.dir, bit.val)
Driving a single signal
- Example::
Drive perst low for 1s
from sanblaze import riser from sanblaze.sanblaze_test_api_util import check_result device = riser.Riser(0) device.init() device.create_sequence(0) check_result(device.add_transition('perst0l', 'off', '1s')) check_result(device.add_transition('perst0l', 'on', '1s', final=True)) device.start_sequence(0) device.wait_for_stopped()
Driving multiple signals
Example:
.. code-block:: python
from sanblaze import riser
from sanblaze.sanblaze_test_api_util import check_result
device = riser.Riser(0)
device.init()
device.create_sequence(0)
check_result(device.add_transition('perst0l', 'off', '1s'))
check_result(device.add_transition('perst0l', 'on', '5s'))
check_result(device.add_transition(['12v', 'p0clkl', 'p1clkl'], 'off', '1s'))
check_result(device.add_transition(['12v', 'p0clkl', 'p1clkl'], 'on', '1s'))
check_result(device.add_transition('perst0l', 'off', '1s', final=True))
device.start_sequence(0)
device.wait_for_stopped()
Passing in invalid signal names
Example:
.. code-block:: console
>>> from sanblaze import riser
>>> device = riser.Riser(0)
>>> device.init()
Sep 26 17:19:11 2025 DETAIL: iRiser -d 0 init
{'status': 0, 'result': ' Stop the sequencer reset GPIO to defaults Zero sequencer memory', 'reason': 'Success'}
>>> device.create_sequence(0)
{'status': 0, 'reason': 'Success'}
>>> device.add_transition('pers', 'on', '1s')
Sep 26 17:19:25 2025 DETAIL: Getting bits
Sep 26 17:19:25 2025 DETAIL: iRiser -d 0 show gpio -J
{'status': 1, 'reason': 'pers is a not a valid signal name'}
Mirror signals with LEDs
from sanblaze import riser
from sanblaze.sanblaze_test_api_util import check_result
r = riser.Riser(8)
r.init()
r.create_sequence(5)
group = ['usr1tst', 'perst0l']
res = r.add_transition(group, 'on', '5s')
check_result(res)
res = r.add_transition(group, 'off', '10s', final=True)
check_result(res)
r.start_sequence(5)
r.wait_for_stopped()
Oct 02 13:23:47 2025 DETAIL: iRiser -d 8 init
Oct 02 13:23:47 2025 DETAIL: Getting bits
Oct 02 13:23:47 2025 DETAIL: iRiser -d 8 show gpio -J
Oct 02 13:23:47 2025 DETAIL: iRiser -d 8 edit action 5 0xf000ffcd 0x6fc3ff1f 5s 6
Oct 02 13:23:47 2025 DETAIL: Command completion: Success
Oct 02 13:23:47 2025 DETAIL: iRiser -d 8 show actions -J
Oct 02 13:23:47 2025 DETAIL: iRiser -d 8 edit action 6 0xf000ffcd 0xfc3ff1f 10s stop
Oct 02 13:23:47 2025 DETAIL: Command completion: Success
Oct 02 13:23:47 2025 DETAIL: iRiser -d 8 start sequence 5
Low-level PERST and refclk sequence
For timed PERST/refclk manipulation, use edit_action and toggle_bit.
Set perst0l as an output, chain actions with numeric _next values, and set
_next='stop' on the final action.
from sanblaze import riser
from sanblaze.sanblaze_test_api_util import check_result
iriser = riser.Riser(0)
check_result(iriser.init())
bits = iriser.get_bits(raw=True, log=False)
bits = bits.set_dir('perst0l', 'O')
# Action 0: initial GPIO state
iriser.edit_action(dest=0, dir=bits.dir, val=bits.val, time=1, units='s', _next=1)
# Action 1: assert PERST, wait 50ms
bits_perst_assert = iriser.toggle_bit('perst0l', bits, log=False)
iriser.edit_action(dest=1, dir=bits.dir, val=bits_perst_assert.val,
time=50, units='ms', _next=2)
# Action 2: turn off refclk, wait 50ms
bits_refclk_off = iriser.toggle_bit('p0clkl', bits_perst_assert, log=False)
iriser.edit_action(dest=2, dir=bits.dir, val=bits_refclk_off.val,
time=50, units='ms', _next=3)
# Action 3: turn refclk back on, wait 50ms
iriser.edit_action(dest=3, dir=bits.dir, val=bits_perst_assert.val,
time=50, units='ms', _next=4)
# Action 4: deassert PERST, then stop
iriser.edit_action(dest=4, dir=bits.dir, val=bits.val,
time=2, units='s', _next='stop')
check_result(iriser.start_sequence(0))
iriser.wait_for_stopped()