[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gEDA-user: problem with vpi




[ Ales here, I'm reposting this since majordomo didn't recognize the
  e-mail as being subscribed to the geda-user mailinglist.  I am way late
  on forwarding these list posts (probably useless by now), but that is
  the result if you are oddly subscribed and I go on vacation :-]

-- Cut here -- 
From: Matthew Ballance <ballancm@yahoo.com>


Hi All,
    I've added this functionality as part of my
efforts to build an interactive user-interface to
Iverilog... Perhaps now is the time to submit my
Iverilog patches... ;-)

---Matt

----- Ales Hvezda <ahvezda@seul.org> wrote:
> 
> [ Ales here, I'm reposting this since majordomo
> didn't recognize the
>   e-mail as being subscribed to the geda-dev
> mailinglist. Some of these
>   are a few weeks old, since they got misplaced. 
> Sorry. ]
>   
> -- Cut here --
> 
> I am trying to learn about vpi interface to verilog.
> I have been reading the Cadance VPI users Guide and
> Reference.
> I have succesfully written a hello vpi world module.
> 
> Now I was trying some thing a bit more interesting.
> To print out
> module and nets.
> At the moment it core dumps at the following point.
>      topModIterator = vpi_iterate(vpiModule,NULL);
> according to the guide vpi_iterate should return a
> handle to a module,
> with the second
> parameter being NULL it should give me the the top
> module.
> 
> I am using snapshot 20011209. Does anyone know how
> to set up their
> enviroment so I can use ddd  to get a better idea as
> to what is going
> wrong.
> 
> Thanks
> 
> 
> 
>
/*******************************************************************************
> 
>  * Test vpi program
>  * vpi handle  File = printNets.c
> 
>
*******************************************************************************/
> 
> #include <stdio.h>
> #include <vpi_user.h>
> 
>
/******************************************************************************
> 
>  * User
> program                                             
>                  *
>  * my
> handle
> *
> 
>
******************************************************************************/
> 
> void printModules(){
> 
>      vpiHandle topModIterator;
>      vpiHandle topModHandle;
>      vpiHandle modHandle;
> 
>      vpiHandle netIterator;
>      vpiHandle netHandle;
> 
>      char *NetName, *ModName;
>      vpi_printf("got to here \n");
>      /* create a module iterator that starts at the
> top  as indicated by
> NULL */
>      topModIterator = vpi_iterate(vpiModule,NULL);
>      vpi_printf("got to here1 \n");
>      if( !topModIterator ){
>    return ;
>      }
> 
>      /* use vpi_scan to iterate throught modules */
>      while( topModHandle =
> vpi_scan(topModIterator)){
> 
> 
>    netIterator = vpi_iterate(vpiNet,topModHandle);
>    if(netIterator){
>         while( netHandle = vpi_scan(netIterator)){
>       NetName = vpi_get_str(vpiName, netHandle);
>       modHandle = vpi_handle(vpiModule, netHandle);
>       ModName   = vpi_get_str(vpiName, modHandle);
>       if( ModName){
>     vpi_printf("Net %s is in module %s
> \n",NetName,ModName);
>       }
>         }
>    }
>      }
> 
> 
> }
> 
> 
>
/*****************************************************************************
> 
>  * Creating  structure
> 
>
*****************************************************************************/
> 
> void my_handle_register()
> {
>       s_vpi_systf_data tf_data;
> 
>       tf_data.type      = vpiSysTask;
>       tf_data.tfname    = "$printNets";
>       tf_data.calltf    = printModules;
>       tf_data.compiletf = 0;
>       tf_data.sizetf    = 0;
>       vpi_register_systf(&tf_data);
> 
> }
> // register the  task
> 
> void (*vlog_startup_routines[]) () = {
>  my_handle_register,
>  0
> };
> #############################
> 
> ##Sample make file to compile a vpi routine with
> iverilog
> CC = gcc
> OBJECTS = printNets.o
> DLL = printNets.vpi
> CFLAG = -0
> 
> #compile all the objects
> .c.o:;
>  $(CC) -c -g -o   $@ $<
> 
> all: $(DLL) graycntr.v
>  iverilog -N graycntr.v -o graycntr -m
> ./printNets.vpi
> 
> $(DLL): $(OBJECTS)
>  $(CC) -o $(DLL) -shared $(OBJECTS) -lvpi
> 
> clean :
>  rm -rf *.o
>  rm -rf *.vpi
>  rm -rf *~
>  rm -rf core
> ----
> Stephen Lohning
> mailto:stephen.lohning@oxnee.com
> Oxnee Pty Ltd                                  
> http://www.oxnee.com
> ph: +61 (0)419506038
> 


__________________________________________________
Do You Yahoo!?
Send your FREE holiday greetings online!
http://greetings.yahoo.com