RE: [sv-cc] example code errors in I.12.9 ?

From: Bresticker, Shalom <shalom.bresticker_at_.....>
Date: Sun Mar 01 2009 - 23:43:47 PST
Someone in the Verfication Guild claimed, for example, the MyType has to be declared as packed.

You disagree?

Thanks,
Shalom

________________________________
From: Warmke, Doug [mailto:doug_warmke@mentor.com]
Sent: Monday, March 02, 2009 8:10 AM
To: Bresticker, Shalom; SV-CC
Subject: RE: [sv-cc] example code errors in I.12.9 ?

Hi Shalom,

The example has a couple of problems that make it unable to compile,
but not in the code related to DPI.  The ... in the struct declarations, for example.
Another problem is that the import function "foo" is called in the middle of nowhere
in $unit, which isn't allowed.

I got the example working fine in the simulator available to me by correcting
those MyType declarations and the other minor syntax errors.

No LRM-related changes appear necessary.

Regards,
Doug

test.c:
#include "svdpi.h"
typedef struct { int x; } MyType;
void foo(const svOpenArrayHandle hin, const svOpenArrayHandle hout)
{
int count = svSize(hin, 1);
  MyType *s = (MyType *)svGetArrayPtr(hin);
  MyType *d = (MyType *)svGetArrayPtr(hout);
  if (s && d) {
  /* both arrays have C layout */
  /* an efficient solution using pointer arithmetic */
  while (count--)
  *d++ = *s++;

} else   {   /* less efficient yet implementation independent */
   int i = svLow(hin, 1);
   int j = svLow(hout, 1);
   while (i <= svHigh(hin, 1)) {
   *(MyType *)svGetArrElemPtr1(hout, j++) =
   *(MyType *)svGetArrElemPtr1(hin, i++);
   }
 }
}

test.sv:
typedef struct {
    int x;
} MyType;
import "DPI-C" function void foo(input MyType i [], output MyType o []);
MyType source [11:20];
MyType target [11:20];
module top;
    initial begin
        source[11].x = 123;
        source[20].x = 999;
        foo(source, target);
        $display("source[11].x=%0d, source[12].x=%0d, source[20].x=%0d, target[11].x=%0d, target[12].x=%0d, target[20].x=%0d",
            source[11].x, source[12].x, source[20].x, target[11].x, target[12].x, target[20].x);
    end
endmodule

Regards,
Doug

From: owner-sv-cc@server.eda.org [mailto:owner-sv-cc@server.eda.org] On Behalf Of Bresticker, Shalom
Sent: Sunday, March 01, 2009 9:44 PM
To: SV-CC
Subject: [sv-cc] example code errors in I.12.9 ?

Hi, SV-CC.

Please see the discussion in http://verificationguild.com/modules.php?name=Forums&file=viewtopic&p=14513 on the example code in I.12.9 and comment on whether changes are needed.

Thanks,
Shalom

Shalom Bresticker
Intel Jerusalem LAD DA
+972 2 589-6582
+972 54 721-1033



---------------------------------------------------------------------

Intel Israel (74) Limited



This e-mail and any attachments may contain confidential material for

the sole use of the intended recipient(s). Any review or distribution

by others is strictly prohibited. If you are not the intended

recipient, please contact the sender and delete all copies.

--
This message has been scanned for viruses and
dangerous content by MailScanner<http://www.mailscanner.info/>, and is
believed to be clean.
---------------------------------------------------------------------
Intel Israel (74) Limited

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Sun Mar 1 23:48:52 2009

This archive was generated by hypermail 2.1.8 : Sun Mar 01 2009 - 23:49:10 PST