![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RTL coding的艺术
文章平均质量分 53
积小流哥
数字芯片前端设计,专注图像处理加速器,risc-v处理器设计。
展开
-
<RTL coding的艺术>verilog中for循环中循环变量int/genvar区别讲解
先看两种for循环使用情况:上面两个for循环中,一个以genvar为循环变量,另一个以int为循环变量,能不能交换呢?答案是不能,交换后VCS编译会报systemverilog语法错误。实际上两者区别如下:1、genvar循环用于产生多套电路,各套电路之间必须独立;int循环可以用于同一个逻辑的累积赋值,例如累加,但是也可以用于多套独立组合逻辑描述。2、genvar循环一定在过程块之外(always,initial),int循环一定在过程块内部。总结:两种for循环都使原创 2021-07-02 20:27:48 · 12421 阅读 · 3 评论 -
<RTL coding的艺术> non-constant expression引出的思考
今天VCS编译下面这段代码时报错了:报错如下:上述代码中实际上参数d是一个固定值8,但是编译工具不认。经过分析,编译工具将取值范围有可能出现隐患时将会报错。例如上面定义int d=8,但是d的值可以由其余电路算出来实时变化,导致无法综合,因此VCS保险起见不允许上述用法。我平时用的比较多的取值范围是变量的场景,大概还有另外两种1、以循环变量来取值,每次循环电路只取1bit,因此不存在变范围取值:2、以变量取二维数组的某一个,其中每个数据的数据位宽都是固定的,因此也不是变化原创 2021-07-06 20:15:02 · 2108 阅读 · 0 评论