Problem using Icarus

S

Steve

Guest
Hello all,
I have just started using Icarus. Had no problems compiling it and
installing gtkwave and getting both to work.

I have created a small ALU module to teach myself these tools. I know
this module works because I have tested it on Silos under windows.
Here is my problem when compiling it:
----------------------------------------
I use this hierarchy:
_______________________
| alu_testbench.v |
-------------------------
|
-----------------------------------------------
| | |
alu_bfm.v alu_watcher.v alu_core.v


alu_core.v contains the behavioral description

alu_watcher.v contains all the signals of interest so only that
particular module is used with the waveform viewer while verifying the
correctness. Can be safely eliminated

alu_bfm.v contains the stimulus to the module

alu_testbench.v simply contains an instantiation of all the three
modules. I have also included this code to obtain a .vcd dumpfile, in
the testbench:



initial

begin



$dumpvars;

$dumpfile ("alu.vcd");

end



initial

begin

$dumpon;

#2000 $dumpoff;

end

------------------------------------------
then I compile the module using:

iverilog -cfiles (where the file "files" contains all three four
files mentioned above)

vvp a.out
Which gives me a correct output on the screen

Now when I inspect the alu.vcd file it is empty.

I compiled the same code with Silos under Windows and the .vcd dump
obtained from there was perfect and worked well with gtkwave.

I'm sure I am doing something wrong here when compiling the code, or I
have out the dump code in the wrong place.

Can I compile more than one modules using the -c option?
If I combine all the modules in one file, that will make managing
bigger projects very cumbersome. Is there a way in Icarus that we can
build/compile a whole project instead of a single file.

This is what happens when you have been pampered using Windows based
tools for too long :)
Please let me know if any other information is required.
I will appreciate any/all help with this.

Steve
 
On Sat, 10 Apr 2004 15:38:58 -0700, Steve wrote:


initial
begin
$dumpvars;
$dumpfile ("alu.vcd");
end

Now when I inspect the alu.vcd file it is empty.
I ran into this too. I discovered that if you give $dumpvars
some arguments it works. You're supposed to be able to use
it with no arguments - as you proved using Silos - but Icarus
wants to see args. My little test example uses $dumpvars(3, test)
where "test" is the scope name to trace and 3 is the trace depth.

HTH.
 
Here is how use dumpvar to print every signal.
//dump var
initial begin
$dumpfile("1.dump");
$dumpvars(0, TB);
end //of initial

selective dump
//dump var
initial begin
$dumpfile("1.dump");
$dumpvars(1, TB_topSCtx);
$dumpvars(1, TB_topSCtx.U_DUT);
end //of initial

compilation script example
#!/bin/bash

echo "***************************** compile start"
rm dut.vvp
iverilog -I../ -o dut.vvp -ctb.f -DRX_VEC_GEN -DSCRAM_VEC -DSIM
-y../../../memories/verilog/
where the file tb.f looks like
TB_topSCtx.v
TB_DSSS_CCK_arbiter.v
TB_CCK_corelator.v
TB_CCK_deMod.v
TB_DSSS_deMod.v
TB_data_checker.v
TB_diff_decoder.v
TB_fifo_4_reg.v
TB_InetrPmon.v
TB_FFT_data_checker.v
.../InterPolator/TB_Host.v
topSCtx.v
id_translation.v
top_symbol_gen.v
.../top_bit_gen/TB_DataInterface.v
.../top_bit_gen/TB_fft_frame_build.v
.../top_bit_gen/top_bit_gen.v
.../top_bit_gen/bit_genMUX.v
.../top_bit_gen/sfd.v
.../CRC/CRC.v
.../SCheader/SCheader_top.v
.../SCheader/d_shift_reg.v
.../SCheader/len_conv.v
.../SCheader/div_11.v
.../bit_gen_ctrl/bit_gen_ctrl.v
.../data_interface/data_interface.v
.../S2P/S2P.v
.../Scrambler/Scrambler.v
.../Scrambler/TB_deScrambler.v
.../Scrambler/TB_P2S.v
.../diffEncoder/diffEncoder.v
modulator_mux.v
.../DSSSmod/DSSSmod.v
.../CCKmod/CCKmod.v
.../InterPolator/InterPolator.v
.../InterPolator/InterP_ram.v
.../fft_fr_builder/fft_fr_builder.v
.../fft_fr_builder/fft_zero_pad_to_64.v
.../fft_fr_builder/fifo.v
.../fft_fr_builder/measure_3_2.v
.../fft_fr_builder/reg_arr.v
.../fft_fr_builder/wr_ctrl.v
.../TestModule/TestModule.v

moox <hotmoox@hotmail.com> wrote in message news:<pan.2004.04.11.00.40.53.97126@hotmail.com>...
On Sat, 10 Apr 2004 15:38:58 -0700, Steve wrote:


initial
begin
$dumpvars;
$dumpfile ("alu.vcd");
end

Now when I inspect the alu.vcd file it is empty.

I ran into this too. I discovered that if you give $dumpvars
some arguments it works. You're supposed to be able to use
it with no arguments - as you proved using Silos - but Icarus
wants to see args. My little test example uses $dumpvars(3, test)
where "test" is the scope name to trace and 3 is the trace depth.

HTH.
 
moox wrote:
On Sat, 10 Apr 2004 15:38:58 -0700, Steve wrote:



initial
begin
$dumpvars;
$dumpfile ("alu.vcd");
end


Now when I inspect the alu.vcd file it is empty.


I ran into this too. I discovered that if you give $dumpvars
some arguments it works. You're supposed to be able to use
it with no arguments - as you proved using Silos - but Icarus
wants to see args.
Has anyone filed a bug report for this? Or browsed the database
to see if it's already been reported?

--
Steve Williams "The woods are lovely, dark and deep.
steve at icarus.com But I have promises to keep,
http://www.icarus.com and lines to code before I sleep,
http://www.picturel.com And lines to code before I sleep."
 
Steve wrote:

$dumpvars;

$dumpfile ("alu.vcd");

Now when I inspect the alu.vcd file it is empty.
I looked at the source for the current snapshot, and this should
work fine. You don't say which version you are using, but you may
be seeing a problem that has long since been fixed.
--
Steve Williams "The woods are lovely, dark and deep.
steve at icarus.com But I have promises to keep,
http://www.icarus.com and lines to code before I sleep,
http://www.picturel.com And lines to code before I sleep."
 
moox <hotmoox@hotmail.com> wrote in message news:<pan.2004.04.11.00.40.53.97126@hotmail.com>...
I ran into this too. I discovered that if you give $dumpvars
some arguments it works. You're supposed to be able to use
it with no arguments - as you proved using Silos - but Icarus
wants to see args. My little test example uses $dumpvars(3, test)
where "test" is the scope name to trace and 3 is the trace depth.

HTH.
I have $dumpvars; without any arguments in Icarus and it worked fine
(dumped all the signals in the design). Maybe you need to put the
$dumpfile statement before the $dumpvars statement.
 

Welcome to EDABoard.com

Sponsor

Back
Top