gpt4 book ai didi

verilog - 在 assign 语句中使用长嵌套的 if-else 是一种不好的做法吗?

转载 作者:行者123 更新时间:2023-12-01 09:57:25 26 4
gpt4 key购买 nike

我有时在嵌套 if-else 循环的 verilog 中使用长赋值语句。

例子

assign a = (b) ? '1 : ((c&d) ? '0 : ((f&h) ? '1 : '0));

另一种方法是使用 always_comb 逻辑 block 。但是,上述方法可以节省时间并且易于快速编码。

最佳答案

格式化

嵌套的条件连续赋值没有错,但是有办法让它更具可读性:

assign a = (b)    ? '1
: (c&d) ? '0
: (f&h) ? '1
: '0;

但是,这仍然是一个“if...else if...else if...else”结构,您应该问自己的一个问题是这段代码的目的是什么以及它如何“读取” .如果上面的代码使用始终和“”if...else if...else if...else”结构,则上面的代码可能更容易阅读(同时合成相同的代码)。

下面是一个干净使用嵌套条件连续赋值的例子:

assign a = (state == STATE1) ? '1
: (state == STATE2) ? '0
: (state == STATE3) ? '1
/* default */ : '0;

可读性

请考虑,您显示的表单可能会节省最初输入代码的时间,但让您的代码具有可读性会带来更高的值(value)。无论是你自己,还是其他设计师,在一年或更长时间后查看代码时,都会欣赏到一种让他们能够快速掌握逻辑在做什么的形式。

通过使用支持自动扩展片段(或缩写)的编辑器,可以在不损失可读性的情况下加快编码速度。我将 vim 与缩写一起使用,这些缩写真正加快了所有 block 结构输入的速度,并使用对齐脚本让我可以垂直对齐给定的字符(如“=”或“(”)或选择中的字符串。

关于verilog - 在 assign 语句中使用长嵌套的 if-else 是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23091314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com