询问:关于verilog的综合
我的愚见
task的情况比较复杂了,也可以是组合逻辑电路,也可以是时序逻辑(状态机),它完成的是一种封装(仅仅是一种封装),不是特定的东西,仿真中用的比较多.
个人的愚见是task这样的东东在综合方面用处不上很大,因为代码面向综合的时候,基本是RTL级描述和数据流描述(门级描述也有的吧),代码复用比较少.
而在高层仿真中就不一样了,比如一个数字设备的输入输出,可以用两种操作描述,读,写;这样就可以定义read(),write()两个task实现封装,然后在高层仿真中
,也就是类似于c/c++的描述风格中去调用这些task;类似c/c++的高层描述中,向来是讨厌有底层的实现细节的,向什么ddr sdram,单片机的读和写是一个连续的
时序过程(里面有很多延时,以及精确的周期控制等细节),这时候就可以用task来封装了,这样在高层的描述中就看不到那些延时啊,精确周期控制等细节了,可以专注与其他的高层功能仿真.
我具体一点当用task做一个状太机欠套时,我可以时现,但是我想搞明白它这时对应的电路节构
兄弟:我说task可以描述的状态机是高层描述(精确周期控制的描述,这样的描述风格,目前的工具只支持仿真),
你想用task来封装整个状态机的实现,并且拿来综合!(要不综合,就不要问task会综合成什么东西!)
真的想请教你是用什么工具的,copy一个给我啊,公布您老的代码,让小弟弟学习学习.
因为我当年在task里想写上alway语句,都报错了(这也就是我上面说的,task在综合中不实用的原因,做做组合逻辑还行,
一碰到时续方面的就不能综合了,除非你的状态机没有下面这语句:
always
@ (posedge clk or negedge rst)
if( !rst) state <= idle
else
state <= next;
没有了这个就不是状态机罗)!你怎么就可以了呢!?不会是吹吹牛吧!
最后说的就是:
综合出来的电路结构都那样,就是两级寄存器(锁存也包括)之间插入一个组合逻辑,要么几是组合逻辑带着时续逻辑,再加上IO
我想全天下的数字电路无非是这些结构组合和叠加!
你 老是问task会综合成什么,说明你水平还很菜,对硬件描述语言的综合机理及仿真语义还很不明白!
希望日后再努力努力!
同意2楼看法。
look lattice isplever
前面的几位,我想问一问几位老大,让你们实现状态机的欠套,你们怎么写,给个具体例子?
废话,当然每个task里,实现的无非就是个组合逻辑!我是说使用task后,从RTL视图上看是5个状态机的欠套。同时可以看出在每个用于单令用于欠套的模块中都有时钟信号和复位信号。这样可以认为它们每一个都对应了一定的时序电路,而如果把所有的状态一起列出来,中和出来的RTL视图,就没有这5个部分了,我是想问,怎么看出这5个子部分的组合关系?要么你给举个状态机欠套的例子,verilog或 vhdl的都行,最好把代码写出来
学习了啊,,,
