UVM 中怎么引入reference model或者是C model
好像finesim的manual上对C-Model解释的很少,想写一个C-Model生成一个脉冲源,连时间都不好指定。你知道fsc_current_time()这个函数返回的是什么时间?这跟生成的tran波形上的时间0点有什么样的对应关系吗?
目前的主流做法 应该是 : DPI/[PLI]
可以查SV 的 LRM 以及 Tool 的Doc。
我想统一回复一下我现在research 结果和个人理解,可能会有不对的的地方请大家指正。首先先写关于research的结果,关于引入golden C model的例子几乎没有,在mentor cookbook中只有关于如何用C产生based stimulus和如何用C配置相应寄存器的做法。
第二,我们公司曾经有人使用OVM做了一套带入C model的OVM环境,但是C model只有一个Cpp文件。能够实现OVM中随机变量dump给C,并在scoreboard中进行比较。但是需要对Cpp文件进行相应的改写,来实现C与SV的交流。具体改写方法相当于对cpp中每一个function重新在下方dpi改写,再做wrapper。关于此点,主要是因为这种工作不具有reuseable的可能,并且在已有C model的验证环境下,并不能体现出工作量和验证质量的优势。
以上内容纯属个人见解,请大神来指点不对的地方,如果UVM现在有更好的办法,快告诉我啊!
脉冲源的时序应由RTL来控制而不是从cmodel. Cmodel 只管算法部分
楼上正解
方法之一就是用DPI,把C的东西包起来,只留下接口,按照C调用的顺序组合来调用DPI,输出就有了。这和UVM关系不大,sv的平台一样可以引入
七楼正解
可以考虑用uvmc 他是基于tlm port开发的专门用来连接sv和c/sc的,具体可以Google uvmc