I am using $cgav and $caiv functions in TB to access a analog signal value and I get following error.
ncsim: *E, MSSYSTF ..... User Defined system task or function ($caiv) registered during elaboration and used within the simulation has not been registered during simulation
Let me know if anyone observed a similar issue and solution for it.
$cgav is a Cadence-defined function for integrating Incisive with Spectre AMS. I don't see any reference to $caiv in the docs, so perhaps you made a typo?
Anyway, the error message is telling you that the simulator cannot find a shared library function that implements the $caiv PLI/VPI call.
These functions only get loaded with the analog solver. So if you don't have any electrical or Spice models, then only the discrete engine is used and those functions are not available.
Using a function to change the functionality of $cgav is the most flexible way to switch between discrete and electrical versions.
function automatic real cgav(string path, string qualifier="potential"); `ifdef WREAL cgav=0; `else cgav=$cgav(path, qualifier); `endifendfunction
Thanks for your input.
Analog solver was not being called in my sims.
The issue is fixed at my end