0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SV Structure作为module的input/output

芯片验证工程师 来源:芯片验证工程师 作者:芯片验证工程师 2022-11-08 09:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在SV中可以使用结构体作为模块的输入或输出,这使得它可以更加清晰地传递更多的信号,以简化RTL代码,类似于interface。

typedef struct {
 bit [7:0] intr = 'h AA;
 logic [23:0] addr = 'h FF_FF_FF;
 } ext;
 
 module SU (
 output ext extOut);
 
 assign extOut = '{intr: 8'hFF, addr:24'haa_aa_aa};
 initial begin
 #1; $display($stime,,, "extOut = %p", extOut);
 end
 endmodule
 
 module top;
 ext extIn;
 //connect extOut of 'SU' with extIn of 'top'
 SU SUInst(.extOut(extIn));
 initial begin
 #2; $display($stime,,, "extIn = %p", extIn);
 end
 endmodule

仿真log:

 1 extOut = '{intr:'hff, addr:'haaaaaa}
 2 extIn = '{intr:'hff, addr:'haaaaaa}
 V C S S i m u l a t i o n R e p o r t

在上面的例子中,我们首先定义了一个名为“ext”的unpacked struct,然后直接作为module的output。

再声明一个moudle top,连接到这个struct。最后打印表明这个结构体确实完成了连接,打印相同的信息。

struct可以作为参数传递给task或function,前提是这个struct需要先使用typedef声明为用户自定义类型

typedef struct {
 logic [31:0] addr;
 logic [63:0] data;
 logic [3:0] BEnable;
 } control;
 function Dbus (input control ct1);
 ….
 endfunction


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2849

    浏览量

    53439
  • RTL
    RTL
    +关注

    关注

    1

    文章

    395

    浏览量

    62883
  • 结构体
    +关注

    关注

    1

    文章

    131

    浏览量

    11413
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RDMA设计35:基于 SV 的验证平台

    设计。 FPGA IP(知识产权核)使用SystemVerilog(SV)进行验证,主要基于其在验证效率、代码复用性和工程协作方面的显著优势。本IP采用它进行验证以确保其可靠性。 这里主要对RoCE
    发表于 02-01 13:14

    Dual Coupler Module skyworksinc

    电子发烧友网为你提供()Dual Coupler Module相关产品参数、数据手册,更有Dual Coupler Module的引脚图、接线图、封装手册、中文资料、英文资料,Dual
    发表于 10-28 18:34
    Dual Coupler <b class='flag-5'>Module</b> skyworksinc

    蜂鸟E203乘法器的优化——基8的Booth编码+Wallace树

    ) ② Wallace树结构: 这里使用CSA(进位保留加法器),压缩部分积的数目 module csa( input x, input y, input z,
    发表于 10-24 07:28

    关于E203内核高性能乘法器优化(三)

    4:2压缩器优化 一般的4:2压缩器是由两级3:2压缩器串接起来的,而3:2压缩器的实质就是全加器,其结构如下: 表达式如下: 代码实现: module full_adder( input a
    发表于 10-23 07:43

    关于E203内核高性能乘法器优化(四)

    module single52 ( input op1, input op2, input op3, input op4,
    发表于 10-23 06:30

    SV7102 低压高速USB 2.0开关技术手册

    电子发烧友网站提供《SV7102 低压高速USB 2.0开关技术手册.pdf》资料免费下载
    发表于 09-10 16:30 0次下载

    SV7321, SV7358, SV7324英文手册

    电子发烧友网站提供《SV7321, SV7358, SV7324英文手册.pdf》资料免费下载
    发表于 09-09 18:09 0次下载

    SV74157A英文手册

    电子发烧友网站提供《SV74157A英文手册.pdf》资料免费下载
    发表于 09-09 17:34 0次下载

    SV8541A、SV8542A、SV8544A 微功率低噪声运算放大器技术手册

    电子发烧友网站提供《SV8541A、SV8542A、SV8544A 微功率低噪声运算放大器技术手册.pdf》资料免费下载
    发表于 09-09 17:17 0次下载

    SV7102 低压高速USB 2.0开关技术手册

    电子发烧友网站提供《SV7102 低压高速USB 2.0开关技术手册.pdf》资料免费下载
    发表于 09-09 17:04 0次下载

    基于LockAI视觉识别模块:C++人脸识别

    结果可视化 lockzhiner_vision_module::vision::Visualize(input_mat, output_image, result); 参数说明: inpu
    发表于 07-01 12:01

    基于LockAI视觉识别模块:手写数字识别

    结果可视化 lockzhiner_vision_module::vision::Visualize(input_mat, output_image, result); 参数说明: inpu
    发表于 06-30 16:45

    【高云GW5AT-LV60 开发套件试用体验】点亮LED

    ), //input clkin .reset(reset), //input reset .lock(lock), //output lock .clkout0(clk_100M) //ou
    发表于 06-18 17:16

    基于LockAI视觉识别模块:C++目标检测

    lockzhiner_vision_module::vision::Visualize( const cv::Mat& input_mat, cv::Mat& output
    发表于 06-06 14:43

    基于LockAI视觉识别模块:C++条码识别

    lockzhiner_vision_module::vision::Visualize(input_image, output_image, results); 参数说明: input
    发表于 05-27 10:26