[logo] 
 
Home
News
Activity
About/Contact
Major Tools
  Dinotrace
  Verilator
  Verilog-mode
  Verilog-Perl
Other Tools
  BugVise
  CovVise
  Force-Gate-Sim
  Gspice
  IPC::Locker
  Rsvn
  SVN::S4
  SystemPerl
  Voneline
  WFH
General Info
  Papers

Issue #359

DPI problem with wide (>32 bit) task arguments

Added by Chandan Egbert almost 2 years ago. Updated almost 2 years ago.

Status:Closed Start date:06/21/2011
Priority:Normal Due date:
Assignee:Wilson Snyder % Done:

0%

Category:TranslationError
Target version:-

Description

When a task whose argument is wider than 32 bits is exported as a DPI call, calling the task from C appears to do nothing. The generated C code does not seem to assign the passed arguments to the internal variable. Run the attached example with "sh doit.sh" to see the problem.

dpi_issue2.tgz - example to reproduce the problem (922 Bytes) Chandan Egbert, 06/21/2011 07:22 am

History

Updated by Wilson Snyder almost 2 years ago

  • Status changed from New to Assigned
  • Assignee set to Wilson Snyder

There are several DPI fixes in the git version, is this against that or the release?

Updated by Chandan Egbert almost 2 years ago

It is against the very latest I pulled from git last night.

Updated by Wilson Snyder almost 2 years ago

Hints on debugging:

You can see the internals.txt file in the distribution directory.

Modify test_regress/t_dpi_export.v to show the problem.

Then run test_regress/t/t_dpi_export.pl --debug. and/or --debugi-V3Task 9

You'll see the test_regress/obj_dir/t_dpi_export/.tree files and probably see the relevant additions of DPI wrapper code occurs in the _task.tree step. So, the code is probably broken in V3Task.cpp.

Updated by Wilson Snyder almost 2 years ago

I noted the t_dpi_export.v test already had a 96 bit task, and checks that the value gets passed. You might want to compare that with your failing case to see what's different.

Updated by Chandan Egbert almost 2 years ago

Actually, t_dpi_export.v has a 95 bit task (input bit [94:0] i ...). If I change it to 96 bits or 128 bits, I see the problem. It seems like there is an issue with integer multiples of 32 bits.

Updated by Wilson Snyder almost 2 years ago

Ahh, a big hint. Do you want to stab more at repairing this?

Updated by Chandan Egbert almost 2 years ago

I spent a few hours trying to nail down the cause of the problem, but no luck. I will look at it more on the weekend and if I need help, I'll yell.

Updated by Wilson Snyder almost 2 years ago

  • Status changed from Assigned to Closed

Had a few minutes to took a look, it's an emitter problem. Fixed in git.

Also available in: Atom