Welcome to our site! EDAboard.com is an international Electronic Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.
In Verilog, all static threads are started at time 0 from initial or always constructs. A thread may be split up by a fork/join constructs. If you count up the number of initial and always constructs , plus the number of statements inside all your fork/join constructs, you can determine exactly the total number of threads there will be in your simulation at compile time. That is what is meant by "static"
The fork/join_none or fork/join_any constructs spawns a number of dynamic threads from a static thread. Because the static thread does not block waiting for dynamic thread to complete, there's no way to determine at compile time the number of threads that will be created. Only be the execution of code, or dynamically will you know how many threads will be created.