Chip123 科技應用創新平台
標題:
想問有關task的語法?
[打印本頁]
作者:
greatsky
時間:
2007-4-4 11:09 AM
標題:
想問有關task的語法?
我想問一下有關task的語法
. X. s) j6 t6 x* i% L" p
我所知道的是,task 可以有零個或者多個宣告來使用
: y- G+ ~# M/ ]% R4 P n9 e
但若我只是想在程式中 例用task的方式添加到主程式,把子程式放置在另一個檔案中
* G4 s; {2 l$ e, B8 W. ] n
這樣的方式不知該如何使用?
, w* K. y) y; E5 H j8 Z( ]( v
4 f6 a0 Z% Q( t% b& R" d$ u
我目前是在撰寫用於simulation環境下的verilog code
- ?9 f6 D% P% ]# F' M* O. ?& J
那我添加的部份是很大一段的 force訊號.. 這些訊號很明顯就沒有額外需要宣告in / out 的部份
S7 n6 W6 G7 i( ?$ D# |) V
那我該怎麼寫較好?
7 e s& A2 L( `# L; x, `
# ?* }. L# Q' y, e5 ^( {$ Q
引述一下 簡短的程式
) e( D" T6 ]% f3 L; C
for(i = 0; .. .. ..) begin
. _/ f. D" C5 n8 t/ b7 R& o' Z0 n
... ...
J. o- C3 T* b8 V! {
transfer_bulk_OUT(address, endpt, exp_bytecount, 1, Status);
# G) o! s& ?9 p" E
if (Status == MYNAK)
! W- t) t7 ?% y
printstatus(Status, MYNAK);
6 f8 h k5 I7 N
else
8 I, z8 w L5 O4 f* i" w+ r
check_udc_if_hshk(1'b1, 1'b1);
# b5 M- l. r8 m' @- o1 q
#5000;
$ C' G- C2 ?/ t; f
if(i == 1) begin
" P/ u& y% g) s+ m
#140_000;
* i3 M% q) {, b$ g S
z_fix_tasks; <= 在此部份想要添加子程式進來 可以這樣添加嗎?
5 W& b% a# Y8 k- ~0 z
end
9 d* T" j. x2 r
end
作者:
masonchung
時間:
2007-4-18 11:47 PM
只要在initial 或 always的 block內 呼叫 TASK 即可以用吧
作者:
greatsky
時間:
2007-4-20 05:29 PM
標題:
回復 #1 greatsky 的帖子
自己回覆一下好了!
- d/ m9 k2 [5 D2 F: h
1 T; x& X h0 ~ j" \
我之前不解的地方是在 書本上所指的 task語法範例會包含輸入/輸出
' B5 m0 r* O+ C) I2 y
ex:
, {% `* ]. R6 r, G# {% T
input clk,a,b,c;
; Z4 z* A1 Y; J& y8 w' q5 Z
output d_out;
$ D/ @2 [0 n7 X4 W5 D8 u
2 T7 v4 C, P: J% J" }/ c
reg d;
# ^* n2 |6 k- ?( e% f
always (posedge clk) begin
/ p4 m. A9 P. n1 o6 `" G
temp_task(a,b,c);
6 ~/ @: k* m7 L
d_out = ~c;
2 U" m- c [6 p) f o% l; X1 c# W+ k
end
# Q* ?7 }& K4 L( x/ u- l# r3 ?4 ?
( i2 x8 a1 g* q& j3 q# G1 W& G. ]
task temp_task;
1 w& h/ h& I9 x) c1 g
input x,y;
+ y8 x2 u) Z+ r- B9 y2 d
output z;
) Q- H' e" I1 K2 H0 [9 x
7 h+ o( n8 w& R$ L- w
reg z;
+ ^5 b% }7 O% c6 @. }! F
z = x + y;
! w! ?5 `/ d4 [" S. [; D" p9 S
endtask
& R' W: \3 V- j. Q1 F
' P" a, u: ~: y2 l5 Y7 n5 J# j1 k
那我的情況,主要是只做單純的task 沒有in / out
9 R+ }( j% ]" z8 ` K
所以直接在simulation中加入task's name(ex:temp_task)
. S3 M( r4 f; b
等到程式直接執行到該行就會進入到指定的task中,執行程式..
) a9 e/ c. l* O% o- \0 D. a. S4 F
9 l, S4 m$ n8 l: o- B9 L
這個應該是蠻基本的...以前沒用過,在發問時不確定是不是能這麼做,編譯時一直出現Error,害我以為這樣會不能執行..Orz
作者:
stanlly9
時間:
2007-11-7 11:13 AM
ㄝ都,雖然年代久遠不過還是回答一下@@
7 z( M- M/ L! o* L' G9 H# ]9 u5 m
答案是可以的
3 C" @, F, _( A' O: t4 S1 ~+ p
task也可以不使用local variable
% C6 G) N' w9 Y
直接也可以對golbal variable進行更動
) w* y& f/ a2 h- |$ |) O6 I$ t
但是這個task的動作內容必須在同一個endmudule之內才可以。
歡迎光臨 Chip123 科技應用創新平台 (http://www.chip123.com/)
Powered by Discuz! X3.2