来源:FPGA入门到精通
在Verilog设计中,并非所有代码都能转化为硬件,对于可综合设计和不可综合设计,FPGAer是必须掌握的。
本文将深入探讨Verilog中的可综合设计与不可综合设计,揭示它们之间的差异,并提供一些建议参考。
一、哪些语句可综合?
2、端口声明 ( input , output , inout )3、参数定义 ( parameter , localparam )5、门级原语 ( and , or , not 等)8、条件语句 ( if , case ) 和 循环语句 ( for , while )如 initial 块, # 延迟,系统任务( $display , $finish 等),它们仅用于仿真。fork , join ,表示仿真中的并行结构,不被综合。wait ,用于仿真中信号的电平检测,不适用于硬件。 force , release ,在仿真中用于阻断其他驱动源。casex , casez ,某些工具可能支持非x/z比较逻辑。wand , triand 等,现代数字设计中较少使用。 repeat , while , forever ,在某些条件下可能可综合。关键信号一定要使用复位信号而非在变量声明时赋初值。组合逻辑使用阻塞赋值“=”,时序逻辑使用非阻塞赋值“<=”。组合逻辑使用assign语句或always@(*)语句。时序逻辑使用always@(posedge clk)这样的语句。