- 寄存器采样设计
一般设计中,寄存器优先采用上升沿采样,也可以设计用negedge clk采样,但最好不要混用,尤其在高频的设计中,双沿采样在频率不变时,提高数据速率,可能会导致数据采样出错;在低频下且最好为50%的占空比下,如果有设计要求可以使用双沿采样,例如时钟切换电路中,双沿采样可以消除时钟毛刺,或者有保持时钟速率不变的前提下需要提高数据速率的设计要求可以使用。 - 多bit信号传输
多bit信号又称做总线信号(Bus),在数字芯片内部传输总线信号时,往往带有一个有效脉冲信号,他总是伴随总线信号而发生,所以下一级逻辑器件可以通过采集脉冲信号检测总线信号是否发生变化,不需要比较当前总线与上一个总线信号的差别,节省逻辑和面积,但对于数字与模拟芯片之间的数据传递则无需这样使用。 - 组合环
设计中应该避免出现组合环的情况,可以通过在环的任意处插入寄存器处理,但最好重新构思设计对于分模块的设计,对模块的输出或输入打一拍,避免连接时出现组合环。 - 原理图与时序图
原理图帮助设计前分析一些特殊场景,例如cdc,自己去画时序图相当于更准确的分析理解设计需求,帮助与仿真波形对比快速去debug。 - 时序逻辑与组合逻辑
根据设计需求正确使用时序逻辑与组合逻辑,例如:对于需要历史数据的设计运用时序逻辑,对于实时的计算需要组合逻辑,总之,时序逻辑与组合逻辑的使用要从设计及时序的角度考虑。 - 关于debug
①重点仿真通用典型场景(常用功能);
②上电复位、时钟切换等关键电路的仿真;
③芯片内部自动复位,手动软件复位形式仿真,保证模块在下次运行是从初始状态开始运行;
④连续开关使能的场景仿真;
⑤边界情况,极端情况仿真;
⑥多设备之间仿真; - 设计使用有效信号代替分频
除了特定分频的设计要求,否则在设计时尽量减少构建分频时钟,最好使用有效信号代替分频,,因为时钟越少,意味着电路越简单,使用工具分析越容易,产生时序错误越少。 - rtl中的寻址
使用case或者if进行寻址操作
case(addr)
2'd0: mem[0] = a;
2;d1: mem[1]= a;
endcase
在SV中可以使用 mem[addr] = a;
参考链接: