连接设计和测试平台

1、使用Interface的方法
  a、首先定义一个interface
  b、定义一个基于interface参数的设计模块module
  c、定义一个基于interface参数的测试程序program
  d、最后使用一个顶层将他们组合起来

例子4.4 仲裁器的简单接口

1 interface arb_if(input bit clk);
2     logic [1:0] grant,request;
3     logic rst;
4 endinterface

例子4.5 使用了简单接口的仲裁器

 1 module arb(arb_if arbif);
 2 ...
 3 [email protected](posedge arbif.clk or posedge arbif.rst)
 4 begin
 5 if(arbif.rst)
 6 arbif.grant <= 2‘b00;
 7 else
 8 arbif.grant<= next_grant;
 9 ...
10 end
11 endmodule

//例子4.6:使用简单仲裁器接口的测试平台

 1 module test(arb_if arbif);
 2 ...
 3 initial begin
 4 //省略复位代码
 5
 6 @(posedge arbif.clk);
 7 arbif.request<=2‘b01;
 8 $display("@%0t:Drove req=01",$time);
 9 repeat(2)@(posedge arbif.clk);
10 if(arbif.grant!=2‘b01)
11 $display("@%0t:a1:grant!=2‘b01",$time);
12 $finish
13 end
14 endmodule : test

//例子4.7:使用简单仲裁器接口的top模块

1 module top;
2     bit clk;
3     always #5 clk=~clk;
4
5     arb_if arbif(clk);//实例化一个interface
6     arb a1(arbif);    //实例化一个module,参数调用上面实例化的interface
7     test t1(arbif);    //实例化一个test,参数调用上面实例化的interface
8
9 endmodule:top

2、使用modport将信号分组
  在接口中使用modport能够将信号分组并指定方向:
  例4.10 带有modport的接口
  例4.14 带时钟块的接口

1 interface arb_if(input bit clk);
2     logic [1:0] grant,request;
3     logic rst;
4
5     modport TEST(output request,rst,input grant,clk);
6     modport DUT(input request,rst,clk,output grant);
7     modport MONITOR(input request,grant,rst,clk);
8
9 endinterface

3、使用时钟块控制同步信号的时序

接口块可以使用时钟块来指定同步信号相对于时钟的时序,时钟块中的任何信号都将同步的驱动和或采样。
一旦定义了时钟块,测试平台就可以使用arbif.cb表达式等待时钟,而不需要确切的时钟信号和边沿。这样即使改变了时钟块中的时钟或变沿,也无需修改测试平台代码。、
//例4.14 带时钟块的接口

 1 interface arb_if(input bit clk);
 2 logic [1:0] grant,request;
 3 logic rst;
 4
 5 clocking [email protected](posedge clk);    //声明cb
 6 output request;
 7 input grant;
 8 endclocking
 9
10 modport TEST(clocking cb,//使用cb,
11 output rst);
12 modport DUT(input request,rst,output grant);
13 endinterface
14
15 //一个简单的测试程序
16 module test(arb_if.Test arbif);
17 initial begin
18 arbif.cb.request <= 0;
19 @arbif.cb;
20 $display("@%0t:Grant=",$time,arbif.cb.grant);
21 end
22 endmodule

说明:和4.10相比,TEST modport将request和grant视为同步信号。

4、接口中的logic和wire对比
  a.接口中过程赋值语句驱动异步信号——logic
  b.连续赋值语句驱动——wire
  c.时钟块中的信号是同步信号——logic和wire

  注:VMM将接口中的信号定义为wire型。

例4.15 如何驱动接口中的logic和wire信号

 1 interface asynch_if();
 2     logic l;
 3     wire w;
 4 endinterface
 5
 6 module test(asynch_if ifc);
 7     logic logic_wire;
 8     assign ifc.w = logic_wire;
 9
10     initial begin
11         ifc.l <= 0;//直接驱动异步logic信号
12         logic_wire <= l;//但是只能用assign驱动wire信号
13     end
14 endmodule    

5、sv主要的调度区域

  active——仿真模块中的设计代码

  observed——执行sv断言

  reactive——执行程序中的测试平台部分

  postponed——为测试平台的输入采样信号

6、sv仿真的结束
如果只有一个程序块,那么完成所有initial块中最后一个语句时,仿真结束;

如果有多个程序块,仿真在最后一个程序块结束时结束;

时间: 2024-08-07 11:23:21

连接设计和测试平台的相关文章

04-SV连接设计和测试平台

