SystemVerilog语法中,在Class中引用层次化信号

2023-10-29 04:45

本文主要是介绍SystemVerilog语法中,在Class中引用层次化信号,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在class中可以像在verilog中一样,直接在class中引用层次化信号。示例如下:
1.DUT模块,文件名为top.v。

module top
(input 				clk			,input 				rst_n		,//总线信号	input 				wr_n		,input 				rd_n		,input 				cs0_n		,input 				cs7_n		);

2.cpu类,文件名为cpu.sv,在cpu类中可以通过.运算符直接引用其他模块的信号,如tb.top_inst.syn_rst_n。

`include "tb_interface.sv"class cpu;virtual top_if  cpu_if;//声明虚拟接口function new(virtual top_if  watch_dog_interface);//在构造函数中将虚拟接口传递到类变量中cpu_if=watch_dog_interface;endfunction  task signal_synchronous(logic [2:0]  signal);wait(    tb.top_inst.syn_rst_n);//在类中直接引用其他模块的信号、变量@(posedge tb.top_inst.sys_clk);#1 ;cpu_if.cs0_n<=signal[0];//通过接口对接口中的信号赋值cpu_if.rd_n<=signal[1];cpu_if.wr_n<=signal[2];@(posedge tb.top_inst.sys_clk);#1 ;cpu_if.cs0_n<=signal[0];cpu_if.rd_n<=signal[1];cpu_if.wr_n<=signal[2];		@(posedge tb.top_inst.sys_clk);#1 ;cpu_if.cs0_n<=signal[0];cpu_if.rd_n<=signal[1];cpu_if.wr_n<=signal[2];repeat(10) @(posedge tb.top_inst.sys_clk);endtask
endclass

3.在testbench中将dut和tb连接,并在tb模块中实例化类对象。

`timescale 1ns/1ps`include "tb_interface.sv"
`include "watch_dog.sv"
`include "cpu.sv"module tb;bit 				clk			;top_if topif(clk);    //实例化top_if对象,将clk传递给interface//top_if topif ;dszj_2k_6001797_top   top_inst( .clk(topif.clk),               //将topif接口对象与DUT绑定,这里直接按照位置绑定.rst_n( topif.rst_n    ),.wr_n(topif.wr_n),		.rd_n( topif.rd_n		),.cs0_n( topif.cs0_n		),.cs7_n(topif.cs7_n		));	                                                                   initialbeginclk=0; topif.rst_n=0;#100 topif.rst_n=1;endalways #12.5 clk=~clk;watch_dog  watch_dog_inst=new(topif);//将topif接口传递给watch_dog类的对象cpu cpu_inst=new(topif);//将topif接口传递给cpu类的对象initialbegin	 repeat(1000) @(posedge clk);watch_dog_inst.print();// watch_dog_inst.cpu_inst.signal_synchronous(3'b111);endendmodule


 

这篇关于SystemVerilog语法中,在Class中引用层次化信号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/298305

相关文章

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

无线路由器哪个品牌好用信号强? 口碑最好的三个路由器大比拼

《无线路由器哪个品牌好用信号强?口碑最好的三个路由器大比拼》不同品牌在信号覆盖、稳定性和易用性等方面各有特色,如何在众多选择中找到最适合自己的那款无线路由器呢?今天推荐三款路由器让你的网速起飞... 今天我们来聊聊那些让网速飞起来的路由器。在这个信息爆炸的时代,一个好路由器简直就是家庭网编程络的心脏。无论你

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

提示:Decompiled.class file,bytecode version如何解决

《提示:Decompiled.classfile,bytecodeversion如何解决》在处理Decompiled.classfile和bytecodeversion问题时,通过修改Maven配... 目录问题原因总结问题1、提示:Decompiled .class file,China编程 bytecode

C++语法知识点合集:11.模板

文章目录 一、非类型模板参数1.非类型模板参数的基本形式2.指针作为非类型模板参数3.引用作为非类型模板参数4.非类型模板参数的限制和陷阱:5.几个问题 二、模板的特化1.概念2.函数模板特化3.类模板特化(1)全特化(2)偏特化(3)类模板特化应用示例 三、模板分离编译1.概念2.模板的分离编译 模版总结 一、非类型模板参数 模板参数分类类型形参与非类型形参 非类型模板

Java基础回顾系列-第一天-基本语法

基本语法 Java基础回顾系列-第一天-基本语法基础常识人机交互方式常用的DOS命令什么是计算机语言(编程语言) Java语言简介Java程序运行机制Java虚拟机(Java Virtual Machine)垃圾收集机制(Garbage Collection) Java语言的特点面向对象健壮性跨平台性 编写第一个Java程序什么是JDK, JRE下载及安装 JDK配置环境变量 pathHe

JavaSE(十三)——函数式编程(Lambda表达式、方法引用、Stream流)

函数式编程 函数式编程 是 Java 8 引入的一个重要特性,它允许开发者以函数作为一等公民(first-class citizens)的方式编程,即函数可以作为参数传递给其他函数,也可以作为返回值。 这极大地提高了代码的可读性、可维护性和复用性。函数式编程的核心概念包括高阶函数、Lambda 表达式、函数式接口、流(Streams)和 Optional 类等。 函数式编程的核心是Lambda

列举你能想到的UNIX信号,并说明信号用途

信号是一种软中断,是一种处理异步事件的方法。一般来说,操作系统都支持许多信号。尤其是UNIX,比较重要应用程序一般都会处理信号。 UNIX定义了许多信号,比如SIGINT表示中断字符信号,也就是Ctrl+C的信号,SIGBUS表示硬件故障的信号;SIGCHLD表示子进程状态改变信号;SIGKILL表示终止程序运行的信号,等等。信号量编程是UNIX下非常重要的一种技术。 Unix信号量也可以