激励-sequence

slave_sequence

模块A与模块B是有来有回的两个模块,典型的场景是调度场景,可能一个request需要多个rsp,可能还有不同通道之间的交织场景等;

需要采样模块A的request,发送给与B_agent.seqr挂载的sequence,让它决定发生什么rsp给回模块A;所以需要在B_agent.seqr里面声明一个port,以便sequence能通过这个port得到采样道德request包;


对于一些一拍req,一拍rsp,的类型,可以直接agent里面实现,不需要通过slave_sequence这种方式;


对于那些不需要request信息的场景,可以直接在driver里面编写一些simulation_task去发送激励就可以了;


可以在env或tc_base层:通过set_sequencer去设置seqr;

比如:mo_xx_seq.set_sequencer(env.xx_agt.sqr);

当然也可以在具体的用例里面通过start去指定哪个seqr去发送激励;

mo_xx_seq.start(env.xx_agt.sqr);


sequence中实现发包速率的控制:

body :和之前一样,就是在repeat(tr_num)循环体里面多了一个get_bucket的阻塞task,本质是通过令牌桶机制实现一种速率控制,桶深大于0就发包,否则等到桶深大于0,发包减,一定时间后加,从而实现速率发包;


driver中:把与seq握手和驱动接口进行分离;

如构造task:get_stim和driver_if两个方法;

get_stim里面实现与seq的交互:seq_item_port.get_next_item(tr)---处理数据---tr放到一个tr_que里---seq_item_port.item_done(tr);(可以在这里控制获取tr的速率)

driver_if:forever :如果tr_que深度大于1,就执行接口驱动;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值