讨论一个基础问题begin-end
时间:10-02
整理:3721RD
点击:
在我们的代码中,在always模块中,我们经常用到begin--end语句,我想讨论一下下面情况的区别
(1)
always @() begin
if() begin
a=
end else begin
a=
end
end
(2)
always @()
if()
a=
else
a=
我们仿真器都是编译,再仿真,对于过多的begin---end是否会以影响仿真速度,欢迎各位高手讨论,同样,我见过很多商业IP都没有过多的begin-end,欢迎大家拍砖。
两种情况在编译过程中,各自占用多少内存块?编译后的二进制文件有什么区别?
在仿真的时候是怎么调用编译后的文件?占用多少内存块?
什么时候执行这个调用?在仿真过程中是怎么运行的?
(1)
always @() begin
if() begin
a=
end else begin
a=
end
end
(2)
always @()
if()
a=
else
a=
我们仿真器都是编译,再仿真,对于过多的begin---end是否会以影响仿真速度,欢迎各位高手讨论,同样,我见过很多商业IP都没有过多的begin-end,欢迎大家拍砖。
两种情况在编译过程中,各自占用多少内存块?编译后的二进制文件有什么区别?
在仿真的时候是怎么调用编译后的文件?占用多少内存块?
什么时候执行这个调用?在仿真过程中是怎么运行的?
感觉你的主要目的不是讨论begin-end占用资源的问题,更多是如何仿真的问题。begin-end只是用于标记线程,如果对于多行的代码是必须要得,不是说可有可无。至于你的第一个问题,我的理解是都一样,因为它不是一种底层硬件结构的实现方式,只是一种代码风格而已。编译后的二进制文件肯定是一样的,当然没有去试验过,你要有心,可以去做做看。
至于你的后两个问题,应该是和仿真的具体步骤有关系,请参考相关的仿真指导手册。
多谢,硬件实现上是应该一样的,我也这么认为,
我是关心仿真速度比较多一点,因为我们的项目非常大,服务器负荷更大,所以想再设计过程中看能不能减轻一些?仿真器要去判断哪些过多的begin--end,我觉得应该要花一部分资源,就是不知道这个影响有多大?
不同的仿真器有不同的仿真原理。我所了解的VCS是基于事件驱动的。应该每个条件属于一个事件,仿真器不断的计算事件的值,然后再时钟边沿的时候按照阻塞和非阻塞赋值过去。好像是这样的。
小编所言极是。这条语句并不会导致占用内存过量和时序延误的操作,所以应该不会有什么问题,不过可以作为一个课题研究一下,有没有意义另说了。
这个应该不会对仿真速度有影响
没区别吧 ,嘿嘿
减少无用的信号翻转,能有效提高仿真速度。
少保存一点波形,能有效提高仿真速度。
少写一点log,能有效提高仿真速度。
到了仿真阶段,已经和代码量大小无关了。
有没有begin-end,compile完都一样的。
