vienkāršas VPI ikdienas izmantojot Icarus

P

pini_1

Guest
Icarus simulators, šķiet, lai izsauktu manu sistēmu fuction tikai 0 laiku.Es nevaru saprast, kas ir nepareizi ar manu kodu:

modulis cntM ();
reg CLK;
reg [03:00] cnt;

Sākotnējā sākt
CLK = 1'b0;
cnt = 4'd0;
uz visiem laikiem CLK = # 5 ~ CLK;
beigas

vienmēr @ (posedge CLK) sākas
ja (cnt == 4'd2) sākas
$ Reg_acc (cnt);
$ Displejs ("dbg% d", $ laiks);
beigas
cnt <= cnt 4'd1;
beigas

Sākotnējā sākt
$ Dumpfile ("vpi.vcd");
$ Dumpvars (0 cntM);
# 400 $ apdare;
beigas

endmodule# Ietvert <vpi_user.h>

statisko int reg_acc_compiletf (char * user_data)
(
vpiHandle H1, H2, H3;
h1 = vpi_handle (vpiSysTfCall, NULL);
h2 = vpi_iterate (vpiArgument, h1);
h3 = vpi_scan (H2);
vpi_printf ("nosaukums roktura ir% s \ n", vpi_get_str (vpiFullName, H3));

s_vpi_time laiku;
time.type = vpiSimTime;
vpi_get_time (NULL, un laiks);
vpi_printf ("pēc% d \ n", time.low);
/ *
s_vpi_value val = (vpiBinStrVal);
vpi_get_value (H3, & val);
vpi_printf ("vērtība ir% s \ n", val.value.str);
* /
s_vpi_value val;
val.format = vpiIntVal;
vpi_get_value (H3, & val);
vpi_printf ("vērtība ir% d \ n", val.value.integer);

vpi_free_object (h2);
atpakaļ 0;
)

statisko int reg_acc_calltf (char * user_data)
(
atpakaļ 0;
)

par spēkā neesošu reg_acc_register ()
(
s_vpi_systf_data tf_data;

tf_data.type = vpiSysTask;
tf_data.tfname = "$ reg_acc";
tf_data.calltf = reg_acc_calltf;
tf_data.compiletf = reg_acc_compiletf;
tf_data.sizetf = 0;
tf_data.user_data = 0;
vpi_register_systf (& tf_data);
)

par spēkā neesošu (* vlog_startup_routines [])() = (
reg_acc_register,
0
);

#! / Bin / bash

rm $ 1.vvp *. VCD
iverilog-VPI $ 1.c | | izvešanas
iverilog-o $ 1.vvp $ 1.v | | izvešanas
vvp-M.M $ 1 $ 1.vvp | | izvešanasrezultāts
Apkopo reg_acc.c ...
Making reg_acc.vpi no reg_acc.o ...
rokturis nosaukums ir cntM.cnt
0
vērtība ir 0
VCD info: dumpfile vpi.vcd atvērta produkciju.
dbg 25
dbg 185
dbg 345

 

Welcome to EDABoard.com

Sponsor

Back
Top