More V3EmitV support (#5779)
This commit is contained in:
parent
ffb02cea15
commit
b645fcf027
|
|
@ -235,6 +235,18 @@ class EmitVBaseVisitorConst VL_NOT_FINAL : public EmitCBaseVisitorConst {
|
|||
void visit(AstCoverInc*) override {} // N/A
|
||||
void visit(AstCoverToggle*) override {} // N/A
|
||||
|
||||
void visit(AstTestPlusArgs* nodep) override {
|
||||
putfs(nodep, nodep->verilogKwd());
|
||||
putbs("(");
|
||||
iterateChildrenConst(nodep);
|
||||
puts(")");
|
||||
}
|
||||
void visit(AstValuePlusArgs* nodep) override {
|
||||
putfs(nodep, nodep->verilogKwd());
|
||||
putbs("(");
|
||||
iterateChildrenConst(nodep);
|
||||
puts(")");
|
||||
}
|
||||
void visitNodeDisplay(AstNode* nodep, AstNode* fileOrStrgp, const string& text,
|
||||
AstNode* exprsp) {
|
||||
putfs(nodep, nodep->verilogKwd());
|
||||
|
|
@ -476,7 +488,7 @@ class EmitVBaseVisitorConst VL_NOT_FINAL : public EmitCBaseVisitorConst {
|
|||
bool inPct = false;
|
||||
putbs("");
|
||||
for (const char c : format) {
|
||||
if (c == '%') {
|
||||
if (!inPct && c == '%') {
|
||||
inPct = true;
|
||||
} else if (!inPct) { // Normal text
|
||||
string s;
|
||||
|
|
@ -676,6 +688,13 @@ class EmitVBaseVisitorConst VL_NOT_FINAL : public EmitCBaseVisitorConst {
|
|||
iterateAndNextConstNull(nodep->itemsp());
|
||||
puts("}");
|
||||
}
|
||||
void visit(AstEnumItemRef* nodep) override {
|
||||
if (AstNodeModule* const classOrPackagep = nodep->classOrPackagep()) {
|
||||
putfs(nodep, classOrPackagep->prettyName());
|
||||
puts("::");
|
||||
}
|
||||
putfs(nodep, nodep->name());
|
||||
}
|
||||
void visit(AstEnumItem* nodep) override {
|
||||
putfs(nodep, nodep->name());
|
||||
iterateConstNull(nodep->rangep());
|
||||
|
|
|
|||
|
|
@ -23,10 +23,30 @@ module Vt_debug_emitv_t;
|
|||
union {
|
||||
logic a;
|
||||
} unu;
|
||||
integer signed i1;
|
||||
int signed array[0:2];
|
||||
initial begin
|
||||
array = '{0:32'sh1, 1:32'sh2, 2:32'sh3};
|
||||
end
|
||||
initial begin
|
||||
begin
|
||||
if ($test$plusargs(40'h48454c4c4f)) begin
|
||||
$display("Hello argument found.");
|
||||
end
|
||||
if ((Pkg::FOO == 'sh0)) begin
|
||||
$write("");
|
||||
end
|
||||
if ((ZERO == 'sh0)) begin
|
||||
$write("");
|
||||
end
|
||||
if ($value$plusargs(56'h544553543d2564i1)) begin
|
||||
$display("value was %~", i1);
|
||||
end
|
||||
else begin
|
||||
$display("+TEST= not found");
|
||||
end
|
||||
end
|
||||
end
|
||||
bit [6:5] [4:3] [2:1] arraymanyd[10:11][12:13][14:15];
|
||||
logic [15:0] pubflat;
|
||||
logic [15:0] pubflat_r;
|
||||
|
|
@ -120,6 +140,8 @@ module Vt_debug_emitv_t;
|
|||
int signed sum;
|
||||
real r;
|
||||
string str;
|
||||
int signed mod_val;
|
||||
int signed mod_res;
|
||||
always @(posedge clk) begin
|
||||
begin
|
||||
cyc <= (cyc + 'sh1);
|
||||
|
|
@ -240,6 +262,7 @@ module Vt_debug_emitv_t;
|
|||
$stop;
|
||||
end
|
||||
sub.r = 62.0;
|
||||
mod_res = (mod_val % 'sh5);
|
||||
$display("%g", $log10(r));
|
||||
$display("%g", $ln(r));
|
||||
$display("%g", $exp(r));
|
||||
|
|
@ -308,4 +331,9 @@ package Vt_debug_emitv_p;
|
|||
endpackage
|
||||
package Vt_debug_emitv_Pkg;
|
||||
logic signed [31:0] PKG_PARAM;
|
||||
typedef enum int signed{
|
||||
FOO = 32'h0,
|
||||
BAR = 32'h1,
|
||||
BAZ = 32'h2
|
||||
} enum_t;
|
||||
endpackage
|
||||
|
|
|
|||
|
|
@ -7,6 +7,12 @@
|
|||
|
||||
package Pkg;
|
||||
localparam PKG_PARAM = 1;
|
||||
|
||||
typedef enum int {
|
||||
FOO = 0,
|
||||
BAR,
|
||||
BAZ
|
||||
} enum_t;
|
||||
endpackage
|
||||
package PkgImp;
|
||||
import Pkg::*;
|
||||
|
|
@ -52,8 +58,18 @@ module t (/*AUTOARG*/
|
|||
us_t us;
|
||||
union_t unu;
|
||||
|
||||
integer i1;
|
||||
int array[3];
|
||||
initial array = '{1,2,3};
|
||||
initial begin
|
||||
if ($test$plusargs("HELLO")) $display("Hello argument found.");
|
||||
if (Pkg::FOO == 0) $write("");
|
||||
if (ZERO == 0) $write("");
|
||||
if ($value$plusargs("TEST=%d", i1))
|
||||
$display("value was %d", i1);
|
||||
else
|
||||
$display("+TEST= not found");
|
||||
end
|
||||
|
||||
bit [6:5][4:3][2:1] arraymanyd[10:11][12:13][14:15];
|
||||
|
||||
|
|
@ -125,6 +141,8 @@ module t (/*AUTOARG*/
|
|||
int sum;
|
||||
real r;
|
||||
string str;
|
||||
int mod_val;
|
||||
int mod_res;
|
||||
always_ff @ (posedge clk) begin
|
||||
cyc <= cyc + 1;
|
||||
r <= r + 0.01;
|
||||
|
|
@ -195,6 +213,8 @@ module t (/*AUTOARG*/
|
|||
if (Pkg::PKG_PARAM != 1) $stop;
|
||||
sub.r = 62.0;
|
||||
|
||||
mod_res = mod_val % 5;
|
||||
|
||||
$display("%g", $log10(r));
|
||||
$display("%g", $ln(r));
|
||||
$display("%g", $exp(r));
|
||||
|
|
|
|||
Loading…
Reference in New Issue