Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 6695|回復: 3
打印 上一主題 下一主題

[問題求助] 想問有關task的語法?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-4-4 11:09:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想問一下有關task的語法$ [* R9 A: L" A, L$ x3 i, K
我所知道的是,task 可以有零個或者多個宣告來使用
" x% z( R5 N: t2 t5 k3 w, z' P但若我只是想在程式中 例用task的方式添加到主程式,把子程式放置在另一個檔案中 0 {# q" R; p5 o
這樣的方式不知該如何使用?9 E! @; x" A8 z

6 U( {* p$ K( U我目前是在撰寫用於simulation環境下的verilog code# D0 \3 B& b$ B% M, m8 q. O4 C
那我添加的部份是很大一段的 force訊號.. 這些訊號很明顯就沒有額外需要宣告in / out 的部份
  P" l; n) |- b* r那我該怎麼寫較好?0 i% f, J6 s) T3 [+ X

6 F" v2 E% K" a! n* U引述一下 簡短的程式
" F) y7 p. e8 k" Z! g7 }       for(i = 0; .. .. ..) begin3 q. ^6 j/ m' ^; o8 D2 X
        ... ...
' F; t6 X' m, z& L$ `* I       transfer_bulk_OUT(address, endpt, exp_bytecount, 1, Status);) ?' ^" a0 u+ J
       if (Status == MYNAK)
, i7 D# W* e- q" v1 l+ c/ |* a          printstatus(Status, MYNAK);
5 N9 b4 A& X/ Q9 H( |$ Z4 S       else" r. f* E! X$ e5 B& V4 f
          check_udc_if_hshk(1'b1, 1'b1);
2 |* A. W2 e! h' m3 {       #5000;9 x8 F. `/ B! L; H
    if(i == 1)  begin5 ~8 m! [% J2 Y: b* a
        #140_000;$ A+ O& c( N* _1 L
     z_fix_tasks;                        <= 在此部份想要添加子程式進來  可以這樣添加嗎?, j& o& g, A  K* E9 a1 N9 B+ I
    end
$ y: p: p* X5 V  T# u; fend
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2007-4-18 23:47:21 | 只看該作者
只要在initial 或 always的 block內 呼叫 TASK 即可以用吧

評分

參與人數 1 +3 收起 理由
greatsky + 3 感謝指教啦!這部份自己有嘗試出來不過 ...

查看全部評分

3#
 樓主| 發表於 2007-4-20 17:29:40 | 只看該作者

回復 #1 greatsky 的帖子

自己回覆一下好了!* {: ^3 o, e8 v5 D# i1 z

" t0 Z; {& ?! p: q" N1 Q$ Y我之前不解的地方是在 書本上所指的 task語法範例會包含輸入/輸出+ D5 h9 s* |" G9 q
ex: , B# M$ ~6 m6 d) W$ c
input    clk,a,b,c;: m" M* |1 m/ E: S' N  p
output  d_out;' f$ T# ^1 P3 J0 ^0 F+ j8 |
+ b9 L" v8 Q$ j6 F- ]
reg      d;
4 ^, ^( g2 P! y# |, y! h% }( galways (posedge clk) begin& H  f$ T) S. N( x9 p
       temp_task(a,b,c);
9 p, G+ A" u# P# N% D1 e3 ?       d_out = ~c;
, V: y# T% K8 {+ P2 i& x6 h, D( T9 Kend9 T9 |: [# U; x9 u

! l* C$ y5 C) _3 [6 ~, P. _6 D  task temp_task;8 K; j1 v9 i1 ~+ ?0 _$ A' s
     input  x,y;
3 K: ]! W$ I$ U  K$ V$ Q  I! l: b: k, V     output  z;% A" B+ e) ?4 J/ I3 ^* L1 Y! J# g5 T
   
2 b+ \' b, s- f# W3 D- K     reg z;
- }9 ~- D# c7 m+ ~( b) o' [         z = x + y;
0 A. s8 w, z( I6 @4 Y, u  endtask4 Y/ q, n* P! y" j% X
: b$ A+ _. @0 F: }* C1 u7 \
那我的情況,主要是只做單純的task 沒有in / out
- M% J- D5 b; y" \. e# I- }5 @4 ~所以直接在simulation中加入task's name(ex:temp_task)- l5 e6 J1 \* E  r
等到程式直接執行到該行就會進入到指定的task中,執行程式..' ?/ h& }$ m& b$ ^% @+ p

% F# N$ F9 l+ {" q3 I這個應該是蠻基本的...以前沒用過,在發問時不確定是不是能這麼做,編譯時一直出現Error,害我以為這樣會不能執行..Orz

評分

參與人數 1Chipcoin +3 收起 理由
masonchung + 3 勇於求知!多問多看囉

查看全部評分

4#
發表於 2007-11-7 11:13:34 | 只看該作者
ㄝ都,雖然年代久遠不過還是回答一下@@
; O( z6 a% C: @- R$ u4 W9 C' Y答案是可以的
, J$ o. D& y& x! \( gtask也可以不使用local variable9 G* j/ j+ k" N6 m% @- }. l+ O
直接也可以對golbal variable進行更動
# }+ P3 G  u  }6 x+ J4 F3 ]; S& W但是這個task的動作內容必須在同一個endmudule之內才可以。

評分

參與人數 1 +3 收起 理由
masonchung + 3 熱心回覆!

查看全部評分

您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-5-17 01:29 PM , Processed in 0.114014 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表