diff --git a/docs/guide/exe_verilator.rst b/docs/guide/exe_verilator.rst index e4ece604e..727371a69 100644 --- a/docs/guide/exe_verilator.rst +++ b/docs/guide/exe_verilator.rst @@ -741,6 +741,8 @@ Summary: model has a time resolution that is always compatible with the time precision of the upper instantiating module. + Designs compiled using this option cannot use :vlopt:`--timing` with delays. + See also :vlopt:`--protect-lib`. .. option:: +libext+[+][...] @@ -1068,6 +1070,8 @@ Summary: in the distribution for a demonstration of how to build and use the DPI library. + Designs compiled using this option cannot use :vlopt:`--timing` with delays. + .. option:: --public This is only for historical debug use. Using it may result in diff --git a/docs/guide/verilating.rst b/docs/guide/verilating.rst index 2af18c1f0..3921a1964 100644 --- a/docs/guide/verilating.rst +++ b/docs/guide/verilating.rst @@ -113,6 +113,8 @@ Hierarchy blocks have some limitations including: hierarchical model and pass up into another hierarchical model or the top module. +* Delays are not allowed in hierarchy blocks. + But, the following usage is supported: * Nested hierarchy blocks. A hierarchy block may instantiate other diff --git a/src/Verilator.cpp b/src/Verilator.cpp index aaf666ea0..9604eb151 100644 --- a/src/Verilator.cpp +++ b/src/Verilator.cpp @@ -559,6 +559,9 @@ static void process() { // Output DPI protected library files if (!v3Global.opt.libCreate().empty()) { + if (v3Global.rootp()->delaySchedulerp()) { + v3warn(E_UNSUPPORTED, "Unsupported: --lib-create with --timing and delays"); + } V3ProtectLib::protect(); V3EmitV::emitvFiles(); V3EmitC::emitcFiles();