Verilog可综合的语法

可综合的含义是

把语言描述变成电路网表,综合软件采用器件库提供的标准单元将RTL级描述转换成门级网表,具体综合过程如下:

  1. 综合软件读取RTL级代码(可综合的代码),将其转换成门级网表,确保门级的网表的输入输出关系与RTL代码描述的输入输出关系保持一致

  2. 对门级网表进行优化(局部优化)

  3. 采用器件库内标准的原件或者FPGA内部的逻辑单元实现优化后的门级网表

而乐鑫2022数字IC实习类笔试最后一个多选题也考了关于Verilog可综合的语法,查阅了一下相关资料,这篇文章总结的很全

所有综合工具都支持的结构:
always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter

所有综合工具都不支持的结构:

time,defparam,$finish,fork,join,initial,delays,UDP,wait

有些工具支持有些工具不支持的结构:

casex,casez,wand,triand,wor,trior,real,disable,forever,arrays,memories,repeat,task,while

Verilog中提供了四种循环语句,可用于控制语句的执行次数,分别是for、while、repeat、forever

关于while、repeat、forever:

while和repeat可以综合,但是循环次数需要在编译之前就确定,动态改变循环次数是不可综合的,forever是不可综合的,它主要用来产生各种激励

部分参考: http://xilinx.eetrend.com/content/2019/100045400.html