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

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

3天内不再提示

仿真时为什么顶层不例化

sanyue7758 来源:处芯积律 2023-04-28 10:28 次阅读

不管是基于什么方法学Verilog或者SystemVerilog编写测试平台,进行仿真的时候都需要将设计代码例化在顶层模块(module)中,然后将顶层名指定在仿真命令中,但是从来没有把顶层进行例化。因为可能会想如果顶层再例化就需要把顶层再例化到另一个module中,然后将这个module的名字再作为新的顶层。。。这样下去就没有穷尽了。其实在Verilog和SystemVerilog中,module的例化一般要么是在设计层次结构中被例化,以形成整个层次化的设计,要么就是作为整个仿真环境的顶层module出现进行例化,并且此时给大家的假象是没有例化。其中第一种例化方式就是“显式例化”,后一种顶层module实际上是以一种“隐式例化”的方式存在的,那么“隐式例化”和“显式例化”都有哪些特点和使用上的区别呢?本文将示例说明。

1 隐式例化

隐式例化常见的情况主要出现在顶层模块在仿真时,顶层模块会被隐式的进行一次例化,并且这个例化名与顶层module的名字,这样的一个实例称之为“顶层实例”,即顶层的“隐式例化”

【示例】

a348ef04-e569-11ed-ab56-dac502259ad0.png

【仿真结果】

a35b47da-e569-11ed-ab56-dac502259ad0.png

示例中,在顶层top_tb中例化了两个module(h1和h2),例化名分别是top_tb和u2,其中h1中又例化了h2,也就是h2在顶层top_tb和h1中分别进行了例化,在例化时分别传递了对应的参数。其中h1和h2在各层次的例化属于“显式例化”,整个代码的层次结构如下图所示。

a3646d4c-e569-11ed-ab56-dac502259ad0.png

示例中第8行通过层次化引用将u2中的datin的值传递给了顶层变量sig1,sig1的值来自于通过$root指向顶层例化名(top_tb,此时的top_tb就是顶层模块top_tb的“隐式例化”名),在通过顶层top_tb引用其中u2(h2例化),从而实现了对于u2中datin的访问,因为此时datin的值来自于h2在顶层中例化时传递的参数“4h1110”,所以此时sig1值为“4h1110”;

示例中第9行,依然是通过层次化引用的方式将u2中的datin的值传递给了顶层变量sig2,但是此时需要注意的是这里的top_tb并不是顶层module名也不是顶层module的例化名,而是当前作用域内h1的例化名(top_tb),这里h1在顶层例化时传入的参数为“4h0001”该参数通过h1中h2例化的u2传递给了datin,此时datin的值为“4h0010”,所以此时sig2获得数值为“4h0010”;

2显式例化

除了顶层以外,其他模块的使用都是建立在对应module“显式例化”的基础之上,正是通过模块之间的一次或者多次例化形成了层次化的设计。

【示例】

a3706f20-e569-11ed-ab56-dac502259ad0.png

【仿真结果】

a37b9080-e569-11ed-ab56-dac502259ad0.png

a38b9836-e569-11ed-ab56-dac502259ad0.png

示例仿真结果可以看到,h1、h2、h3、h4分别在不同的模块中进行了例化,形成了层次化的结构,这几个模块的例化都属于“显式例化”。

通过上述示例,在IEEE1800目前版本的SystemVerilog中“隐式例化”主要是指顶层模块的例化,不需要指明实例名,其实例名与模块名相同,“显式例化”则需要指明模块名和实例名,主要用于模块之间形成层次化结构时各模块之间的相互实例化。

审核编辑 :李倩



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

    关注

    50

    文章

    3873

    浏览量

    132173
  • Verilog
    +关注

    关注

    28

    文章

    1327

    浏览量

    109319
  • 变量
    +关注

    关注

    0

    文章

    597

    浏览量

    28115

