Chip123 科技應用創新平台
標題:
想問有關task的語法?
[打印本頁]
作者:
greatsky
時間:
2007-4-4 11:09 AM
標題:
想問有關task的語法?
我想問一下有關task的語法
5 c) Y/ p v- ]4 Q A# v, ]
我所知道的是,task 可以有零個或者多個宣告來使用
) g. \3 u; m& b. }* O( H6 p+ @+ j
但若我只是想在程式中 例用task的方式添加到主程式,把子程式放置在另一個檔案中
+ h1 Z! @+ F' X6 f B5 U' ]
這樣的方式不知該如何使用?
8 ~! D [) H7 b4 U. B8 u2 Y
: A; H5 p- c2 G0 b- |) E7 Z
我目前是在撰寫用於simulation環境下的verilog code
; b6 t/ l; W d) a% P
那我添加的部份是很大一段的 force訊號.. 這些訊號很明顯就沒有額外需要宣告in / out 的部份
5 V/ H+ S% ]: ^$ c/ v& h) j* }. P
那我該怎麼寫較好?
a: Z" Q, E* B
* M6 L7 E1 T" \) j7 B* `7 M1 y
引述一下 簡短的程式
3 j/ n9 S$ A. b
for(i = 0; .. .. ..) begin
M# m5 E) m+ m. Y- F
... ...
# K, `' M; M! j8 @( [/ t
transfer_bulk_OUT(address, endpt, exp_bytecount, 1, Status);
8 k/ t8 s1 N2 c& P# i
if (Status == MYNAK)
2 e" l8 m: J5 a* C
printstatus(Status, MYNAK);
' f! q; F9 q" P$ J2 |0 o" T9 O
else
: ^% X; c t/ o2 c
check_udc_if_hshk(1'b1, 1'b1);
1 X7 e2 K* \* [; \( L6 ^) Y
#5000;
/ a/ o. L3 ^9 K" G
if(i == 1) begin
, k( L1 \# V& i. W( J$ y/ t+ j
#140_000;
7 g3 q* h3 D$ B- [# k9 ]1 b
z_fix_tasks; <= 在此部份想要添加子程式進來 可以這樣添加嗎?
' N7 p9 g" }7 B9 T
end
2 d; k, X2 u3 i6 h- b) ?9 T
end
作者:
masonchung
時間:
2007-4-18 11:47 PM
只要在initial 或 always的 block內 呼叫 TASK 即可以用吧
作者:
greatsky
時間:
2007-4-20 05:29 PM
標題:
回復 #1 greatsky 的帖子
自己回覆一下好了!
/ T( E P2 i& j+ w# K' V
9 ^/ D% f: z, w) l9 }
我之前不解的地方是在 書本上所指的 task語法範例會包含輸入/輸出
. Z- z8 W1 u0 G4 g& [
ex:
( z& s1 C y. F# @ Z, d
input clk,a,b,c;
: @$ M% w# h4 Z1 U+ Q6 b! _
output d_out;
+ [4 R4 G. J3 u6 Y
1 e; R2 v! V8 A( B
reg d;
+ o# e" r( H$ X# H& [5 M
always (posedge clk) begin
1 X3 P' H: R/ s
temp_task(a,b,c);
9 _1 ^4 B; U+ u" C( ?: ^
d_out = ~c;
6 P" I+ ]1 l, V0 v5 e: z" M
end
# C- Y, N& J4 s. K1 u' A
" b+ C! W! G+ E
task temp_task;
q' m- t1 _. H# m
input x,y;
+ Q f) \) R% k t) S# z
output z;
( B% _; {, U) m& b0 Z0 h- ?; y/ N
4 E" V% p/ m7 {8 m% Y! ?4 d. C
reg z;
% Q% ?7 [% s; a, y- P, N
z = x + y;
4 l. y; h8 `# b: s) b% [- ~
endtask
& H$ \1 z; H0 C
" c& N' V Y7 I* T- r! f
那我的情況,主要是只做單純的task 沒有in / out
8 d7 \- L7 Y% [
所以直接在simulation中加入task's name(ex:temp_task)
" `+ C% t' W1 W7 q
等到程式直接執行到該行就會進入到指定的task中,執行程式..
+ p- o$ N8 a! R# O& p4 D5 f2 L
5 Y7 a: [' k3 t3 @' r8 j, G% q, K
這個應該是蠻基本的...以前沒用過,在發問時不確定是不是能這麼做,編譯時一直出現Error,害我以為這樣會不能執行..Orz
作者:
stanlly9
時間:
2007-11-7 11:13 AM
ㄝ都,雖然年代久遠不過還是回答一下@@
- m! M- f. ?" Q* \, @$ {
答案是可以的
6 \* O2 z4 l4 F( b6 l- c
task也可以不使用local variable
) Z) M* a, D8 y* ^$ g& x
直接也可以對golbal variable進行更動
/ |. a* ]2 y I" A6 j
但是這個task的動作內容必須在同一個endmudule之內才可以。
歡迎光臨 Chip123 科技應用創新平台 (http://free.vireal.world/chip123_website/innoingbbs/)
Powered by Discuz! X3.2