篇1-interface

资料来源:

(1)公众号-芯片学堂;

(2)The UVM Primer;

1.接口的作用与构成

(1)接口将一组信号封装到一起,方便信号在验证环境组件中的连接;

(2)接口不只包含一组信号,还可以包含modport,clocking block,parameter,always和initial语句块,assign语句,断言assertion,覆盖组,函数和任务,事件event等(复杂使用)(这些特点使得接口可以用于构建Bus Functional Model,将和总线协议相关的内容通过interface中的子程序实现);

(3)接口内可以实例化其他接口;

(4)接口内可以使用类的句柄(如下图所示, command_monitor与result_monitor这两个类的定义位于tinyalu_pkg内;在uvc的build_phase内为interface中的句柄赋值);

 

1.1modport

(1)modport可以用来在接口中定义信号的方向(这种方向的定义相当于对信号施加了连接约束,避免在模块或环境组件集成的过程中连接出错);

(2)一个interface中可以提供任意数量的modport;

1.2clocking block(控制同步信号)

(1)时钟块中,可以清楚定义各个信号相对于时钟边沿的时序关系,确定信号被驱动或采样的时刻;

(2)采样输入信号(input),驱动输出信号(output);

1.3 always语句块 & assign语句

1.4 interface内例化interface

注:该示例中,interface if_8b10bDUT根本没有任何接触,只是为了提高代码的可重用性,单纯起到一个封装的作用.

2.interface的集成

2.1static pin to pin

(1)在顶层模块中声明所有信号或者接口,然后分别在例化子模块时,完成连接;

2.2 bind

 

 

posted on   知北游。。  阅读(332)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示