在interface内部可以定义clocking块,clocking模块主要使用在验证平台中,不能用作RTL设计。一个interface中可以包含多个clocking模块。在SV中使用clocking模块控制同步信号,在interface中定义clocking模块,并使用clocking模块中的所有信号都是同步驱动或采样,以确保验证平台可以在正确的时间跟设计进行交互。
如果在interface中没有定义任何modport来指定信号的方向,那么这些信号默认就是inout类型的方向。 总结interface,clocking, modport, 采样以及驱动 interface interface的创建使用关键词interface/endinterface。在interface的端口列表中只需要定义时钟、复位等公共信号,或者不定义任何端口信号,转而在变量列表中定义各个需要跟DUT...
如果在interface中没有定义任何modport来指定信号的方向,那么这些信号默认就是inout类型的方向。 总结interface,clocking, modport, 采样以及驱动 interface interface的创建使用关键词interface/endinterface。在interface的端口列表中只需要定义时钟、复位等公共信号,或者不定义任何端口信号,转而在变量列表中定义各个需要跟DUT...
定义一个Interface,里面包含有两个clocking block,定义了driver和monitor接口的输入输出方向。 2.2 env 2.2.1 add_scoreboard 建立scoreboard,进行硬件结果和软件结果的对比。 2.2.2 add_reference_model 这里的逻辑比较简单,就没有使用到reference model了,但是还是保留有这个模块。 2.2.3 add_env env就是把agent、sc...
二、interface更新主要包括内部信号更新、clocking块更新、顶层interface连接更新等三个部分。 三、sequence item及sequence更新主要包括成员变量更新、随机约束更新、sequence更新(尽可能保持原有成员变量、以便在顶层virtual sequence复用) 四、driver更新包括do_reset(),do_driver(),chnl_write(),chnl_idle()更新。
interface的定义在顶层的tb.sv中,三组输入数据几口可以使用同一类型的接口实现,下列代码中的具体内容省略了,详情请自行查看。最后一组接口用于检测寄存器的内容,当前版本没有使用寄存器模型,所以这个接口是必要的。 interfacecfg_intf(inputclk,inputrst_n);clockingdrv_ck@(posedgeclk);defaultinput#1nsoutput#1ns;end...
endclocking: ck_mon endinterface: amp_interface `endif// AMP_INTERFACE_SV 二、完善激励 2.1 transaction transaction作为验证的“子弹”,其决定着激励的内容。transaction中的变量和DUT所需的变量大致相同,但又不必完全一样,因为有driver会对数据进行转换。
29.优选地,在配置的定义文件里,对当前连接接口进行声明,然后通过is_active参数来指定连接接口的连接方向,从而判断其是否需要由env验证环境来通过sequence驱动给dut,即该interface对应的agent封装是否为active模式;其中,由env验证环境中的sequence来驱动时,is_active为1,由dut来驱动时,is_active为0。
这也是为什 么如果要达到全自动化脚本配置,需要限定interface中的数据成员为单一方向的原因之 一。另一个原因是为了实现驱动和采样的自动化,即interface中drive和monitor这两个 clocking block会把interface中所有的数据成员都包含进来,不会出现输入输出端口混 在一起的情况,那么在后面在driver或monitor中来使用这两个...
这一章最重要的知识点就是接口(interface),这个一定要掌握,掌握接口的定义,它有什么特点和优缺点;modport和clocking时序快,这个知识点,不是很高频,但也被问过,建议掌握;另一个重要知识点,是在数电当中也会考察的内容,就是竞争—冒险。这个知识点一定一定要掌握,什么是竞争,什么是冒险,如何避免竞争和冒险;本章...