问verilog中task的问题
时间:12-11
整理:3721RD
点击:
☆─────────────────────────────────────☆
mixig (学习ing) 于 (Sat Oct 4 16:32:31 2008) 提到:
从verilog语法书上看task里面可以包含时序操作,这个时序操作应该怎么写,此时任务应该怎么调用,可以综合吗?
我自己试了一下下面的代码(自己想当然了,呵呵),还是没有能综合出时序电路来,综合出来的是一堆组合电路,就跟下面的组合电路一样
always (rst or A or B or Cin)
if(rst) {Co,Sum}=2'b00 ;
else {Co,Sum} = A + B + Cin ;
module task_test(clk,rst,A,B,Cin,Sum,Co);
input clk,rst,A,B,Cin;
output Sum,Co;
reg Sum,Co;
always begin
adder(A,B,Cin,clk,rst,Sum,Co);
end
task adder;
input A,B,Cin,clk,rst;
output Sum,Co;
@ (posedge clk or posedge rst) begin
if(rst) {Co,Sum}=2'b00 ;
else {Co,Sum} = A + B + Cin ;
end
endtask
endmodule
谢谢啦
☆─────────────────────────────────────☆
LanYieL (唵嘛呢叭咪吽) 于 (Sun Oct 5 20:17:44 2008) 提到:
你的task中的output是非阻塞赋值么?
有时序的可综合语句应该是非阻塞赋值的吧
task中的时序操作应该是指可以消耗时间的语句
比如, #10 ns;应该是不可综合的
【 在 mixig (学习ing) 的大作中提到: 】
: 从verilog语法书上看task里面可以包含时序操作,这个时序操作应该怎么写,此时任务应该怎么调用,可以综合吗?
: 我自己试了一下下面的代码(自己想当然了,呵呵),还是没有能综合出时序电路来,综合出来的是一堆组合电路,就跟下面的组合电路一样
: always (rst or A or B or Cin)
: ...................
☆─────────────────────────────────────☆
katyusza (生如夏花☆我没有远方) 于 (Mon Oct 6 11:13:28 2008) 提到:
我圡,
我从来都没用过task。。。。
【 在 mixig (学习ing) 的大作中提到: 】
: 从verilog语法书上看task里面可以包含时序操作,这个时序操作应该怎么写,此时任务应该怎么调用,可以综合吗?
: 我自己试了一下下面的代码(自己想当然了,呵呵),还是没有能综合出时序电路来,综合出来的是一堆组合电路,就跟下面的组合电路一样
: always (rst or A or B or Cin)
: ...................
☆─────────────────────────────────────☆
gaoz (gaoz) 于 (Mon Oct 6 11:53:30 2008) 提到:
行为描述,用什么都无所谓。
物理综合的话,不同综合器的理解和映射方式不同,避免歧异最好只用:assign和always。特别对于含有时序的综合,如果用for,while,task什么的,鬼知道被Map成什么时序?
【 在 katyusza (生如夏花☆我没有远方) 的大作中提到: 】
: 我圡,
: 我从来都没用过task。。。。
☆─────────────────────────────────────☆
mixig (学习ing) 于 (Mon Oct 6 12:05:43 2008) 提到:
平常写RTL的时候,一般也是只用assign和always,只是现在重新啃verilog语法的时候看到了有些不常见的一些东东就想试试到底综合出来是什么样子,呵呵
【 在 gaoz (gaoz) 的大作中提到: 】
: 行为描述,用什么都无所谓。
: 物理综合的话,不同综合器的理解和映射方式不同,避免歧异最好只用:assign和always。特别对于含有时序的综合,如果用for,while,task什么的,鬼知道被Map成什么时序?
☆─────────────────────────────────────☆
xaoyao (玄之又玄) 于 (Mon Oct 6 12:09:04 2008) 提到:
其实最好是只用assign描述组合逻辑
always只用来描述时序逻辑...
【 在 mixig (学习ing) 的大作中提到: 】
: 平常写RTL的时候,一般也是只用assign和always,只是现在重新啃verilog语法的时候看到了有些不常见的一些东东就想试试到底综合出来是什么样子,呵呵
mixig (学习ing) 于 (Sat Oct 4 16:32:31 2008) 提到:
从verilog语法书上看task里面可以包含时序操作,这个时序操作应该怎么写,此时任务应该怎么调用,可以综合吗?
我自己试了一下下面的代码(自己想当然了,呵呵),还是没有能综合出时序电路来,综合出来的是一堆组合电路,就跟下面的组合电路一样
always (rst or A or B or Cin)
if(rst) {Co,Sum}=2'b00 ;
else {Co,Sum} = A + B + Cin ;
module task_test(clk,rst,A,B,Cin,Sum,Co);
input clk,rst,A,B,Cin;
output Sum,Co;
reg Sum,Co;
always begin
adder(A,B,Cin,clk,rst,Sum,Co);
end
task adder;
input A,B,Cin,clk,rst;
output Sum,Co;
@ (posedge clk or posedge rst) begin
if(rst) {Co,Sum}=2'b00 ;
else {Co,Sum} = A + B + Cin ;
end
endtask
endmodule
谢谢啦
☆─────────────────────────────────────☆
LanYieL (唵嘛呢叭咪吽) 于 (Sun Oct 5 20:17:44 2008) 提到:
你的task中的output是非阻塞赋值么?
有时序的可综合语句应该是非阻塞赋值的吧
task中的时序操作应该是指可以消耗时间的语句
比如, #10 ns;应该是不可综合的
【 在 mixig (学习ing) 的大作中提到: 】
: 从verilog语法书上看task里面可以包含时序操作,这个时序操作应该怎么写,此时任务应该怎么调用,可以综合吗?
: 我自己试了一下下面的代码(自己想当然了,呵呵),还是没有能综合出时序电路来,综合出来的是一堆组合电路,就跟下面的组合电路一样
: always (rst or A or B or Cin)
: ...................
☆─────────────────────────────────────☆
katyusza (生如夏花☆我没有远方) 于 (Mon Oct 6 11:13:28 2008) 提到:
我圡,
我从来都没用过task。。。。
【 在 mixig (学习ing) 的大作中提到: 】
: 从verilog语法书上看task里面可以包含时序操作,这个时序操作应该怎么写,此时任务应该怎么调用,可以综合吗?
: 我自己试了一下下面的代码(自己想当然了,呵呵),还是没有能综合出时序电路来,综合出来的是一堆组合电路,就跟下面的组合电路一样
: always (rst or A or B or Cin)
: ...................
☆─────────────────────────────────────☆
gaoz (gaoz) 于 (Mon Oct 6 11:53:30 2008) 提到:
行为描述,用什么都无所谓。
物理综合的话,不同综合器的理解和映射方式不同,避免歧异最好只用:assign和always。特别对于含有时序的综合,如果用for,while,task什么的,鬼知道被Map成什么时序?
【 在 katyusza (生如夏花☆我没有远方) 的大作中提到: 】
: 我圡,
: 我从来都没用过task。。。。
☆─────────────────────────────────────☆
mixig (学习ing) 于 (Mon Oct 6 12:05:43 2008) 提到:
平常写RTL的时候,一般也是只用assign和always,只是现在重新啃verilog语法的时候看到了有些不常见的一些东东就想试试到底综合出来是什么样子,呵呵
【 在 gaoz (gaoz) 的大作中提到: 】
: 行为描述,用什么都无所谓。
: 物理综合的话,不同综合器的理解和映射方式不同,避免歧异最好只用:assign和always。特别对于含有时序的综合,如果用for,while,task什么的,鬼知道被Map成什么时序?
☆─────────────────────────────────────☆
xaoyao (玄之又玄) 于 (Mon Oct 6 12:09:04 2008) 提到:
其实最好是只用assign描述组合逻辑
always只用来描述时序逻辑...
【 在 mixig (学习ing) 的大作中提到: 】
: 平常写RTL的时候,一般也是只用assign和always,只是现在重新啃verilog语法的时候看到了有些不常见的一些东东就想试试到底综合出来是什么样子,呵呵