ModelSim::List - Analyse the 'list' output of the ModelSim simulator
This document describes ModelSim::List 0.06 released on 2 June, 2007.
use ModelSim::List; $list = ModelSim::List->new; # ram.lst is generated by ModelSim # simulator (via the "write list" command) $list->parse('ram.lst') or die $list->error(); # get the value of signal /ram/address at time 100: $value = $list->strobe('/ram/address', 100); # get the time when signal /alu/rdy get the value 1: $time = $list->time_of('/alu/rdy', 1); # specify regex rather than actual value: $time = $list->time_of('/processor/bus_data', qr/^z+$/i); $time = $list->time_of($signal, $value, $start_time); $time = $list->time_of($signal, $value, $start_time, $end_time); die $list->error() unless defined $time;
This module provides a class named ModelSim::List with which the EDA tester can easily check in the signals contained in the files generated by ModelSim's "write list" command in a programming manner.
ModelSim::List
"write list"
$list = ModelSim::List->new()
This is the constructor of the ModelSim::List class.
$list->parse($file_name)
This method gets the object parse the list file specified as $file_name. You can invoke the parse method on the same object several times. Once you specify a list file, the new file will override the old one completely. No matter whether you use an -event option in your "write list" command to generate the file or not, the object will recognize the list format automatically.
$file_name
-event
I'd like to give one example for each of the two file format here:
ns /ram/mfc delta /ram/bus_data 0 +2 1 xxxxxxxx 0 +3 0 zzzzzzzz 10 +0 1 0000aaaa 10 +1 0 0000abcd 29 +0 1 0000abcd 38 +0 0 0000abcd 38 +2 0 zzzzzzzz 86 +0 1 zzzzzzzz 86 +1 1 0000abcd
and if you use the -event option in the "write list" command, the list file will like follows:
@0 +0 /ram/mfc x /ram/mfc 0 /ram/bus_data zzzzzzzz /ram/bus_data zzzzzzzz @10 +0 /ram/bus_data 0000abcd @29 +0 /ram/mfc 1 @38 +0 /ram/mfc 0 @38 +2
The method returns 1 to indicate success. When it returns undef, it is recommended to check the error info via the error() method.
error()
$list->error()
Returns the error message for the last failed operation.
$list->strobe($signal, $time)
The strobe method are used to get the value of a signal named $signal at any given time instant, $time. The object will preserve the original signal value format used in the list file. No format conversion will happen.
$signal
When strobe() returns undef, it is recommended to check the detailed info via the error() method if you feel surprised.
strobe()
CAUTION: The delta number will be totally ignored. Therefore, if signal /module/a becomes 0 at "0 ns +0", and changes to 1 at "0 ns +1", thus $obj->strobe('/module/a', 0) will return 1 rather than 0.
$obj->strobe('/module/a', 0)
$list->time_of($signal, $value, ?$start, ?$end)
You can utilize the time_of method to get the time instant when $signal first gained the value $value within the time interval specified by $tart and $end. Both the last two arguments are optional. In the case that $start is missing, the initial time 0 will be assumed. If the signal fails to achieve $value, time_of will return undef.
$value
$tart
$end
If the $value argument is a regex ref, time_of will perform pattern matching instead of string comparing.
When time_of() returns undef, it is recommended to check the detailed info via the error() method if you feel surprised.
time_of()
You can always get the latest source from the following Subversion repository:
http://svn.openfoundry.org/modlesimlist
which has anonymous access to all.
If you do want a commit bit, please let me know.
There must be some serious bugs lurking somewhere. If you find one, please consider firing off a report to http://rt.cpan.org.
I use Devel::Cover to test the code coverage of this module and here is the report:
---------------------------- ------ ------ ------ ------ ------ ------ ------ File stmt bran cond sub pod time total ---------------------------- ------ ------ ------ ------ ------ ------ ------ blib/lib/ModelSim/List.pm 89.4 82.8 77.8 91.7 40.0 99.7 85.0 ---------------------------- ------ ------ ------ ------ ------ ------ ------
Agent Zhang (<agentzh@gmail.com>)
Copyright (C) 2005-2007 by Agent Zhang. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
ModelSim Command Reference
To install ModelSim::List, copy and paste the appropriate command in to your terminal.
cpanm
cpanm ModelSim::List
CPAN shell
perl -MCPAN -e shell install ModelSim::List
For more information on module installation, please visit the detailed CPAN module installation guide.