1.背景 (1)验证一个设计的步骤: 生成输入激励,捕捉输出响应,决定对错和进度 (2)连接设计和测试平台 信号连接:SystemVerilog已经扩展了传统的reg类型,可以像wire那样用来连接模块,它的新名字为logic,logic不能多驱动. 使用信号连接极易出错. 接口:接口可以看作是一捆智能的连线,在接口中使用modport结构能够将信号分组并指定方向. 使得连接变得简洁不易出错,要增加一个信号时,在接口中只需要声明一次,不需要再更高层的模块层中声明. 原文地址:https://ww

最新版web 测试平台

1.TextController.java package com.hkwx.controll; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; im

SQL注入测试平台 SQLol -1. 简介与安装

最近下载了SQLol测试了一下,感觉挺好玩的,做一下记录. SQLol是一个可配置得SQL注入测试平台,它包含了一系列的挑战任务,让你在挑战中测试和学习SQL注入语句,SQLol还是比较有创意的项目. SQLol is now part of the Magical Code Injection Rainbow framework at http://github.com/SpiderLabs/MCIR and the standalone version will no longer be m

各种Web漏洞测试平台

Sqli Lab?支持报错注入.二次注入.盲注.Update注入.Insert注入.Http头部注入.二次注入练习等.支持GET和POST两种方式. https://github.com/Audi-1/sqli-labs DVWA (Dam Vulnerable Web Application)DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序.包含了SQL注入.XSS.盲注等常见的一些安全漏洞.http://www.dvwa.co.uk/ mutilli

Nexus设备渗透测试平台 – Kali Linux NetHunter

NetHunter是一个基于Kali Linux为Nexus设备构建的Android渗透测试平台,其中包括一些特殊和独特的功能.NetHunter支持无线802.11注入,一键MANA AP搭建,HID键盘(类Teensy攻击)以及BadUSB MITM攻击测试.你只需拥有一台Nexus 5, Nexus 6, Nexus 7, Nexus 9, Nexus 10或OnePlus即可玩耍. 功能特性 802.11无线注入和AP模式支持,支持多种USB无线网卡 能够进行USB HID键盘攻击测试

国外移动 app 云测试平台的对比与分析

由于国内外的云测试平台使用环境等因素的不同,我们分别对国内外主流的几个云测试平台进行对比. 国外主流的云测试平台: Xamarin Test Cloud (https://xamarin.com/test-cloud/) TestDroid (http://testdroid.com/) Sauce Labs (https://saucelabs.com/mobile/) Google Cloud Test Cloud(https://developers.google.com/cloud-te

VMware + JunOS + Linux 搭建安全测试平台

众所周知VMareWorkStion 是一个强大的桌面型的虚拟化软件,比较可以建立Windows虚拟机.Linux虚拟机.甚至各网络操作系统,比如CISCO ASA .Juniper SRX等.并且可以利用VMWare自身的虚拟网卡host建立不同网段来组建测试平台.下文就是就是在 VMWare上搭配Linux 系统 .Juniper SRX来模拟互联网络以及公司内部网络的,来做一个安全测试平台.当然此测试平台linux + DVWADamn Vulnerable Web Application

三星S6 edge、edge+上线TestBird兼容性测试平台

三星去年各种裁员,日子不太好过,不过手机的销量依然是全球最高.这要归功于S6 edge系列手机在市场上的突出表现,侧边曲面屏幕流光溢彩,吸引了一大波时尚青年. 在骁龙820掉坑里的情况下,它搭载了强悍的Exynos 7420处理器.亮点不少,自然值得开发者们重视.现在edge和它的升级版edge+已经登录TestBird,欢迎开发者前来适配. 在智能机越发同质化的今天,拥有侧边曲面屏的S6 edge算是特别的一个.也正是因为此,它收获了一大波的追求时尚的年轻用户. 他使用了Exynos 7420

云测试平台通常都提供哪些功能和服务

  主流的云测试平台都支持对原生native,混合hybrid和Web app的测试,这些测试包括: 1. 兼容测试 通过在多种测试设备上安装/卸载和运行被测app,遍历app的每个界面,主要检查app是否会报错或者崩溃.有些云测试平台还会对每个页面进行截图并进行对比. 2. 脚本测试 通过运行云测试平台工具进行录制的或者使用自动化测试框架编写的自动化脚本,实现模拟用户操作的目的,并且减少手动测试时间. 3. 性能监控和分析 利用Android SDK提供的借口,云测试平台可以检测移动app的耗