verilog - “分配”操作中的操作优先级?
问题描述
通常,assign
陈述简单明了。但是假设有一个复杂的有括号和连接以及一堆不同的运算符;语句右侧的运算符的评估优先级的确切顺序是什么assign
?
有许多不同的运算符类型:
arithmetic
logical
relational
equality
bitwise
reduction
shift
concatenation
replication
conditional
换句话说,如果要将assign
语句转换为always
块,组织操作的确切顺序是什么?
回答
感谢@dave_59,根据 IEEE 的文档,降序排列的优先级是:
操作员 | 关联性 |
---|---|
() , [] , :: ,. |
剩下 |
+ , - , ! , ~ , & , ~& , | , ~| , ^ , ~^ , ^~ , ++ , -- (一元) |
|
** |
剩下 |
* , / ,% |
剩下 |
+ , - (二进制) |
剩下 |
<< , >> , <<< ,>>> |
剩下 |
< , <= , > , >= , inside ,dist |
剩下 |
== , != , === , !== , ==? ,!=? |
剩下 |
& (二进制) |
剩下 |
^ , ~^ , ^~ (二进制) |
剩下 |
| (二进制) |
剩下 |
&& |
剩下 |
|| |
剩下 |
?: (条件运算符) |
对 |
–> ,<–> |
对 |
= , += , -= , *= , /= , %= , &= , ^= , \|= , <<= , >>= , <<<= , >>>= , := , :/ ,<= |
没有任何 |
{} ,{{}} |
级联 |
解决方案
IEEE 1800-2017 SystemVerilog LRM的第 11.3.2 节运算符优先级对此进行了详细定义。
推荐阅读
- version - BLAS官方参考版本有什么区别?
- elasticsearch - ElasticSearch min_score 调优
- python - Kivy标签验证IP地址时无法刷新
- unity3d - 为特定构建禁用第三方 SDK
- php - 查找在另一个unix时间戳mysql同一天的所有记录
- sql - 按一列排序,但如果另一列为空,则推送到末尾
- json - 在 spock 测试中将参数传递给 json
- c# - C# 单元测试中简单易读的方法,在断言相等失败时仅显示对象之间的差异
- broadleaf-commerce - Broadleaf - 热诊所演示 - 构建失败
- ms-access - 如何使用表格一次填写 28 个条目