예제 #1
0
  @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;
  }
예제 #2
0
  /* --------------------------------------------------------------------------
   * -----------
   * --------------------------------------------------------------
   * -------------------------- 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;
  }
예제 #3
0
  @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;
  }