企业级verilog代码怪谈

企业级verilog代码怪谈

(里面的话来自于蜂鸟cpu设计那本书,本人不知道是否属实,仅供一乐)

欢迎来到企业级verilog代码的世界,在编写你的代码时,请务必遵循以下规则:

  1. 如果有寄存器,请不要使用always块,如果有DFT模块,请实例化它。
gnrl_dfflr #(1) flg_dfflrs(flg_ena, flg_nxt, flg_r, clk, rst_n);
  1. 如果遇见
if (sel1)
    out = in1[3:0];
else if (sel2)	
    out = in2[3:0];
else if (sel3)
    out = in3[3:0];
else
    out = 4'b0;

不要害怕,请改成:

assign out = ({4{sel1}} & in1[3:0])
            |   ({4{sel2}} & in2[3:0])
            |   ({4{sel3}} & in3[3:0])

请记住,if-else和case并不能传播不定态,编译器只会产生选择电路,而不是并行选择电路。

  1. 不要轻易在数据通路上使用带有reset的寄存器,它的寄存器面积与时序会比较落后,如果你必须使用,请在控制通路上。
  2. 请务必牢记,Clock和Reset信号应该被禁止用于除了连接DFF其他的逻辑。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值