code: def _setup(self):
          
  
          # Create a root system ticks and user configurable ticks
          systick = self.allocator.allocate_stream(DataStream.CounterType, attach=True)
          fasttick = self.allocator.allocate_stream(DataStream.CounterType, attach=True)
          user1tick = self.allocator.allocate_stream(DataStream.CounterType, attach=True)
          user2tick = self.allocator.allocate_stream(DataStream.CounterType, attach=True)
  
          self.sensor_graph.add_node("({} always) => {} using copy_all_a".format(system_tick, systick))
          self.sensor_graph.add_node("({} always) => {} using copy_all_a".format(fast_tick, fasttick))
          self.sensor_graph.add_config(SlotIdentifier.FromString('controller'), config_fast_tick_secs, 'uint32_t', 1)
  
          self.sensor_graph.add_node("({} always) => {} using copy_all_a".format(tick_1, user1tick))
          self.sensor_graph.add_node("({} always) => {} using copy_all_a".format(tick_2, user2tick))
          self.system_tick = systick
          self.fast_tick = fasttick
          self.user1_tick = user1tick
          self.user2_tick = user2tick
docs: Prepare for code generation by setting up root clock nodes.
  
          These nodes are subsequently used as the basis for all clock operations.