@Override public Value visitContinuous_assign(Verilog2001Parser.Continuous_assignContext ctx) { // System.out.println("Continuous Visit:"+ctx.getText()+" Line:"+ctx.start.getLine()); Value left = visit(ctx.variable_lvalue()); Value right = visit(ctx.expression()); /* Update the data structure with the right value */ left.setVar(new_val_idx, right.asInt(), cycle_time); // System.out.println("Continuous assign:"+left.getVarName()+" Value = "+right.asInt()); return null; }
/* -------------------------------------------------------------------------- * ----------- * -------------------------------------------------------------- * -------------------------- Handle statements * ------------------------------ * ---------------------------------------------------------- * ---------------- * ---------------------------------------------------------------------- */ @Override public Value visitBlocking_assignment(Verilog2001Parser.Blocking_assignmentContext ctx) { if (!is_combinational) { System.out.println("ERROR: Blocking Statement in a sequential block"); return new Value(false); } // System.out.println("Visit:"+ctx.getText()+" Line:"+ctx.start.getLine()); Value left = visit(ctx.variable_lvalue()); Value right = visit(ctx.expression()); /* Update the data structure with the right value */ left.setVar(new_val_idx, right.asInt(), cycle_time); // System.out.println("AssignBlocking:"+left.getVarName()+" Value = "+right.asInt()); return null; }
@Override public Value visitNonblocking_assignment(Verilog2001Parser.Nonblocking_assignmentContext ctx) { if (is_sequential_sim_cycle) { /* Only store on simulate cycles */ if (!is_sequential) { System.out.println("ERROR: Non Blocking Statement in a combinational block"); return new Value(false); } // System.out.println("Visit:"+ctx.getText()); Value left = visit(ctx.variable_lvalue()); Value right = visit(ctx.expression()); /* Update the data structure with the right value */ left.setVar(new_val_idx, right.asInt(), cycle_time); // System.out.println("AssignNonBlocking:"+left.getVarName()+" Value = "+right); } return null; }