• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
        • Warnings
        • Primitives
        • Use-set
        • Syntax
          • Vl-module
          • Vl-vardecl
          • Expressions
          • Vl-fundecl
          • Vl-assign
          • Vl-gateinst
          • Vl-modinst
          • Vl-commentmap
          • Vl-portdecl
          • Vl-taskdecl
            • Vl-taskdecl-p
            • Vl-taskdecl-fix
            • Make-vl-taskdecl
            • Vl-taskdecl-equiv
            • Change-vl-taskdecl
            • Vl-taskdecl->vardecls
            • Vl-taskdecl->portdecls
            • Vl-taskdecl->paramdecls
            • Vl-taskdecl->blockitems
            • Vl-taskdecl->name
            • Vl-taskdecl->lifetime
            • Vl-taskdecl->imports
            • Vl-taskdecl->loc
            • Vl-taskdecl->body
            • Vl-taskdecl->atts
          • Vl-design
          • Vl-interface
          • Vl-plainarglist->exprs
          • Vl-taskdecllist->names
          • Vl-fundecllist->names
          • Vl-package
          • Vl-port
          • Vl-udp
          • Vl-paramdecl
          • Vl-genelement
          • Vl-cycledelayrange
          • Vl-namedarg
          • Vl-sort-blockitems-aux
          • Vl-distitem
          • Vl-gatedelay
          • Vl-repetition
          • Vl-typedef
          • Vl-range
          • Vl-gatestrength
          • Vl-program
          • Vl-config
          • Vl-always
          • Vl-datatype-update-dims
          • Vl-import
          • Vl-enumbasetype
          • Vl-repeateventcontrol
          • Vl-paramargs
          • Vl-initial
          • Vl-eventcontrol
          • Vl-udpsymbol-p
          • Vl-maybe-range
          • Vl-maybe-nettypename
          • Vl-maybe-gatestrength
          • Vl-maybe-gatedelay
          • Vl-maybe-delayoreventcontrol
          • Vl-alias
          • Maybe-string-fix
          • Vl-maybe-packeddimension
          • Vl-fwdtypedef
          • Vl-evatom
          • Vl-packeddimension-p
          • Vl-maybe-udpsymbol
          • Vl-maybe-module
          • Vl-maybe-direction
          • Vl-maybe-datatype
          • Vl-maybe-cstrength
          • Vl-direction-p
          • Vl-arguments
          • Vl-maybe-design
          • Vl-udpline
          • Vl-exprdist
          • Vl-context1
          • Vl-genvar
          • Vl-enumitem
          • Vl-datatype-update-udims
          • Vl-datatype-update-pdims
          • Vl-modelement
          • Vl-udpedge
          • Vl-delaycontrol
          • Vl-context
          • Vl-sort-blockitems
          • Vl-distweighttype-p
          • Vl-ctxelement->loc
          • Vl-blockitem
          • Vl-vardecllist
          • Vl-module->ifports
          • Vl-modelement->loc
          • Vl-ctxelement
          • Vl-coretypename-p
          • Vl-packeddimensionlist
          • Vl-modelementlist->genelements
          • Vl-gatetype-p
          • Vl-paramdecllist
          • Vl-lifetime-p
          • Vl-datatype->udims
          • Vl-datatype->pdims
          • Vl-timeunit-p
          • Vl-repetitiontype-p
          • Vl-port->name
          • Vl-importlist
          • Vl-genelement->loc
          • Vl-delayoreventcontrol
          • Vl-cstrength-p
          • Statements
          • Vl-udpentry-p
          • Vl-packeddimension-fix
          • Vl-nettypename-p
          • Vl-portdecllist
          • Vl-port->loc
          • Vl-enumbasekind-fix
          • Vl-arguments->args
          • Vl-taskdecllist
          • Vl-portlist
          • Vl-importpart-p
          • Vl-importpart-fix
          • Vl-fundecllist
          • Vl-blockstmt-p
          • Vl-assignlist
          • Vl-alwaystype-p
          • Vl-typedeflist
          • Vl-syntaxversion-p
          • Vl-randomqualifier-p
          • Vl-modinstlist
          • Vl-gateinstlist
          • Vl-blockitemlist
          • Vl-udptable
          • Vl-udplist
          • Vl-udpentrylist
          • Vl-programlist
          • Vl-paramvaluelist
          • Vl-packagelist
          • Vl-namedparamvaluelist
          • Vl-namedarglist
          • Vl-modulelist
          • Vl-modportlist
          • Vl-modport-portlist
          • Vl-interfacelist
          • Vl-initiallist
          • Vl-genvarlist
          • Vl-fwdtypedeflist
          • Vl-evatomlist
          • Vl-enumitemlist
          • Vl-distlist
          • Vl-configlist
          • Vl-alwayslist
          • Vl-aliaslist
          • Vl-regularportlist
          • Vl-rangelist-list
          • Vl-rangelist
          • Vl-paramdecllist-list
          • Vl-modelementlist
          • Vl-maybe-range-list
          • Vl-interfaceportlist
          • Vl-argumentlist
          • Data-types
        • Getting-started
        • Utilities
        • Loader
        • Transforms
        • Lint
        • Mlib
        • Server
        • Kit
        • Printer
        • Esim-vl
        • Well-formedness
      • Sv
      • Fgl
      • Vwsim
      • Vl
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • Syntax

