记录一下verilog重复例化的两种方式

news/2024/11/28 5:34:31/

文章目录

      • 0 前言
      • 1 for循环方式例化方法
      • 2 数组的方式例化
      • 4 一些其他的技巧

0 前言

这段时间例化了挺多mem,过程中也了解到了一些新的东西,在这里记录一下

1 for循环方式例化方法

先给出 sub_module

module sub(input [7:0] din,output logic [7:0] dout
);assign dout = din;
endmodule

要将这个module分别例化成u_sub_0u_sub_1,并且每个都例化四次

for循环的实现方式如下

module top(input [8*4-1 : 0] din0, input [8*4-1 : 0] din1,output logic [8*4-1 : 0] dout0,output logic [8*4-1 : 0] dout1
);genvar i;generate for(i=0; i<4; i++) begin:instsub u_sub_0 (//output.dout(dout0[i*8 +: 8]),//input.din(din0[i*8 +: 8]));sub u_sub_1 (//output.dout(dout1[i*8 +: 8]),//input.din(din1[i*8 +: 8]));endendgenerate
endmodule

来看看例化后的效果

可以看到,总共4组inst,每组inst中存在两个u_sub

接下来点开inst[0]中的u_sub_0,看看它的信号是什么样的

依次点击,然后到shell界面粘贴内容

此时可以清晰的看到,这个din信号是来自哪里,这也体现了,在begin后命名block的重要性

2 数组的方式例化

同样的 sub_module,同样的例化要求,这次改用数组的方式进行例化

module top(input [8*4-1 : 0] din0, input [8*4-1 : 0] din1,output logic [8*4-1 : 0] dout0,output logic [8*4-1 : 0] dout1
);sub u_sub_0 (//output.dout(dout0),//input.din(din0));sub u_sub_1 (//output.dout(dout1),//input.din(din1));
endmodule

来看看这次的例化效果

在打印出这种方式的层次化结构

同样有清晰的辨识效果

4 一些其他的技巧

对于二维数组而言,如果想在verdi中将二维数组展开,那么我们需要在dump波形是加上这句话

$fsdbDumpMDA;

这样就可以在verdi中展开二维数组

当一个数组范围比较大不方便分析,可以将数组进行分段,操作如下

比如我要将32 bits位宽的din0信号分成8 bits位宽,可以这样设置

效果如下

实现了对信号的拆分

对于一些信号,在这种例化方式下拉信号的波形不是很容易(这个例子一时没想起来 >_<)

要拉出确定的波形可以这样操作

在波形界面按g,会弹出下面这个框

让后需要哪个信号选中即可添加



http://www.ppmy.cn/news/46343.html

相关文章

自定义OAuth2组件实现对授权码登录模式的封装

文章目录 一、OAuth2简介二、授权码模式执行流程1、网站接入开放平台2、设置开放平台登录按钮3、请求令牌和用户信息 三、存在问题1、攻击流程2、漏洞分析 四、组件封装1、AuthUrls2、AuthRequest3、AuthPlatformConfig4、DefaultAuthRequest 一、OAuth2简介 所谓OAuth2其实就…

代码随想录算法训练营第四十九天-动态规划10|121. 买卖股票的最佳时机 , 122.买卖股票的最佳时机II

买卖股票的最佳时机这两道题&#xff0c;对应着两者不同的处理过程&#xff0c;第一种是从头到尾只能交易一次&#xff0c;也就是买入一次和卖出一次&#xff0c;第二种是可以多次买卖。121买卖股票的最佳时机是只交易一次的。这时候需要用二维数组进行定义&#xff0c;dp[i][0…

开心档之C++ 信号处理

C 信号处理 目录 C 信号处理 signal() 函数 实例 raise() 函数 实例 信号是由操作系统传给进程的中断&#xff0c;会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上&#xff0c;可以通过按 CtrlC 产生中断。 有些信号不能被程序捕获&#xff0c;但是下表…

我学习网络安全的心得

我的学习心得&#xff0c;我认为能不能自学成功的要素有两点。 第一点就是自身的问题&#xff0c;虽然想要转行学习安全的人很多&#xff0c;但是非常强烈的想要转行学好的人是小部分。而大部分人只是抱着试试的心态来学习安全&#xff0c;这是完全不可能的。 所以能不能学成并…

进制基础知识

进制概述&#xff1a; 指进位制&#xff0c;是一种计数方式&#xff0c;也称为进位计数法或位值计数法。 十进制&#xff1a;0&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6&#xff0c;7&#xff0c;8&#xff0c;9 R进制&#xff1a;由…

RT-Thread GD32F4xx I2C之硬件I2C驱动(eeprom)

目录 1、I2C的驱动框架1.1 I2C的驱动框架层介绍1.2 I2C的两种驱动方法1.3 I2C总线设备结构2、硬件I2C驱动开发2.1 实现操作方法rt_i2c_bus_device_ops2.1.1 I2C设备结构定义2.1.2 i2c设备定义2.1.3 GD32F4xx i2c eeprom write函数2.1.4 GD32F4xx i2c eeprom read函数2.1.5 rt_i…

Cesium实践(3)——坐标系与相机系统

文章目录 前言Cesium 坐标系屏幕坐标系空间直角坐标系WGS-84坐标系 坐标系转换角度与弧度互转84坐标转笛卡尔空间坐标笛卡尔空间坐标转84坐标屏幕坐标转笛卡尔空间坐标笛卡尔空间直角坐标转屏幕坐标 Cesium相机默认交互相机姿态参数常用方法DEFAULT_VIEW_RECTANGLEsetViewflyTo…

调教ChatGpt看这一篇文章就够了

ChatGPT是OpenAI发布的基于GPT-3.5架构的大型语言模型&#xff0c;可用于各种自然语言处理任务&#xff0c;包括文本生成、对话系统、文本分类等。本文将为读者提供一份ChatGPT调教教程&#xff0c;帮助读者了解如何训练自己的ChatGPT模型&#xff0c;以便更好地满足自己的需求…