在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2146|回复: 8

[讨论] verilog风格之always块写法的battle

[复制链接]
发表于 2022-4-8 11:53:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 秋刀鱼91 于 2022-4-8 14:04 编辑

对一个简单的mux+DFF的电路,对应verilog有下面两种写法,大家觉得哪种风格更好呢?
首先我说下我个人的看法,我觉得风格I很清晰,时序逻辑和组合逻辑完全独立,对应电路结构一目了然,但是综合工具对这种写法不会自动插ICG cell。风格II的写法在综合过程可以自动插ICG,但是代码结构稍微混乱,后期debug也不是很方便。
大家觉得呢?

《风格I》
assign pll_en_d     = sw_en ? pll_en_dvfs : pll_en_default;
assign pll_en_dvfs  = pll_en_wen ? pll_en_value : pll_en;
always @(posedge clk or negedge rst_n) begin
    if(~rst_n) begin
        pll_en <= 1'b1;
    end else begin
        pll_en <= pll_en_d;
    end
end


《风格II》
always @(posedge clk or negedge rst_n) begin
    if(~rst_n) begin
        pll_en <= 1'b1;
    end else if(sw_en) begin
        if(pll_en_wen)
            pll_en <= pll_en_value;
        else
            pll_en <= pll_en;
    end else begin
        pll_en <= pll_en_default;
    end
end








发表于 2022-4-8 18:07:20 | 显示全部楼层
都不怎么样
 楼主| 发表于 2022-4-8 18:34:35 | 显示全部楼层


大佬给个建议
发表于 2022-4-8 21:18:25 | 显示全部楼层
image.png 我的写法
发表于 2022-4-14 10:07:50 | 显示全部楼层


axi
自己写  搞得定吗?
发表于 2022-4-14 21:30:51 | 显示全部楼层


ipex 发表于 2022-4-14 10:07
axi
自己写  搞得定吗?


又不是多复杂的逻辑,为什么搞不定
发表于 2022-4-18 14:41:32 | 显示全部楼层


这种就是楼主说的第二种写法,但是由于补全了非必要的else,所以后端工具有可能不自动插入门控(我没用过后端工具,也是看到的说法)。
发表于 2022-4-18 15:02:22 | 显示全部楼层
我并不觉得第一种风格比第二种风格有优势。
且不说风格二对后端工具可能比较友好,工具能自动插入门控,就单纯的代码风格而言风格一可读性太差了。如果你就是模块的设计者,你写起来可能没什么问题,排版什么的也非常舒服,但是后面接手这个模块的就倒霉了。
也许风格一在后端流程里面对一些连线和寄存器的命名比较规范,方便debug?楼主说的是这意思吗?
发表于 2022-4-21 16:06:52 | 显示全部楼层
不太同意楼上的说法,明显风格1这种把组合逻辑和时序逻辑分开的写法更能体现设计思想和电路层次,一眼就能知道设计长啥样。
但是风格1的例子也太倔强了吧哈哈哈,为啥不把两个结合在一起,在风格1 always块加入en的逻辑,但是en和D端逻辑的生成在Always外部。这样顺便可以把这个寄存器模块单独拿出来,加入一些assertion也方便,用到的时候例化就行了,代码更清爽。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-24 15:01 , Processed in 0.023622 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表