Vl-taskdecl

Representation of a single Verilog task.

This is a product type introduced by defprod.

Fields
name — stringp
The name of this task.
lifetime — vl-lifetime-p
Indicates whether an explicit automatic or static lifetime was provided. Each invocation of an automatic task has its own copy of its variables. For instance, the task below had probably better be automatic if it there are going to be concurrent instances of it running, since otherwise temp could be corrupted by the other task.
portdecls — vl-portdecllist
The input, output, and inout ports for the task.
imports — vl-importlist
Local package imports
vardecls — vl-vardecllist
Local variable declarations, including ones for the ports and return value (see below); these are marked with VL_HIDDEN_DECL_FOR_TASKPORT.
paramdecls — vl-paramdecllist
Local parameter declarations
blockitems — vl-blockitemlist
All the local declarations for the task; we sort these out into the imports, vardecls, and paramdecls above.
body — vl-stmt
The statement that gives the actions for this task, i.e., the entire begin/end statement in the below task.
atts — vl-atts
Any attributes associated with this task declaration.
loc — vl-location
Where this task was found in the source code.

Tasks are described in Section 10.2 of the Verilog-2005 standard. An example of a task is:

task automatic dostuff;
  input [3:0] count;
  output inc;
  output onehot;
  output more;
  reg [2:0] temp;
  begin
    temp = count[0] + count[1] + count[2] + count[3];
    onehot = temp == 1;
    if (!onehot) $display("onehot is %b", onehot);
    #10;
    inc = count + 1;
    more = count > prev_count;
  end
endtask

Tasks are somewhat like functions, but they can have fewer restrictions, e.g., they can have multiple outputs, can include delays, etc.

Subtopics

Vl-taskdecl-p
Recognizer for vl-taskdecl structures.
Vl-taskdecl-fix
Fixing function for vl-taskdecl structures.
Make-vl-taskdecl
Basic constructor macro for vl-taskdecl structures.
Vl-taskdecl-equiv
Basic equivalence relation for vl-taskdecl structures.
Change-vl-taskdecl
Modifying constructor for vl-taskdecl structures.
Vl-taskdecl->vardecls
Get the vardecls field from a vl-taskdecl.
Vl-taskdecl->portdecls
Get the portdecls field from a vl-taskdecl.
Vl-taskdecl->paramdecls
Get the paramdecls field from a vl-taskdecl.
Vl-taskdecl->blockitems
Get the blockitems field from a vl-taskdecl.
Vl-taskdecl->name
Get the name field from a vl-taskdecl.
Vl-taskdecl->lifetime
Get the lifetime field from a vl-taskdecl.
Vl-taskdecl->imports
Get the imports field from a vl-taskdecl.
Vl-taskdecl->loc
Get the loc field from a vl-taskdecl.
Vl-taskdecl->body
Get the body field from a vl-taskdecl.
Vl-taskdecl->atts
Get the atts field from a vl-taskdecl.