原文标题:仿真时为什么顶层不例化

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    CMU通道与普通GXB的差异比较

    马上着手学习如何在项目中使用Stratix IV GX的CMU通道高速串行链路,那么首先第一步就是了解并使用Altera的MegaWizard插件管理器来CMU模式的GXB函数。如图1所示
    发表于 12-03 16:04

    模块

    能不能分享个Verilog模块的教程?
    发表于 01-02 00:43

    顶层敷铜时,为什么会有些黑色方框区域敷上铜啊

    顶层敷铜时,为什么会有些黑色方框区域敷上铜啊
    发表于 11-22 22:33

    代码和原理图设计的顶层文件有什么不同么

    最近分别用原理图形式和代码形式设计了一个串口发送的顶层文件,结果原理图设计的顶层文件用modelsim仿真时出错,但是运行没问题;用代码设计的顶层文件利用modelsim
    发表于 07-30 16:51

    模块错误

    SW[1]这样子错误,请问下,不能这样的吗?在顶层模块是input[4]sw;这样定义的,然后在底层模块要使用到sw[1]这个开关信
    发表于 04-17 17:07

    单个模块仿真正常,顶层仿真无波形。

    我的这个设计是实现两个坐标轴联动。1、先用verilog语言把分频器模块(clkdiv)、地址发生器模块(address)、积分插补器模块(dda)、工作方式控制器模块(mode)都编写完编译仿真
    发表于 06-09 16:25

    使用user design文件夹下的.v文件,如果编写顶层读写控制程序对mig-39-2.v进行,如何操作才能使用sim_tb_top.v仿真文件?

    里的例子,ddr正常。但实际是要使用user design文件夹下的.v文件,此时如果编写顶层读写控制程序对mig-39-2.v进行,应如何操作才能使用sim_tb_top.v仿真
    发表于 06-22 17:14

    matlab 电机仿真精华50

    MATLAB电机仿真精华50/1KBMATLAB电机仿真精华50/MATLAB电机仿真精华50
    发表于 09-07 15:08

    FPGA问题?

    小弟新接触FPGA(正在学勇敢的芯伴你玩转Xilinx FPGA),遇到如下问题,我在顶层文件都化了,保存之后生成一堆带问号的文件,我如何操作才能把这些问号文件,变成.V文件(可操作的子文件),希望大神指点一下?看例程生成的是.V文件例程图
    发表于 09-24 13:47

    以MIPI项目为讲解Diamond FIFO生成和全过程

    标注所示:点击后进入Clarity Designer,创建一个IP核。需要注意的是Design Name中输入的名称即是在顶层文件中需要的IP核模块名。点击下方的“create”进行创建,找到双
    发表于 12-12 15:54

    基于linux系统的VCS使用及仿真说明

    代码如下:顶层模块代码:波特率产生模块接收模块代码:发送数据模块一、VCS仿真下面开始进行VCS仿真。VCS要使用图形界面,必须得先编译得到vpd文件,才能用图形
    发表于 07-18 16:18

    pcb顶层和底层互换

    本文主要详细介绍了pcb顶层和底层互换,把PCB切换到顶层,然后Edit/select/allonlayer选择顶层
    发表于 04-26 15:47 1.5w次阅读
    pcb<b class='flag-5'>顶层</b>和底层互换

    Vivado调用Questa Sim或ModelSim仿真小技巧

    调用第三方仿真软件查看波形的过程中存在的一些问题。 1、添加新的观测信号需要重新仿真 Vivado直接调用Modelsim/QuestaSim进行仿真时,波形文件里默认只会出现仿真
    的头像 发表于 09-02 10:12 7394次阅读
    Vivado调用Questa Sim或ModelSim<b class='flag-5'>仿真</b>小技巧

    RapidIO核的仿真以及包时序的分析

    它由一个仿真顶层的testbench和两个SRIO核顶层组成。其中顶层的testbench文件srio_sim.v连接了两个srio例子设计顶层
    的头像 发表于 12-19 10:33 1351次阅读

    介绍一种ISE联合仿真转换为Moldelsim单独仿真的方法

    找到仿真顶层的tb文件,cut_through_top_tb。
    的头像 发表于 01-29 09:45 1127次阅读