EDA365电子论坛网

标题: 了解一下DPI吧(续) [打印本页]

作者: haidaowang    时间: 2020-7-23 14:45
标题: 了解一下DPI吧(续)

3 |7 o! @( b7 Q8 c" Y: e引言
' P# w* e; E. ^& F2 {  _& ]+ u- R. z; T
对于SV,无论是构造测试激励,还是模拟硬件的并行行为,DPI都是非常方便的。上次我们介绍了SV里面通过“import”导入并调用C函数。) N- T" M: f. @0 \: M- E8 u9 s' P5 v/ S
" h* B9 w$ T6 \" L/ W# U6 ]
本小节,我们通过一个简单的例子来说明C语言函数如何调用SV的task和function。
2 V2 P) t2 h! o3 ^* i
4 O* Z: u9 Q: V
, R6 U6 q) Z6 S) p. X. j+ z1,SV部分+ c. W8 d! {* t

& n/ o. S3 ?( Z" N8 l: ?5 P% x# i5 O# S* S" t0 b) t4 e" w
           0 U1 ^3 f) M6 B9 M  g* ^" i

: c& d7 f$ e+ i) e7 y2,C部分6 q5 I: Z3 R& y% j
) D6 |' T3 T/ M, a- @3 N
9 o# u" t/ C1 T# X6 H
            
+ J% E/ V+ c7 v2 X  n
2 F0 o% s5 p9 }8 U3,脚本6 k" d1 o$ L# ~: K6 U0 {6 z

  Z" b. E$ C2 k$ E2 W( V
; c- Y) t* S3 @3 |, D+ H& D& b* v               : `/ F+ s  B- Y8 ]& ?' j# Z# {, ^

) O' w$ s. @5 ?: i- r% h4,说明9 \/ ?- [2 D% m1 q" h) i) Q6 e
仔细体会我们上面构造的例子,有几个问题需要弄清楚。
. }/ L. `. f! O1 u4 Y8 k- g, x9 b7 J7 d. s0 F
a,scope的含义:
, d' {, I- \: ?+ z) T; j& {* |+ q* T. O- R8 ]7 s( ]! Z' Q* ?3 \
在SV端,m1是不能直接调用m2中的task/function的,所以m1里面调用的C函数也不能直接调用m2中export出来的task/function,如果想调用,必须进行scope切换。/ \) \; S1 j# N" [) h

% r! b* _8 j6 _& g' g: t1 Eb,SV端,有task和function的区分,但是在C端,并没有区分,一律是C函数。( ?/ ~5 G% i% J+ Y( o" j" f
# K% D; Y5 X$ ^0 F

& B3 X5 N& H! ~' x. V5,关于用C模拟硬件的并行行为
1 G8 V- y' A$ i5 H( A, v. ~3 l7 b" D% M8 Y; d9 b
方式a,将流水后面的模块写在前面。5 i7 k  ^& o; k3 L/ s9 A" Z; Z
7 g5 h* J4 k4 B2 N' P
方式b,将所有并行的信号写成如下形式:
+ K  {2 \2 u! a4 C9 o4 X- N1 y% ~3 W" A
用c,n两个变量模拟reg的值。
3 e& C6 q* A  K$ p# x
' T& m, u& ?  h用init和update两个函数模拟reg的行为。
3 O1 v1 J7 D+ r" t) d$ n6 w& n
: D  o- ^4 b' y- K2 a! z             ! Y6 J5 k+ H/ x" V4 [( V
- j, @9 S  o1 l5 z1 S
& K0 R6 M: Q' |+ h

/ E  `- I8 t3 v8 m, E5 a+ U: V6 ^& x9 k$ C
% s1 b/ _. y0 ]: B6 {6 I. T
4 C/ L* }7 m$ x
! g  c" e( f9 F4 \7 p* u

作者: xiaogegepcb    时间: 2020-7-23 15:42
DPI(续)




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2