uvm_analysis_fifo
uvm_analysis_fifo#(logic[7:0] data) ap;好像不对。大神帮我解决下,
刚接触uvm不久。
一定要是transaction
UVM好不容易才把Signal level的仿真抽象成Transaction Level,你这是要革UVM的命吗?
logic类型的变量都是static的,UVM的中的觉得多数都是dynamic。你把static的变量放在dynamic的对象中,完全是不合逻辑的。
比如对于monitor采集到dut的三个输出a,b,c,必须再把这三个输出整流成transaction的格式才能传给scb吗?按我现在能理解的,transaction
也就是sequence_item吧,其中定义的应该都是些要发送的激励啊,后面monitor
的结果要打包成的transaction是需要再另外定义吗?不然硬要往激励的transaction上
靠,我还不大理解。
monitor和driver在转换transaction和signal时的动作刚好相反:driver通过虚接口把transaction转换成signal,monitor通过虚接口把signal转换成transaction。
这种转换可以在monitor中实现,也可以自己定义一个collector的component来实现,这样更清晰。
driver中的transaction和monitor中的transaction可以不同,但很多例子中,都是一样的。另外,transaction是没有方向的概念的,不要与input output ports搞混了。
monitor中收集到的transaction可以通过uvm_analysis_port传给另外的component用。
那两个monitor,一个monitor用到另一个monitor的产生地结果,怎么连结啊?
为什么两个monitor之间要耦合啊?
一定要是transaction,你可以写一个transaction,里面就只有一个logic[7:0]数据类型
学这个玩意,你自己按照书上的那个例子,编译,调试,搞通了就搞懂了