verilator/test_regress/t/t_debug_emitv.out
Geza Lore 60d5f0e86b
Emit model implementation as loose methods. (#3006)
This patch introduces the concept of 'loose' methods, which semantically
are methods, but are declared as global functions, and are passed an
explicit 'self' pointer. This enables these methods to be declared
outside the class, only when they are needed, therefore removing the
header dependency. The bulk of the emitted model implementation now uses
loose methods.
2021-06-13 14:33:11 +01:00

247 lines
7.6 KiB
Plaintext

module Vt_debug_emitv;
input logic clk;
input logic in;
signed int [31:0] t.array[0:2];
logic [15:0] t.pubflat;
logic [15:0] t.pubflat_r;
signed int [31:0] t.fd;
signed int [31:0] t.i;
signed int [31:0] t.cyc;
signed int [31:0] t.fo;
signed int [31:0] t.sum;
signed real t.r;
string t.str;
signed int [31:0] t._Vpast_0_0;
signed int [31:0] t._Vpast_1_0;
signed int [31:0] t.unnamedblk3.i;
@(*)@([settle])@([initial])@(posedge clk)@(negedge
clk)always @(
*)@(
[settle])@(
[initial])@(
posedge
clk)@(
negedge
clk) begin
$display("stmt");
end
always @([settle])@([initial])@(posedge clk)@(negedge
clk) begin
$display("stmt");
end
initial begin
// Function: f
$write("stmt\nstmt 0 99\n");
// Function: t
$display("stmt");
// Function: f
$write("stmt\nstmt 1 -1\n");
// Function: t
$display("stmt");
// Function: f
$display("stmt");
$display("stmt 2 -2");
// Function: t
$display("stmt");
$display("stmt");
end
???? // CFUNC '_final_TOP'
$display("stmt");
always @(posedge clk)@(negedge clk) begin
$display("posedge clk");
end
always @(posedge clk)@(negedge clk) begin
__Vdly__t.pubflat_r <= t.pubflat;
end
always @(posedge clk)@(negedge clk) begin
__Vdly__t.cyc <= (32'sh1 + t.cyc);
__Vdly__t.r <= (0.01 + t.r);
t.fo = t.cyc;
// Function: inc
__Vtask_t.sub.inc__2__i = t.fo;
__Vtask_t.sub.inc__2__o = (32'h1 + __Vtask_t.sub.inc__2__i[31:1]);
t.sum = __Vtask_t.sub.inc__2__o;
// Function: f
__Vfunc_t.sub.f__3__v = t.sum;
begin : label0
begin : label0
if ((32'sh0 == __Vfunc_t.sub.f__3__v)) begin
__Vfunc_t.sub.f__3__Vfuncout = 32'sh21;
disable label0;
end
__Vfunc_t.sub.f__3__Vfuncout = (32'h1
+ __Vfunc_t.sub.f__3__v[2]);
disable label0;
end
end
t.sum = __Vfunc_t.sub.f__3__Vfuncout;
$display("[%0t] sum = %~", $timet.sum, t.sum);
$display("a?= %d", ($c(32'sh1) ? $c(32'sh14)
: $c(32'sh1e)));
$c(;);
$display("%d", $c(0));
$fopen(72'h2f6465762f6e756c6c);
$fclose(t.fd);
$fopen(72'h2f6465762f6e756c6c, 8'h72);
$fgetc(t.fd);
$fflush(t.fd);
$fscanf(t.fd, "%d", t.sum);
;
$fdisplay(32'h69203d20, "%d", t.sum);
$fwrite(t.fd, "hello");
$readmemh(t.fd, t.array);
$readmemh(t.fd, t.array, 32'sh0);
$readmemh(t.fd, t.array, 32'sh0, 32'sh0);
t.sum = 32'sh0;
t.unnamedblk3.i = 32'sh0;
begin : label0
while ((t.unnamedblk3.i < t.cyc)) begin
t.sum = (t.sum + t.unnamedblk3.i);
if ((32'sha < t.sum)) begin
disable label0;
end
else begin
t.sum = (32'sh1 + t.sum);
end
t.unnamedblk3.i = (32'h1 + t.unnamedblk3.i);
end
end
if ((32'sh63 == t.cyc)) begin
$finish;
end
if ((32'sh64 == t.cyc)) begin
$stop;
end
if (in) begin
$display("1");
end
else begin
$display("default");
end
if (in) begin
$display("1");
end
else begin
$display("default");
end
if (in) begin
$display("1");
end
else begin
$display("default");
end
if (in) begin
$display("1");
end
else begin
$display("default");
end
if (in) begin
$display("1");
end
else begin
$display("0");
end
priority if (in) begin
$display("1");
end
else begin
$display("0");
end
unique if (in) begin
$display("1");
end
else begin
$display("0");
end
unique0 if (in) begin
$display("1");
end
else begin
$display("0");
end
$display("%d%d", t._Vpast_0_0t._Vpast_1_0,
t._Vpast_1_0);
t.str = $sformatf("cyc=%~", t.cyc);
;
$display("str = %@", t.str);
$display("%% [%t] [%^] to=%o td=%d", $time$realtime
$time$time, $realtime$time$time, $time
$time, $time);
$sscanf(40'h666f6f3d35, "foo=%d", t.i);
;
$printtimescale;
if ((32'sh5 != t.i)) begin
$stop;
end
t.sum =
???? // RAND
32'sha;
$display("%g", $log10(t.r));
$display("%g", $ln(t.r));
$display("%g", $exp(t.r));
$display("%g", $sqrt(t.r));
$display("%g", $floor(t.r));
$display("%g", $ceil(t.r));
$display("%g", $sin(t.r));
$display("%g", $cos(t.r));
$display("%g", $tan(t.r));
$display("%g", $asin(t.r));
$display("%g", $acos(t.r));
$display("%g", $atan(t.r));
$display("%g", $sinh(t.r));
$display("%g", $cosh(t.r));
$display("%g", $tanh(t.r));
$display("%g", $asinh(t.r));
$display("%g", $acosh(t.r));
$display("%g", $atanh(t.r));
end
/*verilator public_flat_rw @(posedge clk)@(negedge
clk) t.pubflat*/
always @(posedge clk)@(negedge clk) begin
__Vdly__t._Vpast_0_0 <= t.cyc;
end
always @(posedge clk)@(negedge clk) begin
__Vdly__t._Vpast_1_0 <= t.cyc;
end
__Vdly__t._Vpast_1_0 = t._Vpast_1_0;
t._Vpast_1_0 = __Vdly__t._Vpast_1_0;
__Vdly__t._Vpast_0_0 = t._Vpast_0_0;
t._Vpast_0_0 = __Vdly__t._Vpast_0_0;
__Vdly__t.r = t.r;
t.r = __Vdly__t.r;
__Vdly__t.cyc = t.cyc;
t.cyc = __Vdly__t.cyc;
__Vdly__t.pubflat_r = t.pubflat_r;
t.pubflat_r = __Vdly__t.pubflat_r;
always @(negedge clk) begin
$display("negedge clk, pfr = %x", t.pubflat_r);
end
signed int [31:0] __Vtask_t.sub.inc__2__i;
signed int [31:0] __Vtask_t.sub.inc__2__o;
signed int [31:0] __Vfunc_t.sub.f__3__Vfuncout;
signed int [31:0] __Vfunc_t.sub.f__3__v;
logic [15:0] __Vdly__t.pubflat_r;
signed int [31:0] __Vdly__t.cyc;
signed real __Vdly__t.r;
signed int [31:0] __Vdly__t._Vpast_0_0;
signed int [31:0] __Vdly__t._Vpast_1_0;
endmodule
package Vt_debug_emitv___024unit;
endpackage
package Vt_debug_emitv_Pkg;
endpackage
class Vt_debug_emitv___024unit__03a__03aCls;
signed int [31:0] member;
???? // CFUNC '__VnoInFunc_method'
???? // CFUNC 'new'
$_CSTMT(_ctor_var_reset(vlSymsp);
);
$unit::Cls.member = 32'sh1;
endclass
/*class*/package Vt_debug_emitv___024unit__03a__03aCls__Vclpkg;
end/*class*/package