Virtual sequencer

In reply to tfitz:

By bundled, I meant the group of sequencer handles offers a test writer a quick glimpse into all the sequencers available for a block. Your wrapper suggestion would provide the same feature, and also remove one level of digging.

For example, this code, pulled from my test, sets up a sequence which drives an ethernet layering agent in my component environment. There are six long path-names right out of the gate.

SeqTraffic.init(
  .chip_select(EXEC_LNP_CS),
  .eth_sqr(env.comp_env1.input_pkt_agent.Eth2LL.sequencer),
  .ip_sqr(env.comp_env1.input_pkt_agent.Ip2Eth.sequencer),
  .icmp_sqr(env.comp_env1.input_pkt_agent.Icmp2Ip.sequencer),
  .igmp_sqr(env.comp_env1.input_pkt_agent.Igmp2Ip.sequencer),
  .udp_sqr(env.comp_env1.input_pkt_agent.Udp2Ip.sequencer),
  .arp_sqr(env.comp_env1.input_pkt_agent.Arp2Eth.sequencer)
  // ...    
);

Now lets say I start adding more of these block level environments, and drive those embedded agents as well…

SeqTraffic.init(
  .chip_select(SYS_LNP_CS),
  .eth_sqr(env.comp_env2.input_pkt_agent.Eth2LL.sequencer),
  .ip_sqr(env.env.comp_env2.input_pkt_agent.Ip2Eth.sequencer),
  .icmp_sqr(env.env.comp_env2.input_pkt_agent.Icmp2Ip.sequencer),
  .igmp_sqr(env.env.comp_env2.input_pkt_agent.Igmp2Ip.sequencer),
  .udp_sqr(env.env.comp_env2.input_pkt_agent.Udp2Ip.sequencer),
  .arp_sqr(env.env.comp_env2.input_pkt_agent.Arp2Eth.sequencer)
  // ...    
);

// etc…

As more and more components are added, it’s verbose. Generally in other parts of the hierarchy, path-names are shunned. Perhaps in the test, it’s not quite as important, as the test is not portable anyway. Anyway, I’m rambling a bit. I think I’ll stick with this approach for the time being.