目录

一、问题背景

二、以往类似的正确用法1

三、以往类似的正确用法2

四、总结


一、问题背景

今天VCS编译下面这段代码时报错了:

报错如下:

上述代码中实际上参数d是一个固定值8,但是编译工具不认。经过分析,编译工具将取值范围有可能出现隐患时将会报错。

例如上面定义int d=8,但是d的值可以由其余电路算出来实时变化,导致无法综合,因此VCS保险起见不允许上述用法。

我平时用的比较多的取值范围是变量的场景,大概还有另外两种

二、以往类似的正确用法1

以循环变量来取值,每次循环电路只取1bit,因此不存在变范围取值:

三、以往类似的正确用法2

以变量取二维数组的某一个,其中每个数据的数据位宽都是固定的,因此也不是变化范围取值,例如下面的代码每次都会从64个128bit中取出1个,不存在问题:

因此为了解决我的问题,必须要让VCS知道我代码中的变化范围其实是固定范围,因此将变量类型从int修改为localparam,代码如下:

编译pass,看来我的分析是正确的。

四、总结

完全动态的变量范围取值是不允许的(硬件电路是确定的),我们平常使用的变量取值实际上都是确定取值,要想用变量取值高效编码,必须要想方法告诉综合工具我们的变量是定量。

<RTL coding的艺术> non-constant expression引出的思考相关推荐

  1. Constant expression required

    switch 语句编译报错Constant expression required  问题:case语句后面必须是常量,使用final修饰  public static final int Notif ...

  2. static Constant expression contains invalid operat

    今天这篇文章主要是在项目中遇到了一个小问题: 给一个类里面的静态数组里面的元素赋值时遇到的, public static $msgTemplate = [ self::MSG_TEMPLATE_AFT ...

  3. 数字逻辑综合工具实践-DC-07 ——综合优化(二)和RTL coding 和DFT

    数字逻辑综合工具实践-DC-07 --综合优化(二)和RTL coding 和DFT 主要内容: 1. Pipeline优化 2. RTL设计时的一些注意事项 3. DFT简介 (DFT是后端里很重要 ...

  4. 【Java】Constant expression required

    问题描述 在JDK1.8下使用switch...case...语句,switch条件为String类型,case值为枚举code取字符串.此时报编译错误:"Constant expressi ...

  5. 《让你少奋斗10年的工作经验》引出的思考

    从我的经历看来,大多从事互联网工作的技术工程师,都会将技术的提升放在自身发展的第一位,甚至成为一种执著.当然也必定会存在考虑自身综合素质的提升和进行刻意训练的技术人员,意识到自身事业发展并不能仅依靠技 ...

  6. ATL与MFC消息分发机制的对比---由金山开源代码引出的思考(一)

    博客已迁移至:http://kulv.sinaapp.com/,这里不再使用 ATL与MFC消息分发机制的对比---由金山开源代码引出的思考 (一) 前几天刚看金山开源代码时写了一篇博客分析了一下其消 ...

  7. error C2057: expected constant expression (C语言中数组的大小可以在程序运行时定义吗? )

    数组的大小可以在程序运行时定义吗? 不.在数组的定义中,数组的大小必须是编译时可知的,不能是在程序运行时才可知的.例如,假设i是一个变量,你就不能用i去定义一个数组的大小: char array[i] ...

  8. switch 语句编译报错Constant expression required

    switch表达式后面的数据类型只能是byte,short,char,int四种整形类型,枚举类型和java.lang.String类型(从java 7才允许),不能是boolean类型.

  9. <RTL设计的艺术> DDR带宽计算公式

    目录 一.问题背景 二.计算公式 三.公式解释 四.举例说明 五.总结 一.问题背景 给出一个DDR访问latency,以及主频等信息,怎么计算用户可以拿到的带宽? 二.计算公式 Bandwidth ...

最新文章

  1. Java的jar文件安装成windows 服务
  2. HQL查询(分页查询,动态sql查询,参数查询)
  3. mybaits四-3:获取保存数据的id
  4. 如何走近深度学习人脸识别?你需要这篇超长综述 | 附开源代码
  5. 【转贴】爱是莲花,最美的是清苦的莲心
  6. CSS定位—position:fixed
  7. 带圆圈大小的散点图_Python数据可视化,Matplotlib绘制“散点图”的两种方法!...
  8. vim 环境写 markdown 的插件推荐
  9. Spring,FetchType.LAZY和FetchType.EAGER什么区别?
  10. 领域驱动系列五模型驱动设计的构造块
  11. HIVE 1.1.0 启动时报错: Unsupported major.minor version 51.0
  12. [转帖]到底什么是时间复杂度
  13. echarts-市地图
  14. 分段插值法 | 分段线性插值 + 分段抛物插值
  15. java编程题代做,代做COMP 2406作业、代写Java语言作业、代做programming作业、代写Java程序实验作业...
  16. 乌镇世界互联网大会上,百度敲响了创新动能的“牛顿摆”
  17. linux 内网gcc版本安装,linux下手动安装/升级GCC到较高版本
  18. 华为云 云耀云服务器初体验
  19. element UI 表格做下滑滚动效果,请求接口数据
  20. 网站防御cdn和高防服务器,高防IP和高防CDN哪个防护更好?

热门文章

  1. 基于WinUSB的异步方式bulk传输的稳定性问题
  2. 解决QT-mingw32编译“ too many sections(...)”问题
  3. PTA(每日一题)7-59 武林盟主
  4. Android RecyclerView 实现快速滑动
  5. 如何引流更精准?如何精准定位客户群体?成功引流方案
  6. 露营好物推荐:极米轻薄投影仪Z6X Pro
  7. Glide加载网络图片出现模糊问题
  8. 统计遗传学:第三章,群体遗传
  9. 遗传算法(二)——编码
  10. tungsten-replicator安装